Index: /branches/RefactorPluginInfrastructure-2522/HeuristicLab.Optimizer/3.3/HeuristicLab.Optimizer-3.3.csproj
===================================================================
--- /branches/RefactorPluginInfrastructure-2522/HeuristicLab.Optimizer/3.3/HeuristicLab.Optimizer-3.3.csproj	(revision 13368)
+++ /branches/RefactorPluginInfrastructure-2522/HeuristicLab.Optimizer/3.3/HeuristicLab.Optimizer-3.3.csproj	(revision 13369)
@@ -150,4 +150,5 @@
     <EmbeddedResource Include="Documents\ALPSGA_TSP.hl" />
     <None Include="Plugin.cs.frame" />
+    <Compile Include="MenuItems\AboutPluginsMenuItem.cs" />
     <Compile Include="OptimizerSingleDocumentMainForm.cs">
       <SubType>Form</SubType>
Index: /branches/RefactorPluginInfrastructure-2522/HeuristicLab.Optimizer/3.3/MenuItems/AboutMenuItem.cs
===================================================================
--- /branches/RefactorPluginInfrastructure-2522/HeuristicLab.Optimizer/3.3/MenuItems/AboutMenuItem.cs	(revision 13368)
+++ /branches/RefactorPluginInfrastructure-2522/HeuristicLab.Optimizer/3.3/MenuItems/AboutMenuItem.cs	(revision 13369)
@@ -23,4 +23,5 @@
 using System.Windows.Forms;
 using HeuristicLab.MainForm;
+using HeuristicLab.PluginInfrastructure;
 using HeuristicLab.PluginInfrastructure.UI;
 
@@ -41,5 +42,5 @@
     public override void Execute() {
       if (aboutDialog == null)
-        aboutDialog = new AboutDialog();
+        aboutDialog = new AboutDialog(ApplicationManager.Manager.Plugins, GetType().Assembly); // show information about optimizer
       aboutDialog.ShowDialog((IWin32Window)MainFormManager.MainForm);
     }
Index: /branches/RefactorPluginInfrastructure-2522/HeuristicLab.Optimizer/3.3/MenuItems/AboutPluginsMenuItem.cs
===================================================================
--- /branches/RefactorPluginInfrastructure-2522/HeuristicLab.Optimizer/3.3/MenuItems/AboutPluginsMenuItem.cs	(revision 13369)
+++ /branches/RefactorPluginInfrastructure-2522/HeuristicLab.Optimizer/3.3/MenuItems/AboutPluginsMenuItem.cs	(revision 13369)
@@ -0,0 +1,48 @@
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2015 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ *
+ * This file is part of HeuristicLab.
+ *
+ * HeuristicLab is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * HeuristicLab is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
+ */
+#endregion
+
+using System.Collections.Generic;
+using System.Windows.Forms;
+using HeuristicLab.MainForm;
+using HeuristicLab.PluginInfrastructure;
+using HeuristicLab.PluginInfrastructure.UI;
+
+namespace HeuristicLab.Optimizer.MenuItems {
+  internal class AboutPluginsMenuItem : HeuristicLab.MainForm.WindowsForms.MenuItem, IOptimizerUserInterfaceItemProvider {
+    private PluginInformationDialog pluginInfoDialog;
+
+    public override string Name {
+      get { return "About &Plugins..."; }
+    }
+    public override IEnumerable<string> Structure {
+      get { return new string[] { "&Help" }; }
+    }
+    public override int Position {
+      get { return 9200; }
+    }
+
+    public override void Execute() {
+      if (pluginInfoDialog == null)
+        pluginInfoDialog = new PluginInformationDialog(ApplicationManager.Manager.Plugins);
+      pluginInfoDialog.ShowDialog((IWin32Window)MainFormManager.MainForm);
+    }
+  }
+}
Index: /branches/RefactorPluginInfrastructure-2522/HeuristicLab.PluginInfrastructure.UI/AboutDialog.cs
===================================================================
--- /branches/RefactorPluginInfrastructure-2522/HeuristicLab.PluginInfrastructure.UI/AboutDialog.cs	(revision 13368)
+++ /branches/RefactorPluginInfrastructure-2522/HeuristicLab.PluginInfrastructure.UI/AboutDialog.cs	(revision 13369)
@@ -37,10 +37,10 @@
     /// </summary>
     /// <param name="plugins">Enumerable of plugins that should be listed.</param>
-    public AboutDialog(IEnumerable<IPluginDescription> plugins) {
+    public AboutDialog(IEnumerable<IPluginDescription> plugins, Assembly mainAssembly) {
       InitializeComponent();
-      var entryAssembly = Assembly.GetEntryAssembly();
-      productTextBox.Text = GetProduct(entryAssembly);
-      versionTextBox.Text = entryAssembly.GetFileVersion();
-      copyrightTextBox.Text = GetCopyright(entryAssembly);
+
+      productTextBox.Text = mainAssembly.GetProduct();
+      versionTextBox.Text = mainAssembly.GetFileVersion();
+      copyrightTextBox.Text = mainAssembly.GetCopyright();
       imageList.Images.Add(Resources.Plugin);
       pictureBox.Image = Resources.HeuristicLabLogo;
@@ -54,33 +54,9 @@
     /// </summary>
     public AboutDialog()
-      : this(ApplicationManager.Manager.Plugins) {
-    }
-
-    private ListViewItem CreateListViewItem(IPluginDescription plugin) {
-      ListViewItem item = new ListViewItem(new string[] { plugin.Name, plugin.Version.ToString(), plugin.Description });
-      item.Tag = plugin;
-      item.ImageIndex = 0;
-      return item;
-    }
-
-    private string GetCopyright(Assembly asm) {
-      AssemblyCopyrightAttribute attribute = GetAttribute<AssemblyCopyrightAttribute>(asm);
-      return attribute.Copyright;
-    }
-
-    private string GetProduct(Assembly asm) {
-      AssemblyProductAttribute attribute = GetAttribute<AssemblyProductAttribute>(asm);
-      return attribute.Product;
-    }
-
-    private T GetAttribute<T>(Assembly asm) {
-      return (T)asm.GetCustomAttributes(typeof(T), false).Single();
+      : this(ApplicationManager.Manager.Plugins, typeof(IPluginDescription).Assembly) {
     }
 
     private void okButton_Click(object sender, EventArgs e) {
       Close();
-    }
-
-    private void pluginListView_ItemActivate(object sender, EventArgs e) {
     }
 
Index: /branches/RefactorPluginInfrastructure-2522/HeuristicLab.PluginInfrastructure.UI/PluginInformationDialog.cs
===================================================================
--- /branches/RefactorPluginInfrastructure-2522/HeuristicLab.PluginInfrastructure.UI/PluginInformationDialog.cs	(revision 13368)
+++ /branches/RefactorPluginInfrastructure-2522/HeuristicLab.PluginInfrastructure.UI/PluginInformationDialog.cs	(revision 13369)
@@ -23,8 +23,5 @@
 using System.Collections.Generic;
 using System.Drawing;
-using System.IO;
 using System.Linq;
-using System.Reflection;
-using System.Text.RegularExpressions;
 using System.Windows.Forms;
 
@@ -36,11 +33,12 @@
     public PluginInformationDialog(IEnumerable<IPluginDescription> plugins) {
       InitializeComponent();
-      var entryAssembly = Assembly.GetEntryAssembly();
-      productTextBox.Text = GetProduct(entryAssembly);
-      versionTextBox.Text = entryAssembly.GetFileVersion();
-      contactTextBox.Text = GetCopyright(entryAssembly);
       imageList.Images.Add(Resources.Plugin);
       textBox.Text = Resources.LicenseText;
       PopulatePluginList(plugins);
+
+      // select first plugin to update plugin details
+      pluginListView.Items[0].Selected = true;
+      pluginListView.EnsureVisible(0);
+
       ActiveControl = okButton;
     }
@@ -66,18 +64,4 @@
       item.SubItems[2].Name = "Description";
       return item;
-    }
-
-    private string GetCopyright(Assembly asm) {
-      AssemblyCopyrightAttribute attribute = GetAttribute<AssemblyCopyrightAttribute>(asm);
-      return attribute.Copyright;
-    }
-
-    private string GetProduct(Assembly asm) {
-      AssemblyProductAttribute attribute = GetAttribute<AssemblyProductAttribute>(asm);
-      return attribute.Product;
-    }
-
-    private T GetAttribute<T>(Assembly asm) {
-      return (T)asm.GetCustomAttributes(typeof(T), false).Single();
     }
 
Index: /branches/RefactorPluginInfrastructure-2522/HeuristicLab.PluginInfrastructure.UI/StarterForm.cs
===================================================================
--- /branches/RefactorPluginInfrastructure-2522/HeuristicLab.PluginInfrastructure.UI/StarterForm.cs	(revision 13368)
+++ /branches/RefactorPluginInfrastructure-2522/HeuristicLab.PluginInfrastructure.UI/StarterForm.cs	(revision 13369)
@@ -24,4 +24,5 @@
 using System.IO;
 using System.Linq;
+using System.Reflection;
 using System.Threading;
 using System.Threading.Tasks;
@@ -130,5 +131,5 @@
     private void aboutButton_Click(object sender, EventArgs e) {
       List<IPluginDescription> plugins = new List<IPluginDescription>(pluginManager.Plugins.OfType<IPluginDescription>());
-      using (var dialog = new AboutDialog(plugins)) {
+      using (var dialog = new AboutDialog(plugins, Assembly.GetEntryAssembly())) {
         dialog.ShowDialog();
       }
Index: /branches/RefactorPluginInfrastructure-2522/HeuristicLab.PluginInfrastructure/3.3/AssemblyExtensions.cs
===================================================================
--- /branches/RefactorPluginInfrastructure-2522/HeuristicLab.PluginInfrastructure/3.3/AssemblyExtensions.cs	(revision 13368)
+++ /branches/RefactorPluginInfrastructure-2522/HeuristicLab.PluginInfrastructure/3.3/AssemblyExtensions.cs	(revision 13369)
@@ -52,4 +52,12 @@
       return GetCustomAttributeValue<AssemblyFileVersionAttribute>(assembly, "Version");
     }
+    public static string GetCopyright(this Assembly assembly) {
+      return GetCustomAttributeValue<AssemblyCopyrightAttribute>(assembly, "Copyright");
+    }
+
+    public static string GetProduct(this Assembly assembly) {
+      return GetCustomAttributeValue<AssemblyProductAttribute>(assembly, "Product");
+    }
+
   }
 }
