private void SetupToolbox()
        {
            if (ProjectMFVersion == toolboxMFversion && ProjectGVersion == toolboxGversion)
            {
                return;
            }

            var service = GetService(typeof(IToolboxService)) as IToolboxService;
            var toolbox = GetService(typeof(SVsToolbox)) as IVsToolbox3;

            if (service == null || toolbox == null)
            {
                return;
            }

            using (var txStore = new Store(typeof(GadgeteerDSLDomainModel)))
                using (var tx = txStore.TransactionManager.BeginTransaction())
                {
                    foreach (GadgeteerToolboxItem item in service.GetToolboxItems().OfType <GadgeteerToolboxItem>())
                    {
                        service.RemoveToolboxItem(item);
                    }

                    int position = 2;

                    foreach (MainboardDefinition md in GadgeteerDefinitionsManager.Instance.Mainboards)
                    {
                        AddToolboxItem(GadgeteerToolboxItem.CreateFor(md, txStore, ProjectMFVersion, ProjectGVersion, position++), service, toolbox);
                    }

                    foreach (ModuleDefinition md in GadgeteerDefinitionsManager.Instance.Modules.OrderBy(m => m.Name))
                    {
                        AddToolboxItem(GadgeteerToolboxItem.CreateFor(md, txStore, ProjectMFVersion, ProjectGVersion, position++), service, toolbox);
                    }

                    tx.Commit();
                }

            this.toolboxMFversion = this.ProjectMFVersion;
            this.toolboxGversion  = this.ProjectGVersion;
        }