Index: /branches/histogram/HeuristicLab 3.3.sln
===================================================================
--- /branches/histogram/HeuristicLab 3.3.sln	(revision 6045)
+++ /branches/histogram/HeuristicLab 3.3.sln	(revision 6046)
@@ -395,4 +395,6 @@
 Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "HeuristicLab.Problems.DataAnalysis.Tests-3.4", "HeuristicLab.Problems.DataAnalysis\3.4\Tests\HeuristicLab.Problems.DataAnalysis.Tests-3.4.csproj", "{F5013F6B-5A2D-4741-8FC9-31A6968E9C41}"
 EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "HeuristicLab.Operators.Views.GraphVisualization.Views-3.3", "HeuristicLab.Operators.Views.GraphVisualization.Views\3.3\HeuristicLab.Operators.Views.GraphVisualization.Views-3.3.csproj", "{0C39A349-1979-419A-89BD-E4E2F26BD287}"
+EndProject
 Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "HistogramViewTest", "HistogramViewTest\HistogramViewTest.csproj", "{0D308137-8F8A-4361-A63D-09FAFEB29F9C}"
 EndProject
@@ -403,9 +405,7 @@
 	GlobalSection(SolutionConfigurationPlatforms) = preSolution
 		Debug|Any CPU = Debug|Any CPU
-		Debug|Mixed Platforms = Debug|Mixed Platforms
 		Debug|x64 = Debug|x64
 		Debug|x86 = Debug|x86
 		Release|Any CPU = Release|Any CPU
-		Release|Mixed Platforms = Release|Mixed Platforms
 		Release|x64 = Release|x64
 		Release|x86 = Release|x86
@@ -414,6 +414,4 @@
 		{94186A6A-5176-4402-AE83-886557B53CCA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
 		{94186A6A-5176-4402-AE83-886557B53CCA}.Debug|Any CPU.Build.0 = Debug|Any CPU
-		{94186A6A-5176-4402-AE83-886557B53CCA}.Debug|Mixed Platforms.ActiveCfg = Debug|x64
-		{94186A6A-5176-4402-AE83-886557B53CCA}.Debug|Mixed Platforms.Build.0 = Debug|x64
 		{94186A6A-5176-4402-AE83-886557B53CCA}.Debug|x64.ActiveCfg = Debug|x64
 		{94186A6A-5176-4402-AE83-886557B53CCA}.Debug|x64.Build.0 = Debug|x64
@@ -422,6 +420,4 @@
 		{94186A6A-5176-4402-AE83-886557B53CCA}.Release|Any CPU.ActiveCfg = Release|Any CPU
 		{94186A6A-5176-4402-AE83-886557B53CCA}.Release|Any CPU.Build.0 = Release|Any CPU
-		{94186A6A-5176-4402-AE83-886557B53CCA}.Release|Mixed Platforms.ActiveCfg = Release|x64
-		{94186A6A-5176-4402-AE83-886557B53CCA}.Release|Mixed Platforms.Build.0 = Release|x64
 		{94186A6A-5176-4402-AE83-886557B53CCA}.Release|x64.ActiveCfg = Release|x64
 		{94186A6A-5176-4402-AE83-886557B53CCA}.Release|x64.Build.0 = Release|x64
@@ -430,6 +426,4 @@
 		{102BC7D3-0EF9-439C-8F6D-96FF0FDB8E1B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
 		{102BC7D3-0EF9-439C-8F6D-96FF0FDB8E1B}.Debug|Any CPU.Build.0 = Debug|Any CPU
-		{102BC7D3-0EF9-439C-8F6D-96FF0FDB8E1B}.Debug|Mixed Platforms.ActiveCfg = Debug|x86
-		{102BC7D3-0EF9-439C-8F6D-96FF0FDB8E1B}.Debug|Mixed Platforms.Build.0 = Debug|x86
 		{102BC7D3-0EF9-439C-8F6D-96FF0FDB8E1B}.Debug|x64.ActiveCfg = Debug|x64
 		{102BC7D3-0EF9-439C-8F6D-96FF0FDB8E1B}.Debug|x64.Build.0 = Debug|x64
@@ -438,6 +432,4 @@
 		{102BC7D3-0EF9-439C-8F6D-96FF0FDB8E1B}.Release|Any CPU.ActiveCfg = Release|Any CPU
 		{102BC7D3-0EF9-439C-8F6D-96FF0FDB8E1B}.Release|Any CPU.Build.0 = Release|Any CPU
-		{102BC7D3-0EF9-439C-8F6D-96FF0FDB8E1B}.Release|Mixed Platforms.ActiveCfg = Release|x86
-		{102BC7D3-0EF9-439C-8F6D-96FF0FDB8E1B}.Release|Mixed Platforms.Build.0 = Release|x86
 		{102BC7D3-0EF9-439C-8F6D-96FF0FDB8E1B}.Release|x64.ActiveCfg = Release|x64
 		{102BC7D3-0EF9-439C-8F6D-96FF0FDB8E1B}.Release|x64.Build.0 = Release|x64
@@ -446,6 +438,4 @@
 		{A9E282EA-180F-4233-B809-AEDF0787545C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
 		{A9E282EA-180F-4233-B809-AEDF0787545C}.Debug|Any CPU.Build.0 = Debug|Any CPU
-		{A9E282EA-180F-4233-B809-AEDF0787545C}.Debug|Mixed Platforms.ActiveCfg = Debug|x86
-		{A9E282EA-180F-4233-B809-AEDF0787545C}.Debug|Mixed Platforms.Build.0 = Debug|x86
 		{A9E282EA-180F-4233-B809-AEDF0787545C}.Debug|x64.ActiveCfg = Debug|x64
 		{A9E282EA-180F-4233-B809-AEDF0787545C}.Debug|x64.Build.0 = Debug|x64
@@ -454,6 +444,4 @@
 		{A9E282EA-180F-4233-B809-AEDF0787545C}.Release|Any CPU.ActiveCfg = Release|Any CPU
 		{A9E282EA-180F-4233-B809-AEDF0787545C}.Release|Any CPU.Build.0 = Release|Any CPU
-		{A9E282EA-180F-4233-B809-AEDF0787545C}.Release|Mixed Platforms.ActiveCfg = Release|x86
-		{A9E282EA-180F-4233-B809-AEDF0787545C}.Release|Mixed Platforms.Build.0 = Release|x86
 		{A9E282EA-180F-4233-B809-AEDF0787545C}.Release|x64.ActiveCfg = Release|x64
 		{A9E282EA-180F-4233-B809-AEDF0787545C}.Release|x64.Build.0 = Release|x64
@@ -462,6 +450,4 @@
 		{C36BD924-A541-4A00-AFA8-41701378DDC5}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
 		{C36BD924-A541-4A00-AFA8-41701378DDC5}.Debug|Any CPU.Build.0 = Debug|Any CPU
-		{C36BD924-A541-4A00-AFA8-41701378DDC5}.Debug|Mixed Platforms.ActiveCfg = Debug|x64
-		{C36BD924-A541-4A00-AFA8-41701378DDC5}.Debug|Mixed Platforms.Build.0 = Debug|x64
 		{C36BD924-A541-4A00-AFA8-41701378DDC5}.Debug|x64.ActiveCfg = Debug|x64
 		{C36BD924-A541-4A00-AFA8-41701378DDC5}.Debug|x64.Build.0 = Debug|x64
@@ -470,6 +456,4 @@
 		{C36BD924-A541-4A00-AFA8-41701378DDC5}.Release|Any CPU.ActiveCfg = Release|Any CPU
 		{C36BD924-A541-4A00-AFA8-41701378DDC5}.Release|Any CPU.Build.0 = Release|Any CPU
-		{C36BD924-A541-4A00-AFA8-41701378DDC5}.Release|Mixed Platforms.ActiveCfg = Release|x64
-		{C36BD924-A541-4A00-AFA8-41701378DDC5}.Release|Mixed Platforms.Build.0 = Release|x64
 		{C36BD924-A541-4A00-AFA8-41701378DDC5}.Release|x64.ActiveCfg = Release|x64
 		{C36BD924-A541-4A00-AFA8-41701378DDC5}.Release|x64.Build.0 = Release|x64
@@ -478,6 +462,4 @@
 		{BBAB9DF5-5EF3-4BA8-ADE9-B36E82114937}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
 		{BBAB9DF5-5EF3-4BA8-ADE9-B36E82114937}.Debug|Any CPU.Build.0 = Debug|Any CPU
-		{BBAB9DF5-5EF3-4BA8-ADE9-B36E82114937}.Debug|Mixed Platforms.ActiveCfg = Debug|x64
-		{BBAB9DF5-5EF3-4BA8-ADE9-B36E82114937}.Debug|Mixed Platforms.Build.0 = Debug|x64
 		{BBAB9DF5-5EF3-4BA8-ADE9-B36E82114937}.Debug|x64.ActiveCfg = Debug|x64
 		{BBAB9DF5-5EF3-4BA8-ADE9-B36E82114937}.Debug|x64.Build.0 = Debug|x64
@@ -486,6 +468,4 @@
 		{BBAB9DF5-5EF3-4BA8-ADE9-B36E82114937}.Release|Any CPU.ActiveCfg = Release|Any CPU
 		{BBAB9DF5-5EF3-4BA8-ADE9-B36E82114937}.Release|Any CPU.Build.0 = Release|Any CPU
-		{BBAB9DF5-5EF3-4BA8-ADE9-B36E82114937}.Release|Mixed Platforms.ActiveCfg = Release|x64
-		{BBAB9DF5-5EF3-4BA8-ADE9-B36E82114937}.Release|Mixed Platforms.Build.0 = Release|x64
 		{BBAB9DF5-5EF3-4BA8-ADE9-B36E82114937}.Release|x64.ActiveCfg = Release|x64
 		{BBAB9DF5-5EF3-4BA8-ADE9-B36E82114937}.Release|x64.Build.0 = Release|x64
@@ -494,6 +474,4 @@
 		{23DA7FF4-D5B8-41B6-AA96-F0561D24F3EE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
 		{23DA7FF4-D5B8-41B6-AA96-F0561D24F3EE}.Debug|Any CPU.Build.0 = Debug|Any CPU
-		{23DA7FF4-D5B8-41B6-AA96-F0561D24F3EE}.Debug|Mixed Platforms.ActiveCfg = Debug|x64
-		{23DA7FF4-D5B8-41B6-AA96-F0561D24F3EE}.Debug|Mixed Platforms.Build.0 = Debug|x64
 		{23DA7FF4-D5B8-41B6-AA96-F0561D24F3EE}.Debug|x64.ActiveCfg = Debug|x64
 		{23DA7FF4-D5B8-41B6-AA96-F0561D24F3EE}.Debug|x64.Build.0 = Debug|x64
@@ -502,6 +480,4 @@
 		{23DA7FF4-D5B8-41B6-AA96-F0561D24F3EE}.Release|Any CPU.ActiveCfg = Release|Any CPU
 		{23DA7FF4-D5B8-41B6-AA96-F0561D24F3EE}.Release|Any CPU.Build.0 = Release|Any CPU
-		{23DA7FF4-D5B8-41B6-AA96-F0561D24F3EE}.Release|Mixed Platforms.ActiveCfg = Release|x64
-		{23DA7FF4-D5B8-41B6-AA96-F0561D24F3EE}.Release|Mixed Platforms.Build.0 = Release|x64
 		{23DA7FF4-D5B8-41B6-AA96-F0561D24F3EE}.Release|x64.ActiveCfg = Release|x64
 		{23DA7FF4-D5B8-41B6-AA96-F0561D24F3EE}.Release|x64.Build.0 = Release|x64
@@ -510,6 +486,4 @@
 		{DC3D7072-7999-4719-B65D-3997744D5DC1}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
 		{DC3D7072-7999-4719-B65D-3997744D5DC1}.Debug|Any CPU.Build.0 = Debug|Any CPU
-		{DC3D7072-7999-4719-B65D-3997744D5DC1}.Debug|Mixed Platforms.ActiveCfg = Debug|x64
-		{DC3D7072-7999-4719-B65D-3997744D5DC1}.Debug|Mixed Platforms.Build.0 = Debug|x64
 		{DC3D7072-7999-4719-B65D-3997744D5DC1}.Debug|x64.ActiveCfg = Debug|x64
 		{DC3D7072-7999-4719-B65D-3997744D5DC1}.Debug|x64.Build.0 = Debug|x64
@@ -518,6 +492,4 @@
 		{DC3D7072-7999-4719-B65D-3997744D5DC1}.Release|Any CPU.ActiveCfg = Release|Any CPU
 		{DC3D7072-7999-4719-B65D-3997744D5DC1}.Release|Any CPU.Build.0 = Release|Any CPU
-		{DC3D7072-7999-4719-B65D-3997744D5DC1}.Release|Mixed Platforms.ActiveCfg = Release|x64
-		{DC3D7072-7999-4719-B65D-3997744D5DC1}.Release|Mixed Platforms.Build.0 = Release|x64
 		{DC3D7072-7999-4719-B65D-3997744D5DC1}.Release|x64.ActiveCfg = Release|x64
 		{DC3D7072-7999-4719-B65D-3997744D5DC1}.Release|x64.Build.0 = Release|x64
@@ -526,6 +498,4 @@
 		{F4539FB6-4708-40C9-BE64-0A1390AEA197}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
 		{F4539FB6-4708-40C9-BE64-0A1390AEA197}.Debug|Any CPU.Build.0 = Debug|Any CPU
-		{F4539FB6-4708-40C9-BE64-0A1390AEA197}.Debug|Mixed Platforms.ActiveCfg = Debug|x64
-		{F4539FB6-4708-40C9-BE64-0A1390AEA197}.Debug|Mixed Platforms.Build.0 = Debug|x64
 		{F4539FB6-4708-40C9-BE64-0A1390AEA197}.Debug|x64.ActiveCfg = Debug|x64
 		{F4539FB6-4708-40C9-BE64-0A1390AEA197}.Debug|x64.Build.0 = Debug|x64
@@ -534,6 +504,4 @@
 		{F4539FB6-4708-40C9-BE64-0A1390AEA197}.Release|Any CPU.ActiveCfg = Release|Any CPU
 		{F4539FB6-4708-40C9-BE64-0A1390AEA197}.Release|Any CPU.Build.0 = Release|Any CPU
-		{F4539FB6-4708-40C9-BE64-0A1390AEA197}.Release|Mixed Platforms.ActiveCfg = Release|x64
-		{F4539FB6-4708-40C9-BE64-0A1390AEA197}.Release|Mixed Platforms.Build.0 = Release|x64
 		{F4539FB6-4708-40C9-BE64-0A1390AEA197}.Release|x64.ActiveCfg = Release|x64
 		{F4539FB6-4708-40C9-BE64-0A1390AEA197}.Release|x64.Build.0 = Release|x64
@@ -542,6 +510,4 @@
 		{2C36CD4F-E5F5-43A4-801A-201EA895FE17}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
 		{2C36CD4F-E5F5-43A4-801A-201EA895FE17}.Debug|Any CPU.Build.0 = Debug|Any CPU
-		{2C36CD4F-E5F5-43A4-801A-201EA895FE17}.Debug|Mixed Platforms.ActiveCfg = Debug|x64
-		{2C36CD4F-E5F5-43A4-801A-201EA895FE17}.Debug|Mixed Platforms.Build.0 = Debug|x64
 		{2C36CD4F-E5F5-43A4-801A-201EA895FE17}.Debug|x64.ActiveCfg = Debug|x64
 		{2C36CD4F-E5F5-43A4-801A-201EA895FE17}.Debug|x64.Build.0 = Debug|x64
@@ -550,6 +516,4 @@
 		{2C36CD4F-E5F5-43A4-801A-201EA895FE17}.Release|Any CPU.ActiveCfg = Release|Any CPU
 		{2C36CD4F-E5F5-43A4-801A-201EA895FE17}.Release|Any CPU.Build.0 = Release|Any CPU
-		{2C36CD4F-E5F5-43A4-801A-201EA895FE17}.Release|Mixed Platforms.ActiveCfg = Release|x64
-		{2C36CD4F-E5F5-43A4-801A-201EA895FE17}.Release|Mixed Platforms.Build.0 = Release|x64
 		{2C36CD4F-E5F5-43A4-801A-201EA895FE17}.Release|x64.ActiveCfg = Release|x64
 		{2C36CD4F-E5F5-43A4-801A-201EA895FE17}.Release|x64.Build.0 = Release|x64
@@ -558,6 +522,4 @@
 		{6A5F8C2D-B0C3-4B36-BC20-9B1A91EE6DB6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
 		{6A5F8C2D-B0C3-4B36-BC20-9B1A91EE6DB6}.Debug|Any CPU.Build.0 = Debug|Any CPU
-		{6A5F8C2D-B0C3-4B36-BC20-9B1A91EE6DB6}.Debug|Mixed Platforms.ActiveCfg = Debug|x64
-		{6A5F8C2D-B0C3-4B36-BC20-9B1A91EE6DB6}.Debug|Mixed Platforms.Build.0 = Debug|x64
 		{6A5F8C2D-B0C3-4B36-BC20-9B1A91EE6DB6}.Debug|x64.ActiveCfg = Debug|x64
 		{6A5F8C2D-B0C3-4B36-BC20-9B1A91EE6DB6}.Debug|x64.Build.0 = Debug|x64
@@ -566,6 +528,4 @@
 		{6A5F8C2D-B0C3-4B36-BC20-9B1A91EE6DB6}.Release|Any CPU.ActiveCfg = Release|Any CPU
 		{6A5F8C2D-B0C3-4B36-BC20-9B1A91EE6DB6}.Release|Any CPU.Build.0 = Release|Any CPU
-		{6A5F8C2D-B0C3-4B36-BC20-9B1A91EE6DB6}.Release|Mixed Platforms.ActiveCfg = Release|x64
-		{6A5F8C2D-B0C3-4B36-BC20-9B1A91EE6DB6}.Release|Mixed Platforms.Build.0 = Release|x64
 		{6A5F8C2D-B0C3-4B36-BC20-9B1A91EE6DB6}.Release|x64.ActiveCfg = Release|x64
 		{6A5F8C2D-B0C3-4B36-BC20-9B1A91EE6DB6}.Release|x64.Build.0 = Release|x64
@@ -574,6 +534,4 @@
 		{B1DCDECA-B56E-41D5-9850-EF0D3A77DEAF}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
 		{B1DCDECA-B56E-41D5-9850-EF0D3A77DEAF}.Debug|Any CPU.Build.0 = Debug|Any CPU
-		{B1DCDECA-B56E-41D5-9850-EF0D3A77DEAF}.Debug|Mixed Platforms.ActiveCfg = Debug|x64
-		{B1DCDECA-B56E-41D5-9850-EF0D3A77DEAF}.Debug|Mixed Platforms.Build.0 = Debug|x64
 		{B1DCDECA-B56E-41D5-9850-EF0D3A77DEAF}.Debug|x64.ActiveCfg = Debug|x64
 		{B1DCDECA-B56E-41D5-9850-EF0D3A77DEAF}.Debug|x64.Build.0 = Debug|x64
@@ -582,6 +540,4 @@
 		{B1DCDECA-B56E-41D5-9850-EF0D3A77DEAF}.Release|Any CPU.ActiveCfg = Release|Any CPU
 		{B1DCDECA-B56E-41D5-9850-EF0D3A77DEAF}.Release|Any CPU.Build.0 = Release|Any CPU
-		{B1DCDECA-B56E-41D5-9850-EF0D3A77DEAF}.Release|Mixed Platforms.ActiveCfg = Release|x64
-		{B1DCDECA-B56E-41D5-9850-EF0D3A77DEAF}.Release|Mixed Platforms.Build.0 = Release|x64
 		{B1DCDECA-B56E-41D5-9850-EF0D3A77DEAF}.Release|x64.ActiveCfg = Release|x64
 		{B1DCDECA-B56E-41D5-9850-EF0D3A77DEAF}.Release|x64.Build.0 = Release|x64
@@ -590,6 +546,4 @@
 		{EE2034D9-6E27-48A1-B855-42D45F69A4FC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
 		{EE2034D9-6E27-48A1-B855-42D45F69A4FC}.Debug|Any CPU.Build.0 = Debug|Any CPU
-		{EE2034D9-6E27-48A1-B855-42D45F69A4FC}.Debug|Mixed Platforms.ActiveCfg = Debug|x86
-		{EE2034D9-6E27-48A1-B855-42D45F69A4FC}.Debug|Mixed Platforms.Build.0 = Debug|x86
 		{EE2034D9-6E27-48A1-B855-42D45F69A4FC}.Debug|x64.ActiveCfg = Debug|x64
 		{EE2034D9-6E27-48A1-B855-42D45F69A4FC}.Debug|x64.Build.0 = Debug|x64
@@ -598,6 +552,4 @@
 		{EE2034D9-6E27-48A1-B855-42D45F69A4FC}.Release|Any CPU.ActiveCfg = Release|Any CPU
 		{EE2034D9-6E27-48A1-B855-42D45F69A4FC}.Release|Any CPU.Build.0 = Release|Any CPU
-		{EE2034D9-6E27-48A1-B855-42D45F69A4FC}.Release|Mixed Platforms.ActiveCfg = Release|x86
-		{EE2034D9-6E27-48A1-B855-42D45F69A4FC}.Release|Mixed Platforms.Build.0 = Release|x86
 		{EE2034D9-6E27-48A1-B855-42D45F69A4FC}.Release|x64.ActiveCfg = Release|x64
 		{EE2034D9-6E27-48A1-B855-42D45F69A4FC}.Release|x64.Build.0 = Release|x64
@@ -606,6 +558,4 @@
 		{0E27A536-1C4A-4624-A65E-DC4F4F23E3E1}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
 		{0E27A536-1C4A-4624-A65E-DC4F4F23E3E1}.Debug|Any CPU.Build.0 = Debug|Any CPU
-		{0E27A536-1C4A-4624-A65E-DC4F4F23E3E1}.Debug|Mixed Platforms.ActiveCfg = Debug|x64
-		{0E27A536-1C4A-4624-A65E-DC4F4F23E3E1}.Debug|Mixed Platforms.Build.0 = Debug|x64
 		{0E27A536-1C4A-4624-A65E-DC4F4F23E3E1}.Debug|x64.ActiveCfg = Debug|x64
 		{0E27A536-1C4A-4624-A65E-DC4F4F23E3E1}.Debug|x64.Build.0 = Debug|x64
@@ -614,6 +564,4 @@
 		{0E27A536-1C4A-4624-A65E-DC4F4F23E3E1}.Release|Any CPU.ActiveCfg = Release|Any CPU
 		{0E27A536-1C4A-4624-A65E-DC4F4F23E3E1}.Release|Any CPU.Build.0 = Release|Any CPU
-		{0E27A536-1C4A-4624-A65E-DC4F4F23E3E1}.Release|Mixed Platforms.ActiveCfg = Release|x64
-		{0E27A536-1C4A-4624-A65E-DC4F4F23E3E1}.Release|Mixed Platforms.Build.0 = Release|x64
 		{0E27A536-1C4A-4624-A65E-DC4F4F23E3E1}.Release|x64.ActiveCfg = Release|x64
 		{0E27A536-1C4A-4624-A65E-DC4F4F23E3E1}.Release|x64.Build.0 = Release|x64
@@ -622,6 +570,4 @@
 		{C664305E-497C-4533-A140-967DEDB05C19}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
 		{C664305E-497C-4533-A140-967DEDB05C19}.Debug|Any CPU.Build.0 = Debug|Any CPU
-		{C664305E-497C-4533-A140-967DEDB05C19}.Debug|Mixed Platforms.ActiveCfg = Debug|x86
-		{C664305E-497C-4533-A140-967DEDB05C19}.Debug|Mixed Platforms.Build.0 = Debug|x86
 		{C664305E-497C-4533-A140-967DEDB05C19}.Debug|x64.ActiveCfg = Debug|x64
 		{C664305E-497C-4533-A140-967DEDB05C19}.Debug|x64.Build.0 = Debug|x64
@@ -630,6 +576,4 @@
 		{C664305E-497C-4533-A140-967DEDB05C19}.Release|Any CPU.ActiveCfg = Release|Any CPU
 		{C664305E-497C-4533-A140-967DEDB05C19}.Release|Any CPU.Build.0 = Release|Any CPU
-		{C664305E-497C-4533-A140-967DEDB05C19}.Release|Mixed Platforms.ActiveCfg = Release|x86
-		{C664305E-497C-4533-A140-967DEDB05C19}.Release|Mixed Platforms.Build.0 = Release|x86
 		{C664305E-497C-4533-A140-967DEDB05C19}.Release|x64.ActiveCfg = Release|x64
 		{C664305E-497C-4533-A140-967DEDB05C19}.Release|x64.Build.0 = Release|x64
@@ -638,6 +582,4 @@
 		{E226881D-315F-423D-B419-A766FE0D8685}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
 		{E226881D-315F-423D-B419-A766FE0D8685}.Debug|Any CPU.Build.0 = Debug|Any CPU
-		{E226881D-315F-423D-B419-A766FE0D8685}.Debug|Mixed Platforms.ActiveCfg = Debug|x86
-		{E226881D-315F-423D-B419-A766FE0D8685}.Debug|Mixed Platforms.Build.0 = Debug|x86
 		{E226881D-315F-423D-B419-A766FE0D8685}.Debug|x64.ActiveCfg = Debug|x64
 		{E226881D-315F-423D-B419-A766FE0D8685}.Debug|x64.Build.0 = Debug|x64
@@ -646,6 +588,4 @@
 		{E226881D-315F-423D-B419-A766FE0D8685}.Release|Any CPU.ActiveCfg = Release|Any CPU
 		{E226881D-315F-423D-B419-A766FE0D8685}.Release|Any CPU.Build.0 = Release|Any CPU
-		{E226881D-315F-423D-B419-A766FE0D8685}.Release|Mixed Platforms.ActiveCfg = Release|x86
-		{E226881D-315F-423D-B419-A766FE0D8685}.Release|Mixed Platforms.Build.0 = Release|x86
 		{E226881D-315F-423D-B419-A766FE0D8685}.Release|x64.ActiveCfg = Release|x64
 		{E226881D-315F-423D-B419-A766FE0D8685}.Release|x64.Build.0 = Release|x64
@@ -654,6 +594,4 @@
 		{958B43BC-CC5C-4FA2-8628-2B3B01D890B6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
 		{958B43BC-CC5C-4FA2-8628-2B3B01D890B6}.Debug|Any CPU.Build.0 = Debug|Any CPU
-		{958B43BC-CC5C-4FA2-8628-2B3B01D890B6}.Debug|Mixed Platforms.ActiveCfg = Debug|x86
-		{958B43BC-CC5C-4FA2-8628-2B3B01D890B6}.Debug|Mixed Platforms.Build.0 = Debug|x86
 		{958B43BC-CC5C-4FA2-8628-2B3B01D890B6}.Debug|x64.ActiveCfg = Debug|x64
 		{958B43BC-CC5C-4FA2-8628-2B3B01D890B6}.Debug|x64.Build.0 = Debug|x64
@@ -662,6 +600,4 @@
 		{958B43BC-CC5C-4FA2-8628-2B3B01D890B6}.Release|Any CPU.ActiveCfg = Release|Any CPU
 		{958B43BC-CC5C-4FA2-8628-2B3B01D890B6}.Release|Any CPU.Build.0 = Release|Any CPU
-		{958B43BC-CC5C-4FA2-8628-2B3B01D890B6}.Release|Mixed Platforms.ActiveCfg = Release|x86
-		{958B43BC-CC5C-4FA2-8628-2B3B01D890B6}.Release|Mixed Platforms.Build.0 = Release|x86
 		{958B43BC-CC5C-4FA2-8628-2B3B01D890B6}.Release|x64.ActiveCfg = Release|x64
 		{958B43BC-CC5C-4FA2-8628-2B3B01D890B6}.Release|x64.Build.0 = Release|x64
@@ -670,6 +606,4 @@
 		{678E2145-8152-4E19-9646-07D439D00301}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
 		{678E2145-8152-4E19-9646-07D439D00301}.Debug|Any CPU.Build.0 = Debug|Any CPU
-		{678E2145-8152-4E19-9646-07D439D00301}.Debug|Mixed Platforms.ActiveCfg = Debug|x86
-		{678E2145-8152-4E19-9646-07D439D00301}.Debug|Mixed Platforms.Build.0 = Debug|x86
 		{678E2145-8152-4E19-9646-07D439D00301}.Debug|x64.ActiveCfg = Debug|x64
 		{678E2145-8152-4E19-9646-07D439D00301}.Debug|x64.Build.0 = Debug|x64
@@ -678,6 +612,4 @@
 		{678E2145-8152-4E19-9646-07D439D00301}.Release|Any CPU.ActiveCfg = Release|Any CPU
 		{678E2145-8152-4E19-9646-07D439D00301}.Release|Any CPU.Build.0 = Release|Any CPU
-		{678E2145-8152-4E19-9646-07D439D00301}.Release|Mixed Platforms.ActiveCfg = Release|x86
-		{678E2145-8152-4E19-9646-07D439D00301}.Release|Mixed Platforms.Build.0 = Release|x86
 		{678E2145-8152-4E19-9646-07D439D00301}.Release|x64.ActiveCfg = Release|x64
 		{678E2145-8152-4E19-9646-07D439D00301}.Release|x64.Build.0 = Release|x64
@@ -686,6 +618,4 @@
 		{1849A92E-DCFC-4E05-BB0A-D7B7A3DAFCFB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
 		{1849A92E-DCFC-4E05-BB0A-D7B7A3DAFCFB}.Debug|Any CPU.Build.0 = Debug|Any CPU
-		{1849A92E-DCFC-4E05-BB0A-D7B7A3DAFCFB}.Debug|Mixed Platforms.ActiveCfg = Debug|x64
-		{1849A92E-DCFC-4E05-BB0A-D7B7A3DAFCFB}.Debug|Mixed Platforms.Build.0 = Debug|x64
 		{1849A92E-DCFC-4E05-BB0A-D7B7A3DAFCFB}.Debug|x64.ActiveCfg = Debug|x64
 		{1849A92E-DCFC-4E05-BB0A-D7B7A3DAFCFB}.Debug|x64.Build.0 = Debug|x64
@@ -694,6 +624,4 @@
 		{1849A92E-DCFC-4E05-BB0A-D7B7A3DAFCFB}.Release|Any CPU.ActiveCfg = Release|Any CPU
 		{1849A92E-DCFC-4E05-BB0A-D7B7A3DAFCFB}.Release|Any CPU.Build.0 = Release|Any CPU
-		{1849A92E-DCFC-4E05-BB0A-D7B7A3DAFCFB}.Release|Mixed Platforms.ActiveCfg = Release|x64
-		{1849A92E-DCFC-4E05-BB0A-D7B7A3DAFCFB}.Release|Mixed Platforms.Build.0 = Release|x64
 		{1849A92E-DCFC-4E05-BB0A-D7B7A3DAFCFB}.Release|x64.ActiveCfg = Release|x64
 		{1849A92E-DCFC-4E05-BB0A-D7B7A3DAFCFB}.Release|x64.Build.0 = Release|x64
@@ -702,6 +630,4 @@
 		{1B3063DB-D71C-4A6A-A359-883E8F53A140}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
 		{1B3063DB-D71C-4A6A-A359-883E8F53A140}.Debug|Any CPU.Build.0 = Debug|Any CPU
-		{1B3063DB-D71C-4A6A-A359-883E8F53A140}.Debug|Mixed Platforms.ActiveCfg = Debug|x86
-		{1B3063DB-D71C-4A6A-A359-883E8F53A140}.Debug|Mixed Platforms.Build.0 = Debug|x86
 		{1B3063DB-D71C-4A6A-A359-883E8F53A140}.Debug|x64.ActiveCfg = Debug|x64
 		{1B3063DB-D71C-4A6A-A359-883E8F53A140}.Debug|x64.Build.0 = Debug|x64
@@ -710,6 +636,4 @@
 		{1B3063DB-D71C-4A6A-A359-883E8F53A140}.Release|Any CPU.ActiveCfg = Release|Any CPU
 		{1B3063DB-D71C-4A6A-A359-883E8F53A140}.Release|Any CPU.Build.0 = Release|Any CPU
-		{1B3063DB-D71C-4A6A-A359-883E8F53A140}.Release|Mixed Platforms.ActiveCfg = Release|x86
-		{1B3063DB-D71C-4A6A-A359-883E8F53A140}.Release|Mixed Platforms.Build.0 = Release|x86
 		{1B3063DB-D71C-4A6A-A359-883E8F53A140}.Release|x64.ActiveCfg = Release|x64
 		{1B3063DB-D71C-4A6A-A359-883E8F53A140}.Release|x64.Build.0 = Release|x64
@@ -718,6 +642,4 @@
 		{72104A0B-90E7-42F3-9ABE-9BBBADD4B943}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
 		{72104A0B-90E7-42F3-9ABE-9BBBADD4B943}.Debug|Any CPU.Build.0 = Debug|Any CPU
-		{72104A0B-90E7-42F3-9ABE-9BBBADD4B943}.Debug|Mixed Platforms.ActiveCfg = Debug|x86
-		{72104A0B-90E7-42F3-9ABE-9BBBADD4B943}.Debug|Mixed Platforms.Build.0 = Debug|x86
 		{72104A0B-90E7-42F3-9ABE-9BBBADD4B943}.Debug|x64.ActiveCfg = Debug|x64
 		{72104A0B-90E7-42F3-9ABE-9BBBADD4B943}.Debug|x64.Build.0 = Debug|x64
@@ -726,6 +648,4 @@
 		{72104A0B-90E7-42F3-9ABE-9BBBADD4B943}.Release|Any CPU.ActiveCfg = Release|Any CPU
 		{72104A0B-90E7-42F3-9ABE-9BBBADD4B943}.Release|Any CPU.Build.0 = Release|Any CPU
-		{72104A0B-90E7-42F3-9ABE-9BBBADD4B943}.Release|Mixed Platforms.ActiveCfg = Release|x86
-		{72104A0B-90E7-42F3-9ABE-9BBBADD4B943}.Release|Mixed Platforms.Build.0 = Release|x86
 		{72104A0B-90E7-42F3-9ABE-9BBBADD4B943}.Release|x64.ActiveCfg = Release|x64
 		{72104A0B-90E7-42F3-9ABE-9BBBADD4B943}.Release|x64.Build.0 = Release|x64
@@ -734,6 +654,4 @@
 		{C49CB749-8B24-4628-8003-E86475749410}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
 		{C49CB749-8B24-4628-8003-E86475749410}.Debug|Any CPU.Build.0 = Debug|Any CPU
-		{C49CB749-8B24-4628-8003-E86475749410}.Debug|Mixed Platforms.ActiveCfg = Debug|x86
-		{C49CB749-8B24-4628-8003-E86475749410}.Debug|Mixed Platforms.Build.0 = Debug|x86
 		{C49CB749-8B24-4628-8003-E86475749410}.Debug|x64.ActiveCfg = Debug|x64
 		{C49CB749-8B24-4628-8003-E86475749410}.Debug|x64.Build.0 = Debug|x64
@@ -742,6 +660,4 @@
 		{C49CB749-8B24-4628-8003-E86475749410}.Release|Any CPU.ActiveCfg = Release|Any CPU
 		{C49CB749-8B24-4628-8003-E86475749410}.Release|Any CPU.Build.0 = Release|Any CPU
-		{C49CB749-8B24-4628-8003-E86475749410}.Release|Mixed Platforms.ActiveCfg = Release|x86
-		{C49CB749-8B24-4628-8003-E86475749410}.Release|Mixed Platforms.Build.0 = Release|x86
 		{C49CB749-8B24-4628-8003-E86475749410}.Release|x64.ActiveCfg = Release|x64
 		{C49CB749-8B24-4628-8003-E86475749410}.Release|x64.Build.0 = Release|x64
@@ -750,6 +666,4 @@
 		{56F9106A-079F-4C61-92F6-86A84C2D84B7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
 		{56F9106A-079F-4C61-92F6-86A84C2D84B7}.Debug|Any CPU.Build.0 = Debug|Any CPU
-		{56F9106A-079F-4C61-92F6-86A84C2D84B7}.Debug|Mixed Platforms.ActiveCfg = Debug|x86
-		{56F9106A-079F-4C61-92F6-86A84C2D84B7}.Debug|Mixed Platforms.Build.0 = Debug|x86
 		{56F9106A-079F-4C61-92F6-86A84C2D84B7}.Debug|x64.ActiveCfg = Debug|x64
 		{56F9106A-079F-4C61-92F6-86A84C2D84B7}.Debug|x64.Build.0 = Debug|x64
@@ -758,6 +672,4 @@
 		{56F9106A-079F-4C61-92F6-86A84C2D84B7}.Release|Any CPU.ActiveCfg = Release|Any CPU
 		{56F9106A-079F-4C61-92F6-86A84C2D84B7}.Release|Any CPU.Build.0 = Release|Any CPU
-		{56F9106A-079F-4C61-92F6-86A84C2D84B7}.Release|Mixed Platforms.ActiveCfg = Release|x86
-		{56F9106A-079F-4C61-92F6-86A84C2D84B7}.Release|Mixed Platforms.Build.0 = Release|x86
 		{56F9106A-079F-4C61-92F6-86A84C2D84B7}.Release|x64.ActiveCfg = Release|x64
 		{56F9106A-079F-4C61-92F6-86A84C2D84B7}.Release|x64.Build.0 = Release|x64
@@ -766,6 +678,4 @@
 		{AE5B1CE5-9862-4D6F-A700-D72CD9AEA295}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
 		{AE5B1CE5-9862-4D6F-A700-D72CD9AEA295}.Debug|Any CPU.Build.0 = Debug|Any CPU
-		{AE5B1CE5-9862-4D6F-A700-D72CD9AEA295}.Debug|Mixed Platforms.ActiveCfg = Debug|x86
-		{AE5B1CE5-9862-4D6F-A700-D72CD9AEA295}.Debug|Mixed Platforms.Build.0 = Debug|x86
 		{AE5B1CE5-9862-4D6F-A700-D72CD9AEA295}.Debug|x64.ActiveCfg = Debug|x64
 		{AE5B1CE5-9862-4D6F-A700-D72CD9AEA295}.Debug|x64.Build.0 = Debug|x64
@@ -774,6 +684,4 @@
 		{AE5B1CE5-9862-4D6F-A700-D72CD9AEA295}.Release|Any CPU.ActiveCfg = Release|Any CPU
 		{AE5B1CE5-9862-4D6F-A700-D72CD9AEA295}.Release|Any CPU.Build.0 = Release|Any CPU
-		{AE5B1CE5-9862-4D6F-A700-D72CD9AEA295}.Release|Mixed Platforms.ActiveCfg = Release|x86
-		{AE5B1CE5-9862-4D6F-A700-D72CD9AEA295}.Release|Mixed Platforms.Build.0 = Release|x86
 		{AE5B1CE5-9862-4D6F-A700-D72CD9AEA295}.Release|x64.ActiveCfg = Release|x64
 		{AE5B1CE5-9862-4D6F-A700-D72CD9AEA295}.Release|x64.Build.0 = Release|x64
@@ -782,6 +690,4 @@
 		{96AEBBEE-4203-45F3-BCF5-7B73BF256BDA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
 		{96AEBBEE-4203-45F3-BCF5-7B73BF256BDA}.Debug|Any CPU.Build.0 = Debug|Any CPU
-		{96AEBBEE-4203-45F3-BCF5-7B73BF256BDA}.Debug|Mixed Platforms.ActiveCfg = Debug|x64
-		{96AEBBEE-4203-45F3-BCF5-7B73BF256BDA}.Debug|Mixed Platforms.Build.0 = Debug|x64
 		{96AEBBEE-4203-45F3-BCF5-7B73BF256BDA}.Debug|x64.ActiveCfg = Debug|x64
 		{96AEBBEE-4203-45F3-BCF5-7B73BF256BDA}.Debug|x64.Build.0 = Debug|x64
@@ -790,6 +696,4 @@
 		{96AEBBEE-4203-45F3-BCF5-7B73BF256BDA}.Release|Any CPU.ActiveCfg = Release|Any CPU
 		{96AEBBEE-4203-45F3-BCF5-7B73BF256BDA}.Release|Any CPU.Build.0 = Release|Any CPU
-		{96AEBBEE-4203-45F3-BCF5-7B73BF256BDA}.Release|Mixed Platforms.ActiveCfg = Release|x64
-		{96AEBBEE-4203-45F3-BCF5-7B73BF256BDA}.Release|Mixed Platforms.Build.0 = Release|x64
 		{96AEBBEE-4203-45F3-BCF5-7B73BF256BDA}.Release|x64.ActiveCfg = Release|x64
 		{96AEBBEE-4203-45F3-BCF5-7B73BF256BDA}.Release|x64.Build.0 = Release|x64
@@ -798,6 +702,4 @@
 		{BB994448-2B21-4564-BB2E-38D8FFF8CF18}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
 		{BB994448-2B21-4564-BB2E-38D8FFF8CF18}.Debug|Any CPU.Build.0 = Debug|Any CPU
-		{BB994448-2B21-4564-BB2E-38D8FFF8CF18}.Debug|Mixed Platforms.ActiveCfg = Debug|x64
-		{BB994448-2B21-4564-BB2E-38D8FFF8CF18}.Debug|Mixed Platforms.Build.0 = Debug|x64
 		{BB994448-2B21-4564-BB2E-38D8FFF8CF18}.Debug|x64.ActiveCfg = Debug|x64
 		{BB994448-2B21-4564-BB2E-38D8FFF8CF18}.Debug|x64.Build.0 = Debug|x64
@@ -806,6 +708,4 @@
 		{BB994448-2B21-4564-BB2E-38D8FFF8CF18}.Release|Any CPU.ActiveCfg = Release|Any CPU
 		{BB994448-2B21-4564-BB2E-38D8FFF8CF18}.Release|Any CPU.Build.0 = Release|Any CPU
-		{BB994448-2B21-4564-BB2E-38D8FFF8CF18}.Release|Mixed Platforms.ActiveCfg = Release|x64
-		{BB994448-2B21-4564-BB2E-38D8FFF8CF18}.Release|Mixed Platforms.Build.0 = Release|x64
 		{BB994448-2B21-4564-BB2E-38D8FFF8CF18}.Release|x64.ActiveCfg = Release|x64
 		{BB994448-2B21-4564-BB2E-38D8FFF8CF18}.Release|x64.Build.0 = Release|x64
@@ -814,6 +714,4 @@
 		{57F38579-409D-4DD8-AB19-3F2C4A665126}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
 		{57F38579-409D-4DD8-AB19-3F2C4A665126}.Debug|Any CPU.Build.0 = Debug|Any CPU
-		{57F38579-409D-4DD8-AB19-3F2C4A665126}.Debug|Mixed Platforms.ActiveCfg = Debug|x64
-		{57F38579-409D-4DD8-AB19-3F2C4A665126}.Debug|Mixed Platforms.Build.0 = Debug|x64
 		{57F38579-409D-4DD8-AB19-3F2C4A665126}.Debug|x64.ActiveCfg = Debug|x64
 		{57F38579-409D-4DD8-AB19-3F2C4A665126}.Debug|x64.Build.0 = Debug|x64
@@ -822,6 +720,4 @@
 		{57F38579-409D-4DD8-AB19-3F2C4A665126}.Release|Any CPU.ActiveCfg = Release|Any CPU
 		{57F38579-409D-4DD8-AB19-3F2C4A665126}.Release|Any CPU.Build.0 = Release|Any CPU
-		{57F38579-409D-4DD8-AB19-3F2C4A665126}.Release|Mixed Platforms.ActiveCfg = Release|x64
-		{57F38579-409D-4DD8-AB19-3F2C4A665126}.Release|Mixed Platforms.Build.0 = Release|x64
 		{57F38579-409D-4DD8-AB19-3F2C4A665126}.Release|x64.ActiveCfg = Release|x64
 		{57F38579-409D-4DD8-AB19-3F2C4A665126}.Release|x64.Build.0 = Release|x64
@@ -830,6 +726,4 @@
 		{489CFE09-FDF7-4C89-BAB5-BD09CADD61AD}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
 		{489CFE09-FDF7-4C89-BAB5-BD09CADD61AD}.Debug|Any CPU.Build.0 = Debug|Any CPU
-		{489CFE09-FDF7-4C89-BAB5-BD09CADD61AD}.Debug|Mixed Platforms.ActiveCfg = Debug|x64
-		{489CFE09-FDF7-4C89-BAB5-BD09CADD61AD}.Debug|Mixed Platforms.Build.0 = Debug|x64
 		{489CFE09-FDF7-4C89-BAB5-BD09CADD61AD}.Debug|x64.ActiveCfg = Debug|x64
 		{489CFE09-FDF7-4C89-BAB5-BD09CADD61AD}.Debug|x64.Build.0 = Debug|x64
@@ -838,6 +732,4 @@
 		{489CFE09-FDF7-4C89-BAB5-BD09CADD61AD}.Release|Any CPU.ActiveCfg = Release|Any CPU
 		{489CFE09-FDF7-4C89-BAB5-BD09CADD61AD}.Release|Any CPU.Build.0 = Release|Any CPU
-		{489CFE09-FDF7-4C89-BAB5-BD09CADD61AD}.Release|Mixed Platforms.ActiveCfg = Release|x64
-		{489CFE09-FDF7-4C89-BAB5-BD09CADD61AD}.Release|Mixed Platforms.Build.0 = Release|x64
 		{489CFE09-FDF7-4C89-BAB5-BD09CADD61AD}.Release|x64.ActiveCfg = Release|x64
 		{489CFE09-FDF7-4C89-BAB5-BD09CADD61AD}.Release|x64.Build.0 = Release|x64
@@ -846,6 +738,4 @@
 		{4ABA047D-46DD-4608-9E4A-41C5F92FDBB1}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
 		{4ABA047D-46DD-4608-9E4A-41C5F92FDBB1}.Debug|Any CPU.Build.0 = Debug|Any CPU
-		{4ABA047D-46DD-4608-9E4A-41C5F92FDBB1}.Debug|Mixed Platforms.ActiveCfg = Debug|x64
-		{4ABA047D-46DD-4608-9E4A-41C5F92FDBB1}.Debug|Mixed Platforms.Build.0 = Debug|x64
 		{4ABA047D-46DD-4608-9E4A-41C5F92FDBB1}.Debug|x64.ActiveCfg = Debug|x64
 		{4ABA047D-46DD-4608-9E4A-41C5F92FDBB1}.Debug|x64.Build.0 = Debug|x64
@@ -854,6 +744,4 @@
 		{4ABA047D-46DD-4608-9E4A-41C5F92FDBB1}.Release|Any CPU.ActiveCfg = Release|Any CPU
 		{4ABA047D-46DD-4608-9E4A-41C5F92FDBB1}.Release|Any CPU.Build.0 = Release|Any CPU
-		{4ABA047D-46DD-4608-9E4A-41C5F92FDBB1}.Release|Mixed Platforms.ActiveCfg = Release|x64
-		{4ABA047D-46DD-4608-9E4A-41C5F92FDBB1}.Release|Mixed Platforms.Build.0 = Release|x64
 		{4ABA047D-46DD-4608-9E4A-41C5F92FDBB1}.Release|x64.ActiveCfg = Release|x64
 		{4ABA047D-46DD-4608-9E4A-41C5F92FDBB1}.Release|x64.Build.0 = Release|x64
@@ -862,6 +750,4 @@
 		{14AB8D24-25BC-400C-A846-4627AA945192}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
 		{14AB8D24-25BC-400C-A846-4627AA945192}.Debug|Any CPU.Build.0 = Debug|Any CPU
-		{14AB8D24-25BC-400C-A846-4627AA945192}.Debug|Mixed Platforms.ActiveCfg = Debug|x64
-		{14AB8D24-25BC-400C-A846-4627AA945192}.Debug|Mixed Platforms.Build.0 = Debug|x64
 		{14AB8D24-25BC-400C-A846-4627AA945192}.Debug|x64.ActiveCfg = Debug|x64
 		{14AB8D24-25BC-400C-A846-4627AA945192}.Debug|x64.Build.0 = Debug|x64
@@ -870,6 +756,4 @@
 		{14AB8D24-25BC-400C-A846-4627AA945192}.Release|Any CPU.ActiveCfg = Release|Any CPU
 		{14AB8D24-25BC-400C-A846-4627AA945192}.Release|Any CPU.Build.0 = Release|Any CPU
-		{14AB8D24-25BC-400C-A846-4627AA945192}.Release|Mixed Platforms.ActiveCfg = Release|x64
-		{14AB8D24-25BC-400C-A846-4627AA945192}.Release|Mixed Platforms.Build.0 = Release|x64
 		{14AB8D24-25BC-400C-A846-4627AA945192}.Release|x64.ActiveCfg = Release|x64
 		{14AB8D24-25BC-400C-A846-4627AA945192}.Release|x64.Build.0 = Release|x64
@@ -878,6 +762,4 @@
 		{662B4B15-8F4D-4AE5-B3EB-D91C215F5AF2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
 		{662B4B15-8F4D-4AE5-B3EB-D91C215F5AF2}.Debug|Any CPU.Build.0 = Debug|Any CPU
-		{662B4B15-8F4D-4AE5-B3EB-D91C215F5AF2}.Debug|Mixed Platforms.ActiveCfg = Debug|x64
-		{662B4B15-8F4D-4AE5-B3EB-D91C215F5AF2}.Debug|Mixed Platforms.Build.0 = Debug|x64
 		{662B4B15-8F4D-4AE5-B3EB-D91C215F5AF2}.Debug|x64.ActiveCfg = Debug|x64
 		{662B4B15-8F4D-4AE5-B3EB-D91C215F5AF2}.Debug|x64.Build.0 = Debug|x64
@@ -886,6 +768,4 @@
 		{662B4B15-8F4D-4AE5-B3EB-D91C215F5AF2}.Release|Any CPU.ActiveCfg = Release|Any CPU
 		{662B4B15-8F4D-4AE5-B3EB-D91C215F5AF2}.Release|Any CPU.Build.0 = Release|Any CPU
-		{662B4B15-8F4D-4AE5-B3EB-D91C215F5AF2}.Release|Mixed Platforms.ActiveCfg = Release|x64
-		{662B4B15-8F4D-4AE5-B3EB-D91C215F5AF2}.Release|Mixed Platforms.Build.0 = Release|x64
 		{662B4B15-8F4D-4AE5-B3EB-D91C215F5AF2}.Release|x64.ActiveCfg = Release|x64
 		{662B4B15-8F4D-4AE5-B3EB-D91C215F5AF2}.Release|x64.Build.0 = Release|x64
@@ -894,6 +774,4 @@
 		{887425B4-4348-49ED-A457-B7D2C26DDBF9}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
 		{887425B4-4348-49ED-A457-B7D2C26DDBF9}.Debug|Any CPU.Build.0 = Debug|Any CPU
-		{887425B4-4348-49ED-A457-B7D2C26DDBF9}.Debug|Mixed Platforms.ActiveCfg = Debug|x64
-		{887425B4-4348-49ED-A457-B7D2C26DDBF9}.Debug|Mixed Platforms.Build.0 = Debug|x64
 		{887425B4-4348-49ED-A457-B7D2C26DDBF9}.Debug|x64.ActiveCfg = Debug|x64
 		{887425B4-4348-49ED-A457-B7D2C26DDBF9}.Debug|x64.Build.0 = Debug|x64
@@ -902,6 +780,4 @@
 		{887425B4-4348-49ED-A457-B7D2C26DDBF9}.Release|Any CPU.ActiveCfg = Release|Any CPU
 		{887425B4-4348-49ED-A457-B7D2C26DDBF9}.Release|Any CPU.Build.0 = Release|Any CPU
-		{887425B4-4348-49ED-A457-B7D2C26DDBF9}.Release|Mixed Platforms.ActiveCfg = Release|x64
-		{887425B4-4348-49ED-A457-B7D2C26DDBF9}.Release|Mixed Platforms.Build.0 = Release|x64
 		{887425B4-4348-49ED-A457-B7D2C26DDBF9}.Release|x64.ActiveCfg = Release|x64
 		{887425B4-4348-49ED-A457-B7D2C26DDBF9}.Release|x64.Build.0 = Release|x64
@@ -910,6 +786,4 @@
 		{76945D76-CA61-4147-9DC2-0ACDCDDF87F9}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
 		{76945D76-CA61-4147-9DC2-0ACDCDDF87F9}.Debug|Any CPU.Build.0 = Debug|Any CPU
-		{76945D76-CA61-4147-9DC2-0ACDCDDF87F9}.Debug|Mixed Platforms.ActiveCfg = Debug|x64
-		{76945D76-CA61-4147-9DC2-0ACDCDDF87F9}.Debug|Mixed Platforms.Build.0 = Debug|x64
 		{76945D76-CA61-4147-9DC2-0ACDCDDF87F9}.Debug|x64.ActiveCfg = Debug|x64
 		{76945D76-CA61-4147-9DC2-0ACDCDDF87F9}.Debug|x64.Build.0 = Debug|x64
@@ -918,6 +792,4 @@
 		{76945D76-CA61-4147-9DC2-0ACDCDDF87F9}.Release|Any CPU.ActiveCfg = Release|Any CPU
 		{76945D76-CA61-4147-9DC2-0ACDCDDF87F9}.Release|Any CPU.Build.0 = Release|Any CPU
-		{76945D76-CA61-4147-9DC2-0ACDCDDF87F9}.Release|Mixed Platforms.ActiveCfg = Release|x64
-		{76945D76-CA61-4147-9DC2-0ACDCDDF87F9}.Release|Mixed Platforms.Build.0 = Release|x64
 		{76945D76-CA61-4147-9DC2-0ACDCDDF87F9}.Release|x64.ActiveCfg = Release|x64
 		{76945D76-CA61-4147-9DC2-0ACDCDDF87F9}.Release|x64.Build.0 = Release|x64
@@ -926,6 +798,4 @@
 		{BF7D9494-A586-457B-8DF9-ED599F9E6A71}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
 		{BF7D9494-A586-457B-8DF9-ED599F9E6A71}.Debug|Any CPU.Build.0 = Debug|Any CPU
-		{BF7D9494-A586-457B-8DF9-ED599F9E6A71}.Debug|Mixed Platforms.ActiveCfg = Debug|x86
-		{BF7D9494-A586-457B-8DF9-ED599F9E6A71}.Debug|Mixed Platforms.Build.0 = Debug|x86
 		{BF7D9494-A586-457B-8DF9-ED599F9E6A71}.Debug|x64.ActiveCfg = Debug|x64
 		{BF7D9494-A586-457B-8DF9-ED599F9E6A71}.Debug|x64.Build.0 = Debug|x64
@@ -934,6 +804,4 @@
 		{BF7D9494-A586-457B-8DF9-ED599F9E6A71}.Release|Any CPU.ActiveCfg = Release|Any CPU
 		{BF7D9494-A586-457B-8DF9-ED599F9E6A71}.Release|Any CPU.Build.0 = Release|Any CPU
-		{BF7D9494-A586-457B-8DF9-ED599F9E6A71}.Release|Mixed Platforms.ActiveCfg = Release|x86
-		{BF7D9494-A586-457B-8DF9-ED599F9E6A71}.Release|Mixed Platforms.Build.0 = Release|x86
 		{BF7D9494-A586-457B-8DF9-ED599F9E6A71}.Release|x64.ActiveCfg = Release|x64
 		{BF7D9494-A586-457B-8DF9-ED599F9E6A71}.Release|x64.Build.0 = Release|x64
@@ -942,6 +810,4 @@
 		{25087811-F74C-4128-BC86-8324271DA13E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
 		{25087811-F74C-4128-BC86-8324271DA13E}.Debug|Any CPU.Build.0 = Debug|Any CPU
-		{25087811-F74C-4128-BC86-8324271DA13E}.Debug|Mixed Platforms.ActiveCfg = Debug|x64
-		{25087811-F74C-4128-BC86-8324271DA13E}.Debug|Mixed Platforms.Build.0 = Debug|x64
 		{25087811-F74C-4128-BC86-8324271DA13E}.Debug|x64.ActiveCfg = Debug|x64
 		{25087811-F74C-4128-BC86-8324271DA13E}.Debug|x64.Build.0 = Debug|x64
@@ -950,6 +816,4 @@
 		{25087811-F74C-4128-BC86-8324271DA13E}.Release|Any CPU.ActiveCfg = Release|Any CPU
 		{25087811-F74C-4128-BC86-8324271DA13E}.Release|Any CPU.Build.0 = Release|Any CPU
-		{25087811-F74C-4128-BC86-8324271DA13E}.Release|Mixed Platforms.ActiveCfg = Release|x64
-		{25087811-F74C-4128-BC86-8324271DA13E}.Release|Mixed Platforms.Build.0 = Release|x64
 		{25087811-F74C-4128-BC86-8324271DA13E}.Release|x64.ActiveCfg = Release|x64
 		{25087811-F74C-4128-BC86-8324271DA13E}.Release|x64.Build.0 = Release|x64
@@ -958,6 +822,4 @@
 		{DBECB8B0-B166-4133-BAF1-ED67C3FD7FCA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
 		{DBECB8B0-B166-4133-BAF1-ED67C3FD7FCA}.Debug|Any CPU.Build.0 = Debug|Any CPU
-		{DBECB8B0-B166-4133-BAF1-ED67C3FD7FCA}.Debug|Mixed Platforms.ActiveCfg = Debug|x64
-		{DBECB8B0-B166-4133-BAF1-ED67C3FD7FCA}.Debug|Mixed Platforms.Build.0 = Debug|x64
 		{DBECB8B0-B166-4133-BAF1-ED67C3FD7FCA}.Debug|x64.ActiveCfg = Debug|x64
 		{DBECB8B0-B166-4133-BAF1-ED67C3FD7FCA}.Debug|x64.Build.0 = Debug|x64
@@ -966,6 +828,4 @@
 		{DBECB8B0-B166-4133-BAF1-ED67C3FD7FCA}.Release|Any CPU.ActiveCfg = Release|Any CPU
 		{DBECB8B0-B166-4133-BAF1-ED67C3FD7FCA}.Release|Any CPU.Build.0 = Release|Any CPU
-		{DBECB8B0-B166-4133-BAF1-ED67C3FD7FCA}.Release|Mixed Platforms.ActiveCfg = Release|x64
-		{DBECB8B0-B166-4133-BAF1-ED67C3FD7FCA}.Release|Mixed Platforms.Build.0 = Release|x64
 		{DBECB8B0-B166-4133-BAF1-ED67C3FD7FCA}.Release|x64.ActiveCfg = Release|x64
 		{DBECB8B0-B166-4133-BAF1-ED67C3FD7FCA}.Release|x64.Build.0 = Release|x64
@@ -974,6 +834,4 @@
 		{13CA37D6-4111-4E7B-BE2E-AF3DE462D384}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
 		{13CA37D6-4111-4E7B-BE2E-AF3DE462D384}.Debug|Any CPU.Build.0 = Debug|Any CPU
-		{13CA37D6-4111-4E7B-BE2E-AF3DE462D384}.Debug|Mixed Platforms.ActiveCfg = Debug|x64
-		{13CA37D6-4111-4E7B-BE2E-AF3DE462D384}.Debug|Mixed Platforms.Build.0 = Debug|x64
 		{13CA37D6-4111-4E7B-BE2E-AF3DE462D384}.Debug|x64.ActiveCfg = Debug|x64
 		{13CA37D6-4111-4E7B-BE2E-AF3DE462D384}.Debug|x64.Build.0 = Debug|x64
@@ -982,6 +840,4 @@
 		{13CA37D6-4111-4E7B-BE2E-AF3DE462D384}.Release|Any CPU.ActiveCfg = Release|Any CPU
 		{13CA37D6-4111-4E7B-BE2E-AF3DE462D384}.Release|Any CPU.Build.0 = Release|Any CPU
-		{13CA37D6-4111-4E7B-BE2E-AF3DE462D384}.Release|Mixed Platforms.ActiveCfg = Release|x64
-		{13CA37D6-4111-4E7B-BE2E-AF3DE462D384}.Release|Mixed Platforms.Build.0 = Release|x64
 		{13CA37D6-4111-4E7B-BE2E-AF3DE462D384}.Release|x64.ActiveCfg = Release|x64
 		{13CA37D6-4111-4E7B-BE2E-AF3DE462D384}.Release|x64.Build.0 = Release|x64
@@ -990,6 +846,4 @@
 		{BB6D334A-4BB6-4674-9883-31A6EBB32CAB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
 		{BB6D334A-4BB6-4674-9883-31A6EBB32CAB}.Debug|Any CPU.Build.0 = Debug|Any CPU
-		{BB6D334A-4BB6-4674-9883-31A6EBB32CAB}.Debug|Mixed Platforms.ActiveCfg = Debug|x64
-		{BB6D334A-4BB6-4674-9883-31A6EBB32CAB}.Debug|Mixed Platforms.Build.0 = Debug|x64
 		{BB6D334A-4BB6-4674-9883-31A6EBB32CAB}.Debug|x64.ActiveCfg = Debug|x64
 		{BB6D334A-4BB6-4674-9883-31A6EBB32CAB}.Debug|x64.Build.0 = Debug|x64
@@ -998,6 +852,4 @@
 		{BB6D334A-4BB6-4674-9883-31A6EBB32CAB}.Release|Any CPU.ActiveCfg = Release|Any CPU
 		{BB6D334A-4BB6-4674-9883-31A6EBB32CAB}.Release|Any CPU.Build.0 = Release|Any CPU
-		{BB6D334A-4BB6-4674-9883-31A6EBB32CAB}.Release|Mixed Platforms.ActiveCfg = Release|x64
-		{BB6D334A-4BB6-4674-9883-31A6EBB32CAB}.Release|Mixed Platforms.Build.0 = Release|x64
 		{BB6D334A-4BB6-4674-9883-31A6EBB32CAB}.Release|x64.ActiveCfg = Release|x64
 		{BB6D334A-4BB6-4674-9883-31A6EBB32CAB}.Release|x64.Build.0 = Release|x64
@@ -1006,6 +858,4 @@
 		{8FA6898D-E4B0-4E08-A6D6-F9F520E7959F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
 		{8FA6898D-E4B0-4E08-A6D6-F9F520E7959F}.Debug|Any CPU.Build.0 = Debug|Any CPU
-		{8FA6898D-E4B0-4E08-A6D6-F9F520E7959F}.Debug|Mixed Platforms.ActiveCfg = Debug|x64
-		{8FA6898D-E4B0-4E08-A6D6-F9F520E7959F}.Debug|Mixed Platforms.Build.0 = Debug|x64
 		{8FA6898D-E4B0-4E08-A6D6-F9F520E7959F}.Debug|x64.ActiveCfg = Debug|x64
 		{8FA6898D-E4B0-4E08-A6D6-F9F520E7959F}.Debug|x64.Build.0 = Debug|x64
@@ -1014,6 +864,4 @@
 		{8FA6898D-E4B0-4E08-A6D6-F9F520E7959F}.Release|Any CPU.ActiveCfg = Release|Any CPU
 		{8FA6898D-E4B0-4E08-A6D6-F9F520E7959F}.Release|Any CPU.Build.0 = Release|Any CPU
-		{8FA6898D-E4B0-4E08-A6D6-F9F520E7959F}.Release|Mixed Platforms.ActiveCfg = Release|x64
-		{8FA6898D-E4B0-4E08-A6D6-F9F520E7959F}.Release|Mixed Platforms.Build.0 = Release|x64
 		{8FA6898D-E4B0-4E08-A6D6-F9F520E7959F}.Release|x64.ActiveCfg = Release|x64
 		{8FA6898D-E4B0-4E08-A6D6-F9F520E7959F}.Release|x64.Build.0 = Release|x64
@@ -1022,6 +870,4 @@
 		{DDFB14DD-2A85-493C-A52D-E69729BBAEB0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
 		{DDFB14DD-2A85-493C-A52D-E69729BBAEB0}.Debug|Any CPU.Build.0 = Debug|Any CPU
-		{DDFB14DD-2A85-493C-A52D-E69729BBAEB0}.Debug|Mixed Platforms.ActiveCfg = Debug|x86
-		{DDFB14DD-2A85-493C-A52D-E69729BBAEB0}.Debug|Mixed Platforms.Build.0 = Debug|x86
 		{DDFB14DD-2A85-493C-A52D-E69729BBAEB0}.Debug|x64.ActiveCfg = Debug|x64
 		{DDFB14DD-2A85-493C-A52D-E69729BBAEB0}.Debug|x64.Build.0 = Debug|x64
@@ -1030,6 +876,4 @@
 		{DDFB14DD-2A85-493C-A52D-E69729BBAEB0}.Release|Any CPU.ActiveCfg = Release|Any CPU
 		{DDFB14DD-2A85-493C-A52D-E69729BBAEB0}.Release|Any CPU.Build.0 = Release|Any CPU
-		{DDFB14DD-2A85-493C-A52D-E69729BBAEB0}.Release|Mixed Platforms.ActiveCfg = Release|x86
-		{DDFB14DD-2A85-493C-A52D-E69729BBAEB0}.Release|Mixed Platforms.Build.0 = Release|x86
 		{DDFB14DD-2A85-493C-A52D-E69729BBAEB0}.Release|x64.ActiveCfg = Release|x64
 		{DDFB14DD-2A85-493C-A52D-E69729BBAEB0}.Release|x64.Build.0 = Release|x64
@@ -1038,6 +882,4 @@
 		{6F18ED66-2333-4B5C-B882-AC99FB3CDCE5}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
 		{6F18ED66-2333-4B5C-B882-AC99FB3CDCE5}.Debug|Any CPU.Build.0 = Debug|Any CPU
-		{6F18ED66-2333-4B5C-B882-AC99FB3CDCE5}.Debug|Mixed Platforms.ActiveCfg = Debug|x86
-		{6F18ED66-2333-4B5C-B882-AC99FB3CDCE5}.Debug|Mixed Platforms.Build.0 = Debug|x86
 		{6F18ED66-2333-4B5C-B882-AC99FB3CDCE5}.Debug|x64.ActiveCfg = Debug|x64
 		{6F18ED66-2333-4B5C-B882-AC99FB3CDCE5}.Debug|x64.Build.0 = Debug|x64
@@ -1046,6 +888,4 @@
 		{6F18ED66-2333-4B5C-B882-AC99FB3CDCE5}.Release|Any CPU.ActiveCfg = Release|Any CPU
 		{6F18ED66-2333-4B5C-B882-AC99FB3CDCE5}.Release|Any CPU.Build.0 = Release|Any CPU
-		{6F18ED66-2333-4B5C-B882-AC99FB3CDCE5}.Release|Mixed Platforms.ActiveCfg = Release|x86
-		{6F18ED66-2333-4B5C-B882-AC99FB3CDCE5}.Release|Mixed Platforms.Build.0 = Release|x86
 		{6F18ED66-2333-4B5C-B882-AC99FB3CDCE5}.Release|x64.ActiveCfg = Release|x64
 		{6F18ED66-2333-4B5C-B882-AC99FB3CDCE5}.Release|x64.Build.0 = Release|x64
@@ -1054,6 +894,4 @@
 		{66D249C3-A01D-42A8-82A2-919BC8EC3D83}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
 		{66D249C3-A01D-42A8-82A2-919BC8EC3D83}.Debug|Any CPU.Build.0 = Debug|Any CPU
-		{66D249C3-A01D-42A8-82A2-919BC8EC3D83}.Debug|Mixed Platforms.ActiveCfg = Debug|x86
-		{66D249C3-A01D-42A8-82A2-919BC8EC3D83}.Debug|Mixed Platforms.Build.0 = Debug|x86
 		{66D249C3-A01D-42A8-82A2-919BC8EC3D83}.Debug|x64.ActiveCfg = Debug|x64
 		{66D249C3-A01D-42A8-82A2-919BC8EC3D83}.Debug|x64.Build.0 = Debug|x64
@@ -1062,6 +900,4 @@
 		{66D249C3-A01D-42A8-82A2-919BC8EC3D83}.Release|Any CPU.ActiveCfg = Release|Any CPU
 		{66D249C3-A01D-42A8-82A2-919BC8EC3D83}.Release|Any CPU.Build.0 = Release|Any CPU
-		{66D249C3-A01D-42A8-82A2-919BC8EC3D83}.Release|Mixed Platforms.ActiveCfg = Release|x86
-		{66D249C3-A01D-42A8-82A2-919BC8EC3D83}.Release|Mixed Platforms.Build.0 = Release|x86
 		{66D249C3-A01D-42A8-82A2-919BC8EC3D83}.Release|x64.ActiveCfg = Release|x64
 		{66D249C3-A01D-42A8-82A2-919BC8EC3D83}.Release|x64.Build.0 = Release|x64
@@ -1070,6 +906,4 @@
 		{30D6606B-96E7-436C-B5D7-EA1455848E37}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
 		{30D6606B-96E7-436C-B5D7-EA1455848E37}.Debug|Any CPU.Build.0 = Debug|Any CPU
-		{30D6606B-96E7-436C-B5D7-EA1455848E37}.Debug|Mixed Platforms.ActiveCfg = Debug|x86
-		{30D6606B-96E7-436C-B5D7-EA1455848E37}.Debug|Mixed Platforms.Build.0 = Debug|x86
 		{30D6606B-96E7-436C-B5D7-EA1455848E37}.Debug|x64.ActiveCfg = Debug|x64
 		{30D6606B-96E7-436C-B5D7-EA1455848E37}.Debug|x64.Build.0 = Debug|x64
@@ -1078,6 +912,4 @@
 		{30D6606B-96E7-436C-B5D7-EA1455848E37}.Release|Any CPU.ActiveCfg = Release|Any CPU
 		{30D6606B-96E7-436C-B5D7-EA1455848E37}.Release|Any CPU.Build.0 = Release|Any CPU
-		{30D6606B-96E7-436C-B5D7-EA1455848E37}.Release|Mixed Platforms.ActiveCfg = Release|x86
-		{30D6606B-96E7-436C-B5D7-EA1455848E37}.Release|Mixed Platforms.Build.0 = Release|x86
 		{30D6606B-96E7-436C-B5D7-EA1455848E37}.Release|x64.ActiveCfg = Release|x64
 		{30D6606B-96E7-436C-B5D7-EA1455848E37}.Release|x64.Build.0 = Release|x64
@@ -1086,6 +918,4 @@
 		{F62BCD22-FB83-4444-9401-8031C2487A86}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
 		{F62BCD22-FB83-4444-9401-8031C2487A86}.Debug|Any CPU.Build.0 = Debug|Any CPU
-		{F62BCD22-FB83-4444-9401-8031C2487A86}.Debug|Mixed Platforms.ActiveCfg = Debug|x64
-		{F62BCD22-FB83-4444-9401-8031C2487A86}.Debug|Mixed Platforms.Build.0 = Debug|x64
 		{F62BCD22-FB83-4444-9401-8031C2487A86}.Debug|x64.ActiveCfg = Debug|x64
 		{F62BCD22-FB83-4444-9401-8031C2487A86}.Debug|x64.Build.0 = Debug|x64
@@ -1094,6 +924,4 @@
 		{F62BCD22-FB83-4444-9401-8031C2487A86}.Release|Any CPU.ActiveCfg = Release|Any CPU
 		{F62BCD22-FB83-4444-9401-8031C2487A86}.Release|Any CPU.Build.0 = Release|Any CPU
-		{F62BCD22-FB83-4444-9401-8031C2487A86}.Release|Mixed Platforms.ActiveCfg = Release|x64
-		{F62BCD22-FB83-4444-9401-8031C2487A86}.Release|Mixed Platforms.Build.0 = Release|x64
 		{F62BCD22-FB83-4444-9401-8031C2487A86}.Release|x64.ActiveCfg = Release|x64
 		{F62BCD22-FB83-4444-9401-8031C2487A86}.Release|x64.Build.0 = Release|x64
@@ -1102,6 +930,4 @@
 		{E10F395F-C8A6-48AD-B470-9AA7A1F43809}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
 		{E10F395F-C8A6-48AD-B470-9AA7A1F43809}.Debug|Any CPU.Build.0 = Debug|Any CPU
-		{E10F395F-C8A6-48AD-B470-9AA7A1F43809}.Debug|Mixed Platforms.ActiveCfg = Debug|x64
-		{E10F395F-C8A6-48AD-B470-9AA7A1F43809}.Debug|Mixed Platforms.Build.0 = Debug|x64
 		{E10F395F-C8A6-48AD-B470-9AA7A1F43809}.Debug|x64.ActiveCfg = Debug|x64
 		{E10F395F-C8A6-48AD-B470-9AA7A1F43809}.Debug|x64.Build.0 = Debug|x64
@@ -1110,6 +936,4 @@
 		{E10F395F-C8A6-48AD-B470-9AA7A1F43809}.Release|Any CPU.ActiveCfg = Release|Any CPU
 		{E10F395F-C8A6-48AD-B470-9AA7A1F43809}.Release|Any CPU.Build.0 = Release|Any CPU
-		{E10F395F-C8A6-48AD-B470-9AA7A1F43809}.Release|Mixed Platforms.ActiveCfg = Release|x64
-		{E10F395F-C8A6-48AD-B470-9AA7A1F43809}.Release|Mixed Platforms.Build.0 = Release|x64
 		{E10F395F-C8A6-48AD-B470-9AA7A1F43809}.Release|x64.ActiveCfg = Release|x64
 		{E10F395F-C8A6-48AD-B470-9AA7A1F43809}.Release|x64.Build.0 = Release|x64
@@ -1118,6 +942,4 @@
 		{A9EE65D9-405B-4C9C-B470-FC911AAC541B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
 		{A9EE65D9-405B-4C9C-B470-FC911AAC541B}.Debug|Any CPU.Build.0 = Debug|Any CPU
-		{A9EE65D9-405B-4C9C-B470-FC911AAC541B}.Debug|Mixed Platforms.ActiveCfg = Debug|x86
-		{A9EE65D9-405B-4C9C-B470-FC911AAC541B}.Debug|Mixed Platforms.Build.0 = Debug|x86
 		{A9EE65D9-405B-4C9C-B470-FC911AAC541B}.Debug|x64.ActiveCfg = Debug|x64
 		{A9EE65D9-405B-4C9C-B470-FC911AAC541B}.Debug|x64.Build.0 = Debug|x64
@@ -1126,6 +948,4 @@
 		{A9EE65D9-405B-4C9C-B470-FC911AAC541B}.Release|Any CPU.ActiveCfg = Release|Any CPU
 		{A9EE65D9-405B-4C9C-B470-FC911AAC541B}.Release|Any CPU.Build.0 = Release|Any CPU
-		{A9EE65D9-405B-4C9C-B470-FC911AAC541B}.Release|Mixed Platforms.ActiveCfg = Release|x86
-		{A9EE65D9-405B-4C9C-B470-FC911AAC541B}.Release|Mixed Platforms.Build.0 = Release|x86
 		{A9EE65D9-405B-4C9C-B470-FC911AAC541B}.Release|x64.ActiveCfg = Release|x64
 		{A9EE65D9-405B-4C9C-B470-FC911AAC541B}.Release|x64.Build.0 = Release|x64
@@ -1134,6 +954,4 @@
 		{96E5ED5B-187D-4012-9CDA-D85CDAD38342}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
 		{96E5ED5B-187D-4012-9CDA-D85CDAD38342}.Debug|Any CPU.Build.0 = Debug|Any CPU
-		{96E5ED5B-187D-4012-9CDA-D85CDAD38342}.Debug|Mixed Platforms.ActiveCfg = Debug|x86
-		{96E5ED5B-187D-4012-9CDA-D85CDAD38342}.Debug|Mixed Platforms.Build.0 = Debug|x86
 		{96E5ED5B-187D-4012-9CDA-D85CDAD38342}.Debug|x64.ActiveCfg = Debug|x64
 		{96E5ED5B-187D-4012-9CDA-D85CDAD38342}.Debug|x64.Build.0 = Debug|x64
@@ -1142,6 +960,4 @@
 		{96E5ED5B-187D-4012-9CDA-D85CDAD38342}.Release|Any CPU.ActiveCfg = Release|Any CPU
 		{96E5ED5B-187D-4012-9CDA-D85CDAD38342}.Release|Any CPU.Build.0 = Release|Any CPU
-		{96E5ED5B-187D-4012-9CDA-D85CDAD38342}.Release|Mixed Platforms.ActiveCfg = Release|x86
-		{96E5ED5B-187D-4012-9CDA-D85CDAD38342}.Release|Mixed Platforms.Build.0 = Release|x86
 		{96E5ED5B-187D-4012-9CDA-D85CDAD38342}.Release|x64.ActiveCfg = Release|x64
 		{96E5ED5B-187D-4012-9CDA-D85CDAD38342}.Release|x64.Build.0 = Release|x64
@@ -1150,6 +966,4 @@
 		{D58A232D-04BA-4186-B73E-0EC86FD31ABE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
 		{D58A232D-04BA-4186-B73E-0EC86FD31ABE}.Debug|Any CPU.Build.0 = Debug|Any CPU
-		{D58A232D-04BA-4186-B73E-0EC86FD31ABE}.Debug|Mixed Platforms.ActiveCfg = Debug|x86
-		{D58A232D-04BA-4186-B73E-0EC86FD31ABE}.Debug|Mixed Platforms.Build.0 = Debug|x86
 		{D58A232D-04BA-4186-B73E-0EC86FD31ABE}.Debug|x64.ActiveCfg = Debug|x64
 		{D58A232D-04BA-4186-B73E-0EC86FD31ABE}.Debug|x64.Build.0 = Debug|x64
@@ -1158,6 +972,4 @@
 		{D58A232D-04BA-4186-B73E-0EC86FD31ABE}.Release|Any CPU.ActiveCfg = Release|Any CPU
 		{D58A232D-04BA-4186-B73E-0EC86FD31ABE}.Release|Any CPU.Build.0 = Release|Any CPU
-		{D58A232D-04BA-4186-B73E-0EC86FD31ABE}.Release|Mixed Platforms.ActiveCfg = Release|x86
-		{D58A232D-04BA-4186-B73E-0EC86FD31ABE}.Release|Mixed Platforms.Build.0 = Release|x86
 		{D58A232D-04BA-4186-B73E-0EC86FD31ABE}.Release|x64.ActiveCfg = Release|x64
 		{D58A232D-04BA-4186-B73E-0EC86FD31ABE}.Release|x64.Build.0 = Release|x64
@@ -1166,6 +978,4 @@
 		{4AE3FC69-C575-42D2-BC46-0FAD5850EFC5}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
 		{4AE3FC69-C575-42D2-BC46-0FAD5850EFC5}.Debug|Any CPU.Build.0 = Debug|Any CPU
-		{4AE3FC69-C575-42D2-BC46-0FAD5850EFC5}.Debug|Mixed Platforms.ActiveCfg = Debug|x86
-		{4AE3FC69-C575-42D2-BC46-0FAD5850EFC5}.Debug|Mixed Platforms.Build.0 = Debug|x86
 		{4AE3FC69-C575-42D2-BC46-0FAD5850EFC5}.Debug|x64.ActiveCfg = Debug|x64
 		{4AE3FC69-C575-42D2-BC46-0FAD5850EFC5}.Debug|x64.Build.0 = Debug|x64
@@ -1174,6 +984,4 @@
 		{4AE3FC69-C575-42D2-BC46-0FAD5850EFC5}.Release|Any CPU.ActiveCfg = Release|Any CPU
 		{4AE3FC69-C575-42D2-BC46-0FAD5850EFC5}.Release|Any CPU.Build.0 = Release|Any CPU
-		{4AE3FC69-C575-42D2-BC46-0FAD5850EFC5}.Release|Mixed Platforms.ActiveCfg = Release|x86
-		{4AE3FC69-C575-42D2-BC46-0FAD5850EFC5}.Release|Mixed Platforms.Build.0 = Release|x86
 		{4AE3FC69-C575-42D2-BC46-0FAD5850EFC5}.Release|x64.ActiveCfg = Release|x64
 		{4AE3FC69-C575-42D2-BC46-0FAD5850EFC5}.Release|x64.Build.0 = Release|x64
@@ -1182,6 +990,4 @@
 		{E0B45023-CB84-48A1-A1B7-8295B64B7BAD}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
 		{E0B45023-CB84-48A1-A1B7-8295B64B7BAD}.Debug|Any CPU.Build.0 = Debug|Any CPU
-		{E0B45023-CB84-48A1-A1B7-8295B64B7BAD}.Debug|Mixed Platforms.ActiveCfg = Debug|x64
-		{E0B45023-CB84-48A1-A1B7-8295B64B7BAD}.Debug|Mixed Platforms.Build.0 = Debug|x64
 		{E0B45023-CB84-48A1-A1B7-8295B64B7BAD}.Debug|x64.ActiveCfg = Debug|x64
 		{E0B45023-CB84-48A1-A1B7-8295B64B7BAD}.Debug|x64.Build.0 = Debug|x64
@@ -1190,6 +996,4 @@
 		{E0B45023-CB84-48A1-A1B7-8295B64B7BAD}.Release|Any CPU.ActiveCfg = Release|Any CPU
 		{E0B45023-CB84-48A1-A1B7-8295B64B7BAD}.Release|Any CPU.Build.0 = Release|Any CPU
-		{E0B45023-CB84-48A1-A1B7-8295B64B7BAD}.Release|Mixed Platforms.ActiveCfg = Release|x64
-		{E0B45023-CB84-48A1-A1B7-8295B64B7BAD}.Release|Mixed Platforms.Build.0 = Release|x64
 		{E0B45023-CB84-48A1-A1B7-8295B64B7BAD}.Release|x64.ActiveCfg = Release|x64
 		{E0B45023-CB84-48A1-A1B7-8295B64B7BAD}.Release|x64.Build.0 = Release|x64
@@ -1198,6 +1002,4 @@
 		{D767C38D-8014-46B0-9A32-03A3AECCE34A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
 		{D767C38D-8014-46B0-9A32-03A3AECCE34A}.Debug|Any CPU.Build.0 = Debug|Any CPU
-		{D767C38D-8014-46B0-9A32-03A3AECCE34A}.Debug|Mixed Platforms.ActiveCfg = Debug|x64
-		{D767C38D-8014-46B0-9A32-03A3AECCE34A}.Debug|Mixed Platforms.Build.0 = Debug|x64
 		{D767C38D-8014-46B0-9A32-03A3AECCE34A}.Debug|x64.ActiveCfg = Debug|x64
 		{D767C38D-8014-46B0-9A32-03A3AECCE34A}.Debug|x64.Build.0 = Debug|x64
@@ -1206,6 +1008,4 @@
 		{D767C38D-8014-46B0-9A32-03A3AECCE34A}.Release|Any CPU.ActiveCfg = Release|Any CPU
 		{D767C38D-8014-46B0-9A32-03A3AECCE34A}.Release|Any CPU.Build.0 = Release|Any CPU
-		{D767C38D-8014-46B0-9A32-03A3AECCE34A}.Release|Mixed Platforms.ActiveCfg = Release|x64
-		{D767C38D-8014-46B0-9A32-03A3AECCE34A}.Release|Mixed Platforms.Build.0 = Release|x64
 		{D767C38D-8014-46B0-9A32-03A3AECCE34A}.Release|x64.ActiveCfg = Release|x64
 		{D767C38D-8014-46B0-9A32-03A3AECCE34A}.Release|x64.Build.0 = Release|x64
@@ -1214,6 +1014,4 @@
 		{CDA28124-ACD0-4231-8EB0-C510B361F84E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
 		{CDA28124-ACD0-4231-8EB0-C510B361F84E}.Debug|Any CPU.Build.0 = Debug|Any CPU
-		{CDA28124-ACD0-4231-8EB0-C510B361F84E}.Debug|Mixed Platforms.ActiveCfg = Debug|x64
-		{CDA28124-ACD0-4231-8EB0-C510B361F84E}.Debug|Mixed Platforms.Build.0 = Debug|x64
 		{CDA28124-ACD0-4231-8EB0-C510B361F84E}.Debug|x64.ActiveCfg = Debug|x64
 		{CDA28124-ACD0-4231-8EB0-C510B361F84E}.Debug|x64.Build.0 = Debug|x64
@@ -1222,6 +1020,4 @@
 		{CDA28124-ACD0-4231-8EB0-C510B361F84E}.Release|Any CPU.ActiveCfg = Release|Any CPU
 		{CDA28124-ACD0-4231-8EB0-C510B361F84E}.Release|Any CPU.Build.0 = Release|Any CPU
-		{CDA28124-ACD0-4231-8EB0-C510B361F84E}.Release|Mixed Platforms.ActiveCfg = Release|x64
-		{CDA28124-ACD0-4231-8EB0-C510B361F84E}.Release|Mixed Platforms.Build.0 = Release|x64
 		{CDA28124-ACD0-4231-8EB0-C510B361F84E}.Release|x64.ActiveCfg = Release|x64
 		{CDA28124-ACD0-4231-8EB0-C510B361F84E}.Release|x64.Build.0 = Release|x64
@@ -1230,6 +1026,4 @@
 		{88B9B0E3-344E-4196-82A3-0F9732506FE8}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
 		{88B9B0E3-344E-4196-82A3-0F9732506FE8}.Debug|Any CPU.Build.0 = Debug|Any CPU
-		{88B9B0E3-344E-4196-82A3-0F9732506FE8}.Debug|Mixed Platforms.ActiveCfg = Debug|x86
-		{88B9B0E3-344E-4196-82A3-0F9732506FE8}.Debug|Mixed Platforms.Build.0 = Debug|x86
 		{88B9B0E3-344E-4196-82A3-0F9732506FE8}.Debug|x64.ActiveCfg = Debug|x64
 		{88B9B0E3-344E-4196-82A3-0F9732506FE8}.Debug|x64.Build.0 = Debug|x64
@@ -1238,6 +1032,4 @@
 		{88B9B0E3-344E-4196-82A3-0F9732506FE8}.Release|Any CPU.ActiveCfg = Release|Any CPU
 		{88B9B0E3-344E-4196-82A3-0F9732506FE8}.Release|Any CPU.Build.0 = Release|Any CPU
-		{88B9B0E3-344E-4196-82A3-0F9732506FE8}.Release|Mixed Platforms.ActiveCfg = Release|x86
-		{88B9B0E3-344E-4196-82A3-0F9732506FE8}.Release|Mixed Platforms.Build.0 = Release|x86
 		{88B9B0E3-344E-4196-82A3-0F9732506FE8}.Release|x64.ActiveCfg = Release|x64
 		{88B9B0E3-344E-4196-82A3-0F9732506FE8}.Release|x64.Build.0 = Release|x64
@@ -1246,6 +1038,4 @@
 		{6AE0E1F5-D3FF-43A3-90E1-2435E7493FB5}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
 		{6AE0E1F5-D3FF-43A3-90E1-2435E7493FB5}.Debug|Any CPU.Build.0 = Debug|Any CPU
-		{6AE0E1F5-D3FF-43A3-90E1-2435E7493FB5}.Debug|Mixed Platforms.ActiveCfg = Debug|x86
-		{6AE0E1F5-D3FF-43A3-90E1-2435E7493FB5}.Debug|Mixed Platforms.Build.0 = Debug|x86
 		{6AE0E1F5-D3FF-43A3-90E1-2435E7493FB5}.Debug|x64.ActiveCfg = Debug|x64
 		{6AE0E1F5-D3FF-43A3-90E1-2435E7493FB5}.Debug|x64.Build.0 = Debug|x64
@@ -1254,6 +1044,4 @@
 		{6AE0E1F5-D3FF-43A3-90E1-2435E7493FB5}.Release|Any CPU.ActiveCfg = Release|Any CPU
 		{6AE0E1F5-D3FF-43A3-90E1-2435E7493FB5}.Release|Any CPU.Build.0 = Release|Any CPU
-		{6AE0E1F5-D3FF-43A3-90E1-2435E7493FB5}.Release|Mixed Platforms.ActiveCfg = Release|x86
-		{6AE0E1F5-D3FF-43A3-90E1-2435E7493FB5}.Release|Mixed Platforms.Build.0 = Release|x86
 		{6AE0E1F5-D3FF-43A3-90E1-2435E7493FB5}.Release|x64.ActiveCfg = Release|x64
 		{6AE0E1F5-D3FF-43A3-90E1-2435E7493FB5}.Release|x64.Build.0 = Release|x64
@@ -1262,6 +1050,4 @@
 		{A51DA44F-CB35-4F6F-99F5-2A2E904AB93B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
 		{A51DA44F-CB35-4F6F-99F5-2A2E904AB93B}.Debug|Any CPU.Build.0 = Debug|Any CPU
-		{A51DA44F-CB35-4F6F-99F5-2A2E904AB93B}.Debug|Mixed Platforms.ActiveCfg = Debug|x64
-		{A51DA44F-CB35-4F6F-99F5-2A2E904AB93B}.Debug|Mixed Platforms.Build.0 = Debug|x64
 		{A51DA44F-CB35-4F6F-99F5-2A2E904AB93B}.Debug|x64.ActiveCfg = Debug|x64
 		{A51DA44F-CB35-4F6F-99F5-2A2E904AB93B}.Debug|x64.Build.0 = Debug|x64
@@ -1270,6 +1056,4 @@
 		{A51DA44F-CB35-4F6F-99F5-2A2E904AB93B}.Release|Any CPU.ActiveCfg = Release|Any CPU
 		{A51DA44F-CB35-4F6F-99F5-2A2E904AB93B}.Release|Any CPU.Build.0 = Release|Any CPU
-		{A51DA44F-CB35-4F6F-99F5-2A2E904AB93B}.Release|Mixed Platforms.ActiveCfg = Release|x64
-		{A51DA44F-CB35-4F6F-99F5-2A2E904AB93B}.Release|Mixed Platforms.Build.0 = Release|x64
 		{A51DA44F-CB35-4F6F-99F5-2A2E904AB93B}.Release|x64.ActiveCfg = Release|x64
 		{A51DA44F-CB35-4F6F-99F5-2A2E904AB93B}.Release|x64.Build.0 = Release|x64
@@ -1278,6 +1062,4 @@
 		{125D3006-67F5-48CB-913E-73C0548F17FA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
 		{125D3006-67F5-48CB-913E-73C0548F17FA}.Debug|Any CPU.Build.0 = Debug|Any CPU
-		{125D3006-67F5-48CB-913E-73C0548F17FA}.Debug|Mixed Platforms.ActiveCfg = Debug|x86
-		{125D3006-67F5-48CB-913E-73C0548F17FA}.Debug|Mixed Platforms.Build.0 = Debug|x86
 		{125D3006-67F5-48CB-913E-73C0548F17FA}.Debug|x64.ActiveCfg = Debug|x64
 		{125D3006-67F5-48CB-913E-73C0548F17FA}.Debug|x64.Build.0 = Debug|x64
@@ -1286,6 +1068,4 @@
 		{125D3006-67F5-48CB-913E-73C0548F17FA}.Release|Any CPU.ActiveCfg = Release|Any CPU
 		{125D3006-67F5-48CB-913E-73C0548F17FA}.Release|Any CPU.Build.0 = Release|Any CPU
-		{125D3006-67F5-48CB-913E-73C0548F17FA}.Release|Mixed Platforms.ActiveCfg = Release|x86
-		{125D3006-67F5-48CB-913E-73C0548F17FA}.Release|Mixed Platforms.Build.0 = Release|x86
 		{125D3006-67F5-48CB-913E-73C0548F17FA}.Release|x64.ActiveCfg = Release|x64
 		{125D3006-67F5-48CB-913E-73C0548F17FA}.Release|x64.Build.0 = Release|x64
@@ -1294,6 +1074,4 @@
 		{F5C0ECAC-EDBA-4024-872A-1F74AFCB20B4}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
 		{F5C0ECAC-EDBA-4024-872A-1F74AFCB20B4}.Debug|Any CPU.Build.0 = Debug|Any CPU
-		{F5C0ECAC-EDBA-4024-872A-1F74AFCB20B4}.Debug|Mixed Platforms.ActiveCfg = Debug|x86
-		{F5C0ECAC-EDBA-4024-872A-1F74AFCB20B4}.Debug|Mixed Platforms.Build.0 = Debug|x86
 		{F5C0ECAC-EDBA-4024-872A-1F74AFCB20B4}.Debug|x64.ActiveCfg = Debug|x64
 		{F5C0ECAC-EDBA-4024-872A-1F74AFCB20B4}.Debug|x64.Build.0 = Debug|x64
@@ -1302,6 +1080,4 @@
 		{F5C0ECAC-EDBA-4024-872A-1F74AFCB20B4}.Release|Any CPU.ActiveCfg = Release|Any CPU
 		{F5C0ECAC-EDBA-4024-872A-1F74AFCB20B4}.Release|Any CPU.Build.0 = Release|Any CPU
-		{F5C0ECAC-EDBA-4024-872A-1F74AFCB20B4}.Release|Mixed Platforms.ActiveCfg = Release|x86
-		{F5C0ECAC-EDBA-4024-872A-1F74AFCB20B4}.Release|Mixed Platforms.Build.0 = Release|x86
 		{F5C0ECAC-EDBA-4024-872A-1F74AFCB20B4}.Release|x64.ActiveCfg = Release|x64
 		{F5C0ECAC-EDBA-4024-872A-1F74AFCB20B4}.Release|x64.Build.0 = Release|x64
@@ -1310,6 +1086,4 @@
 		{30DD3DA2-CA57-49DD-A5BA-50CEF19DB45F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
 		{30DD3DA2-CA57-49DD-A5BA-50CEF19DB45F}.Debug|Any CPU.Build.0 = Debug|Any CPU
-		{30DD3DA2-CA57-49DD-A5BA-50CEF19DB45F}.Debug|Mixed Platforms.ActiveCfg = Debug|x86
-		{30DD3DA2-CA57-49DD-A5BA-50CEF19DB45F}.Debug|Mixed Platforms.Build.0 = Debug|x86
 		{30DD3DA2-CA57-49DD-A5BA-50CEF19DB45F}.Debug|x64.ActiveCfg = Debug|x64
 		{30DD3DA2-CA57-49DD-A5BA-50CEF19DB45F}.Debug|x64.Build.0 = Debug|x64
@@ -1318,6 +1092,4 @@
 		{30DD3DA2-CA57-49DD-A5BA-50CEF19DB45F}.Release|Any CPU.ActiveCfg = Release|Any CPU
 		{30DD3DA2-CA57-49DD-A5BA-50CEF19DB45F}.Release|Any CPU.Build.0 = Release|Any CPU
-		{30DD3DA2-CA57-49DD-A5BA-50CEF19DB45F}.Release|Mixed Platforms.ActiveCfg = Release|x86
-		{30DD3DA2-CA57-49DD-A5BA-50CEF19DB45F}.Release|Mixed Platforms.Build.0 = Release|x86
 		{30DD3DA2-CA57-49DD-A5BA-50CEF19DB45F}.Release|x64.ActiveCfg = Release|x64
 		{30DD3DA2-CA57-49DD-A5BA-50CEF19DB45F}.Release|x64.Build.0 = Release|x64
@@ -1326,6 +1098,4 @@
 		{6F42C5F8-16CD-43EE-8208-FD4573A69D85}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
 		{6F42C5F8-16CD-43EE-8208-FD4573A69D85}.Debug|Any CPU.Build.0 = Debug|Any CPU
-		{6F42C5F8-16CD-43EE-8208-FD4573A69D85}.Debug|Mixed Platforms.ActiveCfg = Debug|x86
-		{6F42C5F8-16CD-43EE-8208-FD4573A69D85}.Debug|Mixed Platforms.Build.0 = Debug|x86
 		{6F42C5F8-16CD-43EE-8208-FD4573A69D85}.Debug|x64.ActiveCfg = Debug|x64
 		{6F42C5F8-16CD-43EE-8208-FD4573A69D85}.Debug|x64.Build.0 = Debug|x64
@@ -1334,6 +1104,4 @@
 		{6F42C5F8-16CD-43EE-8208-FD4573A69D85}.Release|Any CPU.ActiveCfg = Release|Any CPU
 		{6F42C5F8-16CD-43EE-8208-FD4573A69D85}.Release|Any CPU.Build.0 = Release|Any CPU
-		{6F42C5F8-16CD-43EE-8208-FD4573A69D85}.Release|Mixed Platforms.ActiveCfg = Release|x86
-		{6F42C5F8-16CD-43EE-8208-FD4573A69D85}.Release|Mixed Platforms.Build.0 = Release|x86
 		{6F42C5F8-16CD-43EE-8208-FD4573A69D85}.Release|x64.ActiveCfg = Release|x64
 		{6F42C5F8-16CD-43EE-8208-FD4573A69D85}.Release|x64.Build.0 = Release|x64
@@ -1342,6 +1110,4 @@
 		{70DFD984-B1D9-46FE-8EB7-4DE92D71A9FC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
 		{70DFD984-B1D9-46FE-8EB7-4DE92D71A9FC}.Debug|Any CPU.Build.0 = Debug|Any CPU
-		{70DFD984-B1D9-46FE-8EB7-4DE92D71A9FC}.Debug|Mixed Platforms.ActiveCfg = Debug|x86
-		{70DFD984-B1D9-46FE-8EB7-4DE92D71A9FC}.Debug|Mixed Platforms.Build.0 = Debug|x86
 		{70DFD984-B1D9-46FE-8EB7-4DE92D71A9FC}.Debug|x64.ActiveCfg = Debug|x64
 		{70DFD984-B1D9-46FE-8EB7-4DE92D71A9FC}.Debug|x64.Build.0 = Debug|x64
@@ -1350,6 +1116,4 @@
 		{70DFD984-B1D9-46FE-8EB7-4DE92D71A9FC}.Release|Any CPU.ActiveCfg = Release|Any CPU
 		{70DFD984-B1D9-46FE-8EB7-4DE92D71A9FC}.Release|Any CPU.Build.0 = Release|Any CPU
-		{70DFD984-B1D9-46FE-8EB7-4DE92D71A9FC}.Release|Mixed Platforms.ActiveCfg = Release|x86
-		{70DFD984-B1D9-46FE-8EB7-4DE92D71A9FC}.Release|Mixed Platforms.Build.0 = Release|x86
 		{70DFD984-B1D9-46FE-8EB7-4DE92D71A9FC}.Release|x64.ActiveCfg = Release|x64
 		{70DFD984-B1D9-46FE-8EB7-4DE92D71A9FC}.Release|x64.Build.0 = Release|x64
@@ -1358,6 +1122,4 @@
 		{BDF86B1D-630E-4CE2-8A49-8C90B1BDE4C9}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
 		{BDF86B1D-630E-4CE2-8A49-8C90B1BDE4C9}.Debug|Any CPU.Build.0 = Debug|Any CPU
-		{BDF86B1D-630E-4CE2-8A49-8C90B1BDE4C9}.Debug|Mixed Platforms.ActiveCfg = Debug|x86
-		{BDF86B1D-630E-4CE2-8A49-8C90B1BDE4C9}.Debug|Mixed Platforms.Build.0 = Debug|x86
 		{BDF86B1D-630E-4CE2-8A49-8C90B1BDE4C9}.Debug|x64.ActiveCfg = Debug|x64
 		{BDF86B1D-630E-4CE2-8A49-8C90B1BDE4C9}.Debug|x64.Build.0 = Debug|x64
@@ -1366,6 +1128,4 @@
 		{BDF86B1D-630E-4CE2-8A49-8C90B1BDE4C9}.Release|Any CPU.ActiveCfg = Release|Any CPU
 		{BDF86B1D-630E-4CE2-8A49-8C90B1BDE4C9}.Release|Any CPU.Build.0 = Release|Any CPU
-		{BDF86B1D-630E-4CE2-8A49-8C90B1BDE4C9}.Release|Mixed Platforms.ActiveCfg = Release|x86
-		{BDF86B1D-630E-4CE2-8A49-8C90B1BDE4C9}.Release|Mixed Platforms.Build.0 = Release|x86
 		{BDF86B1D-630E-4CE2-8A49-8C90B1BDE4C9}.Release|x64.ActiveCfg = Release|x64
 		{BDF86B1D-630E-4CE2-8A49-8C90B1BDE4C9}.Release|x64.Build.0 = Release|x64
@@ -1374,6 +1134,4 @@
 		{8824925E-3E00-4543-8293-7DDACE4737F8}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
 		{8824925E-3E00-4543-8293-7DDACE4737F8}.Debug|Any CPU.Build.0 = Debug|Any CPU
-		{8824925E-3E00-4543-8293-7DDACE4737F8}.Debug|Mixed Platforms.ActiveCfg = Debug|x86
-		{8824925E-3E00-4543-8293-7DDACE4737F8}.Debug|Mixed Platforms.Build.0 = Debug|x86
 		{8824925E-3E00-4543-8293-7DDACE4737F8}.Debug|x64.ActiveCfg = Debug|x64
 		{8824925E-3E00-4543-8293-7DDACE4737F8}.Debug|x64.Build.0 = Debug|x64
@@ -1382,6 +1140,4 @@
 		{8824925E-3E00-4543-8293-7DDACE4737F8}.Release|Any CPU.ActiveCfg = Release|Any CPU
 		{8824925E-3E00-4543-8293-7DDACE4737F8}.Release|Any CPU.Build.0 = Release|Any CPU
-		{8824925E-3E00-4543-8293-7DDACE4737F8}.Release|Mixed Platforms.ActiveCfg = Release|x86
-		{8824925E-3E00-4543-8293-7DDACE4737F8}.Release|Mixed Platforms.Build.0 = Release|x86
 		{8824925E-3E00-4543-8293-7DDACE4737F8}.Release|x64.ActiveCfg = Release|x64
 		{8824925E-3E00-4543-8293-7DDACE4737F8}.Release|x64.Build.0 = Release|x64
@@ -1390,6 +1146,4 @@
 		{799B0B38-E384-4A17-A73C-F211EB854592}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
 		{799B0B38-E384-4A17-A73C-F211EB854592}.Debug|Any CPU.Build.0 = Debug|Any CPU
-		{799B0B38-E384-4A17-A73C-F211EB854592}.Debug|Mixed Platforms.ActiveCfg = Debug|x86
-		{799B0B38-E384-4A17-A73C-F211EB854592}.Debug|Mixed Platforms.Build.0 = Debug|x86
 		{799B0B38-E384-4A17-A73C-F211EB854592}.Debug|x64.ActiveCfg = Debug|x64
 		{799B0B38-E384-4A17-A73C-F211EB854592}.Debug|x64.Build.0 = Debug|x64
@@ -1398,6 +1152,4 @@
 		{799B0B38-E384-4A17-A73C-F211EB854592}.Release|Any CPU.ActiveCfg = Release|Any CPU
 		{799B0B38-E384-4A17-A73C-F211EB854592}.Release|Any CPU.Build.0 = Release|Any CPU
-		{799B0B38-E384-4A17-A73C-F211EB854592}.Release|Mixed Platforms.ActiveCfg = Release|x86
-		{799B0B38-E384-4A17-A73C-F211EB854592}.Release|Mixed Platforms.Build.0 = Release|x86
 		{799B0B38-E384-4A17-A73C-F211EB854592}.Release|x64.ActiveCfg = Release|x64
 		{799B0B38-E384-4A17-A73C-F211EB854592}.Release|x64.Build.0 = Release|x64
@@ -1406,6 +1158,4 @@
 		{F409DD9E-1E9C-4EB1-AA3A-9F6E987C6E58}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
 		{F409DD9E-1E9C-4EB1-AA3A-9F6E987C6E58}.Debug|Any CPU.Build.0 = Debug|Any CPU
-		{F409DD9E-1E9C-4EB1-AA3A-9F6E987C6E58}.Debug|Mixed Platforms.ActiveCfg = Debug|x64
-		{F409DD9E-1E9C-4EB1-AA3A-9F6E987C6E58}.Debug|Mixed Platforms.Build.0 = Debug|x64
 		{F409DD9E-1E9C-4EB1-AA3A-9F6E987C6E58}.Debug|x64.ActiveCfg = Debug|x64
 		{F409DD9E-1E9C-4EB1-AA3A-9F6E987C6E58}.Debug|x64.Build.0 = Debug|x64
@@ -1414,6 +1164,4 @@
 		{F409DD9E-1E9C-4EB1-AA3A-9F6E987C6E58}.Release|Any CPU.ActiveCfg = Release|Any CPU
 		{F409DD9E-1E9C-4EB1-AA3A-9F6E987C6E58}.Release|Any CPU.Build.0 = Release|Any CPU
-		{F409DD9E-1E9C-4EB1-AA3A-9F6E987C6E58}.Release|Mixed Platforms.ActiveCfg = Release|x64
-		{F409DD9E-1E9C-4EB1-AA3A-9F6E987C6E58}.Release|Mixed Platforms.Build.0 = Release|x64
 		{F409DD9E-1E9C-4EB1-AA3A-9F6E987C6E58}.Release|x64.ActiveCfg = Release|x64
 		{F409DD9E-1E9C-4EB1-AA3A-9F6E987C6E58}.Release|x64.Build.0 = Release|x64
@@ -1422,6 +1170,4 @@
 		{A9AD58B9-3EF9-4CC1-97E5-8D909039FF5C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
 		{A9AD58B9-3EF9-4CC1-97E5-8D909039FF5C}.Debug|Any CPU.Build.0 = Debug|Any CPU
-		{A9AD58B9-3EF9-4CC1-97E5-8D909039FF5C}.Debug|Mixed Platforms.ActiveCfg = Debug|x64
-		{A9AD58B9-3EF9-4CC1-97E5-8D909039FF5C}.Debug|Mixed Platforms.Build.0 = Debug|x64
 		{A9AD58B9-3EF9-4CC1-97E5-8D909039FF5C}.Debug|x64.ActiveCfg = Debug|x64
 		{A9AD58B9-3EF9-4CC1-97E5-8D909039FF5C}.Debug|x64.Build.0 = Debug|x64
@@ -1430,6 +1176,4 @@
 		{A9AD58B9-3EF9-4CC1-97E5-8D909039FF5C}.Release|Any CPU.ActiveCfg = Release|Any CPU
 		{A9AD58B9-3EF9-4CC1-97E5-8D909039FF5C}.Release|Any CPU.Build.0 = Release|Any CPU
-		{A9AD58B9-3EF9-4CC1-97E5-8D909039FF5C}.Release|Mixed Platforms.ActiveCfg = Release|x64
-		{A9AD58B9-3EF9-4CC1-97E5-8D909039FF5C}.Release|Mixed Platforms.Build.0 = Release|x64
 		{A9AD58B9-3EF9-4CC1-97E5-8D909039FF5C}.Release|x64.ActiveCfg = Release|x64
 		{A9AD58B9-3EF9-4CC1-97E5-8D909039FF5C}.Release|x64.Build.0 = Release|x64
@@ -1438,6 +1182,4 @@
 		{3EAF1454-086D-44A2-8509-B1BA24DB1865}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
 		{3EAF1454-086D-44A2-8509-B1BA24DB1865}.Debug|Any CPU.Build.0 = Debug|Any CPU
-		{3EAF1454-086D-44A2-8509-B1BA24DB1865}.Debug|Mixed Platforms.ActiveCfg = Debug|x64
-		{3EAF1454-086D-44A2-8509-B1BA24DB1865}.Debug|Mixed Platforms.Build.0 = Debug|x64
 		{3EAF1454-086D-44A2-8509-B1BA24DB1865}.Debug|x64.ActiveCfg = Debug|x64
 		{3EAF1454-086D-44A2-8509-B1BA24DB1865}.Debug|x64.Build.0 = Debug|x64
@@ -1446,6 +1188,4 @@
 		{3EAF1454-086D-44A2-8509-B1BA24DB1865}.Release|Any CPU.ActiveCfg = Release|Any CPU
 		{3EAF1454-086D-44A2-8509-B1BA24DB1865}.Release|Any CPU.Build.0 = Release|Any CPU
-		{3EAF1454-086D-44A2-8509-B1BA24DB1865}.Release|Mixed Platforms.ActiveCfg = Release|x64
-		{3EAF1454-086D-44A2-8509-B1BA24DB1865}.Release|Mixed Platforms.Build.0 = Release|x64
 		{3EAF1454-086D-44A2-8509-B1BA24DB1865}.Release|x64.ActiveCfg = Release|x64
 		{3EAF1454-086D-44A2-8509-B1BA24DB1865}.Release|x64.Build.0 = Release|x64
@@ -1454,6 +1194,4 @@
 		{3BD61258-31DA-4B09-89C0-4F71FEF5F05A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
 		{3BD61258-31DA-4B09-89C0-4F71FEF5F05A}.Debug|Any CPU.Build.0 = Debug|Any CPU
-		{3BD61258-31DA-4B09-89C0-4F71FEF5F05A}.Debug|Mixed Platforms.ActiveCfg = Debug|x86
-		{3BD61258-31DA-4B09-89C0-4F71FEF5F05A}.Debug|Mixed Platforms.Build.0 = Debug|x86
 		{3BD61258-31DA-4B09-89C0-4F71FEF5F05A}.Debug|x64.ActiveCfg = Debug|x64
 		{3BD61258-31DA-4B09-89C0-4F71FEF5F05A}.Debug|x64.Build.0 = Debug|x64
@@ -1462,6 +1200,4 @@
 		{3BD61258-31DA-4B09-89C0-4F71FEF5F05A}.Release|Any CPU.ActiveCfg = Release|Any CPU
 		{3BD61258-31DA-4B09-89C0-4F71FEF5F05A}.Release|Any CPU.Build.0 = Release|Any CPU
-		{3BD61258-31DA-4B09-89C0-4F71FEF5F05A}.Release|Mixed Platforms.ActiveCfg = Release|x86
-		{3BD61258-31DA-4B09-89C0-4F71FEF5F05A}.Release|Mixed Platforms.Build.0 = Release|x86
 		{3BD61258-31DA-4B09-89C0-4F71FEF5F05A}.Release|x64.ActiveCfg = Release|x64
 		{3BD61258-31DA-4B09-89C0-4F71FEF5F05A}.Release|x64.Build.0 = Release|x64
@@ -1470,6 +1206,4 @@
 		{AB687BBE-1BFE-476B-906D-44237135431D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
 		{AB687BBE-1BFE-476B-906D-44237135431D}.Debug|Any CPU.Build.0 = Debug|Any CPU
-		{AB687BBE-1BFE-476B-906D-44237135431D}.Debug|Mixed Platforms.ActiveCfg = Debug|x86
-		{AB687BBE-1BFE-476B-906D-44237135431D}.Debug|Mixed Platforms.Build.0 = Debug|x86
 		{AB687BBE-1BFE-476B-906D-44237135431D}.Debug|x64.ActiveCfg = Debug|x64
 		{AB687BBE-1BFE-476B-906D-44237135431D}.Debug|x64.Build.0 = Debug|x64
@@ -1478,6 +1212,4 @@
 		{AB687BBE-1BFE-476B-906D-44237135431D}.Release|Any CPU.ActiveCfg = Release|Any CPU
 		{AB687BBE-1BFE-476B-906D-44237135431D}.Release|Any CPU.Build.0 = Release|Any CPU
-		{AB687BBE-1BFE-476B-906D-44237135431D}.Release|Mixed Platforms.ActiveCfg = Release|x86
-		{AB687BBE-1BFE-476B-906D-44237135431D}.Release|Mixed Platforms.Build.0 = Release|x86
 		{AB687BBE-1BFE-476B-906D-44237135431D}.Release|x64.ActiveCfg = Release|x64
 		{AB687BBE-1BFE-476B-906D-44237135431D}.Release|x64.Build.0 = Release|x64
@@ -1486,6 +1218,4 @@
 		{4FE983A1-AAF8-4977-B9E2-52B3224510CB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
 		{4FE983A1-AAF8-4977-B9E2-52B3224510CB}.Debug|Any CPU.Build.0 = Debug|Any CPU
-		{4FE983A1-AAF8-4977-B9E2-52B3224510CB}.Debug|Mixed Platforms.ActiveCfg = Debug|x86
-		{4FE983A1-AAF8-4977-B9E2-52B3224510CB}.Debug|Mixed Platforms.Build.0 = Debug|x86
 		{4FE983A1-AAF8-4977-B9E2-52B3224510CB}.Debug|x64.ActiveCfg = Debug|x64
 		{4FE983A1-AAF8-4977-B9E2-52B3224510CB}.Debug|x64.Build.0 = Debug|x64
@@ -1494,6 +1224,4 @@
 		{4FE983A1-AAF8-4977-B9E2-52B3224510CB}.Release|Any CPU.ActiveCfg = Release|Any CPU
 		{4FE983A1-AAF8-4977-B9E2-52B3224510CB}.Release|Any CPU.Build.0 = Release|Any CPU
-		{4FE983A1-AAF8-4977-B9E2-52B3224510CB}.Release|Mixed Platforms.ActiveCfg = Release|x86
-		{4FE983A1-AAF8-4977-B9E2-52B3224510CB}.Release|Mixed Platforms.Build.0 = Release|x86
 		{4FE983A1-AAF8-4977-B9E2-52B3224510CB}.Release|x64.ActiveCfg = Release|x64
 		{4FE983A1-AAF8-4977-B9E2-52B3224510CB}.Release|x64.Build.0 = Release|x64
@@ -1502,6 +1230,4 @@
 		{5A4679EF-A8F3-4647-B722-441A36B3BA6B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
 		{5A4679EF-A8F3-4647-B722-441A36B3BA6B}.Debug|Any CPU.Build.0 = Debug|Any CPU
-		{5A4679EF-A8F3-4647-B722-441A36B3BA6B}.Debug|Mixed Platforms.ActiveCfg = Debug|x86
-		{5A4679EF-A8F3-4647-B722-441A36B3BA6B}.Debug|Mixed Platforms.Build.0 = Debug|x86
 		{5A4679EF-A8F3-4647-B722-441A36B3BA6B}.Debug|x64.ActiveCfg = Debug|x64
 		{5A4679EF-A8F3-4647-B722-441A36B3BA6B}.Debug|x64.Build.0 = Debug|x64
@@ -1510,6 +1236,4 @@
 		{5A4679EF-A8F3-4647-B722-441A36B3BA6B}.Release|Any CPU.ActiveCfg = Release|Any CPU
 		{5A4679EF-A8F3-4647-B722-441A36B3BA6B}.Release|Any CPU.Build.0 = Release|Any CPU
-		{5A4679EF-A8F3-4647-B722-441A36B3BA6B}.Release|Mixed Platforms.ActiveCfg = Release|x86
-		{5A4679EF-A8F3-4647-B722-441A36B3BA6B}.Release|Mixed Platforms.Build.0 = Release|x86
 		{5A4679EF-A8F3-4647-B722-441A36B3BA6B}.Release|x64.ActiveCfg = Release|x64
 		{5A4679EF-A8F3-4647-B722-441A36B3BA6B}.Release|x64.Build.0 = Release|x64
@@ -1518,6 +1242,4 @@
 		{71D904D9-233B-44B2-ABB2-1525691228C5}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
 		{71D904D9-233B-44B2-ABB2-1525691228C5}.Debug|Any CPU.Build.0 = Debug|Any CPU
-		{71D904D9-233B-44B2-ABB2-1525691228C5}.Debug|Mixed Platforms.ActiveCfg = Debug|x64
-		{71D904D9-233B-44B2-ABB2-1525691228C5}.Debug|Mixed Platforms.Build.0 = Debug|x64
 		{71D904D9-233B-44B2-ABB2-1525691228C5}.Debug|x64.ActiveCfg = Debug|x64
 		{71D904D9-233B-44B2-ABB2-1525691228C5}.Debug|x64.Build.0 = Debug|x64
@@ -1526,6 +1248,4 @@
 		{71D904D9-233B-44B2-ABB2-1525691228C5}.Release|Any CPU.ActiveCfg = Release|Any CPU
 		{71D904D9-233B-44B2-ABB2-1525691228C5}.Release|Any CPU.Build.0 = Release|Any CPU
-		{71D904D9-233B-44B2-ABB2-1525691228C5}.Release|Mixed Platforms.ActiveCfg = Release|x64
-		{71D904D9-233B-44B2-ABB2-1525691228C5}.Release|Mixed Platforms.Build.0 = Release|x64
 		{71D904D9-233B-44B2-ABB2-1525691228C5}.Release|x64.ActiveCfg = Release|x64
 		{71D904D9-233B-44B2-ABB2-1525691228C5}.Release|x64.Build.0 = Release|x64
@@ -1534,6 +1254,4 @@
 		{A16F23B5-FB62-499E-A831-26953AA56FE2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
 		{A16F23B5-FB62-499E-A831-26953AA56FE2}.Debug|Any CPU.Build.0 = Debug|Any CPU
-		{A16F23B5-FB62-499E-A831-26953AA56FE2}.Debug|Mixed Platforms.ActiveCfg = Debug|x86
-		{A16F23B5-FB62-499E-A831-26953AA56FE2}.Debug|Mixed Platforms.Build.0 = Debug|x86
 		{A16F23B5-FB62-499E-A831-26953AA56FE2}.Debug|x64.ActiveCfg = Debug|x64
 		{A16F23B5-FB62-499E-A831-26953AA56FE2}.Debug|x64.Build.0 = Debug|x64
@@ -1542,6 +1260,4 @@
 		{A16F23B5-FB62-499E-A831-26953AA56FE2}.Release|Any CPU.ActiveCfg = Release|Any CPU
 		{A16F23B5-FB62-499E-A831-26953AA56FE2}.Release|Any CPU.Build.0 = Release|Any CPU
-		{A16F23B5-FB62-499E-A831-26953AA56FE2}.Release|Mixed Platforms.ActiveCfg = Release|x86
-		{A16F23B5-FB62-499E-A831-26953AA56FE2}.Release|Mixed Platforms.Build.0 = Release|x86
 		{A16F23B5-FB62-499E-A831-26953AA56FE2}.Release|x64.ActiveCfg = Release|x64
 		{A16F23B5-FB62-499E-A831-26953AA56FE2}.Release|x64.Build.0 = Release|x64
@@ -1550,6 +1266,4 @@
 		{89B50302-9CEE-4D13-9779-633EADCAE624}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
 		{89B50302-9CEE-4D13-9779-633EADCAE624}.Debug|Any CPU.Build.0 = Debug|Any CPU
-		{89B50302-9CEE-4D13-9779-633EADCAE624}.Debug|Mixed Platforms.ActiveCfg = Debug|x86
-		{89B50302-9CEE-4D13-9779-633EADCAE624}.Debug|Mixed Platforms.Build.0 = Debug|x86
 		{89B50302-9CEE-4D13-9779-633EADCAE624}.Debug|x64.ActiveCfg = Debug|x64
 		{89B50302-9CEE-4D13-9779-633EADCAE624}.Debug|x64.Build.0 = Debug|x64
@@ -1558,6 +1272,4 @@
 		{89B50302-9CEE-4D13-9779-633EADCAE624}.Release|Any CPU.ActiveCfg = Release|Any CPU
 		{89B50302-9CEE-4D13-9779-633EADCAE624}.Release|Any CPU.Build.0 = Release|Any CPU
-		{89B50302-9CEE-4D13-9779-633EADCAE624}.Release|Mixed Platforms.ActiveCfg = Release|x86
-		{89B50302-9CEE-4D13-9779-633EADCAE624}.Release|Mixed Platforms.Build.0 = Release|x86
 		{89B50302-9CEE-4D13-9779-633EADCAE624}.Release|x64.ActiveCfg = Release|x64
 		{89B50302-9CEE-4D13-9779-633EADCAE624}.Release|x64.Build.0 = Release|x64
@@ -1566,6 +1278,4 @@
 		{25735DB4-8E54-4A2C-83E3-A60C76565E55}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
 		{25735DB4-8E54-4A2C-83E3-A60C76565E55}.Debug|Any CPU.Build.0 = Debug|Any CPU
-		{25735DB4-8E54-4A2C-83E3-A60C76565E55}.Debug|Mixed Platforms.ActiveCfg = Debug|x64
-		{25735DB4-8E54-4A2C-83E3-A60C76565E55}.Debug|Mixed Platforms.Build.0 = Debug|x64
 		{25735DB4-8E54-4A2C-83E3-A60C76565E55}.Debug|x64.ActiveCfg = Debug|x64
 		{25735DB4-8E54-4A2C-83E3-A60C76565E55}.Debug|x64.Build.0 = Debug|x64
@@ -1574,6 +1284,4 @@
 		{25735DB4-8E54-4A2C-83E3-A60C76565E55}.Release|Any CPU.ActiveCfg = Release|Any CPU
 		{25735DB4-8E54-4A2C-83E3-A60C76565E55}.Release|Any CPU.Build.0 = Release|Any CPU
-		{25735DB4-8E54-4A2C-83E3-A60C76565E55}.Release|Mixed Platforms.ActiveCfg = Release|x64
-		{25735DB4-8E54-4A2C-83E3-A60C76565E55}.Release|Mixed Platforms.Build.0 = Release|x64
 		{25735DB4-8E54-4A2C-83E3-A60C76565E55}.Release|x64.ActiveCfg = Release|x64
 		{25735DB4-8E54-4A2C-83E3-A60C76565E55}.Release|x64.Build.0 = Release|x64
@@ -1582,6 +1290,4 @@
 		{A8D5676D-9662-437A-B44D-ECB4046CDE12}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
 		{A8D5676D-9662-437A-B44D-ECB4046CDE12}.Debug|Any CPU.Build.0 = Debug|Any CPU
-		{A8D5676D-9662-437A-B44D-ECB4046CDE12}.Debug|Mixed Platforms.ActiveCfg = Debug|x64
-		{A8D5676D-9662-437A-B44D-ECB4046CDE12}.Debug|Mixed Platforms.Build.0 = Debug|x64
 		{A8D5676D-9662-437A-B44D-ECB4046CDE12}.Debug|x64.ActiveCfg = Debug|x64
 		{A8D5676D-9662-437A-B44D-ECB4046CDE12}.Debug|x64.Build.0 = Debug|x64
@@ -1590,6 +1296,4 @@
 		{A8D5676D-9662-437A-B44D-ECB4046CDE12}.Release|Any CPU.ActiveCfg = Release|Any CPU
 		{A8D5676D-9662-437A-B44D-ECB4046CDE12}.Release|Any CPU.Build.0 = Release|Any CPU
-		{A8D5676D-9662-437A-B44D-ECB4046CDE12}.Release|Mixed Platforms.ActiveCfg = Release|x64
-		{A8D5676D-9662-437A-B44D-ECB4046CDE12}.Release|Mixed Platforms.Build.0 = Release|x64
 		{A8D5676D-9662-437A-B44D-ECB4046CDE12}.Release|x64.ActiveCfg = Release|x64
 		{A8D5676D-9662-437A-B44D-ECB4046CDE12}.Release|x64.Build.0 = Release|x64
@@ -1598,6 +1302,4 @@
 		{6908BDCE-D925-43F3-94AC-A531E6DF2591}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
 		{6908BDCE-D925-43F3-94AC-A531E6DF2591}.Debug|Any CPU.Build.0 = Debug|Any CPU
-		{6908BDCE-D925-43F3-94AC-A531E6DF2591}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
-		{6908BDCE-D925-43F3-94AC-A531E6DF2591}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
 		{6908BDCE-D925-43F3-94AC-A531E6DF2591}.Debug|x64.ActiveCfg = Debug|Any CPU
 		{6908BDCE-D925-43F3-94AC-A531E6DF2591}.Debug|x64.Build.0 = Debug|Any CPU
@@ -1606,6 +1308,4 @@
 		{6908BDCE-D925-43F3-94AC-A531E6DF2591}.Release|Any CPU.ActiveCfg = Release|Any CPU
 		{6908BDCE-D925-43F3-94AC-A531E6DF2591}.Release|Any CPU.Build.0 = Release|Any CPU
-		{6908BDCE-D925-43F3-94AC-A531E6DF2591}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
-		{6908BDCE-D925-43F3-94AC-A531E6DF2591}.Release|Mixed Platforms.Build.0 = Release|Any CPU
 		{6908BDCE-D925-43F3-94AC-A531E6DF2591}.Release|x64.ActiveCfg = Release|Any CPU
 		{6908BDCE-D925-43F3-94AC-A531E6DF2591}.Release|x64.Build.0 = Release|Any CPU
@@ -1614,6 +1314,4 @@
 		{DD01ED24-3750-4567-9A23-1DB676A15610}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
 		{DD01ED24-3750-4567-9A23-1DB676A15610}.Debug|Any CPU.Build.0 = Debug|Any CPU
-		{DD01ED24-3750-4567-9A23-1DB676A15610}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
-		{DD01ED24-3750-4567-9A23-1DB676A15610}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
 		{DD01ED24-3750-4567-9A23-1DB676A15610}.Debug|x64.ActiveCfg = Debug|Any CPU
 		{DD01ED24-3750-4567-9A23-1DB676A15610}.Debug|x64.Build.0 = Debug|Any CPU
@@ -1622,6 +1320,4 @@
 		{DD01ED24-3750-4567-9A23-1DB676A15610}.Release|Any CPU.ActiveCfg = Release|Any CPU
 		{DD01ED24-3750-4567-9A23-1DB676A15610}.Release|Any CPU.Build.0 = Release|Any CPU
-		{DD01ED24-3750-4567-9A23-1DB676A15610}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
-		{DD01ED24-3750-4567-9A23-1DB676A15610}.Release|Mixed Platforms.Build.0 = Release|Any CPU
 		{DD01ED24-3750-4567-9A23-1DB676A15610}.Release|x64.ActiveCfg = Release|Any CPU
 		{DD01ED24-3750-4567-9A23-1DB676A15610}.Release|x64.Build.0 = Release|Any CPU
@@ -1630,6 +1326,4 @@
 		{250ADE34-82FD-4BAE-86D5-985FBE589C4A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
 		{250ADE34-82FD-4BAE-86D5-985FBE589C4A}.Debug|Any CPU.Build.0 = Debug|Any CPU
-		{250ADE34-82FD-4BAE-86D5-985FBE589C4A}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
-		{250ADE34-82FD-4BAE-86D5-985FBE589C4A}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
 		{250ADE34-82FD-4BAE-86D5-985FBE589C4A}.Debug|x64.ActiveCfg = Debug|Any CPU
 		{250ADE34-82FD-4BAE-86D5-985FBE589C4A}.Debug|x64.Build.0 = Debug|Any CPU
@@ -1638,6 +1332,4 @@
 		{250ADE34-82FD-4BAE-86D5-985FBE589C4A}.Release|Any CPU.ActiveCfg = Release|Any CPU
 		{250ADE34-82FD-4BAE-86D5-985FBE589C4A}.Release|Any CPU.Build.0 = Release|Any CPU
-		{250ADE34-82FD-4BAE-86D5-985FBE589C4A}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
-		{250ADE34-82FD-4BAE-86D5-985FBE589C4A}.Release|Mixed Platforms.Build.0 = Release|Any CPU
 		{250ADE34-82FD-4BAE-86D5-985FBE589C4A}.Release|x64.ActiveCfg = Release|Any CPU
 		{250ADE34-82FD-4BAE-86D5-985FBE589C4A}.Release|x64.Build.0 = Release|Any CPU
@@ -1646,6 +1338,4 @@
 		{C268DA4C-4004-47DA-AF23-44C983281A68}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
 		{C268DA4C-4004-47DA-AF23-44C983281A68}.Debug|Any CPU.Build.0 = Debug|Any CPU
-		{C268DA4C-4004-47DA-AF23-44C983281A68}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
-		{C268DA4C-4004-47DA-AF23-44C983281A68}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
 		{C268DA4C-4004-47DA-AF23-44C983281A68}.Debug|x64.ActiveCfg = Debug|Any CPU
 		{C268DA4C-4004-47DA-AF23-44C983281A68}.Debug|x64.Build.0 = Debug|Any CPU
@@ -1654,6 +1344,4 @@
 		{C268DA4C-4004-47DA-AF23-44C983281A68}.Release|Any CPU.ActiveCfg = Release|Any CPU
 		{C268DA4C-4004-47DA-AF23-44C983281A68}.Release|Any CPU.Build.0 = Release|Any CPU
-		{C268DA4C-4004-47DA-AF23-44C983281A68}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
-		{C268DA4C-4004-47DA-AF23-44C983281A68}.Release|Mixed Platforms.Build.0 = Release|Any CPU
 		{C268DA4C-4004-47DA-AF23-44C983281A68}.Release|x64.ActiveCfg = Release|Any CPU
 		{C268DA4C-4004-47DA-AF23-44C983281A68}.Release|x64.Build.0 = Release|Any CPU
@@ -1662,6 +1350,4 @@
 		{236459CE-80CF-4991-972F-DE74C826BCCC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
 		{236459CE-80CF-4991-972F-DE74C826BCCC}.Debug|Any CPU.Build.0 = Debug|Any CPU
-		{236459CE-80CF-4991-972F-DE74C826BCCC}.Debug|Mixed Platforms.ActiveCfg = Debug|x64
-		{236459CE-80CF-4991-972F-DE74C826BCCC}.Debug|Mixed Platforms.Build.0 = Debug|x64
 		{236459CE-80CF-4991-972F-DE74C826BCCC}.Debug|x64.ActiveCfg = Debug|x64
 		{236459CE-80CF-4991-972F-DE74C826BCCC}.Debug|x64.Build.0 = Debug|x64
@@ -1670,6 +1356,4 @@
 		{236459CE-80CF-4991-972F-DE74C826BCCC}.Release|Any CPU.ActiveCfg = Release|Any CPU
 		{236459CE-80CF-4991-972F-DE74C826BCCC}.Release|Any CPU.Build.0 = Release|Any CPU
-		{236459CE-80CF-4991-972F-DE74C826BCCC}.Release|Mixed Platforms.ActiveCfg = Release|x64
-		{236459CE-80CF-4991-972F-DE74C826BCCC}.Release|Mixed Platforms.Build.0 = Release|x64
 		{236459CE-80CF-4991-972F-DE74C826BCCC}.Release|x64.ActiveCfg = Release|x64
 		{236459CE-80CF-4991-972F-DE74C826BCCC}.Release|x64.Build.0 = Release|x64
@@ -1678,6 +1362,4 @@
 		{3081630C-9521-47D7-8075-1777C12F212C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
 		{3081630C-9521-47D7-8075-1777C12F212C}.Debug|Any CPU.Build.0 = Debug|Any CPU
-		{3081630C-9521-47D7-8075-1777C12F212C}.Debug|Mixed Platforms.ActiveCfg = Debug|x86
-		{3081630C-9521-47D7-8075-1777C12F212C}.Debug|Mixed Platforms.Build.0 = Debug|x86
 		{3081630C-9521-47D7-8075-1777C12F212C}.Debug|x64.ActiveCfg = Debug|x64
 		{3081630C-9521-47D7-8075-1777C12F212C}.Debug|x64.Build.0 = Debug|x64
@@ -1686,6 +1368,4 @@
 		{3081630C-9521-47D7-8075-1777C12F212C}.Release|Any CPU.ActiveCfg = Release|Any CPU
 		{3081630C-9521-47D7-8075-1777C12F212C}.Release|Any CPU.Build.0 = Release|Any CPU
-		{3081630C-9521-47D7-8075-1777C12F212C}.Release|Mixed Platforms.ActiveCfg = Release|x86
-		{3081630C-9521-47D7-8075-1777C12F212C}.Release|Mixed Platforms.Build.0 = Release|x86
 		{3081630C-9521-47D7-8075-1777C12F212C}.Release|x64.ActiveCfg = Release|x64
 		{3081630C-9521-47D7-8075-1777C12F212C}.Release|x64.Build.0 = Release|x64
@@ -1694,6 +1374,4 @@
 		{6410BDA6-3641-42B2-BABA-AA626E2F6F71}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
 		{6410BDA6-3641-42B2-BABA-AA626E2F6F71}.Debug|Any CPU.Build.0 = Debug|Any CPU
-		{6410BDA6-3641-42B2-BABA-AA626E2F6F71}.Debug|Mixed Platforms.ActiveCfg = Debug|x64
-		{6410BDA6-3641-42B2-BABA-AA626E2F6F71}.Debug|Mixed Platforms.Build.0 = Debug|x64
 		{6410BDA6-3641-42B2-BABA-AA626E2F6F71}.Debug|x64.ActiveCfg = Debug|x64
 		{6410BDA6-3641-42B2-BABA-AA626E2F6F71}.Debug|x64.Build.0 = Debug|x64
@@ -1702,6 +1380,4 @@
 		{6410BDA6-3641-42B2-BABA-AA626E2F6F71}.Release|Any CPU.ActiveCfg = Release|Any CPU
 		{6410BDA6-3641-42B2-BABA-AA626E2F6F71}.Release|Any CPU.Build.0 = Release|Any CPU
-		{6410BDA6-3641-42B2-BABA-AA626E2F6F71}.Release|Mixed Platforms.ActiveCfg = Release|x64
-		{6410BDA6-3641-42B2-BABA-AA626E2F6F71}.Release|Mixed Platforms.Build.0 = Release|x64
 		{6410BDA6-3641-42B2-BABA-AA626E2F6F71}.Release|x64.ActiveCfg = Release|x64
 		{6410BDA6-3641-42B2-BABA-AA626E2F6F71}.Release|x64.Build.0 = Release|x64
@@ -1710,6 +1386,4 @@
 		{D1386FE7-682D-4E18-8C4F-CFD423FA5DD0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
 		{D1386FE7-682D-4E18-8C4F-CFD423FA5DD0}.Debug|Any CPU.Build.0 = Debug|Any CPU
-		{D1386FE7-682D-4E18-8C4F-CFD423FA5DD0}.Debug|Mixed Platforms.ActiveCfg = Debug|x64
-		{D1386FE7-682D-4E18-8C4F-CFD423FA5DD0}.Debug|Mixed Platforms.Build.0 = Debug|x64
 		{D1386FE7-682D-4E18-8C4F-CFD423FA5DD0}.Debug|x64.ActiveCfg = Debug|x64
 		{D1386FE7-682D-4E18-8C4F-CFD423FA5DD0}.Debug|x64.Build.0 = Debug|x64
@@ -1718,6 +1392,4 @@
 		{D1386FE7-682D-4E18-8C4F-CFD423FA5DD0}.Release|Any CPU.ActiveCfg = Release|Any CPU
 		{D1386FE7-682D-4E18-8C4F-CFD423FA5DD0}.Release|Any CPU.Build.0 = Release|Any CPU
-		{D1386FE7-682D-4E18-8C4F-CFD423FA5DD0}.Release|Mixed Platforms.ActiveCfg = Release|x64
-		{D1386FE7-682D-4E18-8C4F-CFD423FA5DD0}.Release|Mixed Platforms.Build.0 = Release|x64
 		{D1386FE7-682D-4E18-8C4F-CFD423FA5DD0}.Release|x64.ActiveCfg = Release|x64
 		{D1386FE7-682D-4E18-8C4F-CFD423FA5DD0}.Release|x64.Build.0 = Release|x64
@@ -1726,6 +1398,4 @@
 		{E86E215D-E3CE-4244-978D-555D4E17AC09}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
 		{E86E215D-E3CE-4244-978D-555D4E17AC09}.Debug|Any CPU.Build.0 = Debug|Any CPU
-		{E86E215D-E3CE-4244-978D-555D4E17AC09}.Debug|Mixed Platforms.ActiveCfg = Debug|x64
-		{E86E215D-E3CE-4244-978D-555D4E17AC09}.Debug|Mixed Platforms.Build.0 = Debug|x64
 		{E86E215D-E3CE-4244-978D-555D4E17AC09}.Debug|x64.ActiveCfg = Debug|x64
 		{E86E215D-E3CE-4244-978D-555D4E17AC09}.Debug|x64.Build.0 = Debug|x64
@@ -1734,6 +1404,4 @@
 		{E86E215D-E3CE-4244-978D-555D4E17AC09}.Release|Any CPU.ActiveCfg = Release|Any CPU
 		{E86E215D-E3CE-4244-978D-555D4E17AC09}.Release|Any CPU.Build.0 = Release|Any CPU
-		{E86E215D-E3CE-4244-978D-555D4E17AC09}.Release|Mixed Platforms.ActiveCfg = Release|x64
-		{E86E215D-E3CE-4244-978D-555D4E17AC09}.Release|Mixed Platforms.Build.0 = Release|x64
 		{E86E215D-E3CE-4244-978D-555D4E17AC09}.Release|x64.ActiveCfg = Release|x64
 		{E86E215D-E3CE-4244-978D-555D4E17AC09}.Release|x64.Build.0 = Release|x64
@@ -1742,6 +1410,4 @@
 		{1778134B-866B-4CB3-BFC0-52B2FAAA5777}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
 		{1778134B-866B-4CB3-BFC0-52B2FAAA5777}.Debug|Any CPU.Build.0 = Debug|Any CPU
-		{1778134B-866B-4CB3-BFC0-52B2FAAA5777}.Debug|Mixed Platforms.ActiveCfg = Debug|x64
-		{1778134B-866B-4CB3-BFC0-52B2FAAA5777}.Debug|Mixed Platforms.Build.0 = Debug|x64
 		{1778134B-866B-4CB3-BFC0-52B2FAAA5777}.Debug|x64.ActiveCfg = Debug|x64
 		{1778134B-866B-4CB3-BFC0-52B2FAAA5777}.Debug|x64.Build.0 = Debug|x64
@@ -1750,6 +1416,4 @@
 		{1778134B-866B-4CB3-BFC0-52B2FAAA5777}.Release|Any CPU.ActiveCfg = Release|Any CPU
 		{1778134B-866B-4CB3-BFC0-52B2FAAA5777}.Release|Any CPU.Build.0 = Release|Any CPU
-		{1778134B-866B-4CB3-BFC0-52B2FAAA5777}.Release|Mixed Platforms.ActiveCfg = Release|x64
-		{1778134B-866B-4CB3-BFC0-52B2FAAA5777}.Release|Mixed Platforms.Build.0 = Release|x64
 		{1778134B-866B-4CB3-BFC0-52B2FAAA5777}.Release|x64.ActiveCfg = Release|x64
 		{1778134B-866B-4CB3-BFC0-52B2FAAA5777}.Release|x64.Build.0 = Release|x64
@@ -1758,6 +1422,4 @@
 		{730A9104-D4D1-4360-966B-E49B7571DDA3}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
 		{730A9104-D4D1-4360-966B-E49B7571DDA3}.Debug|Any CPU.Build.0 = Debug|Any CPU
-		{730A9104-D4D1-4360-966B-E49B7571DDA3}.Debug|Mixed Platforms.ActiveCfg = Debug|x86
-		{730A9104-D4D1-4360-966B-E49B7571DDA3}.Debug|Mixed Platforms.Build.0 = Debug|x86
 		{730A9104-D4D1-4360-966B-E49B7571DDA3}.Debug|x64.ActiveCfg = Debug|x64
 		{730A9104-D4D1-4360-966B-E49B7571DDA3}.Debug|x64.Build.0 = Debug|x64
@@ -1766,6 +1428,4 @@
 		{730A9104-D4D1-4360-966B-E49B7571DDA3}.Release|Any CPU.ActiveCfg = Release|Any CPU
 		{730A9104-D4D1-4360-966B-E49B7571DDA3}.Release|Any CPU.Build.0 = Release|Any CPU
-		{730A9104-D4D1-4360-966B-E49B7571DDA3}.Release|Mixed Platforms.ActiveCfg = Release|x86
-		{730A9104-D4D1-4360-966B-E49B7571DDA3}.Release|Mixed Platforms.Build.0 = Release|x86
 		{730A9104-D4D1-4360-966B-E49B7571DDA3}.Release|x64.ActiveCfg = Release|x64
 		{730A9104-D4D1-4360-966B-E49B7571DDA3}.Release|x64.Build.0 = Release|x64
@@ -1774,6 +1434,4 @@
 		{66DABFD5-5BD2-4478-8DF9-C589F569F7A2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
 		{66DABFD5-5BD2-4478-8DF9-C589F569F7A2}.Debug|Any CPU.Build.0 = Debug|Any CPU
-		{66DABFD5-5BD2-4478-8DF9-C589F569F7A2}.Debug|Mixed Platforms.ActiveCfg = Debug|x64
-		{66DABFD5-5BD2-4478-8DF9-C589F569F7A2}.Debug|Mixed Platforms.Build.0 = Debug|x64
 		{66DABFD5-5BD2-4478-8DF9-C589F569F7A2}.Debug|x64.ActiveCfg = Debug|x64
 		{66DABFD5-5BD2-4478-8DF9-C589F569F7A2}.Debug|x64.Build.0 = Debug|x64
@@ -1782,6 +1440,4 @@
 		{66DABFD5-5BD2-4478-8DF9-C589F569F7A2}.Release|Any CPU.ActiveCfg = Release|Any CPU
 		{66DABFD5-5BD2-4478-8DF9-C589F569F7A2}.Release|Any CPU.Build.0 = Release|Any CPU
-		{66DABFD5-5BD2-4478-8DF9-C589F569F7A2}.Release|Mixed Platforms.ActiveCfg = Release|x64
-		{66DABFD5-5BD2-4478-8DF9-C589F569F7A2}.Release|Mixed Platforms.Build.0 = Release|x64
 		{66DABFD5-5BD2-4478-8DF9-C589F569F7A2}.Release|x64.ActiveCfg = Release|x64
 		{66DABFD5-5BD2-4478-8DF9-C589F569F7A2}.Release|x64.Build.0 = Release|x64
@@ -1790,6 +1446,4 @@
 		{D35FD6DB-D704-4BEA-BDAE-C40ABFB5B13E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
 		{D35FD6DB-D704-4BEA-BDAE-C40ABFB5B13E}.Debug|Any CPU.Build.0 = Debug|Any CPU
-		{D35FD6DB-D704-4BEA-BDAE-C40ABFB5B13E}.Debug|Mixed Platforms.ActiveCfg = Debug|x86
-		{D35FD6DB-D704-4BEA-BDAE-C40ABFB5B13E}.Debug|Mixed Platforms.Build.0 = Debug|x86
 		{D35FD6DB-D704-4BEA-BDAE-C40ABFB5B13E}.Debug|x64.ActiveCfg = Debug|x64
 		{D35FD6DB-D704-4BEA-BDAE-C40ABFB5B13E}.Debug|x64.Build.0 = Debug|x64
@@ -1798,6 +1452,4 @@
 		{D35FD6DB-D704-4BEA-BDAE-C40ABFB5B13E}.Release|Any CPU.ActiveCfg = Release|Any CPU
 		{D35FD6DB-D704-4BEA-BDAE-C40ABFB5B13E}.Release|Any CPU.Build.0 = Release|Any CPU
-		{D35FD6DB-D704-4BEA-BDAE-C40ABFB5B13E}.Release|Mixed Platforms.ActiveCfg = Release|x86
-		{D35FD6DB-D704-4BEA-BDAE-C40ABFB5B13E}.Release|Mixed Platforms.Build.0 = Release|x86
 		{D35FD6DB-D704-4BEA-BDAE-C40ABFB5B13E}.Release|x64.ActiveCfg = Release|x64
 		{D35FD6DB-D704-4BEA-BDAE-C40ABFB5B13E}.Release|x64.Build.0 = Release|x64
@@ -1806,6 +1458,4 @@
 		{7F038E9A-B91E-4F49-8C27-D47BC86F1220}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
 		{7F038E9A-B91E-4F49-8C27-D47BC86F1220}.Debug|Any CPU.Build.0 = Debug|Any CPU
-		{7F038E9A-B91E-4F49-8C27-D47BC86F1220}.Debug|Mixed Platforms.ActiveCfg = Debug|x86
-		{7F038E9A-B91E-4F49-8C27-D47BC86F1220}.Debug|Mixed Platforms.Build.0 = Debug|x86
 		{7F038E9A-B91E-4F49-8C27-D47BC86F1220}.Debug|x64.ActiveCfg = Debug|x64
 		{7F038E9A-B91E-4F49-8C27-D47BC86F1220}.Debug|x64.Build.0 = Debug|x64
@@ -1814,6 +1464,4 @@
 		{7F038E9A-B91E-4F49-8C27-D47BC86F1220}.Release|Any CPU.ActiveCfg = Release|Any CPU
 		{7F038E9A-B91E-4F49-8C27-D47BC86F1220}.Release|Any CPU.Build.0 = Release|Any CPU
-		{7F038E9A-B91E-4F49-8C27-D47BC86F1220}.Release|Mixed Platforms.ActiveCfg = Release|x86
-		{7F038E9A-B91E-4F49-8C27-D47BC86F1220}.Release|Mixed Platforms.Build.0 = Release|x86
 		{7F038E9A-B91E-4F49-8C27-D47BC86F1220}.Release|x64.ActiveCfg = Release|x64
 		{7F038E9A-B91E-4F49-8C27-D47BC86F1220}.Release|x64.Build.0 = Release|x64
@@ -1822,6 +1470,4 @@
 		{C3E69936-0DB5-42A4-B1B4-12E9700B080E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
 		{C3E69936-0DB5-42A4-B1B4-12E9700B080E}.Debug|Any CPU.Build.0 = Debug|Any CPU
-		{C3E69936-0DB5-42A4-B1B4-12E9700B080E}.Debug|Mixed Platforms.ActiveCfg = Debug|x64
-		{C3E69936-0DB5-42A4-B1B4-12E9700B080E}.Debug|Mixed Platforms.Build.0 = Debug|x64
 		{C3E69936-0DB5-42A4-B1B4-12E9700B080E}.Debug|x64.ActiveCfg = Debug|x64
 		{C3E69936-0DB5-42A4-B1B4-12E9700B080E}.Debug|x64.Build.0 = Debug|x64
@@ -1830,6 +1476,4 @@
 		{C3E69936-0DB5-42A4-B1B4-12E9700B080E}.Release|Any CPU.ActiveCfg = Release|Any CPU
 		{C3E69936-0DB5-42A4-B1B4-12E9700B080E}.Release|Any CPU.Build.0 = Release|Any CPU
-		{C3E69936-0DB5-42A4-B1B4-12E9700B080E}.Release|Mixed Platforms.ActiveCfg = Release|x64
-		{C3E69936-0DB5-42A4-B1B4-12E9700B080E}.Release|Mixed Platforms.Build.0 = Release|x64
 		{C3E69936-0DB5-42A4-B1B4-12E9700B080E}.Release|x64.ActiveCfg = Release|x64
 		{C3E69936-0DB5-42A4-B1B4-12E9700B080E}.Release|x64.Build.0 = Release|x64
@@ -1838,6 +1482,4 @@
 		{315BDA09-3F4F-49B3-9790-B37CFC1C5750}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
 		{315BDA09-3F4F-49B3-9790-B37CFC1C5750}.Debug|Any CPU.Build.0 = Debug|Any CPU
-		{315BDA09-3F4F-49B3-9790-B37CFC1C5750}.Debug|Mixed Platforms.ActiveCfg = Debug|x64
-		{315BDA09-3F4F-49B3-9790-B37CFC1C5750}.Debug|Mixed Platforms.Build.0 = Debug|x64
 		{315BDA09-3F4F-49B3-9790-B37CFC1C5750}.Debug|x64.ActiveCfg = Debug|x64
 		{315BDA09-3F4F-49B3-9790-B37CFC1C5750}.Debug|x64.Build.0 = Debug|x64
@@ -1846,6 +1488,4 @@
 		{315BDA09-3F4F-49B3-9790-B37CFC1C5750}.Release|Any CPU.ActiveCfg = Release|Any CPU
 		{315BDA09-3F4F-49B3-9790-B37CFC1C5750}.Release|Any CPU.Build.0 = Release|Any CPU
-		{315BDA09-3F4F-49B3-9790-B37CFC1C5750}.Release|Mixed Platforms.ActiveCfg = Release|x64
-		{315BDA09-3F4F-49B3-9790-B37CFC1C5750}.Release|Mixed Platforms.Build.0 = Release|x64
 		{315BDA09-3F4F-49B3-9790-B37CFC1C5750}.Release|x64.ActiveCfg = Release|x64
 		{315BDA09-3F4F-49B3-9790-B37CFC1C5750}.Release|x64.Build.0 = Release|x64
@@ -1854,6 +1494,4 @@
 		{FC841674-62A7-4055-BE91-E41944B6C606}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
 		{FC841674-62A7-4055-BE91-E41944B6C606}.Debug|Any CPU.Build.0 = Debug|Any CPU
-		{FC841674-62A7-4055-BE91-E41944B6C606}.Debug|Mixed Platforms.ActiveCfg = Debug|x64
-		{FC841674-62A7-4055-BE91-E41944B6C606}.Debug|Mixed Platforms.Build.0 = Debug|x64
 		{FC841674-62A7-4055-BE91-E41944B6C606}.Debug|x64.ActiveCfg = Debug|x64
 		{FC841674-62A7-4055-BE91-E41944B6C606}.Debug|x64.Build.0 = Debug|x64
@@ -1862,6 +1500,4 @@
 		{FC841674-62A7-4055-BE91-E41944B6C606}.Release|Any CPU.ActiveCfg = Release|Any CPU
 		{FC841674-62A7-4055-BE91-E41944B6C606}.Release|Any CPU.Build.0 = Release|Any CPU
-		{FC841674-62A7-4055-BE91-E41944B6C606}.Release|Mixed Platforms.ActiveCfg = Release|x64
-		{FC841674-62A7-4055-BE91-E41944B6C606}.Release|Mixed Platforms.Build.0 = Release|x64
 		{FC841674-62A7-4055-BE91-E41944B6C606}.Release|x64.ActiveCfg = Release|x64
 		{FC841674-62A7-4055-BE91-E41944B6C606}.Release|x64.Build.0 = Release|x64
@@ -1870,6 +1506,4 @@
 		{DE69A359-A5B8-4D3D-BA8D-D5780D7F96D6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
 		{DE69A359-A5B8-4D3D-BA8D-D5780D7F96D6}.Debug|Any CPU.Build.0 = Debug|Any CPU
-		{DE69A359-A5B8-4D3D-BA8D-D5780D7F96D6}.Debug|Mixed Platforms.ActiveCfg = Debug|x64
-		{DE69A359-A5B8-4D3D-BA8D-D5780D7F96D6}.Debug|Mixed Platforms.Build.0 = Debug|x64
 		{DE69A359-A5B8-4D3D-BA8D-D5780D7F96D6}.Debug|x64.ActiveCfg = Debug|x64
 		{DE69A359-A5B8-4D3D-BA8D-D5780D7F96D6}.Debug|x64.Build.0 = Debug|x64
@@ -1878,6 +1512,4 @@
 		{DE69A359-A5B8-4D3D-BA8D-D5780D7F96D6}.Release|Any CPU.ActiveCfg = Release|Any CPU
 		{DE69A359-A5B8-4D3D-BA8D-D5780D7F96D6}.Release|Any CPU.Build.0 = Release|Any CPU
-		{DE69A359-A5B8-4D3D-BA8D-D5780D7F96D6}.Release|Mixed Platforms.ActiveCfg = Release|x64
-		{DE69A359-A5B8-4D3D-BA8D-D5780D7F96D6}.Release|Mixed Platforms.Build.0 = Release|x64
 		{DE69A359-A5B8-4D3D-BA8D-D5780D7F96D6}.Release|x64.ActiveCfg = Release|x64
 		{DE69A359-A5B8-4D3D-BA8D-D5780D7F96D6}.Release|x64.Build.0 = Release|x64
@@ -1886,6 +1518,4 @@
 		{49F28045-7B5F-411B-8D59-16C846FA26E0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
 		{49F28045-7B5F-411B-8D59-16C846FA26E0}.Debug|Any CPU.Build.0 = Debug|Any CPU
-		{49F28045-7B5F-411B-8D59-16C846FA26E0}.Debug|Mixed Platforms.ActiveCfg = Debug|x64
-		{49F28045-7B5F-411B-8D59-16C846FA26E0}.Debug|Mixed Platforms.Build.0 = Debug|x64
 		{49F28045-7B5F-411B-8D59-16C846FA26E0}.Debug|x64.ActiveCfg = Debug|x64
 		{49F28045-7B5F-411B-8D59-16C846FA26E0}.Debug|x64.Build.0 = Debug|x64
@@ -1894,6 +1524,4 @@
 		{49F28045-7B5F-411B-8D59-16C846FA26E0}.Release|Any CPU.ActiveCfg = Release|Any CPU
 		{49F28045-7B5F-411B-8D59-16C846FA26E0}.Release|Any CPU.Build.0 = Release|Any CPU
-		{49F28045-7B5F-411B-8D59-16C846FA26E0}.Release|Mixed Platforms.ActiveCfg = Release|x64
-		{49F28045-7B5F-411B-8D59-16C846FA26E0}.Release|Mixed Platforms.Build.0 = Release|x64
 		{49F28045-7B5F-411B-8D59-16C846FA26E0}.Release|x64.ActiveCfg = Release|x64
 		{49F28045-7B5F-411B-8D59-16C846FA26E0}.Release|x64.Build.0 = Release|x64
@@ -1902,6 +1530,4 @@
 		{15452B9F-A436-4139-8EE7-DA72FB8D3664}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
 		{15452B9F-A436-4139-8EE7-DA72FB8D3664}.Debug|Any CPU.Build.0 = Debug|Any CPU
-		{15452B9F-A436-4139-8EE7-DA72FB8D3664}.Debug|Mixed Platforms.ActiveCfg = Debug|x64
-		{15452B9F-A436-4139-8EE7-DA72FB8D3664}.Debug|Mixed Platforms.Build.0 = Debug|x64
 		{15452B9F-A436-4139-8EE7-DA72FB8D3664}.Debug|x64.ActiveCfg = Debug|x64
 		{15452B9F-A436-4139-8EE7-DA72FB8D3664}.Debug|x64.Build.0 = Debug|x64
@@ -1910,6 +1536,4 @@
 		{15452B9F-A436-4139-8EE7-DA72FB8D3664}.Release|Any CPU.ActiveCfg = Release|Any CPU
 		{15452B9F-A436-4139-8EE7-DA72FB8D3664}.Release|Any CPU.Build.0 = Release|Any CPU
-		{15452B9F-A436-4139-8EE7-DA72FB8D3664}.Release|Mixed Platforms.ActiveCfg = Release|x64
-		{15452B9F-A436-4139-8EE7-DA72FB8D3664}.Release|Mixed Platforms.Build.0 = Release|x64
 		{15452B9F-A436-4139-8EE7-DA72FB8D3664}.Release|x64.ActiveCfg = Release|x64
 		{15452B9F-A436-4139-8EE7-DA72FB8D3664}.Release|x64.Build.0 = Release|x64
@@ -1918,6 +1542,4 @@
 		{00814351-4AB8-4088-9B99-F62787B89E93}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
 		{00814351-4AB8-4088-9B99-F62787B89E93}.Debug|Any CPU.Build.0 = Debug|Any CPU
-		{00814351-4AB8-4088-9B99-F62787B89E93}.Debug|Mixed Platforms.ActiveCfg = Debug|x86
-		{00814351-4AB8-4088-9B99-F62787B89E93}.Debug|Mixed Platforms.Build.0 = Debug|x86
 		{00814351-4AB8-4088-9B99-F62787B89E93}.Debug|x64.ActiveCfg = Debug|x64
 		{00814351-4AB8-4088-9B99-F62787B89E93}.Debug|x64.Build.0 = Debug|x64
@@ -1926,6 +1548,4 @@
 		{00814351-4AB8-4088-9B99-F62787B89E93}.Release|Any CPU.ActiveCfg = Release|Any CPU
 		{00814351-4AB8-4088-9B99-F62787B89E93}.Release|Any CPU.Build.0 = Release|Any CPU
-		{00814351-4AB8-4088-9B99-F62787B89E93}.Release|Mixed Platforms.ActiveCfg = Release|x86
-		{00814351-4AB8-4088-9B99-F62787B89E93}.Release|Mixed Platforms.Build.0 = Release|x86
 		{00814351-4AB8-4088-9B99-F62787B89E93}.Release|x64.ActiveCfg = Release|x64
 		{00814351-4AB8-4088-9B99-F62787B89E93}.Release|x64.Build.0 = Release|x64
@@ -1934,6 +1554,4 @@
 		{2C429157-9C34-4DD3-9D5F-B444B751E39A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
 		{2C429157-9C34-4DD3-9D5F-B444B751E39A}.Debug|Any CPU.Build.0 = Debug|Any CPU
-		{2C429157-9C34-4DD3-9D5F-B444B751E39A}.Debug|Mixed Platforms.ActiveCfg = Debug|x64
-		{2C429157-9C34-4DD3-9D5F-B444B751E39A}.Debug|Mixed Platforms.Build.0 = Debug|x64
 		{2C429157-9C34-4DD3-9D5F-B444B751E39A}.Debug|x64.ActiveCfg = Debug|x64
 		{2C429157-9C34-4DD3-9D5F-B444B751E39A}.Debug|x64.Build.0 = Debug|x64
@@ -1942,6 +1560,4 @@
 		{2C429157-9C34-4DD3-9D5F-B444B751E39A}.Release|Any CPU.ActiveCfg = Release|Any CPU
 		{2C429157-9C34-4DD3-9D5F-B444B751E39A}.Release|Any CPU.Build.0 = Release|Any CPU
-		{2C429157-9C34-4DD3-9D5F-B444B751E39A}.Release|Mixed Platforms.ActiveCfg = Release|x64
-		{2C429157-9C34-4DD3-9D5F-B444B751E39A}.Release|Mixed Platforms.Build.0 = Release|x64
 		{2C429157-9C34-4DD3-9D5F-B444B751E39A}.Release|x64.ActiveCfg = Release|x64
 		{2C429157-9C34-4DD3-9D5F-B444B751E39A}.Release|x64.Build.0 = Release|x64
@@ -1950,6 +1566,4 @@
 		{E4CFB0C3-0589-4893-B38E-8BEDF885C765}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
 		{E4CFB0C3-0589-4893-B38E-8BEDF885C765}.Debug|Any CPU.Build.0 = Debug|Any CPU
-		{E4CFB0C3-0589-4893-B38E-8BEDF885C765}.Debug|Mixed Platforms.ActiveCfg = Debug|x86
-		{E4CFB0C3-0589-4893-B38E-8BEDF885C765}.Debug|Mixed Platforms.Build.0 = Debug|x86
 		{E4CFB0C3-0589-4893-B38E-8BEDF885C765}.Debug|x64.ActiveCfg = Debug|x64
 		{E4CFB0C3-0589-4893-B38E-8BEDF885C765}.Debug|x64.Build.0 = Debug|x64
@@ -1958,6 +1572,4 @@
 		{E4CFB0C3-0589-4893-B38E-8BEDF885C765}.Release|Any CPU.ActiveCfg = Release|Any CPU
 		{E4CFB0C3-0589-4893-B38E-8BEDF885C765}.Release|Any CPU.Build.0 = Release|Any CPU
-		{E4CFB0C3-0589-4893-B38E-8BEDF885C765}.Release|Mixed Platforms.ActiveCfg = Release|x86
-		{E4CFB0C3-0589-4893-B38E-8BEDF885C765}.Release|Mixed Platforms.Build.0 = Release|x86
 		{E4CFB0C3-0589-4893-B38E-8BEDF885C765}.Release|x64.ActiveCfg = Release|x64
 		{E4CFB0C3-0589-4893-B38E-8BEDF885C765}.Release|x64.Build.0 = Release|x64
@@ -1966,6 +1578,4 @@
 		{2E782078-FA81-4B70-B56F-74CE38DAC6C8}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
 		{2E782078-FA81-4B70-B56F-74CE38DAC6C8}.Debug|Any CPU.Build.0 = Debug|Any CPU
-		{2E782078-FA81-4B70-B56F-74CE38DAC6C8}.Debug|Mixed Platforms.ActiveCfg = Debug|x64
-		{2E782078-FA81-4B70-B56F-74CE38DAC6C8}.Debug|Mixed Platforms.Build.0 = Debug|x64
 		{2E782078-FA81-4B70-B56F-74CE38DAC6C8}.Debug|x64.ActiveCfg = Debug|x64
 		{2E782078-FA81-4B70-B56F-74CE38DAC6C8}.Debug|x64.Build.0 = Debug|x64
@@ -1974,6 +1584,4 @@
 		{2E782078-FA81-4B70-B56F-74CE38DAC6C8}.Release|Any CPU.ActiveCfg = Release|Any CPU
 		{2E782078-FA81-4B70-B56F-74CE38DAC6C8}.Release|Any CPU.Build.0 = Release|Any CPU
-		{2E782078-FA81-4B70-B56F-74CE38DAC6C8}.Release|Mixed Platforms.ActiveCfg = Release|x64
-		{2E782078-FA81-4B70-B56F-74CE38DAC6C8}.Release|Mixed Platforms.Build.0 = Release|x64
 		{2E782078-FA81-4B70-B56F-74CE38DAC6C8}.Release|x64.ActiveCfg = Release|x64
 		{2E782078-FA81-4B70-B56F-74CE38DAC6C8}.Release|x64.Build.0 = Release|x64
@@ -1982,6 +1590,4 @@
 		{A2330DB0-413D-4424-B4E6-591118E2B9F8}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
 		{A2330DB0-413D-4424-B4E6-591118E2B9F8}.Debug|Any CPU.Build.0 = Debug|Any CPU
-		{A2330DB0-413D-4424-B4E6-591118E2B9F8}.Debug|Mixed Platforms.ActiveCfg = Debug|x64
-		{A2330DB0-413D-4424-B4E6-591118E2B9F8}.Debug|Mixed Platforms.Build.0 = Debug|x64
 		{A2330DB0-413D-4424-B4E6-591118E2B9F8}.Debug|x64.ActiveCfg = Debug|x64
 		{A2330DB0-413D-4424-B4E6-591118E2B9F8}.Debug|x64.Build.0 = Debug|x64
@@ -1990,6 +1596,4 @@
 		{A2330DB0-413D-4424-B4E6-591118E2B9F8}.Release|Any CPU.ActiveCfg = Release|Any CPU
 		{A2330DB0-413D-4424-B4E6-591118E2B9F8}.Release|Any CPU.Build.0 = Release|Any CPU
-		{A2330DB0-413D-4424-B4E6-591118E2B9F8}.Release|Mixed Platforms.ActiveCfg = Release|x64
-		{A2330DB0-413D-4424-B4E6-591118E2B9F8}.Release|Mixed Platforms.Build.0 = Release|x64
 		{A2330DB0-413D-4424-B4E6-591118E2B9F8}.Release|x64.ActiveCfg = Release|x64
 		{A2330DB0-413D-4424-B4E6-591118E2B9F8}.Release|x64.Build.0 = Release|x64
@@ -1998,6 +1602,4 @@
 		{06D4A186-9319-48A0-BADE-A2058D462EEA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
 		{06D4A186-9319-48A0-BADE-A2058D462EEA}.Debug|Any CPU.Build.0 = Debug|Any CPU
-		{06D4A186-9319-48A0-BADE-A2058D462EEA}.Debug|Mixed Platforms.ActiveCfg = Debug|x86
-		{06D4A186-9319-48A0-BADE-A2058D462EEA}.Debug|Mixed Platforms.Build.0 = Debug|x86
 		{06D4A186-9319-48A0-BADE-A2058D462EEA}.Debug|x64.ActiveCfg = Debug|x64
 		{06D4A186-9319-48A0-BADE-A2058D462EEA}.Debug|x64.Build.0 = Debug|x64
@@ -2006,6 +1608,4 @@
 		{06D4A186-9319-48A0-BADE-A2058D462EEA}.Release|Any CPU.ActiveCfg = Release|Any CPU
 		{06D4A186-9319-48A0-BADE-A2058D462EEA}.Release|Any CPU.Build.0 = Release|Any CPU
-		{06D4A186-9319-48A0-BADE-A2058D462EEA}.Release|Mixed Platforms.ActiveCfg = Release|x86
-		{06D4A186-9319-48A0-BADE-A2058D462EEA}.Release|Mixed Platforms.Build.0 = Release|x86
 		{06D4A186-9319-48A0-BADE-A2058D462EEA}.Release|x64.ActiveCfg = Release|x64
 		{06D4A186-9319-48A0-BADE-A2058D462EEA}.Release|x64.Build.0 = Release|x64
@@ -2014,6 +1614,4 @@
 		{BDC657BB-A358-477B-B41F-3DAA66A35203}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
 		{BDC657BB-A358-477B-B41F-3DAA66A35203}.Debug|Any CPU.Build.0 = Debug|Any CPU
-		{BDC657BB-A358-477B-B41F-3DAA66A35203}.Debug|Mixed Platforms.ActiveCfg = Debug|x86
-		{BDC657BB-A358-477B-B41F-3DAA66A35203}.Debug|Mixed Platforms.Build.0 = Debug|x86
 		{BDC657BB-A358-477B-B41F-3DAA66A35203}.Debug|x64.ActiveCfg = Debug|x64
 		{BDC657BB-A358-477B-B41F-3DAA66A35203}.Debug|x64.Build.0 = Debug|x64
@@ -2022,6 +1620,4 @@
 		{BDC657BB-A358-477B-B41F-3DAA66A35203}.Release|Any CPU.ActiveCfg = Release|Any CPU
 		{BDC657BB-A358-477B-B41F-3DAA66A35203}.Release|Any CPU.Build.0 = Release|Any CPU
-		{BDC657BB-A358-477B-B41F-3DAA66A35203}.Release|Mixed Platforms.ActiveCfg = Release|x86
-		{BDC657BB-A358-477B-B41F-3DAA66A35203}.Release|Mixed Platforms.Build.0 = Release|x86
 		{BDC657BB-A358-477B-B41F-3DAA66A35203}.Release|x64.ActiveCfg = Release|x64
 		{BDC657BB-A358-477B-B41F-3DAA66A35203}.Release|x64.Build.0 = Release|x64
@@ -2030,6 +1626,4 @@
 		{423BD94F-963A-438E-BA45-3BB3D61CD03B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
 		{423BD94F-963A-438E-BA45-3BB3D61CD03B}.Debug|Any CPU.Build.0 = Debug|Any CPU
-		{423BD94F-963A-438E-BA45-3BB3D61CD03B}.Debug|Mixed Platforms.ActiveCfg = Debug|x86
-		{423BD94F-963A-438E-BA45-3BB3D61CD03B}.Debug|Mixed Platforms.Build.0 = Debug|x86
 		{423BD94F-963A-438E-BA45-3BB3D61CD03B}.Debug|x64.ActiveCfg = Debug|x64
 		{423BD94F-963A-438E-BA45-3BB3D61CD03B}.Debug|x64.Build.0 = Debug|x64
@@ -2038,6 +1632,4 @@
 		{423BD94F-963A-438E-BA45-3BB3D61CD03B}.Release|Any CPU.ActiveCfg = Release|Any CPU
 		{423BD94F-963A-438E-BA45-3BB3D61CD03B}.Release|Any CPU.Build.0 = Release|Any CPU
-		{423BD94F-963A-438E-BA45-3BB3D61CD03B}.Release|Mixed Platforms.ActiveCfg = Release|x86
-		{423BD94F-963A-438E-BA45-3BB3D61CD03B}.Release|Mixed Platforms.Build.0 = Release|x86
 		{423BD94F-963A-438E-BA45-3BB3D61CD03B}.Release|x64.ActiveCfg = Release|x64
 		{423BD94F-963A-438E-BA45-3BB3D61CD03B}.Release|x64.Build.0 = Release|x64
@@ -2046,6 +1638,4 @@
 		{0C67A033-F6D9-4237-B3CA-C033A44706BE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
 		{0C67A033-F6D9-4237-B3CA-C033A44706BE}.Debug|Any CPU.Build.0 = Debug|Any CPU
-		{0C67A033-F6D9-4237-B3CA-C033A44706BE}.Debug|Mixed Platforms.ActiveCfg = Debug|x86
-		{0C67A033-F6D9-4237-B3CA-C033A44706BE}.Debug|Mixed Platforms.Build.0 = Debug|x86
 		{0C67A033-F6D9-4237-B3CA-C033A44706BE}.Debug|x64.ActiveCfg = Debug|x64
 		{0C67A033-F6D9-4237-B3CA-C033A44706BE}.Debug|x64.Build.0 = Debug|x64
@@ -2054,6 +1644,4 @@
 		{0C67A033-F6D9-4237-B3CA-C033A44706BE}.Release|Any CPU.ActiveCfg = Release|Any CPU
 		{0C67A033-F6D9-4237-B3CA-C033A44706BE}.Release|Any CPU.Build.0 = Release|Any CPU
-		{0C67A033-F6D9-4237-B3CA-C033A44706BE}.Release|Mixed Platforms.ActiveCfg = Release|x86
-		{0C67A033-F6D9-4237-B3CA-C033A44706BE}.Release|Mixed Platforms.Build.0 = Release|x86
 		{0C67A033-F6D9-4237-B3CA-C033A44706BE}.Release|x64.ActiveCfg = Release|x64
 		{0C67A033-F6D9-4237-B3CA-C033A44706BE}.Release|x64.Build.0 = Release|x64
@@ -2062,6 +1650,4 @@
 		{3083C7AA-5AF4-4C75-BA19-B69B86E2F66A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
 		{3083C7AA-5AF4-4C75-BA19-B69B86E2F66A}.Debug|Any CPU.Build.0 = Debug|Any CPU
-		{3083C7AA-5AF4-4C75-BA19-B69B86E2F66A}.Debug|Mixed Platforms.ActiveCfg = Debug|x86
-		{3083C7AA-5AF4-4C75-BA19-B69B86E2F66A}.Debug|Mixed Platforms.Build.0 = Debug|x86
 		{3083C7AA-5AF4-4C75-BA19-B69B86E2F66A}.Debug|x64.ActiveCfg = Debug|x64
 		{3083C7AA-5AF4-4C75-BA19-B69B86E2F66A}.Debug|x64.Build.0 = Debug|x64
@@ -2070,6 +1656,4 @@
 		{3083C7AA-5AF4-4C75-BA19-B69B86E2F66A}.Release|Any CPU.ActiveCfg = Release|Any CPU
 		{3083C7AA-5AF4-4C75-BA19-B69B86E2F66A}.Release|Any CPU.Build.0 = Release|Any CPU
-		{3083C7AA-5AF4-4C75-BA19-B69B86E2F66A}.Release|Mixed Platforms.ActiveCfg = Release|x86
-		{3083C7AA-5AF4-4C75-BA19-B69B86E2F66A}.Release|Mixed Platforms.Build.0 = Release|x86
 		{3083C7AA-5AF4-4C75-BA19-B69B86E2F66A}.Release|x64.ActiveCfg = Release|x64
 		{3083C7AA-5AF4-4C75-BA19-B69B86E2F66A}.Release|x64.Build.0 = Release|x64
@@ -2078,6 +1662,4 @@
 		{DF87C13E-A889-46FF-8153-66DCAA8C5674}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
 		{DF87C13E-A889-46FF-8153-66DCAA8C5674}.Debug|Any CPU.Build.0 = Debug|Any CPU
-		{DF87C13E-A889-46FF-8153-66DCAA8C5674}.Debug|Mixed Platforms.ActiveCfg = Debug|x86
-		{DF87C13E-A889-46FF-8153-66DCAA8C5674}.Debug|Mixed Platforms.Build.0 = Debug|x86
 		{DF87C13E-A889-46FF-8153-66DCAA8C5674}.Debug|x64.ActiveCfg = Debug|x64
 		{DF87C13E-A889-46FF-8153-66DCAA8C5674}.Debug|x64.Build.0 = Debug|x64
@@ -2086,6 +1668,4 @@
 		{DF87C13E-A889-46FF-8153-66DCAA8C5674}.Release|Any CPU.ActiveCfg = Release|Any CPU
 		{DF87C13E-A889-46FF-8153-66DCAA8C5674}.Release|Any CPU.Build.0 = Release|Any CPU
-		{DF87C13E-A889-46FF-8153-66DCAA8C5674}.Release|Mixed Platforms.ActiveCfg = Release|x86
-		{DF87C13E-A889-46FF-8153-66DCAA8C5674}.Release|Mixed Platforms.Build.0 = Release|x86
 		{DF87C13E-A889-46FF-8153-66DCAA8C5674}.Release|x64.ActiveCfg = Release|x64
 		{DF87C13E-A889-46FF-8153-66DCAA8C5674}.Release|x64.Build.0 = Release|x64
@@ -2094,6 +1674,4 @@
 		{3D28463F-EC96-4D82-AFEE-38BE91A0CA00}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
 		{3D28463F-EC96-4D82-AFEE-38BE91A0CA00}.Debug|Any CPU.Build.0 = Debug|Any CPU
-		{3D28463F-EC96-4D82-AFEE-38BE91A0CA00}.Debug|Mixed Platforms.ActiveCfg = Debug|x86
-		{3D28463F-EC96-4D82-AFEE-38BE91A0CA00}.Debug|Mixed Platforms.Build.0 = Debug|x86
 		{3D28463F-EC96-4D82-AFEE-38BE91A0CA00}.Debug|x64.ActiveCfg = Debug|x64
 		{3D28463F-EC96-4D82-AFEE-38BE91A0CA00}.Debug|x64.Build.0 = Debug|x64
@@ -2102,6 +1680,4 @@
 		{3D28463F-EC96-4D82-AFEE-38BE91A0CA00}.Release|Any CPU.ActiveCfg = Release|Any CPU
 		{3D28463F-EC96-4D82-AFEE-38BE91A0CA00}.Release|Any CPU.Build.0 = Release|Any CPU
-		{3D28463F-EC96-4D82-AFEE-38BE91A0CA00}.Release|Mixed Platforms.ActiveCfg = Release|x86
-		{3D28463F-EC96-4D82-AFEE-38BE91A0CA00}.Release|Mixed Platforms.Build.0 = Release|x86
 		{3D28463F-EC96-4D82-AFEE-38BE91A0CA00}.Release|x64.ActiveCfg = Release|x64
 		{3D28463F-EC96-4D82-AFEE-38BE91A0CA00}.Release|x64.Build.0 = Release|x64
@@ -2110,6 +1686,4 @@
 		{2A976109-67B9-4FF0-89DE-A26A8307A1CE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
 		{2A976109-67B9-4FF0-89DE-A26A8307A1CE}.Debug|Any CPU.Build.0 = Debug|Any CPU
-		{2A976109-67B9-4FF0-89DE-A26A8307A1CE}.Debug|Mixed Platforms.ActiveCfg = Debug|x86
-		{2A976109-67B9-4FF0-89DE-A26A8307A1CE}.Debug|Mixed Platforms.Build.0 = Debug|x86
 		{2A976109-67B9-4FF0-89DE-A26A8307A1CE}.Debug|x64.ActiveCfg = Debug|x64
 		{2A976109-67B9-4FF0-89DE-A26A8307A1CE}.Debug|x64.Build.0 = Debug|x64
@@ -2118,6 +1692,4 @@
 		{2A976109-67B9-4FF0-89DE-A26A8307A1CE}.Release|Any CPU.ActiveCfg = Release|Any CPU
 		{2A976109-67B9-4FF0-89DE-A26A8307A1CE}.Release|Any CPU.Build.0 = Release|Any CPU
-		{2A976109-67B9-4FF0-89DE-A26A8307A1CE}.Release|Mixed Platforms.ActiveCfg = Release|x86
-		{2A976109-67B9-4FF0-89DE-A26A8307A1CE}.Release|Mixed Platforms.Build.0 = Release|x86
 		{2A976109-67B9-4FF0-89DE-A26A8307A1CE}.Release|x64.ActiveCfg = Release|x64
 		{2A976109-67B9-4FF0-89DE-A26A8307A1CE}.Release|x64.Build.0 = Release|x64
@@ -2126,6 +1698,4 @@
 		{05BAE4E1-A9FA-4644-AA77-42558720159E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
 		{05BAE4E1-A9FA-4644-AA77-42558720159E}.Debug|Any CPU.Build.0 = Debug|Any CPU
-		{05BAE4E1-A9FA-4644-AA77-42558720159E}.Debug|Mixed Platforms.ActiveCfg = Debug|x86
-		{05BAE4E1-A9FA-4644-AA77-42558720159E}.Debug|Mixed Platforms.Build.0 = Debug|x86
 		{05BAE4E1-A9FA-4644-AA77-42558720159E}.Debug|x64.ActiveCfg = Debug|x64
 		{05BAE4E1-A9FA-4644-AA77-42558720159E}.Debug|x64.Build.0 = Debug|x64
@@ -2134,6 +1704,4 @@
 		{05BAE4E1-A9FA-4644-AA77-42558720159E}.Release|Any CPU.ActiveCfg = Release|Any CPU
 		{05BAE4E1-A9FA-4644-AA77-42558720159E}.Release|Any CPU.Build.0 = Release|Any CPU
-		{05BAE4E1-A9FA-4644-AA77-42558720159E}.Release|Mixed Platforms.ActiveCfg = Release|x86
-		{05BAE4E1-A9FA-4644-AA77-42558720159E}.Release|Mixed Platforms.Build.0 = Release|x86
 		{05BAE4E1-A9FA-4644-AA77-42558720159E}.Release|x64.ActiveCfg = Release|x64
 		{05BAE4E1-A9FA-4644-AA77-42558720159E}.Release|x64.Build.0 = Release|x64
@@ -2142,6 +1710,4 @@
 		{BF1E4DF4-A4CC-451F-9D50-303F405E265E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
 		{BF1E4DF4-A4CC-451F-9D50-303F405E265E}.Debug|Any CPU.Build.0 = Debug|Any CPU
-		{BF1E4DF4-A4CC-451F-9D50-303F405E265E}.Debug|Mixed Platforms.ActiveCfg = Debug|x86
-		{BF1E4DF4-A4CC-451F-9D50-303F405E265E}.Debug|Mixed Platforms.Build.0 = Debug|x86
 		{BF1E4DF4-A4CC-451F-9D50-303F405E265E}.Debug|x64.ActiveCfg = Debug|x64
 		{BF1E4DF4-A4CC-451F-9D50-303F405E265E}.Debug|x64.Build.0 = Debug|x64
@@ -2150,6 +1716,4 @@
 		{BF1E4DF4-A4CC-451F-9D50-303F405E265E}.Release|Any CPU.ActiveCfg = Release|Any CPU
 		{BF1E4DF4-A4CC-451F-9D50-303F405E265E}.Release|Any CPU.Build.0 = Release|Any CPU
-		{BF1E4DF4-A4CC-451F-9D50-303F405E265E}.Release|Mixed Platforms.ActiveCfg = Release|x86
-		{BF1E4DF4-A4CC-451F-9D50-303F405E265E}.Release|Mixed Platforms.Build.0 = Release|x86
 		{BF1E4DF4-A4CC-451F-9D50-303F405E265E}.Release|x64.ActiveCfg = Release|x64
 		{BF1E4DF4-A4CC-451F-9D50-303F405E265E}.Release|x64.Build.0 = Release|x64
@@ -2158,6 +1722,4 @@
 		{5AC82412-911B-4FA2-A013-EDC5E3F3FCC2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
 		{5AC82412-911B-4FA2-A013-EDC5E3F3FCC2}.Debug|Any CPU.Build.0 = Debug|Any CPU
-		{5AC82412-911B-4FA2-A013-EDC5E3F3FCC2}.Debug|Mixed Platforms.ActiveCfg = Debug|x86
-		{5AC82412-911B-4FA2-A013-EDC5E3F3FCC2}.Debug|Mixed Platforms.Build.0 = Debug|x86
 		{5AC82412-911B-4FA2-A013-EDC5E3F3FCC2}.Debug|x64.ActiveCfg = Debug|x64
 		{5AC82412-911B-4FA2-A013-EDC5E3F3FCC2}.Debug|x64.Build.0 = Debug|x64
@@ -2166,6 +1728,4 @@
 		{5AC82412-911B-4FA2-A013-EDC5E3F3FCC2}.Release|Any CPU.ActiveCfg = Release|Any CPU
 		{5AC82412-911B-4FA2-A013-EDC5E3F3FCC2}.Release|Any CPU.Build.0 = Release|Any CPU
-		{5AC82412-911B-4FA2-A013-EDC5E3F3FCC2}.Release|Mixed Platforms.ActiveCfg = Release|x86
-		{5AC82412-911B-4FA2-A013-EDC5E3F3FCC2}.Release|Mixed Platforms.Build.0 = Release|x86
 		{5AC82412-911B-4FA2-A013-EDC5E3F3FCC2}.Release|x64.ActiveCfg = Release|x64
 		{5AC82412-911B-4FA2-A013-EDC5E3F3FCC2}.Release|x64.Build.0 = Release|x64
@@ -2174,6 +1734,4 @@
 		{20831A74-D18F-42D9-A667-1CE3AF53DF93}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
 		{20831A74-D18F-42D9-A667-1CE3AF53DF93}.Debug|Any CPU.Build.0 = Debug|Any CPU
-		{20831A74-D18F-42D9-A667-1CE3AF53DF93}.Debug|Mixed Platforms.ActiveCfg = Debug|x86
-		{20831A74-D18F-42D9-A667-1CE3AF53DF93}.Debug|Mixed Platforms.Build.0 = Debug|x86
 		{20831A74-D18F-42D9-A667-1CE3AF53DF93}.Debug|x64.ActiveCfg = Debug|x64
 		{20831A74-D18F-42D9-A667-1CE3AF53DF93}.Debug|x64.Build.0 = Debug|x64
@@ -2182,6 +1740,4 @@
 		{20831A74-D18F-42D9-A667-1CE3AF53DF93}.Release|Any CPU.ActiveCfg = Release|Any CPU
 		{20831A74-D18F-42D9-A667-1CE3AF53DF93}.Release|Any CPU.Build.0 = Release|Any CPU
-		{20831A74-D18F-42D9-A667-1CE3AF53DF93}.Release|Mixed Platforms.ActiveCfg = Release|x86
-		{20831A74-D18F-42D9-A667-1CE3AF53DF93}.Release|Mixed Platforms.Build.0 = Release|x86
 		{20831A74-D18F-42D9-A667-1CE3AF53DF93}.Release|x64.ActiveCfg = Release|x64
 		{20831A74-D18F-42D9-A667-1CE3AF53DF93}.Release|x64.Build.0 = Release|x64
@@ -2190,6 +1746,4 @@
 		{7A2531CE-3F7C-4F13-BCCA-ED6DC27A7086}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
 		{7A2531CE-3F7C-4F13-BCCA-ED6DC27A7086}.Debug|Any CPU.Build.0 = Debug|Any CPU
-		{7A2531CE-3F7C-4F13-BCCA-ED6DC27A7086}.Debug|Mixed Platforms.ActiveCfg = Debug|x86
-		{7A2531CE-3F7C-4F13-BCCA-ED6DC27A7086}.Debug|Mixed Platforms.Build.0 = Debug|x86
 		{7A2531CE-3F7C-4F13-BCCA-ED6DC27A7086}.Debug|x64.ActiveCfg = Debug|x64
 		{7A2531CE-3F7C-4F13-BCCA-ED6DC27A7086}.Debug|x64.Build.0 = Debug|x64
@@ -2198,6 +1752,4 @@
 		{7A2531CE-3F7C-4F13-BCCA-ED6DC27A7086}.Release|Any CPU.ActiveCfg = Release|Any CPU
 		{7A2531CE-3F7C-4F13-BCCA-ED6DC27A7086}.Release|Any CPU.Build.0 = Release|Any CPU
-		{7A2531CE-3F7C-4F13-BCCA-ED6DC27A7086}.Release|Mixed Platforms.ActiveCfg = Release|x86
-		{7A2531CE-3F7C-4F13-BCCA-ED6DC27A7086}.Release|Mixed Platforms.Build.0 = Release|x86
 		{7A2531CE-3F7C-4F13-BCCA-ED6DC27A7086}.Release|x64.ActiveCfg = Release|x64
 		{7A2531CE-3F7C-4F13-BCCA-ED6DC27A7086}.Release|x64.Build.0 = Release|x64
@@ -2206,6 +1758,4 @@
 		{3E9E8944-44FF-40BB-A622-3A4A7DD0F198}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
 		{3E9E8944-44FF-40BB-A622-3A4A7DD0F198}.Debug|Any CPU.Build.0 = Debug|Any CPU
-		{3E9E8944-44FF-40BB-A622-3A4A7DD0F198}.Debug|Mixed Platforms.ActiveCfg = Debug|x86
-		{3E9E8944-44FF-40BB-A622-3A4A7DD0F198}.Debug|Mixed Platforms.Build.0 = Debug|x86
 		{3E9E8944-44FF-40BB-A622-3A4A7DD0F198}.Debug|x64.ActiveCfg = Debug|x64
 		{3E9E8944-44FF-40BB-A622-3A4A7DD0F198}.Debug|x64.Build.0 = Debug|x64
@@ -2214,6 +1764,4 @@
 		{3E9E8944-44FF-40BB-A622-3A4A7DD0F198}.Release|Any CPU.ActiveCfg = Release|Any CPU
 		{3E9E8944-44FF-40BB-A622-3A4A7DD0F198}.Release|Any CPU.Build.0 = Release|Any CPU
-		{3E9E8944-44FF-40BB-A622-3A4A7DD0F198}.Release|Mixed Platforms.ActiveCfg = Release|x86
-		{3E9E8944-44FF-40BB-A622-3A4A7DD0F198}.Release|Mixed Platforms.Build.0 = Release|x86
 		{3E9E8944-44FF-40BB-A622-3A4A7DD0F198}.Release|x64.ActiveCfg = Release|x64
 		{3E9E8944-44FF-40BB-A622-3A4A7DD0F198}.Release|x64.Build.0 = Release|x64
@@ -2222,6 +1770,4 @@
 		{B7A64A60-B538-479F-9C47-A3180C458F6C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
 		{B7A64A60-B538-479F-9C47-A3180C458F6C}.Debug|Any CPU.Build.0 = Debug|Any CPU
-		{B7A64A60-B538-479F-9C47-A3180C458F6C}.Debug|Mixed Platforms.ActiveCfg = Debug|x64
-		{B7A64A60-B538-479F-9C47-A3180C458F6C}.Debug|Mixed Platforms.Build.0 = Debug|x64
 		{B7A64A60-B538-479F-9C47-A3180C458F6C}.Debug|x64.ActiveCfg = Debug|x64
 		{B7A64A60-B538-479F-9C47-A3180C458F6C}.Debug|x64.Build.0 = Debug|x64
@@ -2230,6 +1776,4 @@
 		{B7A64A60-B538-479F-9C47-A3180C458F6C}.Release|Any CPU.ActiveCfg = Release|Any CPU
 		{B7A64A60-B538-479F-9C47-A3180C458F6C}.Release|Any CPU.Build.0 = Release|Any CPU
-		{B7A64A60-B538-479F-9C47-A3180C458F6C}.Release|Mixed Platforms.ActiveCfg = Release|x64
-		{B7A64A60-B538-479F-9C47-A3180C458F6C}.Release|Mixed Platforms.Build.0 = Release|x64
 		{B7A64A60-B538-479F-9C47-A3180C458F6C}.Release|x64.ActiveCfg = Release|x64
 		{B7A64A60-B538-479F-9C47-A3180C458F6C}.Release|x64.Build.0 = Release|x64
@@ -2238,6 +1782,4 @@
 		{34C967E5-EEB1-4502-8035-122EDDEF44CB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
 		{34C967E5-EEB1-4502-8035-122EDDEF44CB}.Debug|Any CPU.Build.0 = Debug|Any CPU
-		{34C967E5-EEB1-4502-8035-122EDDEF44CB}.Debug|Mixed Platforms.ActiveCfg = Debug|x64
-		{34C967E5-EEB1-4502-8035-122EDDEF44CB}.Debug|Mixed Platforms.Build.0 = Debug|x64
 		{34C967E5-EEB1-4502-8035-122EDDEF44CB}.Debug|x64.ActiveCfg = Debug|x64
 		{34C967E5-EEB1-4502-8035-122EDDEF44CB}.Debug|x64.Build.0 = Debug|x64
@@ -2246,6 +1788,4 @@
 		{34C967E5-EEB1-4502-8035-122EDDEF44CB}.Release|Any CPU.ActiveCfg = Release|Any CPU
 		{34C967E5-EEB1-4502-8035-122EDDEF44CB}.Release|Any CPU.Build.0 = Release|Any CPU
-		{34C967E5-EEB1-4502-8035-122EDDEF44CB}.Release|Mixed Platforms.ActiveCfg = Release|x64
-		{34C967E5-EEB1-4502-8035-122EDDEF44CB}.Release|Mixed Platforms.Build.0 = Release|x64
 		{34C967E5-EEB1-4502-8035-122EDDEF44CB}.Release|x64.ActiveCfg = Release|x64
 		{34C967E5-EEB1-4502-8035-122EDDEF44CB}.Release|x64.Build.0 = Release|x64
@@ -2254,6 +1794,4 @@
 		{79271BC8-4446-40E2-BB89-9BE4E17174FE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
 		{79271BC8-4446-40E2-BB89-9BE4E17174FE}.Debug|Any CPU.Build.0 = Debug|Any CPU
-		{79271BC8-4446-40E2-BB89-9BE4E17174FE}.Debug|Mixed Platforms.ActiveCfg = Debug|x64
-		{79271BC8-4446-40E2-BB89-9BE4E17174FE}.Debug|Mixed Platforms.Build.0 = Debug|x64
 		{79271BC8-4446-40E2-BB89-9BE4E17174FE}.Debug|x64.ActiveCfg = Debug|x64
 		{79271BC8-4446-40E2-BB89-9BE4E17174FE}.Debug|x64.Build.0 = Debug|x64
@@ -2262,6 +1800,4 @@
 		{79271BC8-4446-40E2-BB89-9BE4E17174FE}.Release|Any CPU.ActiveCfg = Release|Any CPU
 		{79271BC8-4446-40E2-BB89-9BE4E17174FE}.Release|Any CPU.Build.0 = Release|Any CPU
-		{79271BC8-4446-40E2-BB89-9BE4E17174FE}.Release|Mixed Platforms.ActiveCfg = Release|x64
-		{79271BC8-4446-40E2-BB89-9BE4E17174FE}.Release|Mixed Platforms.Build.0 = Release|x64
 		{79271BC8-4446-40E2-BB89-9BE4E17174FE}.Release|x64.ActiveCfg = Release|x64
 		{79271BC8-4446-40E2-BB89-9BE4E17174FE}.Release|x64.Build.0 = Release|x64
@@ -2270,6 +1806,4 @@
 		{997F018D-AEA2-4F21-9301-82FAF6A5612D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
 		{997F018D-AEA2-4F21-9301-82FAF6A5612D}.Debug|Any CPU.Build.0 = Debug|Any CPU
-		{997F018D-AEA2-4F21-9301-82FAF6A5612D}.Debug|Mixed Platforms.ActiveCfg = Debug|x64
-		{997F018D-AEA2-4F21-9301-82FAF6A5612D}.Debug|Mixed Platforms.Build.0 = Debug|x64
 		{997F018D-AEA2-4F21-9301-82FAF6A5612D}.Debug|x64.ActiveCfg = Debug|x64
 		{997F018D-AEA2-4F21-9301-82FAF6A5612D}.Debug|x64.Build.0 = Debug|x64
@@ -2278,6 +1812,4 @@
 		{997F018D-AEA2-4F21-9301-82FAF6A5612D}.Release|Any CPU.ActiveCfg = Release|Any CPU
 		{997F018D-AEA2-4F21-9301-82FAF6A5612D}.Release|Any CPU.Build.0 = Release|Any CPU
-		{997F018D-AEA2-4F21-9301-82FAF6A5612D}.Release|Mixed Platforms.ActiveCfg = Release|x64
-		{997F018D-AEA2-4F21-9301-82FAF6A5612D}.Release|Mixed Platforms.Build.0 = Release|x64
 		{997F018D-AEA2-4F21-9301-82FAF6A5612D}.Release|x64.ActiveCfg = Release|x64
 		{997F018D-AEA2-4F21-9301-82FAF6A5612D}.Release|x64.Build.0 = Release|x64
@@ -2286,6 +1818,4 @@
 		{00E73394-D41B-4C4F-963F-A59341FA1791}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
 		{00E73394-D41B-4C4F-963F-A59341FA1791}.Debug|Any CPU.Build.0 = Debug|Any CPU
-		{00E73394-D41B-4C4F-963F-A59341FA1791}.Debug|Mixed Platforms.ActiveCfg = Debug|x64
-		{00E73394-D41B-4C4F-963F-A59341FA1791}.Debug|Mixed Platforms.Build.0 = Debug|x64
 		{00E73394-D41B-4C4F-963F-A59341FA1791}.Debug|x64.ActiveCfg = Debug|x64
 		{00E73394-D41B-4C4F-963F-A59341FA1791}.Debug|x64.Build.0 = Debug|x64
@@ -2294,6 +1824,4 @@
 		{00E73394-D41B-4C4F-963F-A59341FA1791}.Release|Any CPU.ActiveCfg = Release|Any CPU
 		{00E73394-D41B-4C4F-963F-A59341FA1791}.Release|Any CPU.Build.0 = Release|Any CPU
-		{00E73394-D41B-4C4F-963F-A59341FA1791}.Release|Mixed Platforms.ActiveCfg = Release|x64
-		{00E73394-D41B-4C4F-963F-A59341FA1791}.Release|Mixed Platforms.Build.0 = Release|x64
 		{00E73394-D41B-4C4F-963F-A59341FA1791}.Release|x64.ActiveCfg = Release|x64
 		{00E73394-D41B-4C4F-963F-A59341FA1791}.Release|x64.Build.0 = Release|x64
@@ -2302,6 +1830,4 @@
 		{F5013F6B-5A2D-4741-8FC9-31A6968E9C41}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
 		{F5013F6B-5A2D-4741-8FC9-31A6968E9C41}.Debug|Any CPU.Build.0 = Debug|Any CPU
-		{F5013F6B-5A2D-4741-8FC9-31A6968E9C41}.Debug|Mixed Platforms.ActiveCfg = Debug|x86
-		{F5013F6B-5A2D-4741-8FC9-31A6968E9C41}.Debug|Mixed Platforms.Build.0 = Debug|x86
 		{F5013F6B-5A2D-4741-8FC9-31A6968E9C41}.Debug|x64.ActiveCfg = Debug|x64
 		{F5013F6B-5A2D-4741-8FC9-31A6968E9C41}.Debug|x64.Build.0 = Debug|x64
@@ -2310,19 +1836,26 @@
 		{F5013F6B-5A2D-4741-8FC9-31A6968E9C41}.Release|Any CPU.ActiveCfg = Release|Any CPU
 		{F5013F6B-5A2D-4741-8FC9-31A6968E9C41}.Release|Any CPU.Build.0 = Release|Any CPU
-		{F5013F6B-5A2D-4741-8FC9-31A6968E9C41}.Release|Mixed Platforms.ActiveCfg = Release|x86
-		{F5013F6B-5A2D-4741-8FC9-31A6968E9C41}.Release|Mixed Platforms.Build.0 = Release|x86
 		{F5013F6B-5A2D-4741-8FC9-31A6968E9C41}.Release|x64.ActiveCfg = Release|x64
 		{F5013F6B-5A2D-4741-8FC9-31A6968E9C41}.Release|x64.Build.0 = Release|x64
 		{F5013F6B-5A2D-4741-8FC9-31A6968E9C41}.Release|x86.ActiveCfg = Release|x86
 		{F5013F6B-5A2D-4741-8FC9-31A6968E9C41}.Release|x86.Build.0 = Release|x86
+		{0C39A349-1979-419A-89BD-E4E2F26BD287}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{0C39A349-1979-419A-89BD-E4E2F26BD287}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{0C39A349-1979-419A-89BD-E4E2F26BD287}.Debug|x64.ActiveCfg = Debug|x64
+		{0C39A349-1979-419A-89BD-E4E2F26BD287}.Debug|x64.Build.0 = Debug|x64
+		{0C39A349-1979-419A-89BD-E4E2F26BD287}.Debug|x86.ActiveCfg = Debug|x86
+		{0C39A349-1979-419A-89BD-E4E2F26BD287}.Debug|x86.Build.0 = Debug|x86
+		{0C39A349-1979-419A-89BD-E4E2F26BD287}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{0C39A349-1979-419A-89BD-E4E2F26BD287}.Release|Any CPU.Build.0 = Release|Any CPU
+		{0C39A349-1979-419A-89BD-E4E2F26BD287}.Release|x64.ActiveCfg = Release|x64
+		{0C39A349-1979-419A-89BD-E4E2F26BD287}.Release|x64.Build.0 = Release|x64
+		{0C39A349-1979-419A-89BD-E4E2F26BD287}.Release|x86.ActiveCfg = Release|x86
+		{0C39A349-1979-419A-89BD-E4E2F26BD287}.Release|x86.Build.0 = Release|x86
 		{0D308137-8F8A-4361-A63D-09FAFEB29F9C}.Debug|Any CPU.ActiveCfg = Debug|x86
-		{0D308137-8F8A-4361-A63D-09FAFEB29F9C}.Debug|Mixed Platforms.ActiveCfg = Debug|x86
-		{0D308137-8F8A-4361-A63D-09FAFEB29F9C}.Debug|Mixed Platforms.Build.0 = Debug|x86
-		{0D308137-8F8A-4361-A63D-09FAFEB29F9C}.Debug|x64.ActiveCfg = Debug|x86
+		{0D308137-8F8A-4361-A63D-09FAFEB29F9C}.Debug|x64.ActiveCfg = Debug|x64
+		{0D308137-8F8A-4361-A63D-09FAFEB29F9C}.Debug|x64.Build.0 = Debug|x64
 		{0D308137-8F8A-4361-A63D-09FAFEB29F9C}.Debug|x86.ActiveCfg = Debug|x86
 		{0D308137-8F8A-4361-A63D-09FAFEB29F9C}.Debug|x86.Build.0 = Debug|x86
 		{0D308137-8F8A-4361-A63D-09FAFEB29F9C}.Release|Any CPU.ActiveCfg = Release|x86
-		{0D308137-8F8A-4361-A63D-09FAFEB29F9C}.Release|Mixed Platforms.ActiveCfg = Release|x86
-		{0D308137-8F8A-4361-A63D-09FAFEB29F9C}.Release|Mixed Platforms.Build.0 = Release|x86
 		{0D308137-8F8A-4361-A63D-09FAFEB29F9C}.Release|x64.ActiveCfg = Release|x86
 		{0D308137-8F8A-4361-A63D-09FAFEB29F9C}.Release|x86.ActiveCfg = Release|x86
Index: /branches/histogram/HeuristicLab.Algorithms.LocalSearch/3.3/LocalSearch.cs
===================================================================
--- /branches/histogram/HeuristicLab.Algorithms.LocalSearch/3.3/LocalSearch.cs	(revision 6045)
+++ /branches/histogram/HeuristicLab.Algorithms.LocalSearch/3.3/LocalSearch.cs	(revision 6046)
@@ -185,5 +185,5 @@
       mainLoop.EvaluatedMovesParameter.ActualName = "EvaluatedMoves";
       mainLoop.IterationsParameter.ActualName = "Iterations";
-      mainLoop.BestQualityParameter.ActualName = "BestQuality";
+      mainLoop.BestLocalQualityParameter.ActualName = "BestQuality";
 
       moveQualityAnalyzer = new BestAverageWorstQualityAnalyzer();
Index: /branches/histogram/HeuristicLab.Algorithms.LocalSearch/3.3/LocalSearchImprovementOperator.cs
===================================================================
--- /branches/histogram/HeuristicLab.Algorithms.LocalSearch/3.3/LocalSearchImprovementOperator.cs	(revision 6045)
+++ /branches/histogram/HeuristicLab.Algorithms.LocalSearch/3.3/LocalSearchImprovementOperator.cs	(revision 6046)
@@ -21,5 +21,4 @@
 
 using System;
-using System.Collections.Generic;
 using System.Linq;
 using HeuristicLab.Analysis;
@@ -39,33 +38,65 @@
   [Item("LocalSearchImprovementOperator", "A local search improvement operator.")]
   [StorableClass]
-  public class LocalSearchImprovementOperator : SingleSuccessorOperator, ILocalImprovementOperator {
+  public sealed class LocalSearchImprovementOperator : SingleSuccessorOperator, ILocalImprovementOperator, IStochasticOperator {
+    #region IGenericLocalImprovementOperator Properties
+    public Type ProblemType { get { return typeof(ISingleObjectiveHeuristicOptimizationProblem); } }
+    public IProblem Problem {
+      get { return problem; }
+      set {
+        if (problem != value) {
+          if (value != null && !(value is ISingleObjectiveHeuristicOptimizationProblem))
+            throw new ArgumentException("Only problems of type " + ProblemType.ToString() + " can be assigned.");
+          if (problem != null) DeregisterProblemEventHandlers();
+          problem = (ISingleObjectiveHeuristicOptimizationProblem)value;
+          if (problem != null) RegisterProblemEventHandlers();
+          UpdateProblem();
+        }
+      }
+    }
+    #endregion
+
+    [Storable]
+    private ISingleObjectiveHeuristicOptimizationProblem problem;
     [Storable]
     private LocalSearchMainLoop loop;
-
     [Storable]
     private BestAverageWorstQualityAnalyzer qualityAnalyzer;
 
-    private ConstrainedValueParameter<IMoveGenerator> MoveGeneratorParameter {
+    #region Parameter Properties
+    public ConstrainedValueParameter<IMoveGenerator> MoveGeneratorParameter {
       get { return (ConstrainedValueParameter<IMoveGenerator>)Parameters["MoveGenerator"]; }
     }
-    private ConstrainedValueParameter<IMoveMaker> MoveMakerParameter {
+    public ConstrainedValueParameter<IMoveMaker> MoveMakerParameter {
       get { return (ConstrainedValueParameter<IMoveMaker>)Parameters["MoveMaker"]; }
     }
-    private ConstrainedValueParameter<ISingleObjectiveMoveEvaluator> MoveEvaluatorParameter {
+    public ConstrainedValueParameter<ISingleObjectiveMoveEvaluator> MoveEvaluatorParameter {
       get { return (ConstrainedValueParameter<ISingleObjectiveMoveEvaluator>)Parameters["MoveEvaluator"]; }
     }
-    private ValueParameter<IntValue> MaximumIterationsParameter {
-      get { return (ValueParameter<IntValue>)Parameters["MaximumIterations"]; }
-    }
-    private ValueParameter<IntValue> SampleSizeParameter {
-      get { return (ValueParameter<IntValue>)Parameters["SampleSize"]; }
-    }
-    public LookupParameter<IntValue> EvaluatedSolutionsParameter {
-      get { return (LookupParameter<IntValue>)Parameters["EvaluatedSolutions"]; }
+    public IValueLookupParameter<IntValue> SampleSizeParameter {
+      get { return (IValueLookupParameter<IntValue>)Parameters["SampleSize"]; }
     }
     public ValueParameter<MultiAnalyzer> AnalyzerParameter {
       get { return (ValueParameter<MultiAnalyzer>)Parameters["Analyzer"]; }
     }
-
+    public ScopeTreeLookupParameter<DoubleValue> QualityParameter {
+      get { return (ScopeTreeLookupParameter<DoubleValue>)Parameters["Quality"]; }
+    }
+    public ILookupParameter<IRandom> RandomParameter {
+      get { return (ILookupParameter<IRandom>)Parameters["Random"]; }
+    }
+    #region ILocalImprovementOperator Parameters
+    public IValueLookupParameter<IntValue> MaximumIterationsParameter {
+      get { return (IValueLookupParameter<IntValue>)Parameters["MaximumIterations"]; }
+    }
+    public ILookupParameter<IntValue> EvaluatedSolutionsParameter {
+      get { return (ILookupParameter<IntValue>)Parameters["EvaluatedSolutions"]; }
+    }
+    public ILookupParameter<ResultCollection> ResultsParameter {
+      get { return (ILookupParameter<ResultCollection>)Parameters["Results"]; }
+    }
+    #endregion
+    #endregion
+
+    #region Properties
     public IMoveGenerator MoveGenerator {
       get { return MoveGeneratorParameter.Value; }
@@ -84,58 +115,115 @@
       set { AnalyzerParameter.Value = value; }
     }
+    #endregion
 
     [StorableConstructor]
-    protected LocalSearchImprovementOperator(bool deserializing) : base(deserializing) { }
-    [StorableHook(HookType.AfterDeserialization)]
-    private void AfterDeserialization() {
-      Initialize();
-    }
-    protected LocalSearchImprovementOperator(LocalSearchImprovementOperator original, Cloner cloner)
+    private LocalSearchImprovementOperator(bool deserializing) : base(deserializing) { }
+    private LocalSearchImprovementOperator(LocalSearchImprovementOperator original, Cloner cloner)
       : base(original, cloner) {
       this.loop = cloner.Clone(original.loop);
       this.qualityAnalyzer = cloner.Clone(original.qualityAnalyzer);
-      Initialize();
-    }
-    public override IDeepCloneable Clone(Cloner cloner) {
-      return new LocalSearchImprovementOperator(this, cloner);
+      this.problem = cloner.Clone(original.problem);
+      RegisterEventHandlers();
     }
     public LocalSearchImprovementOperator()
       : base() {
-      loop = new LocalSearchMainLoop();
-
-      ResultsCollector rc = (loop.OperatorGraph.InitialOperator as SingleSuccessorOperator).Successor as ResultsCollector;
-      rc.CollectedValues.Remove("BestLocalQuality");
-
-      qualityAnalyzer = new BestAverageWorstQualityAnalyzer();
-
       Parameters.Add(new ConstrainedValueParameter<IMoveGenerator>("MoveGenerator", "The operator used to generate moves to the neighborhood of the current solution."));
       Parameters.Add(new ConstrainedValueParameter<IMoveMaker>("MoveMaker", "The operator used to perform a move."));
       Parameters.Add(new ConstrainedValueParameter<ISingleObjectiveMoveEvaluator>("MoveEvaluator", "The operator used to evaluate a move."));
-      Parameters.Add(new ValueParameter<IntValue>("MaximumIterations", "The maximum number of generations which should be processed.", new IntValue(150)));
-      Parameters.Add(new ValueParameter<IntValue>("SampleSize", "Number of moves that MultiMoveGenerators should create. This is ignored for Exhaustive- and SingleMoveGenerators.", new IntValue(1500)));
+      Parameters.Add(new ValueLookupParameter<IntValue>("MaximumIterations", "The maximum number of generations which should be processed.", new IntValue(150)));
+      Parameters.Add(new ValueLookupParameter<IntValue>("SampleSize", "Number of moves that MultiMoveGenerators should create. This is ignored for Exhaustive- and SingleMoveGenerators.", new IntValue(300)));
       Parameters.Add(new LookupParameter<IntValue>("EvaluatedSolutions", "The number of evaluated moves."));
       Parameters.Add(new ValueParameter<MultiAnalyzer>("Analyzer", "The operator used to analyze the solution.", new MultiAnalyzer()));
-
-      Initialize();
-    }
-
-    private void Initialize() {
+      Parameters.Add(new LookupParameter<ResultCollection>("Results", "The name of the collection where the results are stored."));
+      Parameters.Add(new ScopeTreeLookupParameter<DoubleValue>("Quality", "The quality/fitness value of a solution."));
+      Parameters.Add(new LookupParameter<IRandom>("Random", "The random number generator to use."));
+
+      loop = new LocalSearchMainLoop();
+      ((ResultsCollector)((SingleSuccessorOperator)loop.OperatorGraph.InitialOperator).Successor).CollectedValues.Remove(loop.BestLocalQualityParameter.Name);
+      ParameterizeLSMainLoop();
+
+      qualityAnalyzer = new BestAverageWorstQualityAnalyzer();
+      Analyzer.Operators.Add(qualityAnalyzer);
+
+      RegisterEventHandlers();
+    }
+
+    public override IDeepCloneable Clone(Cloner cloner) {
+      return new LocalSearchImprovementOperator(this, cloner);
+    }
+
+    [StorableHook(HookType.AfterDeserialization)]
+    private void AfterDeserialization() {
+      RegisterEventHandlers();
+    }
+
+    #region Event Handler Registration
+    private void RegisterEventHandlers() {
       MoveGeneratorParameter.ValueChanged += new EventHandler(MoveGeneratorParameter_ValueChanged);
-    }
-
-    public void OnProblemChanged(IProblem problem) {
-      UpdateMoveOperators(problem);
+      if (problem != null)
+        RegisterProblemEventHandlers();
+    }
+
+    private void RegisterProblemEventHandlers() {
+      problem.Reset += new EventHandler(problem_Reset);
+      problem.OperatorsChanged += new EventHandler(problem_OperatorsChanged);
+    }
+
+    private void DeregisterProblemEventHandlers() {
+      problem.Reset -= new EventHandler(problem_Reset);
+      problem.OperatorsChanged -= new EventHandler(problem_OperatorsChanged);
+    }
+    #endregion
+
+    #region Event Handlers
+    private void MoveGeneratorParameter_ValueChanged(object sender, EventArgs e) {
       ChooseMoveOperators();
-
-      ParameterizeMoveGenerators(problem as ISingleObjectiveHeuristicOptimizationProblem);
-      ParameterizeMoveEvaluators(problem as ISingleObjectiveHeuristicOptimizationProblem);
-      ParameterizeMoveMakers(problem as ISingleObjectiveHeuristicOptimizationProblem);
-
-      ParameterizeAnalyzers(problem as ISingleObjectiveHeuristicOptimizationProblem);
-      UpdateAnalyzers(problem as ISingleObjectiveHeuristicOptimizationProblem);
-    }
-
-    void ParameterizeAnalyzers(ISingleObjectiveHeuristicOptimizationProblem problem) {
-      qualityAnalyzer.ResultsParameter.ActualName = "Results";
+      ParameterizeLSMainLoop();
+    }
+
+    private void problem_Reset(object sender, EventArgs e) {
+      UpdateProblem();
+    }
+
+    private void problem_OperatorsChanged(object sender, EventArgs e) {
+      UpdateProblem();
+    }
+    #endregion
+
+    #region Parameterize and Update Methods
+    private void UpdateProblem() {
+      UpdateMoveOperators();
+      ChooseMoveOperators();
+
+      ParameterizeMoveGenerators();
+
+      ParameterizeLSMainLoop();
+      ParameterizeAnalyzers();
+    }
+
+    private void ParameterizeLSMainLoop() {
+      loop.AnalyzerParameter.ActualName = AnalyzerParameter.Name;
+      loop.BestLocalQualityParameter.ActualName = QualityParameter.Name;
+      loop.EvaluatedMovesParameter.ActualName = EvaluatedSolutionsParameter.Name;
+      loop.IterationsParameter.ActualName = "LocalIterations";
+      loop.MaximumIterationsParameter.ActualName = MaximumIterationsParameter.Name;
+      loop.MoveEvaluatorParameter.ActualName = MoveEvaluatorParameter.Name;
+      loop.MoveGeneratorParameter.ActualName = MoveGeneratorParameter.Name;
+      loop.MoveMakerParameter.ActualName = MoveMakerParameter.Name;
+      loop.QualityParameter.ActualName = QualityParameter.Name;
+      loop.RandomParameter.ActualName = RandomParameter.Name;
+      loop.ResultsParameter.ActualName = ResultsParameter.Name;
+
+      if (problem != null) {
+        loop.BestKnownQualityParameter.ActualName = problem.BestKnownQualityParameter.Name;
+        loop.MaximizationParameter.ActualName = problem.MaximizationParameter.Name;
+      }
+      if (MoveEvaluator != null) {
+        loop.MoveQualityParameter.ActualName = MoveEvaluator.MoveQualityParameter.ActualName;
+      }
+    }
+
+    private void ParameterizeAnalyzers() {
+      qualityAnalyzer.ResultsParameter.ActualName = ResultsParameter.Name;
       if (problem != null) {
         qualityAnalyzer.MaximizationParameter.ActualName = problem.MaximizationParameter.Name;
@@ -146,22 +234,5 @@
     }
 
-    void UpdateAnalyzers(ISingleObjectiveHeuristicOptimizationProblem problem) {
-      Analyzer.Operators.Clear();
-      if (problem != null) {
-        foreach (IAnalyzer analyzer in problem.Operators.OfType<IAnalyzer>()) {
-          IAnalyzer clone = analyzer.Clone() as IAnalyzer;
-          foreach (IScopeTreeLookupParameter param in clone.Parameters.OfType<IScopeTreeLookupParameter>())
-            param.Depth = 0;
-          Analyzer.Operators.Add(clone);
-        }
-      }
-      Analyzer.Operators.Add(qualityAnalyzer);
-    }
-
-    void MoveGeneratorParameter_ValueChanged(object sender, EventArgs e) {
-      ChooseMoveOperators();
-    }
-
-    private void UpdateMoveOperators(IProblem problem) {
+    private void UpdateMoveOperators() {
       IMoveGenerator oldMoveGenerator = MoveGenerator;
       IMoveMaker oldMoveMaker = MoveMaker;
@@ -171,65 +242,38 @@
 
       if (problem != null) {
-        foreach (IMoveGenerator generator in problem.Operators.OfType<IMoveGenerator>().OrderBy(x => x.Name))
+        foreach (IMultiMoveGenerator generator in problem.Operators.OfType<IMultiMoveGenerator>().OrderBy(x => x.Name))
           MoveGeneratorParameter.ValidValues.Add(generator);
-
-        foreach (IMoveMaker maker in problem.Operators.OfType<IMoveMaker>().OrderBy(x => x.Name))
-          MoveMakerParameter.ValidValues.Add(maker);
-
-        foreach (ISingleObjectiveMoveEvaluator evaluator in problem.Operators.OfType<ISingleObjectiveMoveEvaluator>().OrderBy(x => x.Name))
-          MoveEvaluatorParameter.ValidValues.Add(evaluator);
-      }
-
-      if (oldMoveGenerator != null) {
-        IMoveGenerator newMoveGenerator = MoveGeneratorParameter.ValidValues.FirstOrDefault(x => x.GetType() == oldMoveGenerator.GetType());
-        if (newMoveGenerator != null) MoveGenerator = newMoveGenerator;
-      }
-      if (MoveGenerator == null) {
-        ClearMoveParameters();
-      }
-
-      if (oldMoveMaker != null) {
-        IMoveMaker mm = MoveMakerParameter.ValidValues.FirstOrDefault(x => x.GetType() == oldMoveMaker.GetType());
-        if (mm != null) MoveMaker = mm;
-      }
-
-      if (oldMoveEvaluator != null) {
-        ISingleObjectiveMoveEvaluator me = MoveEvaluatorParameter.ValidValues.FirstOrDefault(x => x.GetType() == oldMoveEvaluator.GetType());
-        if (me != null) MoveEvaluator = me;
-      }
-    }
-
-    private void ChooseMoveOperators() {
-      IMoveMaker oldMoveMaker = MoveMaker;
-      ISingleObjectiveMoveEvaluator oldMoveEvaluator = MoveEvaluator;
-
-      if (MoveGenerator != null) {
-        List<Type> moveTypes = MoveGenerator.GetType().GetInterfaces().Where(x => typeof(IMoveOperator).IsAssignableFrom(x)).ToList();
-        foreach (Type type in moveTypes.ToList()) {
-          if (moveTypes.Any(t => t != type && type.IsAssignableFrom(t)))
-            moveTypes.Remove(type);
-        }
-        List<IMoveMaker> validMoveMakers = new List<IMoveMaker>();
-        List<ISingleObjectiveMoveEvaluator> validMoveEvaluators = new List<ISingleObjectiveMoveEvaluator>();
-
-        foreach (Type type in moveTypes) {
-          var moveMakers = MoveMakerParameter.ValidValues.Where(x => type.IsAssignableFrom(x.GetType())).OrderBy(x => x.Name);
-          foreach (IMoveMaker moveMaker in moveMakers)
-            validMoveMakers.Add(moveMaker);
-
-          var moveEvaluators = MoveEvaluatorParameter.ValidValues.Where(x => type.IsAssignableFrom(x.GetType())).OrderBy(x => x.Name);
-          foreach (ISingleObjectiveMoveEvaluator moveEvaluator in moveEvaluators)
-            validMoveEvaluators.Add(moveEvaluator);
-        }
+        foreach (IExhaustiveMoveGenerator generator in problem.Operators.OfType<IExhaustiveMoveGenerator>().OrderBy(x => x.Name))
+          MoveGeneratorParameter.ValidValues.Add(generator);
+
+        if (oldMoveGenerator != null) {
+          IMoveGenerator newMoveGenerator = MoveGeneratorParameter.ValidValues.FirstOrDefault(x => x.GetType() == oldMoveGenerator.GetType());
+          if (newMoveGenerator != null) MoveGenerator = newMoveGenerator;
+        }
+
+        ChooseMoveOperators(oldMoveMaker, oldMoveEvaluator);
+      }
+    }
+
+    private void ChooseMoveOperators(IMoveMaker oldMoveMaker = null, ISingleObjectiveMoveEvaluator oldMoveEvaluator = null) {
+      if (oldMoveMaker == null) oldMoveMaker = MoveMaker;
+      if (oldMoveEvaluator == null) oldMoveEvaluator = MoveEvaluator;
+      MoveMakerParameter.ValidValues.Clear();
+      MoveEvaluatorParameter.ValidValues.Clear();
+
+      if (MoveGenerator != null && Problem != null) {
+        IMoveGenerator generator = MoveGeneratorParameter.Value;
+        foreach (IMoveMaker moveMaker in MoveHelper.GetCompatibleMoveMakers(generator, Problem.Operators).OrderBy(x => x.Name))
+          MoveMakerParameter.ValidValues.Add(moveMaker);
+        foreach (ISingleObjectiveMoveEvaluator moveEvaluator in MoveHelper.GetCompatibleSingleObjectiveMoveEvaluators(generator, Problem.Operators).OrderBy(x => x.Name))
+          MoveEvaluatorParameter.ValidValues.Add(moveEvaluator);
+
         if (oldMoveMaker != null) {
-          IMoveMaker mm = validMoveMakers.FirstOrDefault(x => x.GetType() == oldMoveMaker.GetType());
+          IMoveMaker mm = MoveMakerParameter.ValidValues.FirstOrDefault(x => x.GetType() == oldMoveMaker.GetType());
           if (mm != null) MoveMaker = mm;
-          else MoveMaker = validMoveMakers.FirstOrDefault();
-        }
-
+        }
         if (oldMoveEvaluator != null) {
-          ISingleObjectiveMoveEvaluator me = validMoveEvaluators.FirstOrDefault(x => x.GetType() == oldMoveEvaluator.GetType());
+          ISingleObjectiveMoveEvaluator me = MoveEvaluatorParameter.ValidValues.FirstOrDefault(x => x.GetType() == oldMoveEvaluator.GetType());
           if (me != null) MoveEvaluator = me;
-          else MoveEvaluator = validMoveEvaluators.FirstOrDefault();
         }
       }
@@ -242,5 +286,5 @@
     }
 
-    private void ParameterizeMoveGenerators(ISingleObjectiveHeuristicOptimizationProblem problem) {
+    private void ParameterizeMoveGenerators() {
       if (problem != null) {
         foreach (IMultiMoveGenerator generator in problem.Operators.OfType<IMultiMoveGenerator>())
@@ -248,28 +292,18 @@
       }
     }
-    private void ParameterizeMoveEvaluators(ISingleObjectiveHeuristicOptimizationProblem problem) {
-      foreach (ISingleObjectiveMoveEvaluator op in problem.Operators.OfType<ISingleObjectiveMoveEvaluator>()) {
-        op.QualityParameter.ActualName = problem.Evaluator.QualityParameter.ActualName;
-      }
-    }
-    private void ParameterizeMoveMakers(ISingleObjectiveHeuristicOptimizationProblem problem) {
-      foreach (IMoveMaker op in problem.Operators.OfType<IMoveMaker>()) {
-        op.QualityParameter.ActualName = problem.Evaluator.QualityParameter.ActualName;
-        if (MoveEvaluator != null)
-          op.MoveQualityParameter.ActualName = MoveEvaluator.MoveQualityParameter.ActualName;
-      }
-    }
+    #endregion
 
     public override IOperation Apply() {
-      Scope subScope = new Scope();
+      IScope currentScope = ExecutionContext.Scope;
+
+      Scope localScope = new Scope();
       Scope individual = new Scope();
 
-      foreach (Variable var in ExecutionContext.Scope.Variables) {
-        individual.Variables.Add(var);
-      }
-      subScope.SubScopes.Add(individual);
-
-      ExecutionContext.Scope.SubScopes.Add(subScope);
-      int index = subScope.Parent.SubScopes.IndexOf(subScope);
+      foreach (IVariable var in currentScope.Variables)
+        individual.Variables.Add(var); // add reference to variable otherwise the analyzer fails (it's looking down the tree)
+
+      localScope.SubScopes.Add(individual);
+      currentScope.SubScopes.Add(localScope);
+      int index = currentScope.SubScopes.Count - 1;
 
       SubScopesProcessor processor = new SubScopesProcessor();
@@ -279,25 +313,24 @@
       remover.SubScopeIndexParameter.Value = new IntValue(index);
 
-      for (int i = 0; i < index; i++) {
-        processor.Operators.Add(new EmptyOperator());
+      if (index > 0) {
+        EmptyOperator eo = new EmptyOperator();
+        for (int i = 0; i < index - 1; i++) {
+          processor.Operators.Add(eo);
+        }
       }
 
       VariableCreator variableCreator = new VariableCreator();
-      variableCreator.CollectedValues.Add(new ValueParameter<IntValue>("LocalIterations", new IntValue(0)));
-      variableCreator.CollectedValues.Add(new ValueParameter<DoubleValue>("BestLocalQuality", new DoubleValue(0)));
+      variableCreator.CollectedValues.Add(new ValueParameter<IntValue>(loop.IterationsParameter.ActualName, new IntValue(0)));
+      variableCreator.CollectedValues.Add(new ValueParameter<DoubleValue>(loop.BestLocalQualityParameter.ActualName, new DoubleValue(0)));
 
       variableCreator.Successor = loop;
-
-      loop.EvaluatedMovesParameter.ActualName = EvaluatedSolutionsParameter.ActualName;
 
       processor.Operators.Add(variableCreator);
       processor.Successor = remover;
 
-      IOperation next = base.Apply();
-      if (next as ExecutionContext != null) {
-        remover.Successor = (next as ExecutionContext).Operator;
-      }
-
-      return ExecutionContext.CreateChildOperation(processor);
+      OperationCollection next = new OperationCollection(base.Apply());
+      next.Insert(0, ExecutionContext.CreateChildOperation(processor));
+
+      return next;
     }
   }
Index: /branches/histogram/HeuristicLab.Algorithms.LocalSearch/3.3/LocalSearchMainLoop.cs
===================================================================
--- /branches/histogram/HeuristicLab.Algorithms.LocalSearch/3.3/LocalSearchMainLoop.cs	(revision 6045)
+++ /branches/histogram/HeuristicLab.Algorithms.LocalSearch/3.3/LocalSearchMainLoop.cs	(revision 6046)
@@ -46,5 +46,5 @@
       get { return (LookupParameter<DoubleValue>)Parameters["Quality"]; }
     }
-    public LookupParameter<DoubleValue> BestQualityParameter {
+    public LookupParameter<DoubleValue> BestLocalQualityParameter {
       get { return (LookupParameter<DoubleValue>)Parameters["BestLocalQuality"]; }
     }
@@ -56,5 +56,5 @@
     }
     public LookupParameter<IntValue> IterationsParameter {
-      get { return (LookupParameter<IntValue>)Parameters["LocalIterations"]; }
+      get { return (LookupParameter<IntValue>)Parameters["Iterations"]; }
     }
     public ValueLookupParameter<IntValue> MaximumIterationsParameter {
@@ -85,5 +85,5 @@
     public LocalSearchMainLoop()
       : base() {
-        Initialize();
+      Initialize();
     }
     private LocalSearchMainLoop(LocalSearchMainLoop original, Cloner cloner)
@@ -100,7 +100,7 @@
       Parameters.Add(new LookupParameter<DoubleValue>("Quality", "The value which represents the quality of a solution."));
       Parameters.Add(new LookupParameter<DoubleValue>("BestLocalQuality", "The value which represents the best quality found so far."));
-      Parameters.Add(new ValueLookupParameter<DoubleValue>("BestKnownQuality", "The best known quality value found so far."));
+      Parameters.Add(new ValueLookupParameter<DoubleValue>("BestKnownQuality", "The problem's best known quality value found so far."));
       Parameters.Add(new LookupParameter<DoubleValue>("MoveQuality", "The value which represents the quality of a move."));
-      Parameters.Add(new LookupParameter<IntValue>("LocalIterations", "The number of generations."));
+      Parameters.Add(new LookupParameter<IntValue>("Iterations", "The number of iterations performed."));
       Parameters.Add(new ValueLookupParameter<IntValue>("MaximumIterations", "The maximum number of generations which should be processed."));
       Parameters.Add(new ValueLookupParameter<VariableCollection>("Results", "The variable collection where results should be stored."));
@@ -140,5 +140,5 @@
 
       bestQualityInitializer.Name = "Initialize BestQuality";
-      bestQualityInitializer.LeftSideParameter.ActualName = BestQualityParameter.Name;
+      bestQualityInitializer.LeftSideParameter.ActualName = BestLocalQualityParameter.Name;
       bestQualityInitializer.RightSideParameter.ActualName = QualityParameter.Name;
 
@@ -148,5 +148,5 @@
       resultsCollector1.CopyValue = new BoolValue(false);
       resultsCollector1.CollectedValues.Add(new LookupParameter<IntValue>(IterationsParameter.Name));
-      resultsCollector1.CollectedValues.Add(new LookupParameter<DoubleValue>(BestQualityParameter.Name, null, BestQualityParameter.Name));
+      resultsCollector1.CollectedValues.Add(new LookupParameter<DoubleValue>(BestLocalQualityParameter.Name, null, BestLocalQualityParameter.Name));
       resultsCollector1.ResultsParameter.ActualName = ResultsParameter.Name;
 
@@ -177,9 +177,9 @@
 
       bestQualityUpdater.Name = "Update BestQuality";
-      bestQualityUpdater.LeftSideParameter.ActualName = BestQualityParameter.Name;
+      bestQualityUpdater.LeftSideParameter.ActualName = BestLocalQualityParameter.Name;
       bestQualityUpdater.RightSideParameter.ActualName = QualityParameter.Name;
 
       resultsCollector2.CopyValue = new BoolValue(false);
-      resultsCollector2.CollectedValues.Add(new LookupParameter<DoubleValue>(BestQualityParameter.Name, null, BestQualityParameter.Name));
+      resultsCollector2.CollectedValues.Add(new LookupParameter<DoubleValue>(BestLocalQualityParameter.Name, null, BestLocalQualityParameter.Name));
       resultsCollector2.ResultsParameter.ActualName = ResultsParameter.Name;
 
@@ -204,5 +204,5 @@
 
       #region Create operator graph
-      OperatorGraph.InitialOperator = subScopesProcessor0;
+      OperatorGraph.InitialOperator = subScopesProcessor0; // don't change this without adapting the constructor of LocalSearchImprovementOperator
       subScopesProcessor0.Operators.Add(bestQualityInitializer);
       subScopesProcessor0.Successor = resultsCollector1;
@@ -243,4 +243,15 @@
       return base.Apply();
     }
+
+    [StorableHook(HookType.AfterDeserialization)]
+    private void AfterDeserialization() {
+      // BackwardsCompatibility3.3
+      #region Backwards compatible code, remove with 3.4
+      if (!Parameters.ContainsKey("BestLocalQuality"))
+        Parameters.Add(new LookupParameter<DoubleValue>("BestLocalQuality", "The value which represents the best quality found so far."));
+      if (!Parameters.ContainsKey("Iterations"))
+        Parameters.Add(new LookupParameter<IntValue>("Iterations", "The number of iterations performed."));
+      #endregion
+    }
   }
 }
Index: /branches/histogram/HeuristicLab.Algorithms.SimulatedAnnealing/3.3/SimulatedAnnealingImprovementOperator.cs
===================================================================
--- /branches/histogram/HeuristicLab.Algorithms.SimulatedAnnealing/3.3/SimulatedAnnealingImprovementOperator.cs	(revision 6045)
+++ /branches/histogram/HeuristicLab.Algorithms.SimulatedAnnealing/3.3/SimulatedAnnealingImprovementOperator.cs	(revision 6046)
@@ -21,17 +21,13 @@
 
 using System;
-using System.Collections.Generic;
 using System.Linq;
-using System.Text;
+using HeuristicLab.Analysis;
+using HeuristicLab.Common;
 using HeuristicLab.Core;
+using HeuristicLab.Data;
+using HeuristicLab.Operators;
+using HeuristicLab.Optimization;
+using HeuristicLab.Parameters;
 using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
-using HeuristicLab.Operators;
-using HeuristicLab.Common;
-using HeuristicLab.Parameters;
-using HeuristicLab.Algorithms.SimulatedAnnealing;
-using HeuristicLab.Data;
-using HeuristicLab.Optimization;
-using HeuristicLab.Optimization.Operators;
-using HeuristicLab.Analysis;
 using HeuristicLab.PluginInfrastructure;
 
@@ -42,11 +38,33 @@
   [Item("SimulatedAnnealingImprovementOperator", "A simulated annealing improvement operator.")]
   [StorableClass]
-  public class SimulatedAnnealingImprovementOperator: SingleSuccessorOperator, ILocalImprovementOperator {
+  public sealed class SimulatedAnnealingImprovementOperator : SingleSuccessorOperator, ILocalImprovementOperator, IStochasticOperator {
+    #region IGenericLocalImprovementOperator Properties
+    public Type ProblemType { get { return typeof(ISingleObjectiveHeuristicOptimizationProblem); } }
+    public IProblem Problem {
+      get { return problem; }
+      set {
+        if (problem != value) {
+          if (value != null && !(value is ISingleObjectiveHeuristicOptimizationProblem))
+            throw new ArgumentException("Only problems of type " + ProblemType.ToString() + " can be assigned.");
+          if (problem != null) DeregisterProblemEventHandlers();
+          problem = (ISingleObjectiveHeuristicOptimizationProblem)value;
+          if (problem != null) RegisterProblemEventHandlers();
+          UpdateProblem();
+        }
+      }
+    }
+    #endregion
+
+    [Storable]
+    private ISingleObjectiveHeuristicOptimizationProblem problem;
     [Storable]
     private SimulatedAnnealingMainLoop loop;
-
     [Storable]
     private BestAverageWorstQualityAnalyzer qualityAnalyzer;
-    
+
+    #region Parameter Properties
+    public ILookupParameter<IRandom> RandomParameter {
+      get { return (ILookupParameter<IRandom>)Parameters["Random"]; }
+    }
     private ConstrainedValueParameter<IMoveGenerator> MoveGeneratorParameter {
       get { return (ConstrainedValueParameter<IMoveGenerator>)Parameters["MoveGenerator"]; }
@@ -58,12 +76,6 @@
       get { return (ConstrainedValueParameter<ISingleObjectiveMoveEvaluator>)Parameters["MoveEvaluator"]; }
     }
-    private ValueParameter<IntValue> MaximumIterationsParameter {
-      get { return (ValueParameter<IntValue>)Parameters["MaximumIterations"]; }
-    }
-    private ValueParameter<IntValue> InnerIterationsParameter {
-      get { return (ValueParameter<IntValue>)Parameters["InnerIterations"]; }
-    }
-    public LookupParameter<IntValue> EvaluatedSolutionsParameter {
-      get { return (LookupParameter<IntValue>)Parameters["EvaluatedSolutions"]; }
+    private IValueLookupParameter<IntValue> InnerIterationsParameter {
+      get { return (IValueLookupParameter<IntValue>)Parameters["InnerIterations"]; }
     }
     public ValueParameter<MultiAnalyzer> AnalyzerParameter {
@@ -79,5 +91,21 @@
       get { return (ConstrainedValueParameter<IDiscreteDoubleValueModifier>)Parameters["AnnealingOperator"]; }
     }
-
+    public ScopeTreeLookupParameter<DoubleValue> QualityParameter {
+      get { return (ScopeTreeLookupParameter<DoubleValue>)Parameters["Quality"]; }
+    }
+    #region ILocalImprovementOperator Parameters
+    public IValueLookupParameter<IntValue> MaximumIterationsParameter {
+      get { return (IValueLookupParameter<IntValue>)Parameters["MaximumIterations"]; }
+    }
+    public ILookupParameter<IntValue> EvaluatedSolutionsParameter {
+      get { return (ILookupParameter<IntValue>)Parameters["EvaluatedSolutions"]; }
+    }
+    public ILookupParameter<ResultCollection> ResultsParameter {
+      get { return (ILookupParameter<ResultCollection>)Parameters["Results"]; }
+    }
+    #endregion
+    #endregion
+
+    #region Properties
     public IMoveGenerator MoveGenerator {
       get { return MoveGeneratorParameter.Value; }
@@ -96,48 +124,85 @@
       set { AnalyzerParameter.Value = value; }
     }
+    #endregion
 
     [StorableConstructor]
-    protected SimulatedAnnealingImprovementOperator(bool deserializing) : base(deserializing) {}
+    private SimulatedAnnealingImprovementOperator(bool deserializing) : base(deserializing) { }
+    private SimulatedAnnealingImprovementOperator(SimulatedAnnealingImprovementOperator original, Cloner cloner)
+      : base(original, cloner) {
+      this.problem = cloner.Clone(original.problem);
+      this.loop = cloner.Clone(original.loop);
+      this.qualityAnalyzer = cloner.Clone(original.qualityAnalyzer);
+      RegisterEventHandlers();
+    }
+    public SimulatedAnnealingImprovementOperator()
+      : base() {
+      loop = new SimulatedAnnealingMainLoop();
+
+      qualityAnalyzer = new BestAverageWorstQualityAnalyzer();
+
+      Parameters.Add(new LookupParameter<IRandom>("Random", "The random number generator to use."));
+      Parameters.Add(new ConstrainedValueParameter<IMoveGenerator>("MoveGenerator", "The operator used to generate moves to the neighborhood of the current solution."));
+      Parameters.Add(new ConstrainedValueParameter<IMoveMaker>("MoveMaker", "The operator used to perform a move."));
+      Parameters.Add(new ConstrainedValueParameter<ISingleObjectiveMoveEvaluator>("MoveEvaluator", "The operator used to evaluate a move."));
+      Parameters.Add(new ValueLookupParameter<IntValue>("MaximumIterations", "The maximum number of generations which should be processed.", new IntValue(150)));
+      Parameters.Add(new ValueLookupParameter<IntValue>("InnerIterations", "Number of moves that MultiMoveGenerators should create. This is ignored for Exhaustive- and SingleMoveGenerators.", new IntValue(1500)));
+      Parameters.Add(new LookupParameter<IntValue>("EvaluatedSolutions", "The number of evaluated moves."));
+      Parameters.Add(new ValueParameter<MultiAnalyzer>("Analyzer", "The operator used to analyze the solution.", new MultiAnalyzer()));
+      Parameters.Add(new ValueParameter<DoubleValue>("StartTemperature", "The initial temperature.", new DoubleValue(100)));
+      Parameters.Add(new ValueParameter<DoubleValue>("EndTemperature", "The final temperature which should be reached when iterations reaches maximum iterations.", new DoubleValue(1e-6)));
+      Parameters.Add(new ConstrainedValueParameter<IDiscreteDoubleValueModifier>("AnnealingOperator", "The operator used to modify the temperature."));
+      Parameters.Add(new LookupParameter<ResultCollection>("Results", "The variable where the results are stored."));
+      Parameters.Add(new ScopeTreeLookupParameter<DoubleValue>("Quality", "The quality/fitness value of a solution."));
+
+      foreach (IDiscreteDoubleValueModifier op in ApplicationManager.Manager.GetInstances<IDiscreteDoubleValueModifier>().OrderBy(x => x.Name))
+        AnnealingOperatorParameter.ValidValues.Add(op);
+
+      ParameterizeAnnealingOperators();
+      ParameterizeSAMainLoop();
+
+      RegisterEventHandlers();
+    }
+
+    public override IDeepCloneable Clone(Cloner cloner) {
+      return new SimulatedAnnealingImprovementOperator(this, cloner);
+    }
+
     [StorableHook(HookType.AfterDeserialization)]
     private void AfterDeserialization() {
-      Initialize();
-    }
-    protected SimulatedAnnealingImprovementOperator(SimulatedAnnealingImprovementOperator original, Cloner cloner)
-      : base(original, cloner) {
-        this.loop = cloner.Clone(original.loop);
-        this.qualityAnalyzer = cloner.Clone(original.qualityAnalyzer);
-        Initialize();
-    }
-    public override IDeepCloneable Clone(Cloner cloner) {
-      return new SimulatedAnnealingImprovementOperator(this, cloner);
-    }
-    public SimulatedAnnealingImprovementOperator()
-      : base() {
-        loop = new SimulatedAnnealingMainLoop();
-
-        qualityAnalyzer = new BestAverageWorstQualityAnalyzer();
-
-        Parameters.Add(new ConstrainedValueParameter<IMoveGenerator>("MoveGenerator", "The operator used to generate moves to the neighborhood of the current solution."));
-        Parameters.Add(new ConstrainedValueParameter<IMoveMaker>("MoveMaker", "The operator used to perform a move."));
-        Parameters.Add(new ConstrainedValueParameter<ISingleObjectiveMoveEvaluator>("MoveEvaluator", "The operator used to evaluate a move."));
-        Parameters.Add(new ValueParameter<IntValue>("MaximumIterations", "The maximum number of generations which should be processed.", new IntValue(150)));
-        Parameters.Add(new ValueParameter<IntValue>("InnerIterations", "Number of moves that MultiMoveGenerators should create. This is ignored for Exhaustive- and SingleMoveGenerators.", new IntValue(1500)));
-        Parameters.Add(new LookupParameter<IntValue>("EvaluatedSolutions", "The number of evaluated moves."));
-        Parameters.Add(new ValueParameter<MultiAnalyzer>("Analyzer", "The operator used to analyze the solution.", new MultiAnalyzer()));
-        Parameters.Add(new ValueParameter<DoubleValue>("StartTemperature", "The initial temperature.", new DoubleValue(100)));
-        Parameters.Add(new ValueParameter<DoubleValue>("EndTemperature", "The final temperature which should be reached when iterations reaches maximum iterations.", new DoubleValue(1e-6)));
-        Parameters.Add(new ConstrainedValueParameter<IDiscreteDoubleValueModifier>("AnnealingOperator", "The operator used to modify the temperature."));
-
-        foreach (IDiscreteDoubleValueModifier op in ApplicationManager.Manager.GetInstances<IDiscreteDoubleValueModifier>().OrderBy(x => x.Name))
-          AnnealingOperatorParameter.ValidValues.Add(op);
-
-        ParameterizeAnnealingOperators();
-
-        Initialize();
-    }
-
-    private void Initialize() {
+      RegisterEventHandlers();
+    }
+
+    #region Event Handler Registration
+    private void RegisterEventHandlers() {
       MoveGeneratorParameter.ValueChanged += new EventHandler(MoveGeneratorParameter_ValueChanged);
-    }
+      if (problem != null)
+        RegisterProblemEventHandlers();
+    }
+
+    private void RegisterProblemEventHandlers() {
+      problem.Reset += new EventHandler(problem_Reset);
+      problem.OperatorsChanged += new EventHandler(problem_OperatorsChanged);
+    }
+
+    private void DeregisterProblemEventHandlers() {
+      problem.Reset -= new EventHandler(problem_Reset);
+      problem.OperatorsChanged -= new EventHandler(problem_OperatorsChanged);
+    }
+    #endregion
+
+    #region Event Handlers
+    private void MoveGeneratorParameter_ValueChanged(object sender, EventArgs e) {
+      ChooseMoveOperators();
+      ParameterizeSAMainLoop();
+    }
+
+    private void problem_Reset(object sender, EventArgs e) {
+      UpdateProblem();
+    }
+
+    private void problem_OperatorsChanged(object sender, EventArgs e) {
+      UpdateProblem();
+    }
+    #endregion
 
     private void ParameterizeAnnealingOperators() {
@@ -152,17 +217,16 @@
     }
 
-    public void OnProblemChanged(IProblem problem) {
-      UpdateMoveOperators(problem);
+    public void UpdateProblem() {
+      UpdateMoveOperators();
       ChooseMoveOperators();
 
-      ParameterizeMoveGenerators(problem as ISingleObjectiveHeuristicOptimizationProblem);
-      ParameterizeMoveEvaluators(problem as ISingleObjectiveHeuristicOptimizationProblem);
-      ParameterizeMoveMakers(problem as ISingleObjectiveHeuristicOptimizationProblem);
-
-      ParameterizeAnalyzers(problem as ISingleObjectiveHeuristicOptimizationProblem);
-      UpdateAnalyzers(problem as ISingleObjectiveHeuristicOptimizationProblem);
-    }
-
-    void ParameterizeAnalyzers(ISingleObjectiveHeuristicOptimizationProblem problem) {
+      ParameterizeMoveGenerators();
+
+      ParameterizeSAMainLoop();
+      ParameterizeAnalyzers();
+      UpdateAnalyzers();
+    }
+
+    private void ParameterizeAnalyzers() {
       qualityAnalyzer.ResultsParameter.ActualName = "Results";
       if (problem != null) {
@@ -174,5 +238,26 @@
     }
 
-    void UpdateAnalyzers(ISingleObjectiveHeuristicOptimizationProblem problem) {
+    private void ParameterizeSAMainLoop() {
+      loop.AnalyzerParameter.ActualName = AnalyzerParameter.Name;
+      loop.EvaluatedMovesParameter.ActualName = EvaluatedSolutionsParameter.Name;
+      loop.IterationsParameter.ActualName = "LocalIterations";
+      loop.MaximumIterationsParameter.ActualName = MaximumIterationsParameter.Name;
+      loop.MoveEvaluatorParameter.ActualName = MoveEvaluatorParameter.Name;
+      loop.MoveGeneratorParameter.ActualName = MoveGeneratorParameter.Name;
+      loop.MoveMakerParameter.ActualName = MoveMakerParameter.Name;
+      loop.QualityParameter.ActualName = QualityParameter.Name;
+      loop.RandomParameter.ActualName = RandomParameter.Name;
+      loop.ResultsParameter.ActualName = ResultsParameter.Name;
+
+      if (problem != null) {
+        loop.BestKnownQualityParameter.ActualName = problem.BestKnownQualityParameter.Name;
+        loop.MaximizationParameter.ActualName = problem.MaximizationParameter.Name;
+      }
+      if (MoveEvaluator != null) {
+        loop.MoveQualityParameter.ActualName = MoveEvaluator.MoveQualityParameter.ActualName;
+      }
+    }
+
+    private void UpdateAnalyzers() {
       Analyzer.Operators.Clear();
       if (problem != null) {
@@ -187,9 +272,5 @@
     }
 
-    void MoveGeneratorParameter_ValueChanged(object sender, EventArgs e) {
-      ChooseMoveOperators();
-    }
-
-    private void UpdateMoveOperators(IProblem problem) {
+    private void UpdateMoveOperators() {
       IMoveGenerator oldMoveGenerator = MoveGenerator;
       IMoveMaker oldMoveMaker = MoveMaker;
@@ -199,66 +280,39 @@
 
       if (problem != null) {
-        foreach (IMoveGenerator generator in problem.Operators.OfType<IMoveGenerator>().OrderBy(x => x.Name))
+        foreach (IMultiMoveGenerator generator in problem.Operators.OfType<IMultiMoveGenerator>().OrderBy(x => x.Name))
           MoveGeneratorParameter.ValidValues.Add(generator);
-
-        foreach (IMoveMaker maker in problem.Operators.OfType<IMoveMaker>().OrderBy(x => x.Name))
-          MoveMakerParameter.ValidValues.Add(maker);
-
-        foreach (ISingleObjectiveMoveEvaluator evaluator in problem.Operators.OfType<ISingleObjectiveMoveEvaluator>().OrderBy(x => x.Name))
-          MoveEvaluatorParameter.ValidValues.Add(evaluator);
-      }
-
-      if (oldMoveGenerator != null) {
-        IMoveGenerator newMoveGenerator = MoveGeneratorParameter.ValidValues.FirstOrDefault(x => x.GetType() == oldMoveGenerator.GetType());
-        if (newMoveGenerator != null) MoveGenerator = newMoveGenerator;
-      }
-      if (MoveGenerator == null) {
-        ClearMoveParameters();
-      }
-
-      if (oldMoveMaker != null) {
-        IMoveMaker mm = MoveMakerParameter.ValidValues.FirstOrDefault(x => x.GetType() == oldMoveMaker.GetType());
-        if (mm != null) MoveMaker = mm;
-      }
-
-      if (oldMoveEvaluator != null) {
-        ISingleObjectiveMoveEvaluator me = MoveEvaluatorParameter.ValidValues.FirstOrDefault(x => x.GetType() == oldMoveEvaluator.GetType());
-        if (me != null) MoveEvaluator = me;
-      }
-    }
-
-    private void ChooseMoveOperators() {
-      IMoveMaker oldMoveMaker = MoveMaker;
-      ISingleObjectiveMoveEvaluator oldMoveEvaluator = MoveEvaluator;
+        foreach (IExhaustiveMoveGenerator generator in problem.Operators.OfType<IExhaustiveMoveGenerator>().OrderBy(x => x.Name))
+          MoveGeneratorParameter.ValidValues.Add(generator);
+
+        if (oldMoveGenerator != null) {
+          IMoveGenerator newMoveGenerator = MoveGeneratorParameter.ValidValues.FirstOrDefault(x => x.GetType() == oldMoveGenerator.GetType());
+          if (newMoveGenerator != null) MoveGenerator = newMoveGenerator;
+        }
+
+        ChooseMoveOperators(oldMoveMaker, oldMoveEvaluator);
+      }
+    }
+
+    private void ChooseMoveOperators(IMoveMaker oldMoveMaker = null, ISingleObjectiveMoveEvaluator oldMoveEvaluator = null) {
+      if (oldMoveMaker == null) oldMoveMaker = MoveMaker;
+      if (oldMoveEvaluator == null) oldMoveEvaluator = MoveEvaluator;
+      MoveMakerParameter.ValidValues.Clear();
+      MoveEvaluatorParameter.ValidValues.Clear();
 
       if (MoveGenerator != null) {
-        List<Type> moveTypes = MoveGenerator.GetType().GetInterfaces().Where(x => typeof(IMoveOperator).IsAssignableFrom(x)).ToList();
-        foreach (Type type in moveTypes.ToList()) {
-          if (moveTypes.Any(t => t != type && type.IsAssignableFrom(t)))
-            moveTypes.Remove(type);
-        }
-        List<IMoveMaker> validMoveMakers = new List<IMoveMaker>();
-        List<ISingleObjectiveMoveEvaluator> validMoveEvaluators = new List<ISingleObjectiveMoveEvaluator>();
-
-        foreach (Type type in moveTypes) {
-          var moveMakers = MoveMakerParameter.ValidValues.Where(x => type.IsAssignableFrom(x.GetType())).OrderBy(x => x.Name);
-          foreach (IMoveMaker moveMaker in moveMakers)
-            validMoveMakers.Add(moveMaker);
-
-          var moveEvaluators = MoveEvaluatorParameter.ValidValues.Where(x => type.IsAssignableFrom(x.GetType())).OrderBy(x => x.Name);
-          foreach (ISingleObjectiveMoveEvaluator moveEvaluator in moveEvaluators)
-            validMoveEvaluators.Add(moveEvaluator);
-        }
+        IMoveGenerator generator = MoveGeneratorParameter.Value;
+        foreach (IMoveMaker moveMaker in MoveHelper.GetCompatibleMoveMakers(generator, Problem.Operators).OrderBy(x => x.Name))
+          MoveMakerParameter.ValidValues.Add(moveMaker);
+        foreach (ISingleObjectiveMoveEvaluator moveEvaluator in MoveHelper.GetCompatibleSingleObjectiveMoveEvaluators(generator, Problem.Operators).OrderBy(x => x.Name))
+          MoveEvaluatorParameter.ValidValues.Add(moveEvaluator);
+
         if (oldMoveMaker != null) {
-          IMoveMaker mm = validMoveMakers.FirstOrDefault(x => x.GetType() == oldMoveMaker.GetType());
+          IMoveMaker mm = MoveMakerParameter.ValidValues.FirstOrDefault(x => x.GetType() == oldMoveMaker.GetType());
           if (mm != null) MoveMaker = mm;
-          else MoveMaker = validMoveMakers.FirstOrDefault();
-        } 
-
+        }
         if (oldMoveEvaluator != null) {
-          ISingleObjectiveMoveEvaluator me = validMoveEvaluators.FirstOrDefault(x => x.GetType() == oldMoveEvaluator.GetType());
+          ISingleObjectiveMoveEvaluator me = MoveEvaluatorParameter.ValidValues.FirstOrDefault(x => x.GetType() == oldMoveEvaluator.GetType());
           if (me != null) MoveEvaluator = me;
-          else MoveEvaluator = validMoveEvaluators.FirstOrDefault();
-        } 
+        }
       }
     }
@@ -270,5 +324,5 @@
     }
 
-    private void ParameterizeMoveGenerators(ISingleObjectiveHeuristicOptimizationProblem problem) {
+    private void ParameterizeMoveGenerators() {
       if (problem != null) {
         foreach (IMultiMoveGenerator generator in problem.Operators.OfType<IMultiMoveGenerator>())
@@ -276,28 +330,17 @@
       }
     }
-    private void ParameterizeMoveEvaluators(ISingleObjectiveHeuristicOptimizationProblem problem) {
-      foreach (ISingleObjectiveMoveEvaluator op in problem.Operators.OfType<ISingleObjectiveMoveEvaluator>()) {
-        op.QualityParameter.ActualName = problem.Evaluator.QualityParameter.ActualName;
-      }
-    }
-    private void ParameterizeMoveMakers(ISingleObjectiveHeuristicOptimizationProblem problem) {
-      foreach (IMoveMaker op in problem.Operators.OfType<IMoveMaker>()) {
-        op.QualityParameter.ActualName = problem.Evaluator.QualityParameter.ActualName;
-        if (MoveEvaluator != null)
-          op.MoveQualityParameter.ActualName = MoveEvaluator.MoveQualityParameter.ActualName;
-      }
-    }
 
     public override IOperation Apply() {
-      Scope subScope = new Scope();
+      IScope currentScope = ExecutionContext.Scope;
+
+      Scope localScope = new Scope();
       Scope individual = new Scope();
 
-      foreach (Variable var in ExecutionContext.Scope.Variables) {
-        individual.Variables.Add(var);
-      }
-      subScope.SubScopes.Add(individual);
-
-      ExecutionContext.Scope.SubScopes.Add(subScope);
-      int index = subScope.Parent.SubScopes.IndexOf(subScope);
+      foreach (IVariable var in currentScope.Variables)
+        individual.Variables.Add(var); // add reference to variable otherwise the analyzer fails (it's looking down the tree)
+
+      localScope.SubScopes.Add(individual);
+      currentScope.SubScopes.Add(localScope);
+      int index = currentScope.SubScopes.Count - 1;
 
       SubScopesProcessor processor = new SubScopesProcessor();
@@ -307,24 +350,23 @@
       remover.SubScopeIndexParameter.Value = new IntValue(index);
 
-      for (int i = 0; i < index; i++) {
-        processor.Operators.Add(new EmptyOperator());
+      if (index > 0) {
+        EmptyOperator eo = new EmptyOperator();
+        for (int i = 0; i < index - 1; i++) {
+          processor.Operators.Add(eo);
+        }
       }
 
       VariableCreator variableCreator = new VariableCreator();
-      variableCreator.CollectedValues.Add(new ValueParameter<IntValue>("LocalIterations", new IntValue(0)));
+      variableCreator.CollectedValues.Add(new ValueParameter<IntValue>(loop.IterationsParameter.ActualName, new IntValue(0)));
 
       variableCreator.Successor = loop;
-
-      loop.EvaluatedMovesParameter.ActualName = EvaluatedSolutionsParameter.ActualName;
 
       processor.Operators.Add(variableCreator);
       processor.Successor = remover;
 
-      IOperation next = base.Apply();
-      if (next as ExecutionContext != null) {
-        remover.Successor = (next as ExecutionContext).Operator;
-      }
-
-      return ExecutionContext.CreateChildOperation(processor);
+      OperationCollection next = new OperationCollection(base.Apply());
+      next.Insert(0, ExecutionContext.CreateChildOperation(processor));
+
+      return next;
     }
   }
Index: /branches/histogram/HeuristicLab.Algorithms.SimulatedAnnealing/3.3/SimulatedAnnealingMainLoop.cs
===================================================================
--- /branches/histogram/HeuristicLab.Algorithms.SimulatedAnnealing/3.3/SimulatedAnnealingMainLoop.cs	(revision 6045)
+++ /branches/histogram/HeuristicLab.Algorithms.SimulatedAnnealing/3.3/SimulatedAnnealingMainLoop.cs	(revision 6046)
@@ -61,5 +61,5 @@
     }
     public LookupParameter<IntValue> IterationsParameter {
-      get { return (LookupParameter<IntValue>)Parameters["LocalIterations"]; }
+      get { return (LookupParameter<IntValue>)Parameters["Iterations"]; }
     }
     public ValueLookupParameter<IntValue> MaximumIterationsParameter {
@@ -112,5 +112,5 @@
       Parameters.Add(new ValueLookupParameter<DoubleValue>("EndTemperature", "The end temperature."));
       Parameters.Add(new ValueLookupParameter<IntValue>("InnerIterations", "The amount of inner iterations (number of moves before temperature is adjusted again)."));
-      Parameters.Add(new LookupParameter<IntValue>("LocalIterations", "The number of generations."));
+      Parameters.Add(new LookupParameter<IntValue>("Iterations", "The number of iterations."));
       Parameters.Add(new ValueLookupParameter<IntValue>("MaximumIterations", "The maximum number of iterations which should be processed."));
 
@@ -231,4 +231,13 @@
     }
 
+    [StorableHook(HookType.AfterDeserialization)]
+    private void AfterDeserialization() {
+      // BackwardsCompatibility3.3
+      #region Backwards compatible code (remove with 3.4)
+      if (!Parameters.ContainsKey("Iterations"))
+        Parameters.Add(new LookupParameter<IntValue>("Iterations", "The number of iterations."));
+      #endregion
+    }
+
     public override IOperation Apply() {
       if (MoveGeneratorParameter.ActualValue == null || MoveEvaluatorParameter.ActualValue == null || MoveMakerParameter.ActualValue == null)
Index: /branches/histogram/HeuristicLab.Algorithms.VariableNeighborhoodSearch/3.3/HeuristicLab.Algorithms.VariableNeighborhoodSearch-3.3.csproj
===================================================================
--- /branches/histogram/HeuristicLab.Algorithms.VariableNeighborhoodSearch/3.3/HeuristicLab.Algorithms.VariableNeighborhoodSearch-3.3.csproj	(revision 6045)
+++ /branches/histogram/HeuristicLab.Algorithms.VariableNeighborhoodSearch/3.3/HeuristicLab.Algorithms.VariableNeighborhoodSearch-3.3.csproj	(revision 6046)
@@ -108,7 +108,5 @@
   <ItemGroup>
     <Compile Include="HeuristicLabAlgorithmsVariableNeighborhoodSearchPlugin.cs" />
-    <Compile Include="IShakingOperator.cs" />
     <Compile Include="Properties\AssemblyInfo.cs" />
-    <Compile Include="ShakingOperator.cs" />
     <Compile Include="VariableNeighborhoodSearch.cs" />
     <Compile Include="VariableNeighborhoodSearchMainLoop.cs" />
@@ -120,8 +118,4 @@
   </ItemGroup>
   <ItemGroup>
-    <ProjectReference Include="..\..\HeuristicLab.Algorithms.LocalSearch\3.3\HeuristicLab.Algorithms.LocalSearch-3.3.csproj">
-      <Project>{4AE3FC69-C575-42D2-BC46-0FAD5850EFC5}</Project>
-      <Name>HeuristicLab.Algorithms.LocalSearch-3.3</Name>
-    </ProjectReference>
     <ProjectReference Include="..\..\HeuristicLab.Analysis\3.3\HeuristicLab.Analysis-3.3.csproj">
       <Project>{887425B4-4348-49ED-A457-B7D2C26DDBF9}</Project>
Index: /branches/histogram/HeuristicLab.Algorithms.VariableNeighborhoodSearch/3.3/HeuristicLabAlgorithmsVariableNeighborhoodSearchPlugin.cs.frame
===================================================================
--- /branches/histogram/HeuristicLab.Algorithms.VariableNeighborhoodSearch/3.3/HeuristicLabAlgorithmsVariableNeighborhoodSearchPlugin.cs.frame	(revision 6045)
+++ /branches/histogram/HeuristicLab.Algorithms.VariableNeighborhoodSearch/3.3/HeuristicLabAlgorithmsVariableNeighborhoodSearchPlugin.cs.frame	(revision 6046)
@@ -28,5 +28,4 @@
   [Plugin("HeuristicLab.Algorithms.VariableNeighborhoodSearch", "3.3.3.$WCREV$")]
   [PluginFile("HeuristicLab.Algorithms.VariableNeighborhoodSearch-3.3.dll", PluginFileType.Assembly)]
-  [PluginDependency("HeuristicLab.Algorithms.LocalSearch", "3.3")]
   [PluginDependency("HeuristicLab.Analysis", "3.3")]  
   [PluginDependency("HeuristicLab.Collections", "3.3")]
Index: anches/histogram/HeuristicLab.Algorithms.VariableNeighborhoodSearch/3.3/IShakingOperator.cs
===================================================================
--- /branches/histogram/HeuristicLab.Algorithms.VariableNeighborhoodSearch/3.3/IShakingOperator.cs	(revision 6045)
+++ 	(revision )
@@ -1,33 +1,0 @@
-﻿#region License Information
-/* HeuristicLab
- * Copyright (C) 2002-2011 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;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using HeuristicLab.Optimization;
-using HeuristicLab.Core;
-
-namespace HeuristicLab.Algorithms.VariableNeighborhoodSearch {
-  public interface IShakingOperator: IManipulator {
-    void OnProblemChanged(IProblem problem);
-  }
-}
Index: anches/histogram/HeuristicLab.Algorithms.VariableNeighborhoodSearch/3.3/ShakingOperator.cs
===================================================================
--- /branches/histogram/HeuristicLab.Algorithms.VariableNeighborhoodSearch/3.3/ShakingOperator.cs	(revision 6045)
+++ 	(revision )
@@ -1,93 +1,0 @@
-﻿#region License Information
-/* HeuristicLab
- * Copyright (C) 2002-2011 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;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using HeuristicLab.Operators;
-using HeuristicLab.Optimization;
-using HeuristicLab.Core;
-using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
-using HeuristicLab.Common;
-using HeuristicLab.Data;
-using HeuristicLab.Parameters;
-
-namespace HeuristicLab.Algorithms.VariableNeighborhoodSearch {
-  /// <summary>
-  /// A shaking operator for VNS.
-  /// </summary>
-  [Item("ShakingOperator", "A shaking operator for VNS.")]
-  [StorableClass]
-  public class ShakingOperator<T> : CheckedMultiOperator<T>, IShakingOperator where T : class, IManipulator {
-    public IValueLookupParameter<IntValue> IndexParameter {
-      get { return (ValueLookupParameter<IntValue>)Parameters["Index"]; }
-    }
-    
-    public ILookupParameter<BoolValue> ContinueParameter {
-      get { return (LookupParameter<BoolValue>)Parameters["Continue"]; }
-    }
-        
-    [StorableConstructor]
-    protected ShakingOperator(bool deserializing) : base(deserializing) { }
-    protected ShakingOperator(ShakingOperator<T> original, Cloner cloner) : base(original, cloner) { }
-    public override IDeepCloneable Clone(Cloner cloner) {
-      return new ShakingOperator<T>(this, cloner);
-    }
-    public ShakingOperator()
-      : base() {
-      Parameters.Add(new ValueLookupParameter<IntValue>("Index", "The index of the operator that should be applied (k)."));
-      Parameters.Add(new LookupParameter<BoolValue>("Continue", "True if k <= available operators."));
-    }
-
-    public void OnProblemChanged(IProblem problem) {
-      Operators.Clear();
-
-      if (problem != null) {
-        foreach (T manipulator in problem.Operators.OfType<T>().OrderBy(x => x.Name))
-          Operators.Add(manipulator);
-      }
-    }
-
-    public override IOperation Apply() {
-      int index = IndexParameter.ActualValue.Value;    
-      var operators = base.Operators.CheckedItems.ToList();
-
-      IOperator successor = null;
-
-      if (index >= operators.Count - 1) {
-        ContinueParameter.ActualValue = new BoolValue(false);
-      } else {
-        ContinueParameter.ActualValue = new BoolValue(true);
-      }
-
-      if (index >= 0 && index < operators.Count) {
-        successor = operators[index].Value;
-      }
-
-      OperationCollection next = new OperationCollection(base.Apply());
-      if (successor != null)
-        next.Insert(0, ExecutionContext.CreateOperation(successor));
-
-      return next;
-    }
-  }
-}
Index: /branches/histogram/HeuristicLab.Algorithms.VariableNeighborhoodSearch/3.3/VariableNeighborhoodSearch.cs
===================================================================
--- /branches/histogram/HeuristicLab.Algorithms.VariableNeighborhoodSearch/3.3/VariableNeighborhoodSearch.cs	(revision 6045)
+++ /branches/histogram/HeuristicLab.Algorithms.VariableNeighborhoodSearch/3.3/VariableNeighborhoodSearch.cs	(revision 6046)
@@ -1,6 +1,25 @@
-﻿using System;
-using System.Collections.Generic;
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2011 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;
 using System.Linq;
-using HeuristicLab.Algorithms.LocalSearch;
 using HeuristicLab.Analysis;
 using HeuristicLab.Common;
@@ -12,4 +31,5 @@
 using HeuristicLab.Parameters;
 using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
+using HeuristicLab.PluginInfrastructure;
 using HeuristicLab.Random;
 
@@ -32,24 +52,24 @@
 
     #region Parameter Properties
-    private ValueParameter<IntValue> SeedParameter {
-      get { return (ValueParameter<IntValue>)Parameters["Seed"]; }
-    }
-    private ValueParameter<BoolValue> SetSeedRandomlyParameter {
-      get { return (ValueParameter<BoolValue>)Parameters["SetSeedRandomly"]; }
-    }
-    private ValueParameter<ILocalImprovementOperator> LocalImprovementParameter {
-      get { return (ValueParameter<ILocalImprovementOperator>)Parameters["LocalImprovement"]; }
-    }
-    private ValueParameter<IShakingOperator> ShakingParameter {
-      get { return (ValueParameter<IShakingOperator>)Parameters["Shaking"]; }
-    }
-    private ValueParameter<IntValue> MaximumIterationsParameter {
-      get { return (ValueParameter<IntValue>)Parameters["MaximumIterations"]; }
+    private FixedValueParameter<IntValue> SeedParameter {
+      get { return (FixedValueParameter<IntValue>)Parameters["Seed"]; }
+    }
+    private FixedValueParameter<BoolValue> SetSeedRandomlyParameter {
+      get { return (FixedValueParameter<BoolValue>)Parameters["SetSeedRandomly"]; }
+    }
+    private ConstrainedValueParameter<ILocalImprovementOperator> LocalImprovementParameter {
+      get { return (ConstrainedValueParameter<ILocalImprovementOperator>)Parameters["LocalImprovement"]; }
+    }
+    private ConstrainedValueParameter<IMultiNeighborhoodShakingOperator> ShakingOperatorParameter {
+      get { return (ConstrainedValueParameter<IMultiNeighborhoodShakingOperator>)Parameters["ShakingOperator"]; }
+    }
+    private FixedValueParameter<IntValue> MaximumIterationsParameter {
+      get { return (FixedValueParameter<IntValue>)Parameters["MaximumIterations"]; }
     }
     private ValueParameter<MultiAnalyzer> AnalyzerParameter {
       get { return (ValueParameter<MultiAnalyzer>)Parameters["Analyzer"]; }
     }
-    private VariableNeighborhoodSearchMainLoop VNSMainLoop {
-      get { return FindMainLoop(SolutionsCreator.Successor); }
+    public FixedValueParameter<IntValue> LocalImprovementMaximumIterationsParameter {
+      get { return (FixedValueParameter<IntValue>)Parameters["LocalImprovementMaximumIterations"]; }
     }
     #endregion
@@ -66,4 +86,7 @@
       get { return (SolutionsCreator)RandomCreator.Successor; }
     }
+    private VariableNeighborhoodSearchMainLoop MainLoop {
+      get { return FindMainLoop(SolutionsCreator.Successor); }
+    }
     #endregion
 
@@ -73,23 +96,17 @@
     [StorableConstructor]
     private VariableNeighborhoodSearch(bool deserializing) : base(deserializing) { }
-    [StorableHook(HookType.AfterDeserialization)]
-    private void AfterDeserialization() {
-
-    }
     private VariableNeighborhoodSearch(VariableNeighborhoodSearch original, Cloner cloner)
       : base(original, cloner) {
       qualityAnalyzer = cloner.Clone(original.qualityAnalyzer);
-      Initialize();
-    }
-    public override IDeepCloneable Clone(Cloner cloner) {
-      return new VariableNeighborhoodSearch(this, cloner);
+      RegisterEventHandlers();
     }
     public VariableNeighborhoodSearch()
       : base() {
-      Parameters.Add(new ValueParameter<IntValue>("Seed", "The random seed used to initialize the new pseudo random number generator.", new IntValue(0)));
-      Parameters.Add(new ValueParameter<BoolValue>("SetSeedRandomly", "True if the random seed should be set to a random value, otherwise false.", new BoolValue(true)));
-      Parameters.Add(new ValueParameter<ILocalImprovementOperator>("LocalImprovement", "The local improvement operation", new LocalSearchImprovementOperator()));
-      Parameters.Add(new ValueParameter<IShakingOperator>("Shaking", "The shaking operation"));
-      Parameters.Add(new ValueParameter<IntValue>("MaximumIterations", "The maximum number of generations which should be processed.", new IntValue(1000)));
+      Parameters.Add(new FixedValueParameter<IntValue>("Seed", "The random seed used to initialize the new pseudo random number generator.", new IntValue(0)));
+      Parameters.Add(new FixedValueParameter<BoolValue>("SetSeedRandomly", "True if the random seed should be set to a random value, otherwise false.", new BoolValue(true)));
+      Parameters.Add(new ConstrainedValueParameter<ILocalImprovementOperator>("LocalImprovement", "The local improvement operation"));
+      Parameters.Add(new ConstrainedValueParameter<IMultiNeighborhoodShakingOperator>("ShakingOperator", "The operator that performs the shaking of solutions."));
+      Parameters.Add(new FixedValueParameter<IntValue>("MaximumIterations", "The maximum number of iterations which should be processed.", new IntValue(50)));
+      Parameters.Add(new FixedValueParameter<IntValue>("LocalImprovementMaximumIterations", "The maximum number of iterations which should be performed in the local improvement phase.", new IntValue(50)));
       Parameters.Add(new ValueParameter<MultiAnalyzer>("Analyzer", "The operator used to analyze the solution and moves.", new MultiAnalyzer()));
 
@@ -112,13 +129,21 @@
 
       variableCreator.Name = "Initialize Evaluated Solutions";
-      variableCreator.CollectedValues.Add(new ValueParameter<IntValue>("EvaluatedSolutions", new IntValue()));
+
+      variableCreator.CollectedValues.Add(new ValueParameter<IntValue>("Iterations", new IntValue(0)));
+      variableCreator.CollectedValues.Add(new ValueParameter<IntValue>("EvaluatedSolutions", new IntValue(0)));
+      variableCreator.CollectedValues.Add(new ValueParameter<IntValue>("CurrentNeighborhoodIndex", new IntValue(0)));
+      variableCreator.CollectedValues.Add(new ValueParameter<IntValue>("NeighborhoodCount", new IntValue(0)));
       variableCreator.Successor = resultsCollector;
 
       resultsCollector.CollectedValues.Add(new LookupParameter<IntValue>("Evaluated Solutions", null, "EvaluatedSolutions"));
+      resultsCollector.CollectedValues.Add(new LookupParameter<IntValue>("Iterations"));
       resultsCollector.ResultsParameter.ActualName = "Results";
       resultsCollector.Successor = mainLoop;
 
+      mainLoop.IterationsParameter.ActualName = "Iterations";
+      mainLoop.CurrentNeighborhoodIndexParameter.ActualName = "CurrentNeighborhoodIndex";
+      mainLoop.NeighborhoodCountParameter.ActualName = "NeighborhoodCount";
       mainLoop.LocalImprovementParameter.ActualName = LocalImprovementParameter.Name;
-      mainLoop.ShakingParameter.ActualName = ShakingParameter.Name;
+      mainLoop.ShakingOperatorParameter.ActualName = ShakingOperatorParameter.Name;
       mainLoop.MaximumIterationsParameter.ActualName = MaximumIterationsParameter.Name;
       mainLoop.RandomParameter.ActualName = RandomCreator.RandomParameter.ActualName;
@@ -127,9 +152,19 @@
       mainLoop.EvaluatedSolutionsParameter.ActualName = "EvaluatedSolutions";
 
+      InitializeLocalImprovementOperators();
       qualityAnalyzer = new BestAverageWorstQualityAnalyzer();
       ParameterizeAnalyzers();
       UpdateAnalyzers();
 
-      Initialize();
+      RegisterEventHandlers();
+    }
+
+    public override IDeepCloneable Clone(Cloner cloner) {
+      return new VariableNeighborhoodSearch(this, cloner);
+    }
+
+    [StorableHook(HookType.AfterDeserialization)]
+    private void AfterDeserialization() {
+      RegisterEventHandlers();
     }
 
@@ -138,27 +173,28 @@
     }
 
-    private void Initialize() {
+    private void RegisterEventHandlers() {
+      LocalImprovementParameter.ValueChanged += new EventHandler(LocalImprovementParameter_ValueChanged);
       if (Problem != null) {
         Problem.Evaluator.QualityParameter.ActualNameChanged += new EventHandler(Evaluator_QualityParameter_ActualNameChanged);
       }
-      LocalImprovementParameter.ValueChanged += new EventHandler(LocalImprovementParameter_ValueChanged);
     }
 
     #region Events
     protected override void OnProblemChanged() {
+      InitializeLocalImprovementOperators();
+      UpdateShakingOperators();
+      UpdateAnalyzers();
+
       ParameterizeStochasticOperator(Problem.SolutionCreator);
       ParameterizeStochasticOperator(Problem.Evaluator);
       foreach (IOperator op in Problem.Operators) ParameterizeStochasticOperator(op);
       ParameterizeSolutionsCreator();
-      ParameterizeVNSMainLoop();
+      ParameterizeMainLoop();
       ParameterizeAnalyzers();
       ParameterizeIterationBasedOperators();
-      UpdateShakingOperator();
-      UpdateLocalImprovementOperator();
-      UpdateAnalyzers();
+      ParameterizeLocalImprovementOperators();
       Problem.Evaluator.QualityParameter.ActualNameChanged += new EventHandler(Evaluator_QualityParameter_ActualNameChanged);
       base.OnProblemChanged();
     }
-
     protected override void Problem_SolutionCreatorChanged(object sender, EventArgs e) {
       ParameterizeStochasticOperator(Problem.SolutionCreator);
@@ -169,5 +205,5 @@
       ParameterizeStochasticOperator(Problem.Evaluator);
       ParameterizeSolutionsCreator();
-      ParameterizeVNSMainLoop();
+      ParameterizeMainLoop();
       ParameterizeAnalyzers();
       Problem.Evaluator.QualityParameter.ActualNameChanged += new EventHandler(Evaluator_QualityParameter_ActualNameChanged);
@@ -175,20 +211,16 @@
     }
     protected override void Problem_OperatorsChanged(object sender, EventArgs e) {
+      UpdateShakingOperators();
+      UpdateAnalyzers();
       foreach (IOperator op in Problem.Operators) ParameterizeStochasticOperator(op);
       ParameterizeIterationBasedOperators();
-      UpdateShakingOperator();
-      UpdateLocalImprovementOperator();
-      UpdateAnalyzers();
       base.Problem_OperatorsChanged(sender, e);
     }
-
     private void Evaluator_QualityParameter_ActualNameChanged(object sender, EventArgs e) {
-      ParameterizeVNSMainLoop();
+      ParameterizeMainLoop();
       ParameterizeAnalyzers();
     }
-
-    void LocalImprovementParameter_ValueChanged(object sender, EventArgs e) {
-      if (LocalImprovementParameter.Value != null)
-        LocalImprovementParameter.Value.OnProblemChanged(Problem);
+    private void LocalImprovementParameter_ValueChanged(object sender, EventArgs e) {
+      ParameterizeLocalImprovementOperators();
     }
     #endregion
@@ -203,8 +235,8 @@
         ((IStochasticOperator)op).RandomParameter.ActualName = RandomCreator.RandomParameter.ActualName;
     }
-    private void ParameterizeVNSMainLoop() {
-      VNSMainLoop.EvaluatorParameter.ActualName = Problem.EvaluatorParameter.Name;
-      VNSMainLoop.MaximizationParameter.ActualName = Problem.MaximizationParameter.Name;
-      VNSMainLoop.QualityParameter.ActualName = Problem.Evaluator.QualityParameter.ActualName;
+    private void ParameterizeMainLoop() {
+      MainLoop.EvaluatorParameter.ActualName = Problem.EvaluatorParameter.Name;
+      MainLoop.MaximizationParameter.ActualName = Problem.MaximizationParameter.Name;
+      MainLoop.QualityParameter.ActualName = Problem.Evaluator.QualityParameter.ActualName;
     }
     private void ParameterizeAnalyzers() {
@@ -221,56 +253,35 @@
         foreach (IIterationBasedOperator op in Problem.Operators.OfType<IIterationBasedOperator>()) {
           op.IterationsParameter.ActualName = "Iterations";
-          op.MaximumIterationsParameter.ActualName = "MaximumIterations";
+          op.MaximumIterationsParameter.ActualName = MaximumIterationsParameter.Name;
         }
       }
     }
-    private void UpdateShakingOperator() {
-      Type manipulatorType = typeof(IManipulator);
-      List<Type> manipulatorInterfaces = new List<Type>();
-
-      foreach (IManipulator mutator in Problem.Operators.OfType<IManipulator>().OrderBy(x => x.Name)) {
-        Type t = mutator.GetType();
-        Type[] interfaces = t.GetInterfaces();
-
-        for (int i = 0; i < interfaces.Length; i++) {
-          if (manipulatorType.IsAssignableFrom(interfaces[i])) {
-            bool assignable = false;
-            for (int j = 0; j < interfaces.Length; j++) {
-              if (i != j && interfaces[i].IsAssignableFrom(interfaces[j])) {
-                assignable = true;
-                break;
-              }
-            }
-
-            if (!assignable)
-              manipulatorInterfaces.Add(interfaces[i]);
-          }
+    private void ParameterizeLocalImprovementOperators() {
+      foreach (ILocalImprovementOperator op in LocalImprovementParameter.ValidValues) {
+        if (op != LocalImprovementParameter.Value) op.Problem = null;
+        op.MaximumIterationsParameter.Value = null;
+        op.MaximumIterationsParameter.ActualName = LocalImprovementMaximumIterationsParameter.Name;
+      }
+      if (LocalImprovementParameter.Value != null)
+        LocalImprovementParameter.Value.Problem = Problem;
+    }
+    private void InitializeLocalImprovementOperators() {
+      if (Problem == null) {
+        LocalImprovementParameter.ValidValues.Clear();
+      } else {
+        LocalImprovementParameter.ValidValues.RemoveWhere(x => !x.ProblemType.IsAssignableFrom(Problem.GetType()));
+        foreach (ILocalImprovementOperator op in ApplicationManager.Manager.GetInstances<ILocalImprovementOperator>().Where(x => x.ProblemType.IsAssignableFrom(Problem.GetType()))) {
+          if (!LocalImprovementParameter.ValidValues.Any(x => x.GetType() == op.GetType()))
+            LocalImprovementParameter.ValidValues.Add(op);
         }
       }
-
-      foreach (Type manipulatorInterface in manipulatorInterfaces) {
-        //manipulatorInterface is more specific
-        if (manipulatorType.IsAssignableFrom(manipulatorInterface)) {
-          //and compatible to all other found manipulator types
-          bool compatible = true;
-          foreach (Type manipulatorInterface2 in manipulatorInterfaces) {
-            if (!manipulatorInterface.IsAssignableFrom(manipulatorInterface2)) {
-              compatible = false;
-              break;
-            }
-          }
-
-          if (compatible)
-            manipulatorType = manipulatorInterface;
-        }
-      }
-
-      Type genericType = typeof(ShakingOperator<>).MakeGenericType(manipulatorType);
-      ShakingParameter.Value = (IShakingOperator)Activator.CreateInstance(genericType, new object[] { });
-
-      ShakingParameter.Value.OnProblemChanged(Problem);
-    }
-    private void UpdateLocalImprovementOperator() {
-      LocalImprovementParameter.Value.OnProblemChanged(Problem);
+    }
+    private void UpdateShakingOperators() {
+      ShakingOperatorParameter.ValidValues.Clear();
+      foreach (IMultiNeighborhoodShakingOperator op in Problem.Operators.OfType<IMultiNeighborhoodShakingOperator>()) {
+        ShakingOperatorParameter.ValidValues.Add(op);
+        op.CurrentNeighborhoodIndexParameter.ActualName = "CurrentNeighborhoodIndex";
+        op.NeighborhoodCountParameter.ActualName = "NeighborhoodCount";
+      }
     }
     private void UpdateAnalyzers() {
Index: /branches/histogram/HeuristicLab.Algorithms.VariableNeighborhoodSearch/3.3/VariableNeighborhoodSearchMainLoop.cs
===================================================================
--- /branches/histogram/HeuristicLab.Algorithms.VariableNeighborhoodSearch/3.3/VariableNeighborhoodSearchMainLoop.cs	(revision 6045)
+++ /branches/histogram/HeuristicLab.Algorithms.VariableNeighborhoodSearch/3.3/VariableNeighborhoodSearchMainLoop.cs	(revision 6046)
@@ -20,17 +20,13 @@
 #endregion
 
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using HeuristicLab.Operators;
-using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
 using HeuristicLab.Common;
 using HeuristicLab.Core;
+using HeuristicLab.Data;
+using HeuristicLab.Operators;
+using HeuristicLab.Optimization;
+using HeuristicLab.Optimization.Operators;
 using HeuristicLab.Parameters;
-using HeuristicLab.Data;
-using HeuristicLab.Optimization.Operators;
+using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
 using HeuristicLab.Selection;
-using HeuristicLab.Optimization;
 
 namespace HeuristicLab.Algorithms.VariableNeighborhoodSearch {
@@ -42,36 +38,45 @@
   public sealed class VariableNeighborhoodSearchMainLoop : AlgorithmOperator {
     #region Parameter properties
-    public ValueLookupParameter<IRandom> RandomParameter {
-      get { return (ValueLookupParameter<IRandom>)Parameters["Random"]; }
-    }
-    public ValueLookupParameter<BoolValue> MaximizationParameter {
-      get { return (ValueLookupParameter<BoolValue>)Parameters["Maximization"]; }
-    }
-    public LookupParameter<DoubleValue> QualityParameter {
-      get { return (LookupParameter<DoubleValue>)Parameters["Quality"]; }
-    }
-    public ValueLookupParameter<DoubleValue> BestKnownQualityParameter {
-      get { return (ValueLookupParameter<DoubleValue>)Parameters["BestKnownQuality"]; }
-    }
-    public ValueLookupParameter<IOperator> EvaluatorParameter {
-      get { return (ValueLookupParameter<IOperator>)Parameters["Evaluator"]; }
-    }
-    public ValueLookupParameter<IntValue> MaximumIterationsParameter {
-      get { return (ValueLookupParameter<IntValue>)Parameters["MaximumIterations"]; }
-    }
-    public ValueLookupParameter<VariableCollection> ResultsParameter {
-      get { return (ValueLookupParameter<VariableCollection>)Parameters["Results"]; }
-    }
-    public ValueLookupParameter<IOperator> AnalyzerParameter {
-      get { return (ValueLookupParameter<IOperator>)Parameters["Analyzer"]; }
-    }
-    public LookupParameter<IntValue> EvaluatedSolutionsParameter {
-      get { return (LookupParameter<IntValue>)Parameters["EvaluatedSolutions"]; }
-    }
-    public ValueLookupParameter<ILocalImprovementOperator> LocalImprovementParameter {
-      get { return (ValueLookupParameter<ILocalImprovementOperator>)Parameters["LocalImprovement"]; }
-    }
-    public ValueLookupParameter<IShakingOperator> ShakingParameter {
-      get { return (ValueLookupParameter<IShakingOperator>)Parameters["Shaking"]; }
+    public IValueLookupParameter<IRandom> RandomParameter {
+      get { return (IValueLookupParameter<IRandom>)Parameters["Random"]; }
+    }
+    public IValueLookupParameter<BoolValue> MaximizationParameter {
+      get { return (IValueLookupParameter<BoolValue>)Parameters["Maximization"]; }
+    }
+    public ILookupParameter<DoubleValue> QualityParameter {
+      get { return (ILookupParameter<DoubleValue>)Parameters["Quality"]; }
+    }
+    public IValueLookupParameter<DoubleValue> BestKnownQualityParameter {
+      get { return (IValueLookupParameter<DoubleValue>)Parameters["BestKnownQuality"]; }
+    }
+    public IValueLookupParameter<IOperator> EvaluatorParameter {
+      get { return (IValueLookupParameter<IOperator>)Parameters["Evaluator"]; }
+    }
+    public ILookupParameter<IntValue> IterationsParameter {
+      get { return (ILookupParameter<IntValue>)Parameters["Iterations"]; }
+    }
+    public IValueLookupParameter<IntValue> MaximumIterationsParameter {
+      get { return (IValueLookupParameter<IntValue>)Parameters["MaximumIterations"]; }
+    }
+    public IValueLookupParameter<VariableCollection> ResultsParameter {
+      get { return (IValueLookupParameter<VariableCollection>)Parameters["Results"]; }
+    }
+    public IValueLookupParameter<IOperator> AnalyzerParameter {
+      get { return (IValueLookupParameter<IOperator>)Parameters["Analyzer"]; }
+    }
+    public ILookupParameter<IntValue> EvaluatedSolutionsParameter {
+      get { return (ILookupParameter<IntValue>)Parameters["EvaluatedSolutions"]; }
+    }
+    public ILookupParameter<IntValue> CurrentNeighborhoodIndexParameter {
+      get { return (ILookupParameter<IntValue>)Parameters["CurrentNeighborhoodIndex"]; }
+    }
+    public ILookupParameter<IntValue> NeighborhoodCountParameter {
+      get { return (ILookupParameter<IntValue>)Parameters["NeighborhoodCount"]; }
+    }
+    public IValueLookupParameter<ILocalImprovementOperator> LocalImprovementParameter {
+      get { return (IValueLookupParameter<ILocalImprovementOperator>)Parameters["LocalImprovement"]; }
+    }
+    public IValueLookupParameter<IMultiNeighborhoodShakingOperator> ShakingOperatorParameter {
+      get { return (IValueLookupParameter<IMultiNeighborhoodShakingOperator>)Parameters["ShakingOperator"]; }
     }
     #endregion
@@ -81,5 +86,5 @@
     public VariableNeighborhoodSearchMainLoop()
       : base() {
-        Initialize();
+      Initialize();
     }
     private VariableNeighborhoodSearchMainLoop(VariableNeighborhoodSearchMainLoop original, Cloner cloner)
@@ -97,11 +102,13 @@
       Parameters.Add(new ValueLookupParameter<DoubleValue>("BestKnownQuality", "The best known quality value found so far."));
       Parameters.Add(new ValueLookupParameter<IOperator>("Evaluator", "The operator used to evaluate solutions. This operator is executed in parallel, if an engine is used which supports parallelization."));
+      Parameters.Add(new LookupParameter<IntValue>("Iterations", "The iterations to count."));
       Parameters.Add(new ValueLookupParameter<IntValue>("MaximumIterations", "The maximum number of generations which should be processed."));
       Parameters.Add(new ValueLookupParameter<VariableCollection>("Results", "The variable collection where results should be stored."));
-
       Parameters.Add(new ValueLookupParameter<IOperator>("Analyzer", "The operator used to analyze the solution."));
       Parameters.Add(new LookupParameter<IntValue>("EvaluatedSolutions", "The number of evaluated solutions."));
       Parameters.Add(new ValueLookupParameter<ILocalImprovementOperator>("LocalImprovement", "The local improvement operation."));
-      Parameters.Add(new ValueLookupParameter<IShakingOperator>("Shaking", "The shaking operation."));
+      Parameters.Add(new ValueLookupParameter<IMultiNeighborhoodShakingOperator>("ShakingOperator", "The shaking operation."));
+      Parameters.Add(new LookupParameter<IntValue>("CurrentNeighborhoodIndex", "The index of the current shaking operation that should be applied."));
+      Parameters.Add(new LookupParameter<IntValue>("NeighborhoodCount", "The number of neighborhood operators used for shaking."));
       #endregion
 
@@ -126,6 +133,5 @@
 
       QualityComparator qualityComparator = new QualityComparator();
-      ConditionalBranch improvesQualityBranch1 = new ConditionalBranch();
-      ConditionalBranch improvesQualityBranch2 = new ConditionalBranch();
+      ConditionalBranch improvesQualityBranch = new ConditionalBranch();
 
       Assigner bestQualityUpdater = new Assigner();
@@ -139,4 +145,5 @@
       Placeholder analyzer2 = new Placeholder();
 
+      Comparator indexComparator = new Comparator();
       ConditionalBranch indexTermination = new ConditionalBranch();
 
@@ -145,7 +152,4 @@
       ConditionalBranch iterationsTermination = new ConditionalBranch();
 
-      variableCreator.CollectedValues.Add(new ValueParameter<IntValue>("Iterations", new IntValue(0)));
-      variableCreator.CollectedValues.Add(new ValueParameter<IntValue>("Index", new IntValue(0)));
-      variableCreator.CollectedValues.Add(new ValueParameter<BoolValue>("Continue", new BoolValue(false)));
       variableCreator.CollectedValues.Add(new ValueParameter<BoolValue>("IsBetter", new BoolValue(false)));
       variableCreator.CollectedValues.Add(new ValueParameter<DoubleValue>("BestQuality", new DoubleValue(0)));
@@ -159,12 +163,11 @@
 
       resultsCollector1.CopyValue = new BoolValue(false);
-      resultsCollector1.CollectedValues.Add(new LookupParameter<IntValue>("Iterations"));
       resultsCollector1.CollectedValues.Add(new LookupParameter<DoubleValue>("Best Quality", null, "BestQuality"));
       resultsCollector1.ResultsParameter.ActualName = ResultsParameter.Name;
 
-      iteration.Name = "Iteration";
-
-      iterationInit.Name = "Init iteration";
-      iterationInit.LeftSideParameter.ActualName = "Index";
+      iteration.Name = "MainLoop Body";
+
+      iterationInit.Name = "Init k = 0";
+      iterationInit.LeftSideParameter.ActualName = CurrentNeighborhoodIndexParameter.Name;
       iterationInit.RightSideParameter.Value = new IntValue(0);
 
@@ -176,5 +179,5 @@
 
       shaking.Name = "Shaking operator (placeholder)";
-      shaking.OperatorParameter.ActualName = ShakingParameter.Name;
+      shaking.OperatorParameter.ActualName = ShakingOperatorParameter.Name;
 
       localImprovement.Name = "Local improvement operator (placeholder)";
@@ -192,6 +195,5 @@
       qualityComparator.ResultParameter.ActualName = "IsBetter";
 
-      improvesQualityBranch1.ConditionParameter.ActualName = "IsBetter";
-      improvesQualityBranch2.ConditionParameter.ActualName = "IsBetter";
+      improvesQualityBranch.ConditionParameter.ActualName = "IsBetter";
 
       bestQualityUpdater.Name = "Update BestQuality";
@@ -204,10 +206,10 @@
       bestSelector.QualityParameter.ActualName = QualityParameter.Name;
 
-      indexCounter.Name = "Count index";
+      indexCounter.Name = "Count neighborhood index";
       indexCounter.Increment.Value = 1;
-      indexCounter.ValueParameter.ActualName = "Index";
-
-      indexResetter.Name = "Reset index";
-      indexResetter.LeftSideParameter.ActualName = "Index";
+      indexCounter.ValueParameter.ActualName = CurrentNeighborhoodIndexParameter.Name;
+
+      indexResetter.Name = "Reset neighborhood index";
+      indexResetter.LeftSideParameter.ActualName = CurrentNeighborhoodIndexParameter.Name;
       indexResetter.RightSideParameter.Value = new IntValue(0);
 
@@ -217,9 +219,9 @@
       iterationsCounter.Name = "Iterations Counter";
       iterationsCounter.Increment = new IntValue(1);
-      iterationsCounter.ValueParameter.ActualName = "Iterations";
+      iterationsCounter.ValueParameter.ActualName = IterationsParameter.Name;
 
       iterationsComparator.Name = "Iterations >= MaximumIterations";
       iterationsComparator.Comparison = new Comparison(ComparisonType.GreaterOrEqual);
-      iterationsComparator.LeftSideParameter.ActualName = "Iterations";
+      iterationsComparator.LeftSideParameter.ActualName = IterationsParameter.Name;
       iterationsComparator.RightSideParameter.ActualName = MaximumIterationsParameter.Name;
       iterationsComparator.ResultParameter.ActualName = "Terminate";
@@ -228,6 +230,12 @@
       iterationsTermination.ConditionParameter.ActualName = "Terminate";
 
+      indexComparator.Name = "k < k_max (index condition)";
+      indexComparator.LeftSideParameter.ActualName = CurrentNeighborhoodIndexParameter.Name;
+      indexComparator.RightSideParameter.ActualName = NeighborhoodCountParameter.Name;
+      indexComparator.Comparison = new Comparison(ComparisonType.Less);
+      indexComparator.ResultParameter.ActualName = "ContinueIteration";
+
       indexTermination.Name = "Index Termination Condition";
-      indexTermination.ConditionParameter.ActualName = "Continue";
+      indexTermination.ConditionParameter.ActualName = "ContinueIteration";
       #endregion
 
@@ -255,7 +263,7 @@
       evalCounter.Successor = localImprovement;
       localImprovement.Successor = qualityComparator;
-      qualityComparator.Successor = improvesQualityBranch1;
-      improvesQualityBranch1.TrueBranch = bestQualityUpdater;
-      improvesQualityBranch1.FalseBranch = indexCounter;
+      qualityComparator.Successor = improvesQualityBranch;
+      improvesQualityBranch.TrueBranch = bestQualityUpdater;
+      improvesQualityBranch.FalseBranch = indexCounter;
 
       bestQualityUpdater.Successor = indexResetter;
@@ -266,10 +274,8 @@
       bestSelector.Successor = rightReducer;
       rightReducer.Successor = analyzer2;
-      analyzer2.Successor = indexTermination;
-      indexTermination.TrueBranch = improvesQualityBranch2;
+      analyzer2.Successor = indexComparator;
+      indexComparator.Successor = indexTermination;
+      indexTermination.TrueBranch = createChild;
       indexTermination.FalseBranch = null;
-
-      improvesQualityBranch2.TrueBranch = null;
-      improvesQualityBranch2.FalseBranch = createChild;
 
       iterationsCounter.Successor = iterationsComparator;
@@ -281,5 +287,5 @@
 
     public override IOperation Apply() {
-      if (LocalImprovementParameter.ActualValue == null || EvaluatorParameter.ActualValue == null)
+      if (LocalImprovementParameter.ActualValue == null || ShakingOperatorParameter.ActualValue == null)
         return null;
       return base.Apply();
Index: /branches/histogram/HeuristicLab.Analysis.Views/3.3/HeuristicLab.Analysis.Views-3.3.csproj
===================================================================
--- /branches/histogram/HeuristicLab.Analysis.Views/3.3/HeuristicLab.Analysis.Views-3.3.csproj	(revision 6045)
+++ /branches/histogram/HeuristicLab.Analysis.Views/3.3/HeuristicLab.Analysis.Views-3.3.csproj	(revision 6046)
@@ -96,8 +96,4 @@
   </PropertyGroup>
   <ItemGroup>
-    <Reference Include="HeuristicLab.Data.Views-3.3">
-      <HintPath>..\..\HeuristicLab.Data.Views\3.3\bin\Debug\HeuristicLab.Data.Views-3.3.dll</HintPath>
-    </Reference>
-    <Reference Include="HeuristicLab.Optimization-3.3, Version=3.3.0.0, Culture=neutral, PublicKeyToken=ba48961d6f65dcec, processorArchitecture=MSIL" />
     <Reference Include="System" />
     <Reference Include="System.Core">
@@ -210,4 +206,8 @@
       <Name>HeuristicLab.Core-3.3</Name>
     </ProjectReference>
+    <ProjectReference Include="..\..\HeuristicLab.Data.Views\3.3\HeuristicLab.Data.Views-3.3.csproj">
+      <Project>{72104A0B-90E7-42F3-9ABE-9BBBADD4B943}</Project>
+      <Name>HeuristicLab.Data.Views-3.3</Name>
+    </ProjectReference>
     <ProjectReference Include="..\..\HeuristicLab.Data\3.3\HeuristicLab.Data-3.3.csproj">
       <Project>{BBAB9DF5-5EF3-4BA8-ADE9-B36E82114937}</Project>
@@ -225,4 +225,8 @@
       <Project>{662B4B15-8F4D-4AE5-B3EB-D91C215F5AF2}</Project>
       <Name>HeuristicLab.Optimization.Views-3.3</Name>
+    </ProjectReference>
+    <ProjectReference Include="..\..\HeuristicLab.Optimization\3.3\HeuristicLab.Optimization-3.3.csproj">
+      <Project>{14AB8D24-25BC-400C-A846-4627AA945192}</Project>
+      <Name>HeuristicLab.Optimization-3.3</Name>
     </ProjectReference>
     <ProjectReference Include="..\..\HeuristicLab.PluginInfrastructure\3.3\HeuristicLab.PluginInfrastructure-3.3.csproj">
Index: /branches/histogram/HeuristicLab.Analysis/3.3/QualityAnalysis/BestAverageWorstQualityAnalyzer.cs
===================================================================
--- /branches/histogram/HeuristicLab.Analysis/3.3/QualityAnalysis/BestAverageWorstQualityAnalyzer.cs	(revision 6045)
+++ /branches/histogram/HeuristicLab.Analysis/3.3/QualityAnalysis/BestAverageWorstQualityAnalyzer.cs	(revision 6046)
@@ -68,6 +68,6 @@
       get { return (ValueLookupParameter<PercentValue>)Parameters["RelativeDifferenceBestKnownToBest"]; }
     }
-    public ValueLookupParameter<VariableCollection> ResultsParameter {
-      get { return (ValueLookupParameter<VariableCollection>)Parameters["Results"]; }
+    public ValueLookupParameter<ResultCollection> ResultsParameter {
+      get { return (ValueLookupParameter<ResultCollection>)Parameters["Results"]; }
     }
     #endregion
@@ -106,5 +106,5 @@
       Parameters.Add(new ValueLookupParameter<DoubleValue>("AbsoluteDifferenceBestKnownToBest", "The absolute difference of the best known quality value to the best quality value."));
       Parameters.Add(new ValueLookupParameter<PercentValue>("RelativeDifferenceBestKnownToBest", "The relative difference of the best known quality value to the best quality value."));
-      Parameters.Add(new ValueLookupParameter<VariableCollection>("Results", "The results collection where the analysis values should be stored."));
+      Parameters.Add(new ValueLookupParameter<ResultCollection>("Results", "The results collection where the analysis values should be stored."));
       #endregion
 
@@ -166,6 +166,13 @@
     private void AfterDeserialization() {
       Initialize();
+      // BackwardsCompatibility3.3
+      #region Backwards compatible code, remove with 3.4
+      if (Parameters["Results"] is ValueLookupParameter<VariableCollection>) {
+        Parameters.Remove("Results");
+        Parameters.Add(new ValueLookupParameter<ResultCollection>("Results", "The results collection where the analysis values should be stored."));
+      }
+      #endregion
     }
-    
+
     private void Initialize() {
       QualityParameter.DepthChanged += new EventHandler(QualityParameter_DepthChanged);
Index: /branches/histogram/HeuristicLab.Encodings.BinaryVectorEncoding/3.3/HeuristicLab.Encodings.BinaryVectorEncoding-3.3.csproj
===================================================================
--- /branches/histogram/HeuristicLab.Encodings.BinaryVectorEncoding/3.3/HeuristicLab.Encodings.BinaryVectorEncoding-3.3.csproj	(revision 6045)
+++ /branches/histogram/HeuristicLab.Encodings.BinaryVectorEncoding/3.3/HeuristicLab.Encodings.BinaryVectorEncoding-3.3.csproj	(revision 6046)
@@ -12,5 +12,6 @@
     <AssemblyName>HeuristicLab.Encodings.BinaryVectorEncoding-3.3</AssemblyName>
     <TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
-    <TargetFrameworkProfile></TargetFrameworkProfile>
+    <TargetFrameworkProfile>
+    </TargetFrameworkProfile>
     <FileAlignment>512</FileAlignment>
     <SignAssembly>true</SignAssembly>
@@ -118,4 +119,5 @@
     <Compile Include="HeuristicLabEncodingsBinaryVectorEncodingPlugin.cs" />
     <Compile Include="BinaryVector.cs" />
+    <Compile Include="Interfaces\IBinaryVectorMultiNeighborhoodShakingOperator.cs" />
     <Compile Include="Interfaces\IOneBitflipMoveOperator.cs" />
     <Compile Include="Interfaces\IBinaryVectorCreator.cs" />
@@ -140,4 +142,5 @@
     <Compile Include="Moves\OneIndexMove.cs" />
     <Compile Include="Properties\AssemblyInfo.cs" />
+    <Compile Include="ShakingOperators\BinaryVectorShakingOperator.cs" />
   </ItemGroup>
   <ItemGroup>
@@ -200,4 +203,5 @@
     </BootstrapperPackage>
   </ItemGroup>
+  <ItemGroup />
   <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
   <!-- To modify your build process, add your task inside one of the targets below and uncomment it. 
Index: /branches/histogram/HeuristicLab.Encodings.BinaryVectorEncoding/3.3/Interfaces/IBinaryVectorMultiNeighborhoodShakingOperator.cs
===================================================================
--- /branches/histogram/HeuristicLab.Encodings.BinaryVectorEncoding/3.3/Interfaces/IBinaryVectorMultiNeighborhoodShakingOperator.cs	(revision 6046)
+++ /branches/histogram/HeuristicLab.Encodings.BinaryVectorEncoding/3.3/Interfaces/IBinaryVectorMultiNeighborhoodShakingOperator.cs	(revision 6046)
@@ -0,0 +1,28 @@
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2011 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 HeuristicLab.Core;
+
+namespace HeuristicLab.Encodings.BinaryVectorEncoding {
+  public interface IBinaryVectorMultiNeighborhoodShakingOperator : IBinaryVectorOperator {
+    ILookupParameter<BinaryVector> BinaryVectorParameter { get; }
+  }
+}
Index: /branches/histogram/HeuristicLab.Encodings.BinaryVectorEncoding/3.3/ShakingOperators/BinaryVectorShakingOperator.cs
===================================================================
--- /branches/histogram/HeuristicLab.Encodings.BinaryVectorEncoding/3.3/ShakingOperators/BinaryVectorShakingOperator.cs	(revision 6046)
+++ /branches/histogram/HeuristicLab.Encodings.BinaryVectorEncoding/3.3/ShakingOperators/BinaryVectorShakingOperator.cs	(revision 6046)
@@ -0,0 +1,84 @@
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2011 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.Linq;
+using HeuristicLab.Collections;
+using HeuristicLab.Common;
+using HeuristicLab.Core;
+using HeuristicLab.Optimization;
+using HeuristicLab.Optimization.Operators;
+using HeuristicLab.Parameters;
+using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
+using HeuristicLab.PluginInfrastructure;
+
+namespace HeuristicLab.Encodings.BinaryVectorEncoding {
+  /// <summary>
+  /// A shaking operator for VNS.
+  /// </summary>
+  [Item("BinaryVectorShakingOperator", "A shaking operator for VNS which uses available manipulation operators to perform the shaking.")]
+  [StorableClass]
+  public class BinaryVectorShakingOperator : ShakingOperator<IBinaryVectorManipulator>, IBinaryVectorMultiNeighborhoodShakingOperator, IStochasticOperator {
+
+    public ILookupParameter<BinaryVector> BinaryVectorParameter {
+      get { return (ILookupParameter<BinaryVector>)Parameters["BinaryVector"]; }
+    }
+
+    public ILookupParameter<IRandom> RandomParameter {
+      get { return (LookupParameter<IRandom>)Parameters["Random"]; }
+    }
+
+    [StorableConstructor]
+    protected BinaryVectorShakingOperator(bool deserializing) : base(deserializing) { }
+    protected BinaryVectorShakingOperator(BinaryVectorShakingOperator original, Cloner cloner) : base(original, cloner) { }
+    public override IDeepCloneable Clone(Cloner cloner) {
+      return new BinaryVectorShakingOperator(this, cloner);
+    }
+    public BinaryVectorShakingOperator()
+      : base() {
+      Parameters.Add(new LookupParameter<BinaryVector>("BinaryVector", "The binary vector to shake."));
+      Parameters.Add(new LookupParameter<IRandom>("Random", "The random number generator that will be used for stochastic shaking operators."));
+      foreach (IBinaryVectorManipulator shaker in ApplicationManager.Manager.GetInstances<IBinaryVectorManipulator>().OrderBy(x => x.Name))
+        Operators.Add(shaker);
+    }
+
+    #region Wiring of some parameters
+    protected override void Operators_ItemsAdded(object sender, CollectionItemsChangedEventArgs<IndexedItem<IBinaryVectorManipulator>> e) {
+      base.Operators_ItemsAdded(sender, e);
+      ParameterizeOperators(e.Items);
+    }
+
+    protected override void Operators_ItemsReplaced(object sender, CollectionItemsChangedEventArgs<IndexedItem<IBinaryVectorManipulator>> e) {
+      base.Operators_ItemsReplaced(sender, e);
+      ParameterizeOperators(e.Items);
+    }
+
+    private void ParameterizeOperators(IEnumerable<IndexedItem<IBinaryVectorManipulator>> items) {
+      if (items.Any()) {
+        foreach (IStochasticOperator op in items.Select(x => x.Value).OfType<IStochasticOperator>())
+          op.RandomParameter.ActualName = RandomParameter.Name;
+        foreach (IBinaryVectorManipulator op in items.Select(x => x.Value).OfType<IBinaryVectorManipulator>())
+          op.BinaryVectorParameter.ActualName = BinaryVectorParameter.Name;
+      }
+    }
+    #endregion
+  }
+}
Index: /branches/histogram/HeuristicLab.Encodings.IntegerVectorEncoding/3.3/HeuristicLab.Encodings.IntegerVectorEncoding-3.3.csproj
===================================================================
--- /branches/histogram/HeuristicLab.Encodings.IntegerVectorEncoding/3.3/HeuristicLab.Encodings.IntegerVectorEncoding-3.3.csproj	(revision 6045)
+++ /branches/histogram/HeuristicLab.Encodings.IntegerVectorEncoding/3.3/HeuristicLab.Encodings.IntegerVectorEncoding-3.3.csproj	(revision 6046)
@@ -12,5 +12,6 @@
     <AssemblyName>HeuristicLab.Encodings.IntegerVectorEncoding-3.3</AssemblyName>
     <TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
-    <TargetFrameworkProfile></TargetFrameworkProfile>
+    <TargetFrameworkProfile>
+    </TargetFrameworkProfile>
     <FileAlignment>512</FileAlignment>
     <SignAssembly>true</SignAssembly>
@@ -117,4 +118,5 @@
     <Compile Include="Interfaces\IIntegerVectorCrossover.cs" />
     <Compile Include="Interfaces\IIntegerVectorManipulator.cs" />
+    <Compile Include="Interfaces\IIntegerVectorMultiNeighborhoodShakingOperator.cs" />
     <Compile Include="Interfaces\IIntegerVectorOperator.cs" />
     <Compile Include="IntegerVectorCrossover.cs" />
@@ -126,4 +128,5 @@
     <Compile Include="Properties\AssemblyInfo.cs" />
     <Compile Include="IntegerVectorCreator.cs" />
+    <Compile Include="ShakingOperators\IntegerVectorShakingOperator.cs" />
   </ItemGroup>
   <ItemGroup>
@@ -147,4 +150,8 @@
       <Project>{23DA7FF4-D5B8-41B6-AA96-F0561D24F3EE}</Project>
       <Name>HeuristicLab.Operators-3.3</Name>
+    </ProjectReference>
+    <ProjectReference Include="..\..\HeuristicLab.Optimization.Operators\3.3\HeuristicLab.Optimization.Operators-3.3.csproj">
+      <Project>{25087811-F74C-4128-BC86-8324271DA13E}</Project>
+      <Name>HeuristicLab.Optimization.Operators-3.3</Name>
     </ProjectReference>
     <ProjectReference Include="..\..\HeuristicLab.Optimization\3.3\HeuristicLab.Optimization-3.3.csproj">
Index: /branches/histogram/HeuristicLab.Encodings.IntegerVectorEncoding/3.3/HeuristicLabEncodingsIntegerVectorEncodingPlugin.cs.frame
===================================================================
--- /branches/histogram/HeuristicLab.Encodings.IntegerVectorEncoding/3.3/HeuristicLabEncodingsIntegerVectorEncodingPlugin.cs.frame	(revision 6045)
+++ /branches/histogram/HeuristicLab.Encodings.IntegerVectorEncoding/3.3/HeuristicLabEncodingsIntegerVectorEncodingPlugin.cs.frame	(revision 6046)
@@ -34,4 +34,5 @@
   [PluginDependency("HeuristicLab.Operators", "3.3")]
   [PluginDependency("HeuristicLab.Optimization", "3.3")]
+  [PluginDependency("HeuristicLab.Optimization.Operators", "3.3")]
   [PluginDependency("HeuristicLab.Parameters", "3.3")]
   [PluginDependency("HeuristicLab.Persistence", "3.3")]
Index: /branches/histogram/HeuristicLab.Encodings.IntegerVectorEncoding/3.3/Interfaces/IIntegerVectorMultiNeighborhoodShakingOperator.cs
===================================================================
--- /branches/histogram/HeuristicLab.Encodings.IntegerVectorEncoding/3.3/Interfaces/IIntegerVectorMultiNeighborhoodShakingOperator.cs	(revision 6046)
+++ /branches/histogram/HeuristicLab.Encodings.IntegerVectorEncoding/3.3/Interfaces/IIntegerVectorMultiNeighborhoodShakingOperator.cs	(revision 6046)
@@ -0,0 +1,28 @@
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2011 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 HeuristicLab.Core;
+
+namespace HeuristicLab.Encodings.IntegerVectorEncoding {
+  public interface IIntegerVectorMultiNeighborhoodShakingOperator : IIntegerVectorOperator {
+    ILookupParameter<IntegerVector> IntegerVectorParameter { get; }
+  }
+}
Index: /branches/histogram/HeuristicLab.Encodings.IntegerVectorEncoding/3.3/ShakingOperators/IntegerVectorShakingOperator.cs
===================================================================
--- /branches/histogram/HeuristicLab.Encodings.IntegerVectorEncoding/3.3/ShakingOperators/IntegerVectorShakingOperator.cs	(revision 6046)
+++ /branches/histogram/HeuristicLab.Encodings.IntegerVectorEncoding/3.3/ShakingOperators/IntegerVectorShakingOperator.cs	(revision 6046)
@@ -0,0 +1,84 @@
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2011 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.Linq;
+using HeuristicLab.Collections;
+using HeuristicLab.Common;
+using HeuristicLab.Core;
+using HeuristicLab.Optimization;
+using HeuristicLab.Optimization.Operators;
+using HeuristicLab.Parameters;
+using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
+using HeuristicLab.PluginInfrastructure;
+
+namespace HeuristicLab.Encodings.IntegerVectorEncoding {
+  /// <summary>
+  /// A shaking operator for VNS.
+  /// </summary>
+  [Item("IntegerVectorShakingOperator", "A shaking operator for VNS which uses available manipulation operators to perform the shaking.")]
+  [StorableClass]
+  public class IntegerVectorShakingOperator : ShakingOperator<IIntegerVectorManipulator>, IIntegerVectorMultiNeighborhoodShakingOperator, IStochasticOperator {
+
+    public ILookupParameter<IntegerVector> IntegerVectorParameter {
+      get { return (ILookupParameter<IntegerVector>)Parameters["IntegerVector"]; }
+    }
+
+    public ILookupParameter<IRandom> RandomParameter {
+      get { return (LookupParameter<IRandom>)Parameters["Random"]; }
+    }
+
+    [StorableConstructor]
+    protected IntegerVectorShakingOperator(bool deserializing) : base(deserializing) { }
+    protected IntegerVectorShakingOperator(IntegerVectorShakingOperator original, Cloner cloner) : base(original, cloner) { }
+    public override IDeepCloneable Clone(Cloner cloner) {
+      return new IntegerVectorShakingOperator(this, cloner);
+    }
+    public IntegerVectorShakingOperator()
+      : base() {
+      Parameters.Add(new LookupParameter<IntegerVector>("IntegerVector", "The integer vector to shake."));
+      Parameters.Add(new LookupParameter<IRandom>("Random", "The random number generator that will be used for stochastic shaking operators."));
+      foreach (IIntegerVectorManipulator shaker in ApplicationManager.Manager.GetInstances<IIntegerVectorManipulator>().OrderBy(x => x.Name))
+        Operators.Add(shaker);
+    }
+
+    #region Wiring of some parameters
+    protected override void Operators_ItemsAdded(object sender, CollectionItemsChangedEventArgs<IndexedItem<IIntegerVectorManipulator>> e) {
+      base.Operators_ItemsAdded(sender, e);
+      ParameterizeOperators(e.Items);
+    }
+
+    protected override void Operators_ItemsReplaced(object sender, CollectionItemsChangedEventArgs<IndexedItem<IIntegerVectorManipulator>> e) {
+      base.Operators_ItemsReplaced(sender, e);
+      ParameterizeOperators(e.Items);
+    }
+
+    private void ParameterizeOperators(IEnumerable<IndexedItem<IIntegerVectorManipulator>> items) {
+      if (items.Any()) {
+        foreach (IStochasticOperator op in items.Select(x => x.Value).OfType<IStochasticOperator>())
+          op.RandomParameter.ActualName = RandomParameter.Name;
+        foreach (IIntegerVectorManipulator op in items.Select(x => x.Value).OfType<IIntegerVectorManipulator>())
+          op.IntegerVectorParameter.ActualName = IntegerVectorParameter.Name;
+      }
+    }
+    #endregion
+  }
+}
Index: /branches/histogram/HeuristicLab.Encodings.PermutationEncoding/3.3/HeuristicLab.Encodings.PermutationEncoding-3.3.csproj
===================================================================
--- /branches/histogram/HeuristicLab.Encodings.PermutationEncoding/3.3/HeuristicLab.Encodings.PermutationEncoding-3.3.csproj	(revision 6045)
+++ /branches/histogram/HeuristicLab.Encodings.PermutationEncoding/3.3/HeuristicLab.Encodings.PermutationEncoding-3.3.csproj	(revision 6046)
@@ -19,5 +19,6 @@
     </UpgradeBackupLocation>
     <TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
-    <TargetFrameworkProfile></TargetFrameworkProfile>
+    <TargetFrameworkProfile>
+    </TargetFrameworkProfile>
     <PublishUrl>publish\</PublishUrl>
     <Install>true</Install>
@@ -118,4 +119,5 @@
     <Compile Include="Crossovers\PositionBasedCrossover.cs" />
     <Compile Include="HeuristicLabEncodingsPermutationEncodingPlugin.cs" />
+    <Compile Include="Interfaces\IPermutationMultiNeighborhoodShakingOperator.cs" />
     <Compile Include="Interfaces\IPermutationSwap2MoveOperator.cs" />
     <Compile Include="Interfaces\IPermutationCreator.cs" />
@@ -183,4 +185,5 @@
     <Compile Include="PermutationTypes.cs" />
     <Compile Include="Properties\AssemblyInfo.cs" />
+    <Compile Include="ShakingOperators\PermutationShakingOperator.cs" />
   </ItemGroup>
   <ItemGroup>
Index: /branches/histogram/HeuristicLab.Encodings.PermutationEncoding/3.3/Interfaces/IPermutationMultiNeighborhoodShakingOperator.cs
===================================================================
--- /branches/histogram/HeuristicLab.Encodings.PermutationEncoding/3.3/Interfaces/IPermutationMultiNeighborhoodShakingOperator.cs	(revision 6046)
+++ /branches/histogram/HeuristicLab.Encodings.PermutationEncoding/3.3/Interfaces/IPermutationMultiNeighborhoodShakingOperator.cs	(revision 6046)
@@ -0,0 +1,29 @@
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2011 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 HeuristicLab.Core;
+using HeuristicLab.Optimization;
+
+namespace HeuristicLab.Encodings.PermutationEncoding {
+  public interface IPermutationMultiNeighborhoodShakingOperator : IMultiNeighborhoodShakingOperator, IPermutationOperator {
+    ILookupParameter<Permutation> PermutationParameter { get; }
+  }
+}
Index: /branches/histogram/HeuristicLab.Encodings.PermutationEncoding/3.3/ShakingOperators/PermutationShakingOperator.cs
===================================================================
--- /branches/histogram/HeuristicLab.Encodings.PermutationEncoding/3.3/ShakingOperators/PermutationShakingOperator.cs	(revision 6046)
+++ /branches/histogram/HeuristicLab.Encodings.PermutationEncoding/3.3/ShakingOperators/PermutationShakingOperator.cs	(revision 6046)
@@ -0,0 +1,84 @@
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2011 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.Linq;
+using HeuristicLab.Collections;
+using HeuristicLab.Common;
+using HeuristicLab.Core;
+using HeuristicLab.Optimization;
+using HeuristicLab.Optimization.Operators;
+using HeuristicLab.Parameters;
+using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
+using HeuristicLab.PluginInfrastructure;
+
+namespace HeuristicLab.Encodings.PermutationEncoding {
+  /// <summary>
+  /// A shaking operator for VNS.
+  /// </summary>
+  [Item("PermutationShakingOperator", "A shaking operator for VNS which uses available manipulation operators to perform the shaking.")]
+  [StorableClass]
+  public class PermutationShakingOperator : ShakingOperator<IPermutationManipulator>, IPermutationMultiNeighborhoodShakingOperator, IStochasticOperator {
+
+    public ILookupParameter<Permutation> PermutationParameter {
+      get { return (ILookupParameter<Permutation>)Parameters["Permutation"]; }
+    }
+
+    public ILookupParameter<IRandom> RandomParameter {
+      get { return (LookupParameter<IRandom>)Parameters["Random"]; }
+    }
+
+    [StorableConstructor]
+    protected PermutationShakingOperator(bool deserializing) : base(deserializing) { }
+    protected PermutationShakingOperator(PermutationShakingOperator original, Cloner cloner) : base(original, cloner) { }
+    public override IDeepCloneable Clone(Cloner cloner) {
+      return new PermutationShakingOperator(this, cloner);
+    }
+    public PermutationShakingOperator()
+      : base() {
+      Parameters.Add(new LookupParameter<Permutation>("Permutation", "The permutation to shake."));
+      Parameters.Add(new LookupParameter<IRandom>("Random", "The random number generator that will be used for stochastic shaking operators."));
+      foreach (IPermutationManipulator shaker in ApplicationManager.Manager.GetInstances<IPermutationManipulator>().OrderBy(x => x.Name))
+        if (!(shaker is MultiPermutationManipulator)) Operators.Add(shaker);
+    }
+
+    #region Wiring of some parameters
+    protected override void Operators_ItemsAdded(object sender, CollectionItemsChangedEventArgs<IndexedItem<IPermutationManipulator>> e) {
+      base.Operators_ItemsAdded(sender, e);
+      ParameterizeOperators(e.Items);
+    }
+
+    protected override void Operators_ItemsReplaced(object sender, CollectionItemsChangedEventArgs<IndexedItem<IPermutationManipulator>> e) {
+      base.Operators_ItemsReplaced(sender, e);
+      ParameterizeOperators(e.Items);
+    }
+
+    private void ParameterizeOperators(IEnumerable<IndexedItem<IPermutationManipulator>> items) {
+      if (items.Any()) {
+        foreach (IStochasticOperator op in items.Select(x => x.Value).OfType<IStochasticOperator>())
+          op.RandomParameter.ActualName = RandomParameter.Name;
+        foreach (IPermutationManipulator op in items.Select(x => x.Value).OfType<IPermutationManipulator>())
+          op.PermutationParameter.ActualName = PermutationParameter.Name;
+      }
+    }
+    #endregion
+  }
+}
Index: /branches/histogram/HeuristicLab.Encodings.RealVectorEncoding/3.3/HeuristicLab.Encodings.RealVectorEncoding-3.3.csproj
===================================================================
--- /branches/histogram/HeuristicLab.Encodings.RealVectorEncoding/3.3/HeuristicLab.Encodings.RealVectorEncoding-3.3.csproj	(revision 6045)
+++ /branches/histogram/HeuristicLab.Encodings.RealVectorEncoding/3.3/HeuristicLab.Encodings.RealVectorEncoding-3.3.csproj	(revision 6046)
@@ -104,4 +104,5 @@
   </ItemGroup>
   <ItemGroup>
+    <Compile Include="Interfaces\IRealVectorMultiNeighborhoodShakingOperator.cs" />
     <Compile Include="ParticleOperators\RealVectorParticleCreator.cs" />
     <Compile Include="Crossovers\BlendAlphaBetaCrossover.cs" />
@@ -168,4 +169,5 @@
     <Compile Include="Manipulators\UniformOnePositionManipulator.cs" />
     <Compile Include="ReflectiveBoundsChecker.cs" />
+    <Compile Include="ShakingOperators\RealVectorShakingOperator.cs" />
     <Compile Include="StrategyParameters\StdDevStrategyVectorCreator.cs" />
     <Compile Include="StrategyParameters\StdDevStrategyVectorCrossover.cs" />
Index: /branches/histogram/HeuristicLab.Encodings.RealVectorEncoding/3.3/Interfaces/IRealVectorMultiNeighborhoodShakingOperator.cs
===================================================================
--- /branches/histogram/HeuristicLab.Encodings.RealVectorEncoding/3.3/Interfaces/IRealVectorMultiNeighborhoodShakingOperator.cs	(revision 6046)
+++ /branches/histogram/HeuristicLab.Encodings.RealVectorEncoding/3.3/Interfaces/IRealVectorMultiNeighborhoodShakingOperator.cs	(revision 6046)
@@ -0,0 +1,28 @@
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2011 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 HeuristicLab.Core;
+
+namespace HeuristicLab.Encodings.RealVectorEncoding {
+  public interface IRealVectorMultiNeighborhoodShakingOperator : IRealVectorOperator {
+    ILookupParameter<RealVector> RealVectorParameter { get; }
+  }
+}
Index: /branches/histogram/HeuristicLab.Encodings.RealVectorEncoding/3.3/ShakingOperators/RealVectorShakingOperator.cs
===================================================================
--- /branches/histogram/HeuristicLab.Encodings.RealVectorEncoding/3.3/ShakingOperators/RealVectorShakingOperator.cs	(revision 6046)
+++ /branches/histogram/HeuristicLab.Encodings.RealVectorEncoding/3.3/ShakingOperators/RealVectorShakingOperator.cs	(revision 6046)
@@ -0,0 +1,85 @@
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2011 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.Linq;
+using HeuristicLab.Collections;
+using HeuristicLab.Common;
+using HeuristicLab.Core;
+using HeuristicLab.Optimization;
+using HeuristicLab.Optimization.Operators;
+using HeuristicLab.Parameters;
+using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
+using HeuristicLab.PluginInfrastructure;
+
+namespace HeuristicLab.Encodings.RealVectorEncoding {
+  /// <summary>
+  /// A shaking operator for VNS.
+  /// </summary>
+  [Item("RealVectorShakingOperator", "A shaking operator for VNS which uses available manipulation operators to perform the shaking.")]
+  [StorableClass]
+  public class RealVectorShakingOperator : ShakingOperator<IRealVectorManipulator>, IRealVectorMultiNeighborhoodShakingOperator, IStochasticOperator {
+
+    public ILookupParameter<RealVector> RealVectorParameter {
+      get { return (ILookupParameter<RealVector>)Parameters["RealVector"]; }
+    }
+
+    public ILookupParameter<IRandom> RandomParameter {
+      get { return (LookupParameter<IRandom>)Parameters["Random"]; }
+    }
+
+    [StorableConstructor]
+    protected RealVectorShakingOperator(bool deserializing) : base(deserializing) { }
+    protected RealVectorShakingOperator(RealVectorShakingOperator original, Cloner cloner) : base(original, cloner) { }
+    public override IDeepCloneable Clone(Cloner cloner) {
+      return new RealVectorShakingOperator(this, cloner);
+    }
+    public RealVectorShakingOperator()
+      : base() {
+      Parameters.Add(new LookupParameter<RealVector>("RealVector", "The real vector to shake."));
+      Parameters.Add(new LookupParameter<IRandom>("Random", "The random number generator that will be used for stochastic shaking operators."));
+      foreach (IRealVectorManipulator shaker in ApplicationManager.Manager.GetInstances<IRealVectorManipulator>().OrderBy(x => x.Name))
+        if (!(shaker is MultiRealVectorManipulator)
+          && !(shaker is ISelfAdaptiveManipulator)) Operators.Add(shaker);
+    }
+
+    #region Wiring of some parameters
+    protected override void Operators_ItemsAdded(object sender, CollectionItemsChangedEventArgs<IndexedItem<IRealVectorManipulator>> e) {
+      base.Operators_ItemsAdded(sender, e);
+      ParameterizeOperators(e.Items);
+    }
+
+    protected override void Operators_ItemsReplaced(object sender, CollectionItemsChangedEventArgs<IndexedItem<IRealVectorManipulator>> e) {
+      base.Operators_ItemsReplaced(sender, e);
+      ParameterizeOperators(e.Items);
+    }
+
+    private void ParameterizeOperators(IEnumerable<IndexedItem<IRealVectorManipulator>> items) {
+      if (items.Any()) {
+        foreach (IStochasticOperator op in items.Select(x => x.Value).OfType<IStochasticOperator>())
+          op.RandomParameter.ActualName = RandomParameter.Name;
+        foreach (IRealVectorManipulator op in items.Select(x => x.Value).OfType<IRealVectorManipulator>())
+          op.RealVectorParameter.ActualName = RealVectorParameter.Name;
+      }
+    }
+    #endregion
+  }
+}
Index: /branches/histogram/HeuristicLab.Operators.Views.GraphVisualization.Views/3.3/GraphVisualizationInfoView.Designer.cs
===================================================================
--- /branches/histogram/HeuristicLab.Operators.Views.GraphVisualization.Views/3.3/GraphVisualizationInfoView.Designer.cs	(revision 6046)
+++ /branches/histogram/HeuristicLab.Operators.Views.GraphVisualization.Views/3.3/GraphVisualizationInfoView.Designer.cs	(revision 6046)
@@ -0,0 +1,88 @@
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2011 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
+
+namespace HeuristicLab.Operators.Views.GraphVisualization.Views {
+  partial class GraphVisualizationInfoView {
+    /// <summary> 
+    /// Required designer variable.
+    /// </summary>
+    private System.ComponentModel.IContainer components = null;
+
+    /// <summary> 
+    /// Clean up any resources being used.
+    /// </summary>
+    /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
+    protected override void Dispose(bool disposing) {
+      if (disposing && (components != null)) {
+        components.Dispose();
+      }
+      base.Dispose(disposing);
+    }
+
+    #region Component Designer generated code
+
+    /// <summary> 
+    /// Required method for Designer support - do not modify 
+    /// the contents of this method with the code editor.
+    /// </summary>
+    private void InitializeComponent() {
+      this.components = new System.ComponentModel.Container();
+      this.graphVisualization = new HeuristicLab.Netron.NetronVisualization();
+      ((System.ComponentModel.ISupportInitialize)(this.graphVisualization)).BeginInit();
+      this.SuspendLayout();
+      // 
+      // graphVisualization
+      // 
+      this.graphVisualization.AllowDrop = false;
+      this.graphVisualization.AutoScroll = true;
+      this.graphVisualization.BackColor = System.Drawing.Color.DarkGray;
+      this.graphVisualization.BackgroundType = global::Netron.Diagramming.Core.CanvasBackgroundTypes.FlatColor;
+      this.graphVisualization.Dock = System.Windows.Forms.DockStyle.Fill;
+      this.graphVisualization.EnableAddConnection = true;
+      this.graphVisualization.FileName = "";
+      this.graphVisualization.Location = new System.Drawing.Point(0, 0);
+      this.graphVisualization.Magnification = new System.Drawing.SizeF(80F, 80F);
+      this.graphVisualization.Name = "graphVisualization";
+      this.graphVisualization.Origin = new System.Drawing.Point(0, 0);
+      this.graphVisualization.PageSize = new System.Drawing.Size(100000, 100000);
+      this.graphVisualization.ShowConnectors = true;
+      this.graphVisualization.ShowRulers = false;
+      this.graphVisualization.Size = new System.Drawing.Size(665, 444);
+      this.graphVisualization.TabIndex = 0;
+      this.graphVisualization.OnEntityRemoved += new System.EventHandler<global::Netron.Diagramming.Core.EntityEventArgs>(this.graphVisualization_OnEntityRemoved);
+      this.graphVisualization.OnEntityAdded += new System.EventHandler<global::Netron.Diagramming.Core.EntityEventArgs>(this.graphVisualization_OnEntityAdded);
+
+      // 
+      // GraphVisualizationInfoView
+      // 
+      this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
+      this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+      this.Controls.Add(this.graphVisualization);
+      this.Name = "GraphVisualizationInfoView";
+      this.Size = new System.Drawing.Size(665, 444);
+      ((System.ComponentModel.ISupportInitialize)(this.graphVisualization)).EndInit();
+      this.ResumeLayout(false);
+    }
+    #endregion
+
+    private HeuristicLab.Netron.NetronVisualization graphVisualization;
+  }
+}
Index: /branches/histogram/HeuristicLab.Operators.Views.GraphVisualization.Views/3.3/GraphVisualizationInfoView.cs
===================================================================
--- /branches/histogram/HeuristicLab.Operators.Views.GraphVisualization.Views/3.3/GraphVisualizationInfoView.cs	(revision 6046)
+++ /branches/histogram/HeuristicLab.Operators.Views.GraphVisualization.Views/3.3/GraphVisualizationInfoView.cs	(revision 6046)
@@ -0,0 +1,352 @@
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2011 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;
+using System.Drawing;
+using System.Drawing.Drawing2D;
+using System.Linq;
+using System.Threading;
+using System.Windows.Forms;
+using HeuristicLab.Collections;
+using HeuristicLab.MainForm;
+using HeuristicLab.MainForm.WindowsForms;
+using Netron.Diagramming.Core;
+
+namespace HeuristicLab.Operators.Views.GraphVisualization.Views {
+  [View("GraphVisualizationInfo View")]
+  [Content(typeof(IGraphVisualizationInfo), true)]
+  public partial class GraphVisualizationInfoView : AsynchronousContentView {
+    private BidirectionalLookup<IShapeInfo, IShape> shapeInfoShapeMapping;
+    private BidirectionalLookup<IConnectionInfo, IConnection> connectionInfoConnectionMapping;
+    private LinePenStyle connectionPenStyle;
+
+    public GraphVisualizationInfoView() {
+      InitializeComponent();
+      this.shapeInfoShapeMapping = new BidirectionalLookup<IShapeInfo, IShape>();
+      this.connectionInfoConnectionMapping = new BidirectionalLookup<IConnectionInfo, IConnection>();
+      this.connectionPenStyle = new LinePenStyle();
+      this.connectionPenStyle.EndCap = LineCap.ArrowAnchor;
+
+      PasteTool pasteTool = (PasteTool)this.Controller.Tools.Where(t => t.Name == ControllerBase.PasteToolName).FirstOrDefault();
+      CopyTool copyTool = (CopyTool)this.Controller.Tools.Where(t => t.Name == ControllerBase.CopyToolName).FirstOrDefault();
+      HeuristicLab.Netron.Controller controller = this.Controller as HeuristicLab.Netron.Controller;
+      if (controller != null) {
+        if (pasteTool != null) controller.RemoveTool(pasteTool);
+        if (copyTool != null) controller.RemoveTool(copyTool);
+      }
+    }
+
+    public IController Controller {
+      get { return this.graphVisualization.Controller; }
+    }
+
+    public new IGraphVisualizationInfo Content {
+      get { return (IGraphVisualizationInfo)base.Content; }
+      set { base.Content = value; }
+    }
+
+    protected override void OnContentChanged() {
+      base.OnContentChanged();
+      this.UpdateContent();
+    }
+
+    protected override void SetEnabledStateOfControls() {
+      base.SetEnabledStateOfControls();
+      DeleteTool deleteTool = (DeleteTool)this.Controller.Tools.Where(t => t.Name == ControllerBase.DeleteToolName).FirstOrDefault();
+      HeuristicLab.Netron.Controller controller = this.Controller as HeuristicLab.Netron.Controller;
+      if (Content == null && deleteTool != null && controller != null)
+        controller.RemoveTool(deleteTool);
+      else {
+        if ((ReadOnly || Locked) && deleteTool != null && controller != null)
+          controller.RemoveTool(deleteTool);
+        else if ((!ReadOnly && !Locked) && deleteTool == null)
+          this.Controller.AddTool(new DeleteTool(ControllerBase.DeleteToolName));
+      }
+    }
+
+    private void UpdateContent() {
+      foreach (IConnectionInfo connectionInfo in this.connectionInfoConnectionMapping.FirstValues.ToList())
+        this.RemoveConnectionInfo(connectionInfo);
+      this.connectionInfoConnectionMapping.Clear();
+      foreach (IShapeInfo shapeInfo in this.shapeInfoShapeMapping.FirstValues.ToList())
+        this.RemoveShapeInfo(shapeInfo);
+      this.shapeInfoShapeMapping.Clear();
+
+      if (Content != null) {
+        foreach (IShapeInfo shapeInfo in this.Content.ShapeInfos)
+          this.AddShapeInfo(shapeInfo);
+        foreach (IConnectionInfo connectionInfo in this.Content.ConnectionInfos)
+          this.AddConnectionInfo(connectionInfo);
+        this.UpdateLayoutRoot();
+      }
+    }
+    private void UpdateLayoutRoot() {
+      IShapeInfo shapeInfo = this.Content.InitialShape;
+      if (shapeInfo != null)
+        this.graphVisualization.Controller.Model.LayoutRoot = this.shapeInfoShapeMapping.GetByFirst(shapeInfo);
+      else
+        this.graphVisualization.Controller.Model.LayoutRoot = null;
+    }
+    private void VisualizationInfo_InitialShapeChanged(object sender, EventArgs e) {
+      this.UpdateLayoutRoot();
+    }
+
+    protected override void RegisterContentEvents() {
+      base.RegisterContentEvents();
+      this.Content.InitialShapeChanged += new EventHandler(VisualizationInfo_InitialShapeChanged);
+
+      this.Content.ObserveableShapeInfos.ItemsAdded += new CollectionItemsChangedEventHandler<IShapeInfo>(ShapeInfos_ItemsAdded);
+      this.Content.ObserveableShapeInfos.ItemsRemoved += new CollectionItemsChangedEventHandler<IShapeInfo>(ShapeInfos_ItemsRemoved);
+      this.Content.ObserveableShapeInfos.CollectionReset += new CollectionItemsChangedEventHandler<IShapeInfo>(ShapeInfos_CollectionReset);
+
+      this.Content.ObservableConnectionInfos.ItemsAdded += new CollectionItemsChangedEventHandler<IConnectionInfo>(ConnectionInfos_ItemsAdded);
+      this.Content.ObservableConnectionInfos.ItemsRemoved += new CollectionItemsChangedEventHandler<IConnectionInfo>(ConnectionInfos_ItemsRemoved);
+      this.Content.ObservableConnectionInfos.CollectionReset += new CollectionItemsChangedEventHandler<IConnectionInfo>(ConnectionInfos_CollectionReset);
+    }
+
+    protected override void DeregisterContentEvents() {
+      base.DeregisterContentEvents();
+      this.Content.InitialShapeChanged -= new EventHandler(VisualizationInfo_InitialShapeChanged);
+
+      this.Content.ObserveableShapeInfos.ItemsAdded -= new CollectionItemsChangedEventHandler<IShapeInfo>(ShapeInfos_ItemsAdded);
+      this.Content.ObserveableShapeInfos.ItemsRemoved -= new CollectionItemsChangedEventHandler<IShapeInfo>(ShapeInfos_ItemsRemoved);
+      this.Content.ObserveableShapeInfos.CollectionReset -= new CollectionItemsChangedEventHandler<IShapeInfo>(ShapeInfos_CollectionReset);
+
+      this.Content.ObservableConnectionInfos.ItemsAdded -= new CollectionItemsChangedEventHandler<IConnectionInfo>(ConnectionInfos_ItemsAdded);
+      this.Content.ObservableConnectionInfos.ItemsRemoved -= new CollectionItemsChangedEventHandler<IConnectionInfo>(ConnectionInfos_ItemsRemoved);
+      this.Content.ObservableConnectionInfos.CollectionReset -= new CollectionItemsChangedEventHandler<IConnectionInfo>(ConnectionInfos_CollectionReset);
+    }
+
+    #region ShapeInfos
+    private void ShapeInfos_CollectionReset(object sender, HeuristicLab.Collections.CollectionItemsChangedEventArgs<IShapeInfo> e) {
+      foreach (IShapeInfo shapeInfo in e.OldItems)
+        this.RemoveShapeInfo(shapeInfo);
+      foreach (IShapeInfo shapeInfo in e.Items)
+        this.AddShapeInfo(shapeInfo);
+    }
+    private void ShapeInfos_ItemsAdded(object sender, HeuristicLab.Collections.CollectionItemsChangedEventArgs<IShapeInfo> e) {
+      foreach (IShapeInfo shapeInfo in e.Items)
+        this.AddShapeInfo(shapeInfo);
+    }
+    private void ShapeInfos_ItemsRemoved(object sender, HeuristicLab.Collections.CollectionItemsChangedEventArgs<IShapeInfo> e) {
+      foreach (IShapeInfo shapeInfo in e.Items)
+        this.RemoveShapeInfo(shapeInfo);
+    }
+
+    private void AddShapeInfo(IShapeInfo shapeInfo) {
+      this.RegisterShapeInfoEvents(shapeInfo);
+      IShape shape = shapeInfo.CreateShape();
+      this.RegisterShapeEvents(shape);
+      this.shapeInfoShapeMapping.Add(shapeInfo, shape);
+
+      this.graphVisualization.Controller.Model.AddShape(shape);
+      this.graphVisualization.Invalidate();
+    }
+    private void RemoveShapeInfo(IShapeInfo shapeInfo) {
+      this.DeregisterShapeInfoEvents(shapeInfo);
+      IShape shape = this.shapeInfoShapeMapping.GetByFirst(shapeInfo);
+      this.DeregisterShapeEvents(shape);
+      this.shapeInfoShapeMapping.RemoveByFirst(shapeInfo);
+
+      if (this.graphVisualization.Controller.Model.Shapes.Contains(shape)) {
+        this.graphVisualization.Controller.Model.RemoveShape(shape);
+        this.graphVisualization.Controller.Model.Selection.Clear();
+        this.graphVisualization.Invalidate();
+      }
+    }
+
+    private void RegisterShapeInfoEvents(IShapeInfo shapeInfo) {
+      shapeInfo.Changed += new EventHandler(shapeInfo_Changed);
+    }
+    private void DeregisterShapeInfoEvents(IShapeInfo shapeInfo) {
+      shapeInfo.Changed -= new EventHandler(shapeInfo_Changed);
+    }
+
+    private void shapeInfo_Changed(object sender, EventArgs e) {
+      IShapeInfo shapeInfo = (IShapeInfo)sender;
+      IShape shape = this.shapeInfoShapeMapping.GetByFirst(shapeInfo);
+      this.DeregisterShapeEvents(shape);
+      shapeInfo.UpdateShape(shape);
+      shape.Invalidate();
+      this.RegisterShapeEvents(shape);
+    }
+    #endregion
+
+    #region ConnectionInfos
+    private void ConnectionInfos_CollectionReset(object sender, CollectionItemsChangedEventArgs<IConnectionInfo> e) {
+      foreach (IConnectionInfo connectionInfo in e.Items)
+        this.RemoveConnectionInfo(connectionInfo);
+      foreach (IConnectionInfo connectionInfo in e.Items)
+        this.AddConnectionInfo(connectionInfo);
+    }
+    private void ConnectionInfos_ItemsAdded(object sender, CollectionItemsChangedEventArgs<IConnectionInfo> e) {
+      foreach (IConnectionInfo connectionInfo in e.Items)
+        this.AddConnectionInfo(connectionInfo);
+    }
+    private void ConnectionInfos_ItemsRemoved(object sender, CollectionItemsChangedEventArgs<IConnectionInfo> e) {
+      foreach (IConnectionInfo connectionInfo in e.Items)
+        this.RemoveConnectionInfo(connectionInfo);
+    }
+
+    private void AddConnectionInfo(IConnectionInfo connectionInfo) {
+      this.RegisterConnectionInfoEvents(connectionInfo);
+      IShape shapeFrom = this.shapeInfoShapeMapping.GetByFirst(connectionInfo.From);
+      IShape shapeTo = this.shapeInfoShapeMapping.GetByFirst(connectionInfo.To);
+
+      IConnector connectorFrom = shapeFrom.Connectors.Where(c => c.Name == connectionInfo.ConnectorFrom).FirstOrDefault();
+      IConnector connectorTo = shapeTo.Connectors.Where(c => c.Name == connectionInfo.ConnectorTo).FirstOrDefault();
+      if (connectorFrom != null && connectorTo != null) {
+        Connection connection = new Connection(connectorFrom.Point, connectorTo.Point);
+        connection.From.AllowMove = false;
+        connection.To.AllowMove = false;
+        connectorFrom.AttachConnector(connection.From);
+        connectorTo.AttachConnector(connection.To);
+        connection.PenStyle = this.connectionPenStyle;
+        this.connectionInfoConnectionMapping.Add(connectionInfo, connection);
+        this.graphVisualization.Controller.Model.AddConnection(connection);
+        this.graphVisualization.Invalidate();
+      }
+    }
+
+    private void RemoveConnectionInfo(IConnectionInfo connectionInfo) {
+      DeregisterConnectionInfoEvents(connectionInfo);
+      IConnection connection = this.connectionInfoConnectionMapping.GetByFirst(connectionInfo);
+      this.connectionInfoConnectionMapping.RemoveByFirst(connectionInfo);
+      this.RemoveConnection(connection);
+
+    }
+    private void RemoveConnection(IConnection connection) {
+      if (connection.From.AttachedTo != null)
+        connection.From.DetachFromParent();
+      if (connection.To.AttachedTo != null)
+        connection.To.DetachFromParent();
+      if (this.Controller.Model.Connections.Contains(connection)) {
+        this.graphVisualization.Controller.Model.Remove(connection);
+        this.graphVisualization.Invalidate();
+      }
+    }
+
+    private void RegisterConnectionInfoEvents(IConnectionInfo connectionInfo) {
+      connectionInfo.Changed += new EventHandler(connectionInfo_Changed);
+    }
+    private void DeregisterConnectionInfoEvents(IConnectionInfo connectionInfo) {
+      connectionInfo.Changed -= new EventHandler(connectionInfo_Changed);
+    }
+    private void connectionInfo_Changed(object sender, EventArgs e) {
+      IConnectionInfo connectionInfo = (IConnectionInfo)sender;
+      IConnection connection = this.connectionInfoConnectionMapping.GetByFirst(connectionInfo);
+      this.RemoveConnectionInfo(connectionInfo);
+      this.AddConnectionInfo(connectionInfo);
+    }
+    #endregion
+
+    #region netron events - shapes, graphvisualization
+    private void RegisterShapeEvents(IShape shape) {
+      shape.OnEntityChange += new EventHandler<EntityEventArgs>(shape_OnEntityChange);
+      shape.OnMouseEnter += new EventHandler<EntityMouseEventArgs>(shape_OnMouseEnter);
+      shape.OnMouseLeave += new EventHandler<EntityMouseEventArgs>(shape_OnMouseLeave);
+    }
+
+    private void DeregisterShapeEvents(IShape shape) {
+      shape.OnEntityChange -= new EventHandler<EntityEventArgs>(shape_OnEntityChange);
+      shape.OnMouseEnter -= new EventHandler<EntityMouseEventArgs>(shape_OnMouseEnter);
+      shape.OnMouseLeave -= new EventHandler<EntityMouseEventArgs>(shape_OnMouseLeave);
+    }
+
+    private Cursor oldCursor;
+    private void shape_OnMouseEnter(object sender, EntityMouseEventArgs e) {
+      this.oldCursor = this.Cursor;
+      this.Controller.View.CurrentCursor = CursorPalette.Move;
+    }
+
+    private void shape_OnMouseLeave(object sender, EntityMouseEventArgs e) {
+      this.Controller.View.CurrentCursor = this.oldCursor;
+      this.oldCursor = null;
+    }
+
+    private void shape_OnEntityChange(object sender, EntityEventArgs e) {
+      IShape shape = e.Entity as IShape;
+      IShapeInfo shapeInfo = this.shapeInfoShapeMapping.GetBySecond(shape);
+      this.DeregisterShapeInfoEvents(shapeInfo);
+      shapeInfo.UpdateShapeInfo(shape);
+      this.RegisterShapeInfoEvents(shapeInfo);
+      this.graphVisualization.Invalidate();
+    }
+
+
+    private void graphVisualization_OnEntityAdded(object sender, EntityEventArgs e) {
+      IConnection connection = e.Entity as IConnection;
+      if (connection != null && !this.connectionInfoConnectionMapping.ContainsSecond(connection)) {
+        IConnector connectorFrom = connection.From.AttachedTo;
+        IConnector connectorTo = connection.To.AttachedTo;
+        this.RemoveConnection(connection); //is added again by the model events
+
+        if (connectorFrom != null && connectorTo != null) {
+          IShape shapeFrom = (IShape)connectorFrom.Parent;
+          IShape shapeTo = (IShape)connectorTo.Parent;
+          IShapeInfo shapeInfoFrom = this.shapeInfoShapeMapping.GetBySecond(shapeFrom);
+          IShapeInfo shapeInfoTo = this.shapeInfoShapeMapping.GetBySecond(shapeTo);
+          string connectorFromName = connectorFrom.Name;
+          string connectorToName = connectorTo.Name;
+
+          if (shapeInfoFrom != shapeInfoTo) //avoid self references
+            this.Content.AddConnectionInfo(new ConnectionInfo(shapeInfoFrom, connectorFromName, shapeInfoTo, connectorToName));
+        }
+      }
+    }
+
+    private void graphVisualization_OnEntityRemoved(object sender, EntityEventArgs e) {
+      IShape shape = e.Entity as IShape;
+      if (shape != null && this.shapeInfoShapeMapping.ContainsSecond(shape)) {
+        IShapeInfo shapeInfo = this.shapeInfoShapeMapping.GetBySecond(shape);
+        this.Content.RemoveShapeInfo(shapeInfo);
+      }
+
+      IConnection connection = e.Entity as IConnection;
+      if (connection != null && this.connectionInfoConnectionMapping.ContainsSecond(connection)) {
+        IConnectionInfo connectionInfo = connectionInfoConnectionMapping.GetBySecond(connection);
+        this.Content.RemoveConnectionInfo(connectionInfo);
+      }
+    }
+    #endregion
+
+    public void RelayoutGraph() {
+      if (this.shapeInfoShapeMapping.Count > 0
+        && this.connectionInfoConnectionMapping.Count > 0
+        && this.Content.InitialShape != null) { //otherwise the layout does not work
+        string layoutName = "Standard TreeLayout";
+        this.graphVisualization.Controller.RunActivity(layoutName);
+        this.graphVisualization.Invalidate();
+
+        //fix to avoid negative shape positions after layouting
+        Thread.Sleep(300);
+        int minX = this.graphVisualization.Controller.Model.Shapes.Min(s => s.Location.X);
+        int shiftX = minX < 0 ? Math.Abs(minX) + 50 : 0;
+        int minY = this.graphVisualization.Controller.Model.Shapes.Min(s => s.Location.Y);
+        int shiftY = minY < 0 ? Math.Abs(minY) + 50 : 0;
+        if (minX < 0 || minY < 0) {
+          foreach (IShape s in this.Controller.Model.Shapes)
+            s.MoveBy(new Point(shiftX, shiftY));
+        }
+      }
+    }
+  }
+}
Index: /branches/histogram/HeuristicLab.Operators.Views.GraphVisualization.Views/3.3/HeuristicLab.Operators.Views.GraphVisualization.Views-3.3.csproj
===================================================================
--- /branches/histogram/HeuristicLab.Operators.Views.GraphVisualization.Views/3.3/HeuristicLab.Operators.Views.GraphVisualization.Views-3.3.csproj	(revision 6046)
+++ /branches/histogram/HeuristicLab.Operators.Views.GraphVisualization.Views/3.3/HeuristicLab.Operators.Views.GraphVisualization.Views-3.3.csproj	(revision 6046)
@@ -0,0 +1,215 @@
+﻿<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <PropertyGroup>
+    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+    <ProductVersion>8.0.30703</ProductVersion>
+    <SchemaVersion>2.0</SchemaVersion>
+    <ProjectGuid>{0C39A349-1979-419A-89BD-E4E2F26BD287}</ProjectGuid>
+    <OutputType>Library</OutputType>
+    <AppDesignerFolder>Properties</AppDesignerFolder>
+    <RootNamespace>HeuristicLab.Operators.Views.GraphVisualization.Views</RootNamespace>
+    <AssemblyName>HeuristicLab.Operators.Views.GraphVisualization.Views-3.3</AssemblyName>
+    <TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
+    <FileAlignment>512</FileAlignment>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+    <DebugSymbols>true</DebugSymbols>
+    <DebugType>full</DebugType>
+    <Optimize>false</Optimize>
+    <OutputPath>bin\Debug\</OutputPath>
+    <DefineConstants>DEBUG;TRACE</DefineConstants>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+    <DebugType>pdbonly</DebugType>
+    <Optimize>true</Optimize>
+    <OutputPath>bin\Release\</OutputPath>
+    <DefineConstants>TRACE</DefineConstants>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+  </PropertyGroup>
+  <PropertyGroup>
+    <SignAssembly>true</SignAssembly>
+  </PropertyGroup>
+  <PropertyGroup>
+    <AssemblyOriginatorKeyFile>HeuristicLab.snk</AssemblyOriginatorKeyFile>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|x86'">
+    <DebugSymbols>true</DebugSymbols>
+    <OutputPath>bin\x86\Debug\</OutputPath>
+    <DefineConstants>DEBUG;TRACE</DefineConstants>
+    <DebugType>full</DebugType>
+    <PlatformTarget>x86</PlatformTarget>
+    <CodeAnalysisLogFile>bin\Debug\Plugin.dll.CodeAnalysisLog.xml</CodeAnalysisLogFile>
+    <CodeAnalysisUseTypeNameInSuppression>true</CodeAnalysisUseTypeNameInSuppression>
+    <CodeAnalysisModuleSuppressionsFile>GlobalSuppressions.cs</CodeAnalysisModuleSuppressionsFile>
+    <ErrorReport>prompt</ErrorReport>
+    <CodeAnalysisRuleSet>MinimumRecommendedRules.ruleset</CodeAnalysisRuleSet>
+    <CodeAnalysisRuleSetDirectories>;C:\Program Files (x86)\Microsoft Visual Studio 10.0\Team Tools\Static Analysis Tools\\Rule Sets</CodeAnalysisRuleSetDirectories>
+    <CodeAnalysisIgnoreBuiltInRuleSets>false</CodeAnalysisIgnoreBuiltInRuleSets>
+    <CodeAnalysisRuleDirectories>;C:\Program Files (x86)\Microsoft Visual Studio 10.0\Team Tools\Static Analysis Tools\FxCop\\Rules</CodeAnalysisRuleDirectories>
+    <CodeAnalysisIgnoreBuiltInRules>false</CodeAnalysisIgnoreBuiltInRules>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Release|x86'">
+    <OutputPath>bin\x86\Release\</OutputPath>
+    <DefineConstants>TRACE</DefineConstants>
+    <Optimize>true</Optimize>
+    <DebugType>pdbonly</DebugType>
+    <PlatformTarget>x86</PlatformTarget>
+    <CodeAnalysisLogFile>bin\Release\Plugin.dll.CodeAnalysisLog.xml</CodeAnalysisLogFile>
+    <CodeAnalysisUseTypeNameInSuppression>true</CodeAnalysisUseTypeNameInSuppression>
+    <CodeAnalysisModuleSuppressionsFile>GlobalSuppressions.cs</CodeAnalysisModuleSuppressionsFile>
+    <ErrorReport>prompt</ErrorReport>
+    <CodeAnalysisRuleSet>MinimumRecommendedRules.ruleset</CodeAnalysisRuleSet>
+    <CodeAnalysisRuleSetDirectories>;C:\Program Files (x86)\Microsoft Visual Studio 10.0\Team Tools\Static Analysis Tools\\Rule Sets</CodeAnalysisRuleSetDirectories>
+    <CodeAnalysisRuleDirectories>;C:\Program Files (x86)\Microsoft Visual Studio 10.0\Team Tools\Static Analysis Tools\FxCop\\Rules</CodeAnalysisRuleDirectories>
+    <CodeAnalysisIgnoreBuiltInRules>true</CodeAnalysisIgnoreBuiltInRules>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|x64'">
+    <DebugSymbols>true</DebugSymbols>
+    <OutputPath>bin\x64\Debug\</OutputPath>
+    <DefineConstants>DEBUG;TRACE</DefineConstants>
+    <DebugType>full</DebugType>
+    <PlatformTarget>x64</PlatformTarget>
+    <CodeAnalysisLogFile>bin\Debug\Plugin.dll.CodeAnalysisLog.xml</CodeAnalysisLogFile>
+    <CodeAnalysisUseTypeNameInSuppression>true</CodeAnalysisUseTypeNameInSuppression>
+    <CodeAnalysisModuleSuppressionsFile>GlobalSuppressions.cs</CodeAnalysisModuleSuppressionsFile>
+    <ErrorReport>prompt</ErrorReport>
+    <CodeAnalysisRuleSet>MinimumRecommendedRules.ruleset</CodeAnalysisRuleSet>
+    <CodeAnalysisRuleSetDirectories>;C:\Program Files (x86)\Microsoft Visual Studio 10.0\Team Tools\Static Analysis Tools\\Rule Sets</CodeAnalysisRuleSetDirectories>
+    <CodeAnalysisIgnoreBuiltInRuleSets>false</CodeAnalysisIgnoreBuiltInRuleSets>
+    <CodeAnalysisRuleDirectories>;C:\Program Files (x86)\Microsoft Visual Studio 10.0\Team Tools\Static Analysis Tools\FxCop\\Rules</CodeAnalysisRuleDirectories>
+    <CodeAnalysisIgnoreBuiltInRules>false</CodeAnalysisIgnoreBuiltInRules>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Release|x64'">
+    <OutputPath>bin\x64\Release\</OutputPath>
+    <DefineConstants>TRACE</DefineConstants>
+    <Optimize>true</Optimize>
+    <DebugType>pdbonly</DebugType>
+    <PlatformTarget>x64</PlatformTarget>
+    <CodeAnalysisLogFile>bin\Release\Plugin.dll.CodeAnalysisLog.xml</CodeAnalysisLogFile>
+    <CodeAnalysisUseTypeNameInSuppression>true</CodeAnalysisUseTypeNameInSuppression>
+    <CodeAnalysisModuleSuppressionsFile>GlobalSuppressions.cs</CodeAnalysisModuleSuppressionsFile>
+    <ErrorReport>prompt</ErrorReport>
+    <CodeAnalysisRuleSet>MinimumRecommendedRules.ruleset</CodeAnalysisRuleSet>
+    <CodeAnalysisRuleSetDirectories>;C:\Program Files (x86)\Microsoft Visual Studio 10.0\Team Tools\Static Analysis Tools\\Rule Sets</CodeAnalysisRuleSetDirectories>
+    <CodeAnalysisIgnoreBuiltInRuleSets>true</CodeAnalysisIgnoreBuiltInRuleSets>
+    <CodeAnalysisRuleDirectories>;C:\Program Files (x86)\Microsoft Visual Studio 10.0\Team Tools\Static Analysis Tools\FxCop\\Rules</CodeAnalysisRuleDirectories>
+    <CodeAnalysisIgnoreBuiltInRules>true</CodeAnalysisIgnoreBuiltInRules>
+    <CodeAnalysisFailOnMissingRules>false</CodeAnalysisFailOnMissingRules>
+  </PropertyGroup>
+  <ItemGroup>
+    <Reference Include="System" />
+    <Reference Include="System.Core" />
+    <Reference Include="System.Data" />
+    <Reference Include="System.Data.DataSetExtensions" />
+    <Reference Include="System.Drawing" />
+    <Reference Include="System.Windows.Forms" />
+    <Reference Include="System.Xml" />
+    <Reference Include="System.Xml.Linq" />
+  </ItemGroup>
+  <ItemGroup>
+    <Compile Include="ShapeInfoExtensions.cs" />
+    <None Include="Plugin.cs.frame" />
+    <Compile Include="GraphVisualizationInfoView.cs">
+      <SubType>UserControl</SubType>
+    </Compile>
+    <Compile Include="GraphVisualizationInfoView.Designer.cs">
+      <DependentUpon>GraphVisualizationInfoView.cs</DependentUpon>
+    </Compile>
+    <Compile Include="OperatorGraphView.cs">
+      <SubType>UserControl</SubType>
+    </Compile>
+    <Compile Include="OperatorGraphView.Designer.cs">
+      <DependentUpon>OperatorGraphView.cs</DependentUpon>
+    </Compile>
+    <Compile Include="OperatorShape.cs" />
+    <Compile Include="Plugin.cs" />
+    <Compile Include="Properties\AssemblyInfo.cs" />
+    <None Include="Properties\AssemblyInfo.frame" />
+  </ItemGroup>
+  <ItemGroup>
+    <None Include="HeuristicLab.snk" />
+  </ItemGroup>
+  <ItemGroup>
+    <ProjectReference Include="..\..\HeuristicLab.Collections\3.3\HeuristicLab.Collections-3.3.csproj">
+      <Project>{958B43BC-CC5C-4FA2-8628-2B3B01D890B6}</Project>
+      <Name>HeuristicLab.Collections-3.3</Name>
+    </ProjectReference>
+    <ProjectReference Include="..\..\HeuristicLab.Common.Resources\3.3\HeuristicLab.Common.Resources-3.3.csproj">
+      <Project>{0E27A536-1C4A-4624-A65E-DC4F4F23E3E1}</Project>
+      <Name>HeuristicLab.Common.Resources-3.3</Name>
+    </ProjectReference>
+    <ProjectReference Include="..\..\HeuristicLab.Common\3.3\HeuristicLab.Common-3.3.csproj">
+      <Project>{A9AD58B9-3EF9-4CC1-97E5-8D909039FF5C}</Project>
+      <Name>HeuristicLab.Common-3.3</Name>
+    </ProjectReference>
+    <ProjectReference Include="..\..\HeuristicLab.Core.Views\3.3\HeuristicLab.Core.Views-3.3.csproj">
+      <Project>{E226881D-315F-423D-B419-A766FE0D8685}</Project>
+      <Name>HeuristicLab.Core.Views-3.3</Name>
+    </ProjectReference>
+    <ProjectReference Include="..\..\HeuristicLab.Core\3.3\HeuristicLab.Core-3.3.csproj">
+      <Project>{C36BD924-A541-4A00-AFA8-41701378DDC5}</Project>
+      <Name>HeuristicLab.Core-3.3</Name>
+    </ProjectReference>
+    <ProjectReference Include="..\..\HeuristicLab.ExtLibs\HeuristicLab.Netron\3.0.2672.12446\HeuristicLab.Netron-3.0.2672.12446\HeuristicLab.Netron-3.0.2672.12446.csproj">
+      <Project>{BB994448-2B21-4564-BB2E-38D8FFF8CF18}</Project>
+      <Name>HeuristicLab.Netron-3.0.2672.12446 %28HeuristicLab.ExtLibs\HeuristicLab.Netron\HeuristicLab.Netron-3.0.2672.12446\HeuristicLab.Netron-3.0.2672.12446%29</Name>
+    </ProjectReference>
+    <ProjectReference Include="..\..\HeuristicLab.ExtLibs\HeuristicLab.Netron\3.0.2672.12446\Netron.Diagramming.Core-3.0.2672.12446\Netron.Diagramming.Core-3.0.2672.12446.csproj">
+      <Project>{96AEBBEE-4203-45F3-BCF5-7B73BF256BDA}</Project>
+      <Name>Netron.Diagramming.Core-3.0.2672.12446</Name>
+    </ProjectReference>
+    <ProjectReference Include="..\..\HeuristicLab.MainForm.WindowsForms\3.3\HeuristicLab.MainForm.WindowsForms-3.3.csproj">
+      <Project>{AB687BBE-1BFE-476B-906D-44237135431D}</Project>
+      <Name>HeuristicLab.MainForm.WindowsForms-3.3</Name>
+    </ProjectReference>
+    <ProjectReference Include="..\..\HeuristicLab.MainForm\3.3\HeuristicLab.MainForm-3.3.csproj">
+      <Project>{3BD61258-31DA-4B09-89C0-4F71FEF5F05A}</Project>
+      <Name>HeuristicLab.MainForm-3.3</Name>
+    </ProjectReference>
+    <ProjectReference Include="..\..\HeuristicLab.Operators.Views.GraphVisualization\3.3\HeuristicLab.Operators.Views.GraphVisualization-3.3.csproj">
+      <Project>{57F38579-409D-4DD8-AB19-3F2C4A665126}</Project>
+      <Name>HeuristicLab.Operators.Views.GraphVisualization-3.3</Name>
+    </ProjectReference>
+    <ProjectReference Include="..\..\HeuristicLab.Operators.Views\3.3\HeuristicLab.Operators.Views-3.3.csproj">
+      <Project>{C49CB749-8B24-4628-8003-E86475749410}</Project>
+      <Name>HeuristicLab.Operators.Views-3.3</Name>
+    </ProjectReference>
+    <ProjectReference Include="..\..\HeuristicLab.Operators\3.3\HeuristicLab.Operators-3.3.csproj">
+      <Project>{23DA7FF4-D5B8-41B6-AA96-F0561D24F3EE}</Project>
+      <Name>HeuristicLab.Operators-3.3</Name>
+    </ProjectReference>
+    <ProjectReference Include="..\..\HeuristicLab.Optimizer\3.3\HeuristicLab.Optimizer-3.3.csproj">
+      <Project>{C664305E-497C-4533-A140-967DEDB05C19}</Project>
+      <Name>HeuristicLab.Optimizer-3.3</Name>
+    </ProjectReference>
+    <ProjectReference Include="..\..\HeuristicLab.PluginInfrastructure\3.3\HeuristicLab.PluginInfrastructure-3.3.csproj">
+      <Project>{94186A6A-5176-4402-AE83-886557B53CCA}</Project>
+      <Name>HeuristicLab.PluginInfrastructure-3.3</Name>
+    </ProjectReference>
+  </ItemGroup>
+  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
+  <PropertyGroup>
+    <PreBuildEvent>set Path=%25Path%25;$(ProjectDir);$(SolutionDir)
+set ProjectDir=$(ProjectDir)
+set SolutionDir=$(SolutionDir)
+set Outdir=$(Outdir)
+
+call PreBuildEvent.cmd
+SubWCRev "%25ProjectDir%25\" "%25ProjectDir%25\Plugin.cs.frame" "%25ProjectDir%25\Plugin.cs"</PreBuildEvent>
+  </PropertyGroup>
+  <PropertyGroup>
+    <PostBuildEvent>
+    </PostBuildEvent>
+  </PropertyGroup>
+  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. 
+       Other similar extension points exist, see Microsoft.Common.targets.
+  <Target Name="BeforeBuild">
+  </Target>
+  <Target Name="AfterBuild">
+  </Target>
+  -->
+</Project>
Index: /branches/histogram/HeuristicLab.Operators.Views.GraphVisualization.Views/3.3/OperatorGraphView.Designer.cs
===================================================================
--- /branches/histogram/HeuristicLab.Operators.Views.GraphVisualization.Views/3.3/OperatorGraphView.Designer.cs	(revision 6046)
+++ /branches/histogram/HeuristicLab.Operators.Views.GraphVisualization.Views/3.3/OperatorGraphView.Designer.cs	(revision 6046)
@@ -0,0 +1,296 @@
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2011 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
+
+namespace HeuristicLab.Operators.Views.GraphVisualization.Views {
+  partial class OperatorGraphView {
+    /// <summary> 
+    /// Required designer variable.
+    /// </summary>
+    private System.ComponentModel.IContainer components = null;
+
+    /// <summary> 
+    /// Clean up any resources being used.
+    /// </summary>
+    /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
+    protected override void Dispose(bool disposing) {
+      if (disposing && (components != null)) {
+        components.Dispose();
+      }
+      base.Dispose(disposing);
+    }
+
+    #region Component Designer generated code
+
+    /// <summary> 
+    /// Required method for Designer support - do not modify 
+    /// the contents of this method with the code editor.
+    /// </summary>
+    private void InitializeComponent() {
+      this.components = new System.ComponentModel.Container();
+      System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(OperatorGraphView));
+      this.graphVisualizationInfoView = new HeuristicLab.Operators.Views.GraphVisualization.Views.GraphVisualizationInfoView();
+      this.shapeContextMenu = new System.Windows.Forms.ContextMenuStrip(this.components);
+      this.openViewToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
+      this.initialToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
+      this.breakPointToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
+      this.splitContainer = new System.Windows.Forms.SplitContainer();
+      this.screenshotButton = new System.Windows.Forms.Button();
+      this.zoomOutButton = new System.Windows.Forms.Button();
+      this.zoomInButton = new System.Windows.Forms.Button();
+      this.zoomToFitButton = new System.Windows.Forms.Button();
+      this.relayoutButton = new System.Windows.Forms.Button();
+      this.connectButton = new System.Windows.Forms.Button();
+      this.panButton = new System.Windows.Forms.Button();
+      this.selectButton = new System.Windows.Forms.Button();
+      this.detailsGroupBox = new System.Windows.Forms.GroupBox();
+      this.detailsViewHost = new HeuristicLab.MainForm.WindowsForms.ViewHost();
+      this.buttonToolTip = new System.Windows.Forms.ToolTip(this.components);
+      this.shapeContextMenu.SuspendLayout();
+      this.splitContainer.Panel1.SuspendLayout();
+      this.splitContainer.Panel2.SuspendLayout();
+      this.splitContainer.SuspendLayout();
+      this.detailsGroupBox.SuspendLayout();
+      this.SuspendLayout();
+      // 
+      // graphVisualizationInfoView
+      // 
+      this.graphVisualizationInfoView.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
+                  | System.Windows.Forms.AnchorStyles.Left)
+                  | System.Windows.Forms.AnchorStyles.Right)));
+      this.graphVisualizationInfoView.Content = null;
+      this.graphVisualizationInfoView.Location = new System.Drawing.Point(3, 30);
+      this.graphVisualizationInfoView.Name = "graphVisualizationInfoView";
+      this.graphVisualizationInfoView.ReadOnly = false;
+      this.graphVisualizationInfoView.Size = new System.Drawing.Size(662, 248);
+      this.graphVisualizationInfoView.TabIndex = 0;
+      // 
+      // shapeContextMenu
+      // 
+      this.shapeContextMenu.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
+            this.openViewToolStripMenuItem,
+            this.initialToolStripMenuItem,
+            this.breakPointToolStripMenuItem});
+      this.shapeContextMenu.Name = "shapeContextMenu";
+      this.shapeContextMenu.Size = new System.Drawing.Size(154, 70);
+      this.shapeContextMenu.Opening += new System.ComponentModel.CancelEventHandler(this.shapeContextMenu_Opening);
+      // 
+      // openViewToolStripMenuItem
+      // 
+      this.openViewToolStripMenuItem.Font = new System.Drawing.Font("Segoe UI", 9F, System.Drawing.FontStyle.Bold);
+      this.openViewToolStripMenuItem.Name = "openViewToolStripMenuItem";
+      this.openViewToolStripMenuItem.Size = new System.Drawing.Size(153, 22);
+      this.openViewToolStripMenuItem.Text = "Open View";
+      this.openViewToolStripMenuItem.Click += new System.EventHandler(this.openViewToolStripMenuItem_Click);
+      // 
+      // initialToolStripMenuItem
+      // 
+      this.initialToolStripMenuItem.Name = "initialToolStripMenuItem";
+      this.initialToolStripMenuItem.Size = new System.Drawing.Size(153, 22);
+      this.initialToolStripMenuItem.Text = "Initial Operator";
+      this.initialToolStripMenuItem.Click += new System.EventHandler(this.initialOperatorToolStripMenuItem_Click);
+      // 
+      // breakPointToolStripMenuItem
+      // 
+      this.breakPointToolStripMenuItem.Name = "breakPointToolStripMenuItem";
+      this.breakPointToolStripMenuItem.Size = new System.Drawing.Size(153, 22);
+      this.breakPointToolStripMenuItem.Text = "Breakpoint";
+      this.breakPointToolStripMenuItem.Click += new System.EventHandler(this.breakPointToolStripMenuItem_Click);
+      // 
+      // splitContainer
+      // 
+      this.splitContainer.Dock = System.Windows.Forms.DockStyle.Fill;
+      this.splitContainer.Location = new System.Drawing.Point(0, 0);
+      this.splitContainer.Name = "splitContainer";
+      this.splitContainer.Orientation = System.Windows.Forms.Orientation.Horizontal;
+      // 
+      // splitContainer.Panel1
+      // 
+      this.splitContainer.Panel1.Controls.Add(this.screenshotButton);
+      this.splitContainer.Panel1.Controls.Add(this.zoomOutButton);
+      this.splitContainer.Panel1.Controls.Add(this.zoomInButton);
+      this.splitContainer.Panel1.Controls.Add(this.zoomToFitButton);
+      this.splitContainer.Panel1.Controls.Add(this.relayoutButton);
+      this.splitContainer.Panel1.Controls.Add(this.connectButton);
+      this.splitContainer.Panel1.Controls.Add(this.panButton);
+      this.splitContainer.Panel1.Controls.Add(this.selectButton);
+      this.splitContainer.Panel1.Controls.Add(this.graphVisualizationInfoView);
+      // 
+      // splitContainer.Panel2
+      // 
+      this.splitContainer.Panel2.Controls.Add(this.detailsGroupBox);
+      this.splitContainer.Size = new System.Drawing.Size(665, 444);
+      this.splitContainer.SplitterDistance = 279;
+      this.splitContainer.TabIndex = 1;
+      // 
+      // screenshotButton
+      // 
+      this.screenshotButton.Image = HeuristicLab.Common.Resources.VSImageLibrary.Image;
+      this.screenshotButton.Location = new System.Drawing.Point(243, 3);
+      this.screenshotButton.Name = "screenshotButton";
+      this.screenshotButton.Size = new System.Drawing.Size(24, 24);
+      this.screenshotButton.TabIndex = 8;
+      this.buttonToolTip.SetToolTip(this.screenshotButton, "Screenshot");
+      this.screenshotButton.UseVisualStyleBackColor = true;
+      this.screenshotButton.Click += new System.EventHandler(this.screenshotButton_Click);
+      // 
+      // zoomOutButton
+      // 
+      this.zoomOutButton.Image = HeuristicLab.Common.Resources.VSImageLibrary.ZoomOut;
+      this.zoomOutButton.Location = new System.Drawing.Point(213, 3);
+      this.zoomOutButton.Name = "zoomOutButton";
+      this.zoomOutButton.Size = new System.Drawing.Size(24, 24);
+      this.zoomOutButton.TabIndex = 7;
+      this.buttonToolTip.SetToolTip(this.zoomOutButton, "Zoom Out");
+      this.zoomOutButton.UseVisualStyleBackColor = true;
+      this.zoomOutButton.Click += new System.EventHandler(this.zoomOutButton_Click);
+      // 
+      // zoomInButton
+      // 
+      this.zoomInButton.Image = HeuristicLab.Common.Resources.VSImageLibrary.ZoomIn;
+      this.zoomInButton.Location = new System.Drawing.Point(183, 3);
+      this.zoomInButton.Name = "zoomInButton";
+      this.zoomInButton.Size = new System.Drawing.Size(24, 24);
+      this.zoomInButton.TabIndex = 6;
+      this.buttonToolTip.SetToolTip(this.zoomInButton, "Zoom In");
+      this.zoomInButton.UseVisualStyleBackColor = true;
+      this.zoomInButton.Click += new System.EventHandler(this.zoomInButton_Click);
+      // 
+      // zoomAreaButton
+      // 
+      this.zoomToFitButton.Image = HeuristicLab.Common.Resources.VSImageLibrary.ActualSize;
+      this.zoomToFitButton.Location = new System.Drawing.Point(153, 3);
+      this.zoomToFitButton.Name = "zoomAreaButton";
+      this.zoomToFitButton.Size = new System.Drawing.Size(24, 24);
+      this.zoomToFitButton.TabIndex = 5;
+      this.buttonToolTip.SetToolTip(this.zoomToFitButton, "Zoom to Fit");
+      this.zoomToFitButton.UseVisualStyleBackColor = true;
+      this.zoomToFitButton.Click += new System.EventHandler(this.zoomAreaButton_Click);
+      // 
+      // relayoutButton
+      // 
+      this.relayoutButton.Image = HeuristicLab.Common.Resources.VSImageLibrary.RefreshDocument;
+      this.relayoutButton.Location = new System.Drawing.Point(123, 3);
+      this.relayoutButton.Name = "relayoutButton";
+      this.relayoutButton.Size = new System.Drawing.Size(24, 24);
+      this.relayoutButton.TabIndex = 4;
+      this.buttonToolTip.SetToolTip(this.relayoutButton, "Relayout Graph");
+      this.relayoutButton.UseVisualStyleBackColor = true;
+      this.relayoutButton.Click += new System.EventHandler(this.relayoutButton_Click);
+      // 
+      // connectButton
+      // 
+      this.connectButton.Image = HeuristicLab.Common.Resources.VSImageLibrary.Interface;
+      this.connectButton.Location = new System.Drawing.Point(63, 3);
+      this.connectButton.Name = "connectButton";
+      this.connectButton.Size = new System.Drawing.Size(24, 24);
+      this.connectButton.TabIndex = 3;
+      this.buttonToolTip.SetToolTip(this.connectButton, "Connection Tool");
+      this.connectButton.UseVisualStyleBackColor = true;
+      this.connectButton.Click += new System.EventHandler(this.connectButton_Click);
+      // 
+      // panButton
+      // 
+      this.panButton.Image = HeuristicLab.Common.Resources.VSImageLibrary.Breakpoint;
+      this.panButton.Location = new System.Drawing.Point(33, 3);
+      this.panButton.Name = "panButton";
+      this.panButton.Size = new System.Drawing.Size(24, 24);
+      this.panButton.TabIndex = 2;
+      this.buttonToolTip.SetToolTip(this.panButton, "Pan Tool");
+      this.panButton.UseVisualStyleBackColor = true;
+      this.panButton.Click += new System.EventHandler(this.panButton_Click);
+      // 
+      // selectButton
+      // 
+      this.selectButton.Image = HeuristicLab.Common.Resources.VSImageLibrary.Pointer;
+      this.selectButton.Location = new System.Drawing.Point(3, 3);
+      this.selectButton.Name = "selectButton";
+      this.selectButton.Size = new System.Drawing.Size(24, 24);
+      this.selectButton.TabIndex = 1;
+      this.buttonToolTip.SetToolTip(this.selectButton, "Select Tool");
+      this.selectButton.UseVisualStyleBackColor = true;
+      this.selectButton.Click += new System.EventHandler(this.selectButton_Click);
+      // 
+      // detailsGroupBox
+      // 
+      this.detailsGroupBox.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
+                  | System.Windows.Forms.AnchorStyles.Left)
+                  | System.Windows.Forms.AnchorStyles.Right)));
+      this.detailsGroupBox.Controls.Add(this.detailsViewHost);
+      this.detailsGroupBox.Location = new System.Drawing.Point(0, 0);
+      this.detailsGroupBox.Name = "detailsGroupBox";
+      this.detailsGroupBox.Size = new System.Drawing.Size(665, 161);
+      this.detailsGroupBox.TabIndex = 0;
+      this.detailsGroupBox.TabStop = false;
+      this.detailsGroupBox.Text = "Details";
+      // 
+      // detailsViewHost
+      // 
+      this.detailsViewHost.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
+                  | System.Windows.Forms.AnchorStyles.Left)
+                  | System.Windows.Forms.AnchorStyles.Right)));
+      this.detailsViewHost.Content = null;
+      this.detailsViewHost.Location = new System.Drawing.Point(3, 16);
+      this.detailsViewHost.Name = "detailsViewHost";
+      this.detailsViewHost.ReadOnly = false;
+      this.detailsViewHost.Size = new System.Drawing.Size(659, 142);
+      this.detailsViewHost.TabIndex = 0;
+      this.detailsViewHost.ViewType = null;
+      // 
+      // OperatorGraphView
+      // 
+      this.DragOver += new System.Windows.Forms.DragEventHandler(this.OperatorGraphView_DragEnterOver);
+      this.DragDrop += new System.Windows.Forms.DragEventHandler(this.OperatorGraphView_DragDrop);
+      this.DragEnter += new System.Windows.Forms.DragEventHandler(this.OperatorGraphView_DragEnterOver);
+      this.AllowDrop = true;
+      this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
+      this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+      this.Controls.Add(this.splitContainer);
+      this.Name = "OperatorGraphView";
+      this.Size = new System.Drawing.Size(665, 444);
+      this.shapeContextMenu.ResumeLayout(false);
+      this.splitContainer.Panel1.ResumeLayout(false);
+      this.splitContainer.Panel2.ResumeLayout(false);
+      this.splitContainer.ResumeLayout(false);
+      this.detailsGroupBox.ResumeLayout(false);
+      this.ResumeLayout(false);
+
+    }
+    #endregion
+
+    private GraphVisualizationInfoView graphVisualizationInfoView;
+    private System.Windows.Forms.ContextMenuStrip shapeContextMenu;
+    private System.Windows.Forms.ToolStripMenuItem openViewToolStripMenuItem;
+    private System.Windows.Forms.ToolStripMenuItem initialToolStripMenuItem;
+    private System.Windows.Forms.ToolStripMenuItem breakPointToolStripMenuItem;
+    private System.Windows.Forms.SplitContainer splitContainer;
+    private System.Windows.Forms.GroupBox detailsGroupBox;
+    private HeuristicLab.MainForm.WindowsForms.ViewHost detailsViewHost;
+    private System.Windows.Forms.Button selectButton;
+    private System.Windows.Forms.Button zoomOutButton;
+    private System.Windows.Forms.Button zoomInButton;
+    private System.Windows.Forms.Button zoomToFitButton;
+    private System.Windows.Forms.Button relayoutButton;
+    private System.Windows.Forms.Button connectButton;
+    private System.Windows.Forms.Button panButton;
+    private System.Windows.Forms.Button screenshotButton;
+    private System.Windows.Forms.ToolTip buttonToolTip;
+  }
+}
Index: /branches/histogram/HeuristicLab.Operators.Views.GraphVisualization.Views/3.3/OperatorGraphView.cs
===================================================================
--- /branches/histogram/HeuristicLab.Operators.Views.GraphVisualization.Views/3.3/OperatorGraphView.cs	(revision 6046)
+++ /branches/histogram/HeuristicLab.Operators.Views.GraphVisualization.Views/3.3/OperatorGraphView.cs	(revision 6046)
@@ -0,0 +1,310 @@
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2011 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;
+using System.Drawing;
+using System.Linq;
+using System.Windows.Forms;
+using HeuristicLab.Core;
+using HeuristicLab.MainForm;
+using HeuristicLab.MainForm.WindowsForms;
+using Netron.Diagramming.Core;
+
+namespace HeuristicLab.Operators.Views.GraphVisualization.Views {
+  [View("OperatorGraph View (Chart)")]
+  [Content(typeof(OperatorGraph), true)]
+  public partial class OperatorGraphView : AsynchronousContentView {
+    public OperatorGraphView() {
+      InitializeComponent();
+
+      this.graphVisualizationInfoView.Controller.OnShowContextMenu += new EventHandler<EntityMenuEventArgs>(Controller_OnShowContextMenu);
+      this.graphVisualizationInfoView.Controller.Model.Selection.OnNewSelection += new EventHandler(Controller_SelectionChanged);
+      this.graphVisualizationInfoView.Controller.OnMouseDown += new EventHandler<MouseEventArgs>(Controller_OnMouseDown);
+      foreach (ITool tool in this.graphVisualizationInfoView.Controller.Tools) {
+        tool.OnToolActivate += new EventHandler<ToolEventArgs>(tool_OnToolActivate);
+        tool.OnToolDeactivate += new EventHandler<ToolEventArgs>(tool_OnToolDeactivate);
+      }
+    }
+
+    public new OperatorGraph Content {
+      get { return (OperatorGraph)base.Content; }
+      set { base.Content = value; }
+    }
+
+    protected override void OnContentChanged() {
+      if (Content != null) {
+        bool createdVisualizationInfo = false;
+        if (this.VisualizationInfo == null) {
+          this.VisualizationInfo = new OperatorGraphVisualizationInfo(this.Content);
+          createdVisualizationInfo = true;
+        }
+        this.graphVisualizationInfoView.Content = this.VisualizationInfo;
+        if (createdVisualizationInfo)
+          this.graphVisualizationInfoView.RelayoutGraph();
+      } else {
+        this.graphVisualizationInfoView.Content = null;
+      }
+    }
+
+    protected override void SetEnabledStateOfControls() {
+      base.SetEnabledStateOfControls();
+      if (Content == null) {
+        selectButton.Enabled = false;
+        panButton.Enabled = false;
+        relayoutButton.Enabled = false;
+        zoomToFitButton.Enabled = false;
+        zoomInButton.Enabled = false;
+        zoomOutButton.Enabled = false;
+        screenshotButton.Enabled = false;
+        detailsViewHost.Enabled = false;
+        connectButton.Enabled = false;
+      } else {
+        selectButton.Enabled = true;
+        panButton.Enabled = true;
+        relayoutButton.Enabled = true;
+        zoomToFitButton.Enabled = true;
+        zoomInButton.Enabled = true;
+        zoomOutButton.Enabled = true;
+        screenshotButton.Enabled = true;
+        detailsViewHost.Enabled = true;
+        connectButton.Enabled = !ReadOnly;
+      }
+    }
+
+    private OperatorGraphVisualizationInfo VisualizationInfo {
+      get { return Content.VisualizationInfo as OperatorGraphVisualizationInfo; }
+      set { this.Content.VisualizationInfo = value; }
+    }
+
+    private void Controller_SelectionChanged(object sender, EventArgs e) {
+      this.detailsViewHost.ViewType = null;
+      this.detailsViewHost.Content = null;
+
+      CollectionBase<IDiagramEntity> selectedObjects = this.graphVisualizationInfoView.Controller.Model.Selection.SelectedItems;
+      if (selectedObjects.Count == 1) {
+        IShape shape = selectedObjects[0] as IShape;
+        if (shape != null) {
+          IOperatorShapeInfo shapeInfo = shape.Tag as IOperatorShapeInfo;
+          IOperator op = this.VisualizationInfo.GetOperatorForShapeInfo(shapeInfo);
+          this.detailsViewHost.Content = op;
+        }
+      }
+
+      IConnector connector = this.graphVisualizationInfoView.Controller.Model.Selection.Connector;
+      if (connector != null) {
+        IShape shape = connector.Parent as IShape;
+        string connectorName = connector.Name;
+        if (shape == null) {
+          shape = connector.AttachedTo.Parent as IShape; //connection connector selected
+          connectorName = connector.AttachedTo.Name;
+        }
+        if (shape != null) {
+          IOperatorShapeInfo shapeInfo = shape.Tag as IOperatorShapeInfo;
+          IOperator op = this.VisualizationInfo.GetOperatorForShapeInfo(shapeInfo);
+          if (connectorName != "Predecessor") {
+            IParameter parameter = op.Parameters.Where(p => p.Name == connectorName).First();
+            this.detailsViewHost.ViewType = null;
+            this.detailsViewHost.Content = parameter;
+          }
+        }
+      }
+
+    }
+
+    private void Controller_OnMouseDown(object sender, MouseEventArgs e) {
+      if (e.Clicks >= 2) {
+        IShape shape = this.graphVisualizationInfoView.Controller.Model.GetShapeAt(e.Location);
+        if (shape != null) {
+          IOperatorShapeInfo shapeInfo = shape.Tag as IOperatorShapeInfo;
+          if (shapeInfo != null) {
+            IOperator op = this.VisualizationInfo.GetOperatorForShapeInfo(shapeInfo);
+            IContentView view = MainFormManager.MainForm.ShowContent(op);
+            if (view != null) {
+              view.ReadOnly = this.ReadOnly;
+              view.Locked = this.Locked;
+            }
+            HandledMouseEventArgs eventArgs = e as HandledMouseEventArgs;
+            if (eventArgs != null)
+              eventArgs.Handled = true;
+          }
+        }
+      }
+    }
+
+    #region context menu
+    private void Controller_OnShowContextMenu(object sender, EntityMenuEventArgs e) {
+      IShape shape = this.graphVisualizationInfoView.Controller.Model.GetShapeAt(e.MouseEventArgs.Location);
+      if (shape != null) {
+        IShapeInfo shapeInfo = shape.Tag as IShapeInfo;
+        this.shapeContextMenu.Tag = shapeInfo;
+        PointF worldPoint = this.graphVisualizationInfoView.Controller.View.WorldToView(e.MouseEventArgs.Location);
+        this.shapeContextMenu.Show(this, Point.Round(worldPoint));
+      }
+    }
+
+    private void shapeContextMenu_Opening(object sender, System.ComponentModel.CancelEventArgs e) {
+      IOperatorShapeInfo shapeInfo = this.shapeContextMenu.Tag as IOperatorShapeInfo;
+      if (shapeInfo != null) {
+        IOperator op = this.VisualizationInfo.GetOperatorForShapeInfo(shapeInfo);
+        this.initialToolStripMenuItem.Checked = this.Content.InitialOperator == op;
+        this.initialToolStripMenuItem.Enabled = !ReadOnly && !Locked;
+        this.breakPointToolStripMenuItem.Checked = op.Breakpoint;
+        this.breakPointToolStripMenuItem.Enabled = !Locked;
+      }
+    }
+
+    private void openViewToolStripMenuItem_Click(object sender, EventArgs e) {
+      IOperatorShapeInfo shapeInfo = this.shapeContextMenu.Tag as IOperatorShapeInfo;
+      if (shapeInfo != null) {
+        IOperator op = this.VisualizationInfo.GetOperatorForShapeInfo(shapeInfo);
+        IContentView view = MainFormManager.MainForm.ShowContent(op);
+        if (view != null) {
+          view.ReadOnly = this.ReadOnly;
+          view.Locked = this.Locked;
+        }
+      }
+    }
+
+    private void initialOperatorToolStripMenuItem_Click(object sender, EventArgs e) {
+      IOperatorShapeInfo shapeInfo = this.shapeContextMenu.Tag as IOperatorShapeInfo;
+      if (this.VisualizationInfo.InitialShape == shapeInfo)
+        this.VisualizationInfo.InitialShape = null;
+      else
+        this.VisualizationInfo.InitialShape = shapeInfo;
+    }
+
+    private void breakPointToolStripMenuItem_Click(object sender, EventArgs e) {
+      IOperatorShapeInfo shapeInfo = this.shapeContextMenu.Tag as IOperatorShapeInfo;
+      if (shapeInfo != null) {
+        IOperator op = this.VisualizationInfo.GetOperatorForShapeInfo(shapeInfo);
+        op.Breakpoint = !op.Breakpoint;
+      }
+    }
+    #endregion
+
+    #region drag and drop
+    private void OperatorGraphView_DragEnterOver(object sender, DragEventArgs e) {
+      e.Effect = DragDropEffects.None;
+      if (!ReadOnly && (e.Data.GetData(HeuristicLab.Common.Constants.DragDropDataFormat) is IOperator)) {
+        if ((e.KeyState & 32) == 32) e.Effect = DragDropEffects.Link;  // ALT key
+        else if ((e.KeyState & 4) == 4) e.Effect = DragDropEffects.Move;  // SHIFT key
+        else if (e.AllowedEffect.HasFlag(DragDropEffects.Copy)) e.Effect = DragDropEffects.Copy;
+        else if (e.AllowedEffect.HasFlag(DragDropEffects.Move)) e.Effect = DragDropEffects.Move;
+        else if (e.AllowedEffect.HasFlag(DragDropEffects.Link)) e.Effect = DragDropEffects.Link;
+      }
+    }
+
+    private void OperatorGraphView_DragDrop(object sender, DragEventArgs e) {
+      if (e.Effect != DragDropEffects.None) {
+        IOperator op = e.Data.GetData(HeuristicLab.Common.Constants.DragDropDataFormat) as IOperator;
+        if (e.Effect.HasFlag(DragDropEffects.Copy)) op = (IOperator)op.Clone();
+        IOperatorShapeInfo shapeInfo = OperatorShapeInfoFactory.CreateOperatorShapeInfo(op);
+        Point mouse = new Point(MousePosition.X, MousePosition.Y);
+        Point screen = this.graphVisualizationInfoView.PointToScreen(new Point(0, 0));
+        Point control = new Point(mouse.X - screen.X, mouse.Y - screen.Y);
+        PointF worldPoint = this.graphVisualizationInfoView.Controller.View.ViewToWorld(control);
+
+        if (worldPoint.X < 0)
+          worldPoint.X = 0;
+        if (worldPoint.Y < 0)
+          worldPoint.Y = 0;
+
+        shapeInfo.Location = Point.Round(worldPoint);
+        this.VisualizationInfo.AddShapeInfo(op, shapeInfo);
+      }
+    }
+    #endregion
+
+    private void tool_OnToolActivate(object sender, ToolEventArgs e) {
+      Button button = GetButtonForTool(e.Properties.Name);
+      if (button != null)
+        button.Enabled = false;
+    }
+
+    private void tool_OnToolDeactivate(object sender, ToolEventArgs e) {
+      Button button = GetButtonForTool(e.Properties.Name);
+      if (button != null)
+        button.Enabled = true;
+    }
+
+    private Button GetButtonForTool(string toolName) {
+      Button button = null;
+      switch (toolName) {
+        case ControllerBase.SelectionToolName:
+          button = this.selectButton;
+          break;
+        case ControllerBase.PanToolName:
+          button = this.panButton;
+          break;
+        case ControllerBase.ConnectionToolName:
+          button = this.connectButton;
+          break;
+        case ControllerBase.ZoomAreaToolName:
+          button = this.zoomToFitButton;
+          break;
+      }
+      return button;
+    }
+
+    private void selectButton_Click(object sender, EventArgs e) {
+      ITool tool = this.graphVisualizationInfoView.Controller.Tools.Where(t => t.Name == ControllerBase.SelectionToolName).First();
+      this.graphVisualizationInfoView.Controller.DeactivateAllTools();
+    }
+
+    private void panButton_Click(object sender, EventArgs e) {
+      this.graphVisualizationInfoView.Controller.ActivateTool(ControllerBase.PanToolName);
+    }
+
+    private void connectButton_Click(object sender, EventArgs e) {
+      this.graphVisualizationInfoView.Controller.ActivateTool(ControllerBase.ConnectionToolName);
+    }
+
+    private void relayoutButton_Click(object sender, EventArgs e) {
+      this.graphVisualizationInfoView.RelayoutGraph();
+    }
+
+    private void zoomAreaButton_Click(object sender, EventArgs e) {
+      this.graphVisualizationInfoView.Controller.View.ZoomFit();
+    }
+
+    private void zoomInButton_Click(object sender, EventArgs e) {
+      this.graphVisualizationInfoView.Controller.ActivateTool(ControllerBase.ZoomInToolName);
+    }
+
+    private void zoomOutButton_Click(object sender, EventArgs e) {
+      this.graphVisualizationInfoView.Controller.ActivateTool(ControllerBase.ZoomOutToolName);
+    }
+
+    private void screenshotButton_Click(object sender, EventArgs e) {
+      Bitmap bitmap = ImageExporter.FromBundle(new Bundle(this.graphVisualizationInfoView.Controller.Model.Paintables), this.graphVisualizationInfoView.Controller.View.Graphics);
+      SaveFileDialog saveFileDialog = new SaveFileDialog();
+      saveFileDialog.Title = "Save Screenshot";
+      saveFileDialog.DefaultExt = "png";
+      saveFileDialog.Filter = "Portable Network Graphics|*.png|All Files|*.*";
+      saveFileDialog.FilterIndex = 1;
+      saveFileDialog.AddExtension = true;
+
+      if (saveFileDialog.ShowDialog() == DialogResult.OK) {
+        bitmap.Save(saveFileDialog.FileName);
+      }
+    }
+  }
+}
Index: /branches/histogram/HeuristicLab.Operators.Views.GraphVisualization.Views/3.3/OperatorShape.cs
===================================================================
--- /branches/histogram/HeuristicLab.Operators.Views.GraphVisualization.Views/3.3/OperatorShape.cs	(revision 6046)
+++ /branches/histogram/HeuristicLab.Operators.Views.GraphVisualization.Views/3.3/OperatorShape.cs	(revision 6046)
@@ -0,0 +1,280 @@
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2011 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;
+using System.Collections.Generic;
+using System.Drawing;
+using System.Drawing.Drawing2D;
+using System.Linq;
+using HeuristicLab.Netron;
+using Netron.Diagramming.Core;
+
+namespace HeuristicLab.Operators.Views.GraphVisualization.Views {
+  public class OperatorShape : ComplexShapeBase {
+    private static int LABEL_HEIGHT = 16;
+    private static int LABEL_WIDTH = 180;
+    private static int LABEL_SPACING = 3;
+    private int headerHeight = 30;
+
+    private ExpandableIconMaterial expandIconMaterial;
+    public OperatorShape()
+      : base() {
+      this.Resizable = false;
+      this.additionalConnectors = new List<IConnector>();
+      this.labels = new List<string>();
+    }
+
+    public override string EntityName {
+      get { return "Operator Shape"; }
+    }
+
+    public bool Collapsed {
+      get { return this.expandIconMaterial.Collapsed; }
+      set {
+        if (this.expandIconMaterial.Collapsed != value)
+          this.expandIconMaterial.Collapsed = value;
+      }
+    }
+
+    private Color lineColor;
+    public Color LineColor {
+      get { return this.lineColor; }
+      set { this.lineColor = value; }
+    }
+
+    private float lineWidth;
+    public float LineWidth {
+      get { return this.lineWidth; }
+      set { this.lineWidth = value; }
+    }
+
+    private Color color;
+    public Color Color {
+      get { return this.color; }
+      set { this.color = value; }
+    }
+
+    private string title;
+    public string Title {
+      get { return title; }
+      set { title = value; }
+    }
+
+    private IconMaterial iconMaterial;
+    public Bitmap Icon {
+      get { return this.iconMaterial.Icon; }
+      set {
+        this.iconMaterial.Icon = value;
+        this.iconMaterial.Transform(new Rectangle(new Point(Rectangle.X + 5, Rectangle.Y + 5), this.iconMaterial.Icon.Size));
+      }
+    }
+
+    #region additional connectors
+    private List<IConnector> additionalConnectors;
+    public IEnumerable<string> AdditionalConnectorNames {
+      get { return this.additionalConnectors.Select(c => c.Name); }
+    }
+
+    private IConnector predecessor;
+    public IConnector Predecessor {
+      get { return this.predecessor; }
+    }
+
+    private IConnector successor;
+    public IConnector Successor {
+      get { return this.successor; }
+    }
+
+    private IConnector CreateConnector(string connectorName, Point location) {
+      Connector connector = new Connector(location, this.Model);
+      connector.ConnectorStyle = ConnectorStyle.Square;
+      connector.Parent = this;
+      connector.Name = connectorName;
+      return connector;
+    }
+
+    public void AddConnector(string connectorName) {
+      IConnector connector = this.CreateConnector(connectorName, this.BottomRightCorner);
+
+      this.additionalConnectors.Add(connector);
+      this.Connectors.Add(connector);
+      this.UpdateConnectorLocation();
+    }
+
+    public void RemoveConnector(string connectorName) {
+      IConnector connector = this.additionalConnectors.Where(c => c.Name == connectorName).FirstOrDefault();
+      if (connector != null) {
+        this.additionalConnectors.Remove(connector);
+        this.Connectors.Remove(connector);
+        this.UpdateConnectorLocation();
+      }
+    }
+
+    private void UpdateConnectorLocation() {
+      if (this.additionalConnectors.Count == 0)
+        return;
+
+      int spacing = this.Rectangle.Width / this.additionalConnectors.Count;
+      int margin = spacing / 2;
+      int posX = margin + this.Rectangle.X;
+      for (int i = 0; i < this.additionalConnectors.Count; i++) {
+        this.additionalConnectors[i].MoveBy(new Point(posX - this.additionalConnectors[i].Point.X, 0));
+        posX += spacing;
+      }
+    }
+    #endregion
+
+    #region label material
+    private List<string> labels;
+    public IEnumerable<string> Labels {
+      get { return this.labels; }
+    }
+
+    public void UpdateLabels(IEnumerable<string> labels) {
+      this.labels = new List<string>(labels);
+      this.expandIconMaterial.Visible = this.labels.Count != 0;
+      this.UpdateLabels();
+    }
+    #endregion
+
+    private void expandIconMaterial_OnExpand(object sender, EventArgs e) {
+      this.UpdateLabels();
+    }
+
+    private void expandIconMaterial_OnCollapse(object sender, EventArgs e) {
+      this.UpdateLabels();
+    }
+
+    private Size CalculateSize() {
+      int width = this.Rectangle.Width;
+      int height = headerHeight;
+      if (!Collapsed)
+        height += this.labels.Count * (LABEL_HEIGHT + LABEL_SPACING);
+      return new Size(width, height);
+    }
+
+    private void UpdateLabels() {
+      Size newSize = CalculateSize();
+      if (this.Rectangle.Size != newSize) {
+        foreach (IConnector connector in this.additionalConnectors)
+          connector.MoveBy(new Point(0, newSize.Height - this.Rectangle.Height));
+        this.mRectangle = new Rectangle(this.Rectangle.Location, newSize);
+        this.Invalidate();
+        this.RaiseOnChange(this, new EntityEventArgs(this));
+      }
+    }
+
+    protected override void Initialize() {
+      base.Initialize();
+
+      //the initial size
+      this.Transform(0, 0, 200, headerHeight);
+      this.color = Color.LightBlue;
+
+      this.iconMaterial = new IconMaterial();
+      this.iconMaterial.Gliding = false;
+      this.Children.Add(iconMaterial);
+
+      Bitmap expandBitmap = new Bitmap(HeuristicLab.Common.Resources.VSImageLibrary.Expand);
+      Bitmap collapseBitmap = new Bitmap(HeuristicLab.Common.Resources.VSImageLibrary.Collapse);
+      this.expandIconMaterial = new ExpandableIconMaterial(expandBitmap, collapseBitmap);
+      this.expandIconMaterial.Gliding = false;
+      this.expandIconMaterial.Transform(new Rectangle(new Point(Rectangle.Right - 20, Rectangle.Y + 7), expandIconMaterial.Icon.Size));
+      this.expandIconMaterial.Visible = false;
+      this.expandIconMaterial.OnExpand += new EventHandler(expandIconMaterial_OnExpand);
+      this.expandIconMaterial.OnCollapse += new EventHandler(expandIconMaterial_OnCollapse);
+      this.Children.Add(expandIconMaterial);
+
+      this.predecessor = this.CreateConnector(OperatorShapeInfoFactory.PredecessorConnector, new Point(Rectangle.Left, Center.Y));
+      this.Connectors.Add(predecessor);
+
+      this.successor = this.CreateConnector(OperatorShapeInfoFactory.SuccessorConnector, (new Point(Rectangle.Right, Center.Y)));
+      this.Connectors.Add(successor);
+    }
+
+    public override void Paint(Graphics g) {
+      base.Paint(g);
+
+      g.SmoothingMode = SmoothingMode.HighQuality;
+
+      Pen pen = new Pen(lineColor, lineWidth);
+
+      SizeF titleSize = g.MeasureString(this.Title, ArtPalette.DefaultBoldFont, Rectangle.Width - 45);
+      if (titleSize.Height + 10 > Rectangle.Height) {
+        headerHeight = (int)titleSize.Height + 10;
+        this.UpdateLabels();
+      }
+
+      GraphicsPath path = new GraphicsPath();
+      path.AddArc(Rectangle.X, Rectangle.Y, 20, 20, -180, 90);
+      path.AddLine(Rectangle.X + 10, Rectangle.Y, Rectangle.X + Rectangle.Width - 10, Rectangle.Y);
+      path.AddArc(Rectangle.X + Rectangle.Width - 20, Rectangle.Y, 20, 20, -90, 90);
+      path.AddLine(Rectangle.X + Rectangle.Width, Rectangle.Y + 10, Rectangle.X + Rectangle.Width, Rectangle.Y + Rectangle.Height - 10);
+      path.AddArc(Rectangle.X + Rectangle.Width - 20, Rectangle.Y + Rectangle.Height - 20, 20, 20, 0, 90);
+      path.AddLine(Rectangle.X + Rectangle.Width - 10, Rectangle.Y + Rectangle.Height, Rectangle.X + 10, Rectangle.Y + Rectangle.Height);
+      path.AddArc(Rectangle.X, Rectangle.Y + Rectangle.Height - 20, 20, 20, 90, 90);
+      path.AddLine(Rectangle.X, Rectangle.Y + Rectangle.Height - 10, Rectangle.X, Rectangle.Y + 10);
+      //shadow
+      if (ArtPalette.EnableShadows) {
+        Region darkRegion = new Region(path);
+        darkRegion.Translate(5, 5);
+        g.FillRegion(ArtPalette.ShadowBrush, darkRegion);
+      }
+      //background
+      g.FillPath(Brush, path);
+
+      using (LinearGradientBrush gradientBrush = new LinearGradientBrush(Rectangle.Location, new Point(Rectangle.X + Rectangle.Width, Rectangle.Y), this.Color, Color.White)) {
+        Region gradientRegion = new Region(path);
+        g.FillRegion(gradientBrush, gradientRegion);
+      }
+
+      if (!this.Collapsed) {
+        TextStyle textStyle = new TextStyle(Color.Black, new Font("Arial", 7), StringAlignment.Near, StringAlignment.Near);
+        StringFormat stringFormat = textStyle.StringFormat;
+        stringFormat.Trimming = StringTrimming.EllipsisWord;
+        stringFormat.FormatFlags = StringFormatFlags.LineLimit;
+        Rectangle rect;
+
+        for (int i = 0; i < this.labels.Count; i++) {
+          rect = new Rectangle(Rectangle.X + 25, Rectangle.Y + headerHeight + i * (LABEL_HEIGHT + LABEL_SPACING), LABEL_WIDTH, LABEL_HEIGHT);
+          g.DrawString(textStyle.GetFormattedText(this.labels[i]), textStyle.Font, textStyle.GetBrush(), rect, stringFormat);
+        }
+      }
+
+      //the border
+      g.DrawPath(pen, path);
+
+      //the title
+      g.DrawString(this.Title, ArtPalette.DefaultBoldFont, Brushes.Black, new Rectangle(Rectangle.X + 25, Rectangle.Y + 5, Rectangle.Width - 45, Rectangle.Height - 5));
+
+
+      //the material
+      foreach (IPaintable material in Children)
+        material.Paint(g);
+
+      //the connectors
+      if (this.ShowConnectors) {
+        for (int k = 0; k < Connectors.Count; k++)
+          Connectors[k].Paint(g);
+      }
+    }
+  }
+}
Index: /branches/histogram/HeuristicLab.Operators.Views.GraphVisualization.Views/3.3/Plugin.cs.frame
===================================================================
--- /branches/histogram/HeuristicLab.Operators.Views.GraphVisualization.Views/3.3/Plugin.cs.frame	(revision 6046)
+++ /branches/histogram/HeuristicLab.Operators.Views.GraphVisualization.Views/3.3/Plugin.cs.frame	(revision 6046)
@@ -0,0 +1,38 @@
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2011 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 HeuristicLab.PluginInfrastructure;
+
+namespace HeuristicLab.Operators.Views.GraphVisualization.Views {
+  [Plugin("HeuristicLab.Operators.Views.GraphVisualization.Views-3.3", "3.3.3.$WCREV$")]
+  [PluginFile("HeuristicLab.Operators.Views.GraphVisualization.Views-3.3.dll", PluginFileType.Assembly)]
+  [PluginDependency("HeuristicLab.Collections", "3.3")]
+  [PluginDependency("HeuristicLab.Common", "3.3")]
+  [PluginDependency("HeuristicLab.Common.Resources", "3.3")]
+  [PluginDependency("HeuristicLab.Core", "3.3")]
+  [PluginDependency("HeuristicLab.MainForm", "3.3")]
+  [PluginDependency("HeuristicLab.MainForm.WindowsForms", "3.3")]
+  [PluginDependency("HeuristicLab.Netron", "3.0")]
+  [PluginDependency("HeuristicLab.Operators.Views.GraphVisualization", "3.3")]
+  public class HeuristicLabOperatorsViewsGraphVisualizationViewsPlugin : PluginBase {
+  }
+}
+
Index: /branches/histogram/HeuristicLab.Operators.Views.GraphVisualization.Views/3.3/Properties/AssemblyInfo.frame
===================================================================
--- /branches/histogram/HeuristicLab.Operators.Views.GraphVisualization.Views/3.3/Properties/AssemblyInfo.frame	(revision 6046)
+++ /branches/histogram/HeuristicLab.Operators.Views.GraphVisualization.Views/3.3/Properties/AssemblyInfo.frame	(revision 6046)
@@ -0,0 +1,57 @@
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2011 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.Reflection;
+using System.Runtime.CompilerServices;
+using System.Runtime.InteropServices;
+
+// General Information about an assembly is controlled through the following 
+// set of attributes. Change these attribute values to modify the information
+// associated with an assembly.
+[assembly: AssemblyTitle("HeuristicLab.Operators.Views.GraphVisualization.Views-3.3")]
+[assembly: AssemblyDescription("")]
+[assembly: AssemblyConfiguration("")]
+[assembly: AssemblyCompany("HEAL")]
+[assembly: AssemblyProduct("HeuristicLab")]
+[assembly: AssemblyCopyright("(c) 2002-2011 HEAL")]
+[assembly: AssemblyTrademark("")]
+[assembly: AssemblyCulture("")]
+
+// Setting ComVisible to false makes the types in this assembly not visible 
+// to COM components.  If you need to access a type in this assembly from 
+// COM, set the ComVisible attribute to true on that type.
+[assembly: ComVisible(false)]
+
+// The following GUID is for the ID of the typelib if this project is exposed to COM
+[assembly: Guid("7c14407e-6980-465b-ba3a-4a916d48989b")]
+
+// Version information for an assembly consists of the following four values:
+//
+//      Major Version
+//      Minor Version 
+//      Build Number
+//      Revision
+//
+// You can specify all the values or you can default the Build and Revision Numbers 
+// by using the '*' as shown below:
+// [assembly: AssemblyVersion("1.0.*")]
+[assembly: AssemblyVersion("3.3.0.0")]
+[assembly: AssemblyFileVersion("3.3.0.$WCREV$")]
Index: /branches/histogram/HeuristicLab.Operators.Views.GraphVisualization.Views/3.3/ShapeInfoExtensions.cs
===================================================================
--- /branches/histogram/HeuristicLab.Operators.Views.GraphVisualization.Views/3.3/ShapeInfoExtensions.cs	(revision 6046)
+++ /branches/histogram/HeuristicLab.Operators.Views.GraphVisualization.Views/3.3/ShapeInfoExtensions.cs	(revision 6046)
@@ -0,0 +1,115 @@
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2011 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;
+using System.Collections.Generic;
+using System.Linq;
+using Netron.Diagramming.Core;
+
+namespace HeuristicLab.Operators.Views.GraphVisualization.Views {
+  internal static class ShapeInfoExtensions {
+    public static IShape CreateShape(this IShapeInfo shapeInfo) {
+      if (shapeInfo is IOperatorShapeInfo) return CreateShape((IOperatorShapeInfo)shapeInfo);
+      throw new ArgumentException("Could not determine which shape object should be created.");
+    }
+
+    public static void UpdateShape(this IShapeInfo shapeInfo, IShape shape) {
+      shape.Location = shapeInfo.Location;
+      if (shapeInfo is IOperatorShapeInfo && shape is OperatorShape)
+        UpdateShape((IOperatorShapeInfo)shapeInfo, (OperatorShape)shape);
+    }
+
+    public static void UpdateShapeInfo(this IShapeInfo shapeInfo, IShape shape) {
+      shapeInfo.Location = shape.Location;
+      if (shapeInfo is IOperatorShapeInfo && shape is OperatorShape)
+        UpdateShapeInfo((IOperatorShapeInfo)shapeInfo, (OperatorShape)shape);
+    }
+
+    #region OperatorShapeInfo specific methos
+    public static OperatorShape CreateShape(IOperatorShapeInfo shapeInfo) {
+      OperatorShape shape = new OperatorShape();
+      shape.Tag = shapeInfo;
+      shape.Location = shapeInfo.Location;
+      shape.Title = shapeInfo.Title;
+      shape.Color = shapeInfo.Color;
+      shape.LineColor = shapeInfo.LineColor;
+      shape.LineWidth = shapeInfo.LineWidth;
+      shape.Icon = shapeInfo.Icon;
+      shape.Collapsed = shapeInfo.Collapsed;
+      foreach (string connectorName in shapeInfo.Connectors)
+        if (connectorName != OperatorShapeInfoFactory.SuccessorConnector && connectorName != OperatorShapeInfoFactory.PredecessorConnector)
+          shape.AddConnector(connectorName);
+
+      shape.UpdateLabels(shapeInfo.Labels);
+      return shape;
+    }
+
+    public static void UpdateShape(IOperatorShapeInfo operatorShapeInfo, OperatorShape operatorShape) {
+      operatorShape.Title = operatorShapeInfo.Title;
+      operatorShape.Color = operatorShapeInfo.Color;
+      operatorShape.LineColor = operatorShapeInfo.LineColor;
+      operatorShape.LineWidth = operatorShapeInfo.LineWidth;
+      operatorShape.Icon = operatorShapeInfo.Icon;
+      operatorShape.Collapsed = operatorShapeInfo.Collapsed;
+
+      int i = 0;
+      int j = 0;
+      //remove old connectors and skip correct connectors
+      List<string> oldConnectorNames = operatorShape.AdditionalConnectorNames.ToList();
+      while (i < operatorShapeInfo.Connectors.Count() && j < oldConnectorNames.Count) {
+        if (operatorShapeInfo.Connectors.ElementAt(i) == OperatorShapeInfoFactory.SuccessorConnector ||
+          operatorShapeInfo.Connectors.ElementAt(i) == OperatorShapeInfoFactory.PredecessorConnector)
+          i++;
+        else if (oldConnectorNames[j] == OperatorShapeInfoFactory.SuccessorConnector ||
+          oldConnectorNames[j] == OperatorShapeInfoFactory.PredecessorConnector)
+          j++;
+        else if (operatorShapeInfo.Connectors.ElementAt(i) != oldConnectorNames[j]) {
+          operatorShape.RemoveConnector(oldConnectorNames[j]);
+          j++;
+        } else {
+          i++;
+          j++;
+        }
+      }
+      //remove remaining old connectors
+      for (; j < oldConnectorNames.Count; j++)
+        operatorShape.RemoveConnector(oldConnectorNames[j]);
+
+      //add new connectors except successor and connector
+      for (; i < operatorShapeInfo.Connectors.Count(); i++)
+        if (operatorShapeInfo.Connectors.ElementAt(i) != OperatorShapeInfoFactory.SuccessorConnector &&
+          operatorShapeInfo.Connectors.ElementAt(i) != OperatorShapeInfoFactory.PredecessorConnector)
+          operatorShape.AddConnector(operatorShapeInfo.Connectors.ElementAt(i));
+
+      operatorShape.UpdateLabels(operatorShapeInfo.Labels);
+    }
+
+    public static void UpdateShapeInfo(IOperatorShapeInfo operatorShapeInfo, OperatorShape operatorShape) {
+      operatorShapeInfo.Title = operatorShape.Title;
+      operatorShapeInfo.Color = operatorShape.Color;
+      operatorShapeInfo.LineColor = operatorShape.LineColor;
+      operatorShapeInfo.LineWidth = operatorShape.LineWidth;
+      operatorShapeInfo.Icon = operatorShape.Icon;
+      operatorShapeInfo.Collapsed = operatorShape.Collapsed;
+    }
+    #endregion
+  }
+}
Index: anches/histogram/HeuristicLab.Operators.Views.GraphVisualization/3.3/General/GraphVisualizationInfoView.Designer.cs
===================================================================
--- /branches/histogram/HeuristicLab.Operators.Views.GraphVisualization/3.3/General/GraphVisualizationInfoView.Designer.cs	(revision 6045)
+++ 	(revision )
@@ -1,88 +1,0 @@
-﻿#region License Information
-/* HeuristicLab
- * Copyright (C) 2002-2011 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
-
-namespace HeuristicLab.Operators.Views.GraphVisualization {
-  partial class GraphVisualizationInfoView {
-    /// <summary> 
-    /// Required designer variable.
-    /// </summary>
-    private System.ComponentModel.IContainer components = null;
-
-    /// <summary> 
-    /// Clean up any resources being used.
-    /// </summary>
-    /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
-    protected override void Dispose(bool disposing) {
-      if (disposing && (components != null)) {
-        components.Dispose();
-      }
-      base.Dispose(disposing);
-    }
-
-    #region Component Designer generated code
-
-    /// <summary> 
-    /// Required method for Designer support - do not modify 
-    /// the contents of this method with the code editor.
-    /// </summary>
-    private void InitializeComponent() {
-      this.components = new System.ComponentModel.Container();
-      this.graphVisualization = new HeuristicLab.Netron.NetronVisualization();
-      ((System.ComponentModel.ISupportInitialize)(this.graphVisualization)).BeginInit();
-      this.SuspendLayout();
-      // 
-      // graphVisualization
-      // 
-      this.graphVisualization.AllowDrop = false;
-      this.graphVisualization.AutoScroll = true;
-      this.graphVisualization.BackColor = System.Drawing.Color.DarkGray;
-      this.graphVisualization.BackgroundType = global::Netron.Diagramming.Core.CanvasBackgroundTypes.FlatColor;
-      this.graphVisualization.Dock = System.Windows.Forms.DockStyle.Fill;
-      this.graphVisualization.EnableAddConnection = true;
-      this.graphVisualization.FileName = "";
-      this.graphVisualization.Location = new System.Drawing.Point(0, 0);
-      this.graphVisualization.Magnification = new System.Drawing.SizeF(80F, 80F);
-      this.graphVisualization.Name = "graphVisualization";
-      this.graphVisualization.Origin = new System.Drawing.Point(0, 0);
-      this.graphVisualization.PageSize = new System.Drawing.Size(100000, 100000);
-      this.graphVisualization.ShowConnectors = true;
-      this.graphVisualization.ShowRulers = false;
-      this.graphVisualization.Size = new System.Drawing.Size(665, 444);
-      this.graphVisualization.TabIndex = 0;
-      this.graphVisualization.OnEntityRemoved += new System.EventHandler<global::Netron.Diagramming.Core.EntityEventArgs>(this.graphVisualization_OnEntityRemoved);
-      this.graphVisualization.OnEntityAdded += new System.EventHandler<global::Netron.Diagramming.Core.EntityEventArgs>(this.graphVisualization_OnEntityAdded);
-     
-      // 
-      // GraphVisualizationInfoView
-      // 
-      this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
-      this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
-      this.Controls.Add(this.graphVisualization);
-      this.Name = "GraphVisualizationInfoView";
-      this.Size = new System.Drawing.Size(665, 444);
-      ((System.ComponentModel.ISupportInitialize)(this.graphVisualization)).EndInit();
-      this.ResumeLayout(false);
-    }
-    #endregion
-
-    private HeuristicLab.Netron.NetronVisualization graphVisualization;
-  }
-}
Index: anches/histogram/HeuristicLab.Operators.Views.GraphVisualization/3.3/General/GraphVisualizationInfoView.cs
===================================================================
--- /branches/histogram/HeuristicLab.Operators.Views.GraphVisualization/3.3/General/GraphVisualizationInfoView.cs	(revision 6045)
+++ 	(revision )
@@ -1,352 +1,0 @@
-﻿#region License Information
-/* HeuristicLab
- * Copyright (C) 2002-2011 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;
-using System.Drawing;
-using System.Drawing.Drawing2D;
-using System.Linq;
-using System.Threading;
-using System.Windows.Forms;
-using HeuristicLab.Collections;
-using HeuristicLab.MainForm;
-using HeuristicLab.MainForm.WindowsForms;
-using Netron.Diagramming.Core;
-
-namespace HeuristicLab.Operators.Views.GraphVisualization {
-  [View("GraphVisualizationInfo View")]
-  [Content(typeof(IGraphVisualizationInfo), true)]
-  public partial class GraphVisualizationInfoView : AsynchronousContentView {
-    private BidirectionalLookup<IShapeInfo, IShape> shapeInfoShapeMapping;
-    private BidirectionalLookup<IConnectionInfo, IConnection> connectionInfoConnectionMapping;
-    private LinePenStyle connectionPenStyle;
-
-    public GraphVisualizationInfoView() {
-      InitializeComponent();
-      this.shapeInfoShapeMapping = new BidirectionalLookup<IShapeInfo, IShape>();
-      this.connectionInfoConnectionMapping = new BidirectionalLookup<IConnectionInfo, IConnection>();
-      this.connectionPenStyle = new LinePenStyle();
-      this.connectionPenStyle.EndCap = LineCap.ArrowAnchor;
-
-      PasteTool pasteTool = (PasteTool)this.Controller.Tools.Where(t => t.Name == ControllerBase.PasteToolName).FirstOrDefault();
-      CopyTool copyTool = (CopyTool)this.Controller.Tools.Where(t => t.Name == ControllerBase.CopyToolName).FirstOrDefault();
-      HeuristicLab.Netron.Controller controller = this.Controller as HeuristicLab.Netron.Controller;
-      if (controller != null) {
-        if (pasteTool != null) controller.RemoveTool(pasteTool);
-        if (copyTool != null) controller.RemoveTool(copyTool);
-      }
-    }
-
-    public IController Controller {
-      get { return this.graphVisualization.Controller; }
-    }
-
-    public new IGraphVisualizationInfo Content {
-      get { return (IGraphVisualizationInfo)base.Content; }
-      set { base.Content = value; }
-    }
-
-    protected override void OnContentChanged() {
-      base.OnContentChanged();
-      this.UpdateContent();
-    }
-
-    protected override void SetEnabledStateOfControls() {
-      base.SetEnabledStateOfControls();
-      DeleteTool deleteTool = (DeleteTool)this.Controller.Tools.Where(t => t.Name == ControllerBase.DeleteToolName).FirstOrDefault();
-      HeuristicLab.Netron.Controller controller = this.Controller as HeuristicLab.Netron.Controller;
-      if (Content == null && deleteTool != null && controller != null)
-        controller.RemoveTool(deleteTool);
-      else {
-        if ((ReadOnly || Locked) && deleteTool != null && controller != null)
-          controller.RemoveTool(deleteTool);
-        else if ((!ReadOnly && !Locked) && deleteTool == null)
-          this.Controller.AddTool(new DeleteTool(ControllerBase.DeleteToolName));
-      }
-    }
-
-    private void UpdateContent() {
-      foreach (IConnectionInfo connectionInfo in this.connectionInfoConnectionMapping.FirstValues.ToList())
-        this.RemoveConnectionInfo(connectionInfo);
-      this.connectionInfoConnectionMapping.Clear();
-      foreach (IShapeInfo shapeInfo in this.shapeInfoShapeMapping.FirstValues.ToList())
-        this.RemoveShapeInfo(shapeInfo);
-      this.shapeInfoShapeMapping.Clear();
-
-      if (Content != null) {
-        foreach (IShapeInfo shapeInfo in this.Content.ShapeInfos)
-          this.AddShapeInfo(shapeInfo);
-        foreach (IConnectionInfo connectionInfo in this.Content.ConnectionInfos)
-          this.AddConnectionInfo(connectionInfo);
-        this.UpdateLayoutRoot();
-      }
-    }
-    private void UpdateLayoutRoot() {
-      IShapeInfo shapeInfo = this.Content.InitialShape;
-      if (shapeInfo != null)
-        this.graphVisualization.Controller.Model.LayoutRoot = this.shapeInfoShapeMapping.GetByFirst(shapeInfo);
-      else
-        this.graphVisualization.Controller.Model.LayoutRoot = null;
-    }
-    private void VisualizationInfo_InitialShapeChanged(object sender, EventArgs e) {
-      this.UpdateLayoutRoot();
-    }
-
-    protected override void RegisterContentEvents() {
-      base.RegisterContentEvents();
-      this.Content.InitialShapeChanged += new EventHandler(VisualizationInfo_InitialShapeChanged);
-
-      this.Content.ObserveableShapeInfos.ItemsAdded += new CollectionItemsChangedEventHandler<IShapeInfo>(ShapeInfos_ItemsAdded);
-      this.Content.ObserveableShapeInfos.ItemsRemoved += new CollectionItemsChangedEventHandler<IShapeInfo>(ShapeInfos_ItemsRemoved);
-      this.Content.ObserveableShapeInfos.CollectionReset += new CollectionItemsChangedEventHandler<IShapeInfo>(ShapeInfos_CollectionReset);
-
-      this.Content.ObservableConnectionInfos.ItemsAdded += new CollectionItemsChangedEventHandler<IConnectionInfo>(ConnectionInfos_ItemsAdded);
-      this.Content.ObservableConnectionInfos.ItemsRemoved += new CollectionItemsChangedEventHandler<IConnectionInfo>(ConnectionInfos_ItemsRemoved);
-      this.Content.ObservableConnectionInfos.CollectionReset += new CollectionItemsChangedEventHandler<IConnectionInfo>(ConnectionInfos_CollectionReset);
-    }
-
-    protected override void DeregisterContentEvents() {
-      base.DeregisterContentEvents();
-      this.Content.InitialShapeChanged -= new EventHandler(VisualizationInfo_InitialShapeChanged);
-
-      this.Content.ObserveableShapeInfos.ItemsAdded -= new CollectionItemsChangedEventHandler<IShapeInfo>(ShapeInfos_ItemsAdded);
-      this.Content.ObserveableShapeInfos.ItemsRemoved -= new CollectionItemsChangedEventHandler<IShapeInfo>(ShapeInfos_ItemsRemoved);
-      this.Content.ObserveableShapeInfos.CollectionReset -= new CollectionItemsChangedEventHandler<IShapeInfo>(ShapeInfos_CollectionReset);
-
-      this.Content.ObservableConnectionInfos.ItemsAdded -= new CollectionItemsChangedEventHandler<IConnectionInfo>(ConnectionInfos_ItemsAdded);
-      this.Content.ObservableConnectionInfos.ItemsRemoved -= new CollectionItemsChangedEventHandler<IConnectionInfo>(ConnectionInfos_ItemsRemoved);
-      this.Content.ObservableConnectionInfos.CollectionReset -= new CollectionItemsChangedEventHandler<IConnectionInfo>(ConnectionInfos_CollectionReset);
-    }
-
-    #region ShapeInfos
-    private void ShapeInfos_CollectionReset(object sender, HeuristicLab.Collections.CollectionItemsChangedEventArgs<IShapeInfo> e) {
-      foreach (IShapeInfo shapeInfo in e.OldItems)
-        this.RemoveShapeInfo(shapeInfo);
-      foreach (IShapeInfo shapeInfo in e.Items)
-        this.AddShapeInfo(shapeInfo);
-    }
-    private void ShapeInfos_ItemsAdded(object sender, HeuristicLab.Collections.CollectionItemsChangedEventArgs<IShapeInfo> e) {
-      foreach (IShapeInfo shapeInfo in e.Items)
-        this.AddShapeInfo(shapeInfo);
-    }
-    private void ShapeInfos_ItemsRemoved(object sender, HeuristicLab.Collections.CollectionItemsChangedEventArgs<IShapeInfo> e) {
-      foreach (IShapeInfo shapeInfo in e.Items)
-        this.RemoveShapeInfo(shapeInfo);
-    }
-
-    private void AddShapeInfo(IShapeInfo shapeInfo) {
-      this.RegisterShapeInfoEvents(shapeInfo);
-      IShape shape = shapeInfo.CreateShape();
-      this.RegisterShapeEvents(shape);
-      this.shapeInfoShapeMapping.Add(shapeInfo, shape);
-
-      this.graphVisualization.Controller.Model.AddShape(shape);
-      this.graphVisualization.Invalidate();
-    }
-    private void RemoveShapeInfo(IShapeInfo shapeInfo) {
-      this.DeregisterShapeInfoEvents(shapeInfo);
-      IShape shape = this.shapeInfoShapeMapping.GetByFirst(shapeInfo);
-      this.DeregisterShapeEvents(shape);
-      this.shapeInfoShapeMapping.RemoveByFirst(shapeInfo);
-
-      if (this.graphVisualization.Controller.Model.Shapes.Contains(shape)) {
-        this.graphVisualization.Controller.Model.RemoveShape(shape);
-        this.graphVisualization.Controller.Model.Selection.Clear();
-        this.graphVisualization.Invalidate();
-      }
-    }
-
-    private void RegisterShapeInfoEvents(IShapeInfo shapeInfo) {
-      shapeInfo.Changed += new EventHandler(shapeInfo_Changed);
-    }
-    private void DeregisterShapeInfoEvents(IShapeInfo shapeInfo) {
-      shapeInfo.Changed -= new EventHandler(shapeInfo_Changed);
-    }
-
-    private void shapeInfo_Changed(object sender, EventArgs e) {
-      IShapeInfo shapeInfo = (IShapeInfo)sender;
-      IShape shape = this.shapeInfoShapeMapping.GetByFirst(shapeInfo);
-      this.DeregisterShapeEvents(shape);
-      shapeInfo.UpdateShape(shape);
-      shape.Invalidate();
-      this.RegisterShapeEvents(shape);
-    }
-    #endregion
-
-    #region ConnectionInfos
-    private void ConnectionInfos_CollectionReset(object sender, CollectionItemsChangedEventArgs<IConnectionInfo> e) {
-      foreach (IConnectionInfo connectionInfo in e.Items)
-        this.RemoveConnectionInfo(connectionInfo);
-      foreach (IConnectionInfo connectionInfo in e.Items)
-        this.AddConnectionInfo(connectionInfo);
-    }
-    private void ConnectionInfos_ItemsAdded(object sender, CollectionItemsChangedEventArgs<IConnectionInfo> e) {
-      foreach (IConnectionInfo connectionInfo in e.Items)
-        this.AddConnectionInfo(connectionInfo);
-    }
-    private void ConnectionInfos_ItemsRemoved(object sender, CollectionItemsChangedEventArgs<IConnectionInfo> e) {
-      foreach (IConnectionInfo connectionInfo in e.Items)
-        this.RemoveConnectionInfo(connectionInfo);
-    }
-
-    private void AddConnectionInfo(IConnectionInfo connectionInfo) {
-      this.RegisterConnectionInfoEvents(connectionInfo);
-      IShape shapeFrom = this.shapeInfoShapeMapping.GetByFirst(connectionInfo.From);
-      IShape shapeTo = this.shapeInfoShapeMapping.GetByFirst(connectionInfo.To);
-
-      IConnector connectorFrom = shapeFrom.Connectors.Where(c => c.Name == connectionInfo.ConnectorFrom).FirstOrDefault();
-      IConnector connectorTo = shapeTo.Connectors.Where(c => c.Name == connectionInfo.ConnectorTo).FirstOrDefault();
-      if (connectorFrom != null && connectorTo != null) {
-        Connection connection = new Connection(connectorFrom.Point, connectorTo.Point);
-        connection.From.AllowMove = false;
-        connection.To.AllowMove = false;
-        connectorFrom.AttachConnector(connection.From);
-        connectorTo.AttachConnector(connection.To);
-        connection.PenStyle = this.connectionPenStyle;
-        this.connectionInfoConnectionMapping.Add(connectionInfo, connection);
-        this.graphVisualization.Controller.Model.AddConnection(connection);
-        this.graphVisualization.Invalidate();
-      }
-    }
-
-    private void RemoveConnectionInfo(IConnectionInfo connectionInfo) {
-      DeregisterConnectionInfoEvents(connectionInfo);
-      IConnection connection = this.connectionInfoConnectionMapping.GetByFirst(connectionInfo);
-      this.connectionInfoConnectionMapping.RemoveByFirst(connectionInfo);
-      this.RemoveConnection(connection);
-
-    }
-    private void RemoveConnection(IConnection connection) {
-      if (connection.From.AttachedTo != null)
-        connection.From.DetachFromParent();
-      if (connection.To.AttachedTo != null)
-        connection.To.DetachFromParent();
-      if (this.Controller.Model.Connections.Contains(connection)) {
-        this.graphVisualization.Controller.Model.Remove(connection);
-        this.graphVisualization.Invalidate();
-      }
-    }
-
-    private void RegisterConnectionInfoEvents(IConnectionInfo connectionInfo) {
-      connectionInfo.Changed += new EventHandler(connectionInfo_Changed);
-    }
-    private void DeregisterConnectionInfoEvents(IConnectionInfo connectionInfo) {
-      connectionInfo.Changed -= new EventHandler(connectionInfo_Changed);
-    }
-    private void connectionInfo_Changed(object sender, EventArgs e) {
-      IConnectionInfo connectionInfo = (IConnectionInfo)sender;
-      IConnection connection = this.connectionInfoConnectionMapping.GetByFirst(connectionInfo);
-      this.RemoveConnectionInfo(connectionInfo);
-      this.AddConnectionInfo(connectionInfo);
-    }
-    #endregion
-
-    #region netron events - shapes, graphvisualization
-    private void RegisterShapeEvents(IShape shape) {
-      shape.OnEntityChange += new EventHandler<EntityEventArgs>(shape_OnEntityChange);
-      shape.OnMouseEnter += new EventHandler<EntityMouseEventArgs>(shape_OnMouseEnter);
-      shape.OnMouseLeave += new EventHandler<EntityMouseEventArgs>(shape_OnMouseLeave);
-    }
-
-    private void DeregisterShapeEvents(IShape shape) {
-      shape.OnEntityChange -= new EventHandler<EntityEventArgs>(shape_OnEntityChange);
-      shape.OnMouseEnter -= new EventHandler<EntityMouseEventArgs>(shape_OnMouseEnter);
-      shape.OnMouseLeave -= new EventHandler<EntityMouseEventArgs>(shape_OnMouseLeave);
-    }
-
-    private Cursor oldCursor;
-    private void shape_OnMouseEnter(object sender, EntityMouseEventArgs e) {
-      this.oldCursor = this.Cursor;
-      this.Controller.View.CurrentCursor = CursorPalette.Move;
-    }
-
-    private void shape_OnMouseLeave(object sender, EntityMouseEventArgs e) {
-      this.Controller.View.CurrentCursor = this.oldCursor;
-      this.oldCursor = null;
-    }
-
-    private void shape_OnEntityChange(object sender, EntityEventArgs e) {
-      IShape shape = e.Entity as IShape;
-      IShapeInfo shapeInfo = this.shapeInfoShapeMapping.GetBySecond(shape);
-      this.DeregisterShapeInfoEvents(shapeInfo);
-      shapeInfo.UpdateShapeInfo(shape);
-      this.RegisterShapeInfoEvents(shapeInfo);
-      this.graphVisualization.Invalidate();
-    }
-
-
-    private void graphVisualization_OnEntityAdded(object sender, EntityEventArgs e) {
-      IConnection connection = e.Entity as IConnection;
-      if (connection != null && !this.connectionInfoConnectionMapping.ContainsSecond(connection)) {
-        IConnector connectorFrom = connection.From.AttachedTo;
-        IConnector connectorTo = connection.To.AttachedTo;
-        this.RemoveConnection(connection); //is added again by the model events
-
-        if (connectorFrom != null && connectorTo != null) {
-          IShape shapeFrom = (IShape)connectorFrom.Parent;
-          IShape shapeTo = (IShape)connectorTo.Parent;
-          IShapeInfo shapeInfoFrom = this.shapeInfoShapeMapping.GetBySecond(shapeFrom);
-          IShapeInfo shapeInfoTo = this.shapeInfoShapeMapping.GetBySecond(shapeTo);
-          string connectorFromName = connectorFrom.Name;
-          string connectorToName = connectorTo.Name;
-
-          if (shapeInfoFrom != shapeInfoTo) //avoid self references
-            this.Content.AddConnectionInfo(new ConnectionInfo(shapeInfoFrom, connectorFromName, shapeInfoTo, connectorToName));
-        }
-      }
-    }
-
-    private void graphVisualization_OnEntityRemoved(object sender, EntityEventArgs e) {
-      IShape shape = e.Entity as IShape;
-      if (shape != null && this.shapeInfoShapeMapping.ContainsSecond(shape)) {
-        IShapeInfo shapeInfo = this.shapeInfoShapeMapping.GetBySecond(shape);
-        this.Content.RemoveShapeInfo(shapeInfo);
-      }
-
-      IConnection connection = e.Entity as IConnection;
-      if (connection != null && this.connectionInfoConnectionMapping.ContainsSecond(connection)) {
-        IConnectionInfo connectionInfo = connectionInfoConnectionMapping.GetBySecond(connection);
-        this.Content.RemoveConnectionInfo(connectionInfo);
-      }
-    }
-    #endregion
-
-    public void RelayoutGraph() {
-      if (this.shapeInfoShapeMapping.Count > 0
-        && this.connectionInfoConnectionMapping.Count > 0
-        && this.Content.InitialShape != null) { //otherwise the layout does not work
-        string layoutName = "Standard TreeLayout";
-        this.graphVisualization.Controller.RunActivity(layoutName);
-        this.graphVisualization.Invalidate();
-
-        //fix to avoid negative shape positions after layouting
-        Thread.Sleep(300);
-        int minX = this.graphVisualization.Controller.Model.Shapes.Min(s => s.Location.X);
-        int shiftX = minX < 0 ? Math.Abs(minX) + 50 : 0;
-        int minY = this.graphVisualization.Controller.Model.Shapes.Min(s => s.Location.Y);
-        int shiftY = minY < 0 ? Math.Abs(minY) + 50 : 0;
-        if (minX < 0 || minY < 0) {
-          foreach (IShape s in this.Controller.Model.Shapes)
-            s.MoveBy(new Point(shiftX, shiftY));
-        }
-      }
-    }
-  }
-}
Index: /branches/histogram/HeuristicLab.Operators.Views.GraphVisualization/3.3/General/IShapeInfo.cs
===================================================================
--- /branches/histogram/HeuristicLab.Operators.Views.GraphVisualization/3.3/General/IShapeInfo.cs	(revision 6045)
+++ /branches/histogram/HeuristicLab.Operators.Views.GraphVisualization/3.3/General/IShapeInfo.cs	(revision 6046)
@@ -24,15 +24,9 @@
 using System.Drawing;
 using HeuristicLab.Common;
-using Netron.Diagramming.Core;
 
 namespace HeuristicLab.Operators.Views.GraphVisualization {
   public interface IShapeInfo : IDeepCloneable {
-    Type ShapeType { get; }
     Point Location { get; set; }
-
-    IShape CreateShape();
     IEnumerable<string> Connectors { get; }
-    void UpdateShape(IShape shape);
-    void UpdateShapeInfo(IShape shape);
 
     event EventHandler Changed;
Index: /branches/histogram/HeuristicLab.Operators.Views.GraphVisualization/3.3/General/ShapeInfo.cs
===================================================================
--- /branches/histogram/HeuristicLab.Operators.Views.GraphVisualization/3.3/General/ShapeInfo.cs	(revision 6045)
+++ /branches/histogram/HeuristicLab.Operators.Views.GraphVisualization/3.3/General/ShapeInfo.cs	(revision 6046)
@@ -25,5 +25,4 @@
 using HeuristicLab.Common;
 using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
-using Netron.Diagramming.Core;
 
 namespace HeuristicLab.Operators.Views.GraphVisualization {
@@ -34,19 +33,8 @@
     protected ShapeInfo(ShapeInfo original, Cloner cloner)
       : base(original, cloner) {
-      shapeType = original.shapeType;
       location = original.location;
     }
 
-    protected ShapeInfo(Type shapeType) {
-      if (!typeof(IShape).IsAssignableFrom(shapeType))
-        throw new ArgumentException("The passed shape type " + shapeType + " must be derived from IShape.");
-      this.shapeType = shapeType;
-    }
-
-    [Storable]
-    private Type shapeType;
-    public Type ShapeType {
-      get { return this.shapeType; }
-    }
+    protected ShapeInfo() : base() { }
 
     [Storable]
@@ -69,19 +57,4 @@
       if (handler != null) this.Changed(this, EventArgs.Empty);
     }
-
-    public virtual IShape CreateShape() {
-      IShape shape = (IShape)Activator.CreateInstance(this.shapeType);
-      shape.Tag = this;
-      shape.Location = this.Location;
-      return shape;
-    }
-
-    public virtual void UpdateShape(IShape shape) {
-      shape.Location = this.Location;
-    }
-
-    public virtual void UpdateShapeInfo(IShape shape) {
-      this.Location = shape.Location;
-    }
   }
 }
Index: /branches/histogram/HeuristicLab.Operators.Views.GraphVisualization/3.3/HeuristicLab.Operators.Views.GraphVisualization-3.3.csproj
===================================================================
--- /branches/histogram/HeuristicLab.Operators.Views.GraphVisualization/3.3/HeuristicLab.Operators.Views.GraphVisualization-3.3.csproj	(revision 6045)
+++ /branches/histogram/HeuristicLab.Operators.Views.GraphVisualization/3.3/HeuristicLab.Operators.Views.GraphVisualization-3.3.csproj	(revision 6046)
@@ -12,5 +12,6 @@
     <AssemblyName>HeuristicLab.Operators.Views.GraphVisualization-3.3</AssemblyName>
     <TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
-    <TargetFrameworkProfile></TargetFrameworkProfile>
+    <TargetFrameworkProfile>
+    </TargetFrameworkProfile>
     <FileAlignment>512</FileAlignment>
     <SignAssembly>true</SignAssembly>
@@ -112,4 +113,6 @@
   <ItemGroup>
     <Compile Include="HeuristicLabOperatorsViewsGraphVisualizationPlugin.cs" />
+    <Compile Include="OperatorGraphVisualization\OperatorShape.cs" />
+    <Compile Include="OperatorGraphVisualization\OperatorShapeInfoFactory.cs" />
     <Compile Include="Properties\AssemblyInfo.cs" />
   </ItemGroup>
@@ -119,20 +122,8 @@
     <None Include="Properties\AssemblyInfo.frame" />
     <Compile Include="General\GraphVisualizationInfo.cs" />
-    <Compile Include="General\GraphVisualizationInfoView.cs">
-      <SubType>UserControl</SubType>
-    </Compile>
-    <Compile Include="General\GraphVisualizationInfoView.Designer.cs">
-      <DependentUpon>GraphVisualizationInfoView.cs</DependentUpon>
-    </Compile>
     <Compile Include="General\ConnectionInfo.cs" />
     <Compile Include="General\IConnectionInfo.cs" />
     <Compile Include="General\IGraphVisualizationInfo.cs" />
     <Compile Include="OperatorGraphVisualization\IOperatorShapeInfo.cs" />
-    <Compile Include="OperatorGraphVisualization\OperatorGraphView.cs">
-      <SubType>UserControl</SubType>
-    </Compile>
-    <Compile Include="OperatorGraphVisualization\OperatorGraphView.Designer.cs">
-      <DependentUpon>OperatorGraphView.cs</DependentUpon>
-    </Compile>
     <Compile Include="OperatorGraphVisualization\OperatorGraphVisualizationInfo.cs">
       <SubType>Code</SubType>
@@ -141,9 +132,7 @@
     <Compile Include="BidirectionalLookup.cs" />
     <Compile Include="General\IShapeInfo.cs" />
-    <Compile Include="OperatorGraphVisualization\OperatorShape.cs" />
     <Compile Include="General\ShapeInfo.cs">
       <SubType>Code</SubType>
     </Compile>
-    <Compile Include="OperatorGraphVisualization\OperatorShapeInfoFactory.cs" />
   </ItemGroup>
   <ItemGroup>
@@ -152,15 +141,7 @@
       <Name>HeuristicLab.Collections-3.3</Name>
     </ProjectReference>
-    <ProjectReference Include="..\..\HeuristicLab.Common.Resources\3.3\HeuristicLab.Common.Resources-3.3.csproj">
-      <Project>{0E27A536-1C4A-4624-A65E-DC4F4F23E3E1}</Project>
-      <Name>HeuristicLab.Common.Resources-3.3</Name>
-    </ProjectReference>
     <ProjectReference Include="..\..\HeuristicLab.Common\3.3\HeuristicLab.Common-3.3.csproj">
       <Project>{A9AD58B9-3EF9-4CC1-97E5-8D909039FF5C}</Project>
       <Name>HeuristicLab.Common-3.3</Name>
-    </ProjectReference>
-    <ProjectReference Include="..\..\HeuristicLab.Core.Views\3.3\HeuristicLab.Core.Views-3.3.csproj">
-      <Project>{E226881D-315F-423D-B419-A766FE0D8685}</Project>
-      <Name>HeuristicLab.Core.Views-3.3</Name>
     </ProjectReference>
     <ProjectReference Include="..\..\HeuristicLab.Core\3.3\HeuristicLab.Core-3.3.csproj">
@@ -168,35 +149,7 @@
       <Name>HeuristicLab.Core-3.3</Name>
     </ProjectReference>
-    <ProjectReference Include="..\..\HeuristicLab.ExtLibs\HeuristicLab.Netron\3.0.2672.12446\HeuristicLab.Netron-3.0.2672.12446\HeuristicLab.Netron-3.0.2672.12446.csproj">
-      <Project>{BB994448-2B21-4564-BB2E-38D8FFF8CF18}</Project>
-      <Name>HeuristicLab.Netron-3.0.2672.12446 %28HeuristicLab.ExtLibs\HeuristicLab.Netron\HeuristicLab.Netron-3.0.2672.12446\HeuristicLab.Netron-3.0.2672.12446%29</Name>
-    </ProjectReference>
-    <ProjectReference Include="..\..\HeuristicLab.ExtLibs\HeuristicLab.Netron\3.0.2672.12446\Netron.Diagramming.Core-3.0.2672.12446\Netron.Diagramming.Core-3.0.2672.12446.csproj">
-      <Project>{96AEBBEE-4203-45F3-BCF5-7B73BF256BDA}</Project>
-      <Name>Netron.Diagramming.Core-3.0.2672.12446</Name>
-    </ProjectReference>
-    <ProjectReference Include="..\..\HeuristicLab.MainForm.WindowsForms\3.3\HeuristicLab.MainForm.WindowsForms-3.3.csproj">
-      <Project>{AB687BBE-1BFE-476B-906D-44237135431D}</Project>
-      <Name>HeuristicLab.MainForm.WindowsForms-3.3</Name>
-    </ProjectReference>
-    <ProjectReference Include="..\..\HeuristicLab.MainForm\3.3\HeuristicLab.MainForm-3.3.csproj">
-      <Project>{3BD61258-31DA-4B09-89C0-4F71FEF5F05A}</Project>
-      <Name>HeuristicLab.MainForm-3.3</Name>
-    </ProjectReference>
-    <ProjectReference Include="..\..\HeuristicLab.Operators.Views\3.3\HeuristicLab.Operators.Views-3.3.csproj">
-      <Project>{C49CB749-8B24-4628-8003-E86475749410}</Project>
-      <Name>HeuristicLab.Operators.Views-3.3</Name>
-    </ProjectReference>
     <ProjectReference Include="..\..\HeuristicLab.Operators\3.3\HeuristicLab.Operators-3.3.csproj">
       <Project>{23DA7FF4-D5B8-41B6-AA96-F0561D24F3EE}</Project>
       <Name>HeuristicLab.Operators-3.3</Name>
-    </ProjectReference>
-    <ProjectReference Include="..\..\HeuristicLab.Optimizer\3.3\HeuristicLab.Optimizer-3.3.csproj">
-      <Project>{C664305E-497C-4533-A140-967DEDB05C19}</Project>
-      <Name>HeuristicLab.Optimizer-3.3</Name>
-    </ProjectReference>
-    <ProjectReference Include="..\..\HeuristicLab.Parameters\3.3\HeuristicLab.Parameters-3.3.csproj">
-      <Project>{56F9106A-079F-4C61-92F6-86A84C2D84B7}</Project>
-      <Name>HeuristicLab.Parameters-3.3</Name>
     </ProjectReference>
     <ProjectReference Include="..\..\HeuristicLab.Persistence\3.3\HeuristicLab.Persistence-3.3.csproj">
Index: /branches/histogram/HeuristicLab.Operators.Views.GraphVisualization/3.3/HeuristicLabOperatorsViewsGraphVisualizationPlugin.cs.frame
===================================================================
--- /branches/histogram/HeuristicLab.Operators.Views.GraphVisualization/3.3/HeuristicLabOperatorsViewsGraphVisualizationPlugin.cs.frame	(revision 6045)
+++ /branches/histogram/HeuristicLab.Operators.Views.GraphVisualization/3.3/HeuristicLabOperatorsViewsGraphVisualizationPlugin.cs.frame	(revision 6046)
@@ -33,9 +33,5 @@
   [PluginDependency("HeuristicLab.Collections", "3.3")]
   [PluginDependency("HeuristicLab.Common", "3.3")]
-  [PluginDependency("HeuristicLab.Common.Resources", "3.3")]
   [PluginDependency("HeuristicLab.Core", "3.3")]
-  [PluginDependency("HeuristicLab.MainForm", "3.3")]
-  [PluginDependency("HeuristicLab.MainForm.WindowsForms", "3.3")]
-  [PluginDependency("HeuristicLab.Netron", "3.0")]
   [PluginDependency("HeuristicLab.Persistence", "3.3")]
   public class HeuristicLabOperatorsViewsGraphVisualizationPlugin : PluginBase {
Index: /branches/histogram/HeuristicLab.Operators.Views.GraphVisualization/3.3/OperatorGraphVisualization/IOperatorShapeInfo.cs
===================================================================
--- /branches/histogram/HeuristicLab.Operators.Views.GraphVisualization/3.3/OperatorGraphVisualization/IOperatorShapeInfo.cs	(revision 6045)
+++ /branches/histogram/HeuristicLab.Operators.Views.GraphVisualization/3.3/OperatorGraphVisualization/IOperatorShapeInfo.cs	(revision 6046)
@@ -35,4 +35,5 @@
     void RemoveConnector(string connectorName);
 
+    IEnumerable<string> Labels { get; }
     void UpdateLabels(IEnumerable<string> labels);
   }
Index: anches/histogram/HeuristicLab.Operators.Views.GraphVisualization/3.3/OperatorGraphVisualization/OperatorGraphView.Designer.cs
===================================================================
--- /branches/histogram/HeuristicLab.Operators.Views.GraphVisualization/3.3/OperatorGraphVisualization/OperatorGraphView.Designer.cs	(revision 6045)
+++ 	(revision )
@@ -1,296 +1,0 @@
-﻿#region License Information
-/* HeuristicLab
- * Copyright (C) 2002-2011 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
-
-namespace HeuristicLab.Operators.Views.GraphVisualization {
-  partial class OperatorGraphView {
-    /// <summary> 
-    /// Required designer variable.
-    /// </summary>
-    private System.ComponentModel.IContainer components = null;
-
-    /// <summary> 
-    /// Clean up any resources being used.
-    /// </summary>
-    /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
-    protected override void Dispose(bool disposing) {
-      if (disposing && (components != null)) {
-        components.Dispose();
-      }
-      base.Dispose(disposing);
-    }
-
-    #region Component Designer generated code
-
-    /// <summary> 
-    /// Required method for Designer support - do not modify 
-    /// the contents of this method with the code editor.
-    /// </summary>
-    private void InitializeComponent() {
-      this.components = new System.ComponentModel.Container();
-      System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(OperatorGraphView));
-      this.graphVisualizationInfoView = new HeuristicLab.Operators.Views.GraphVisualization.GraphVisualizationInfoView();
-      this.shapeContextMenu = new System.Windows.Forms.ContextMenuStrip(this.components);
-      this.openViewToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
-      this.initialToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
-      this.breakPointToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
-      this.splitContainer = new System.Windows.Forms.SplitContainer();
-      this.screenshotButton = new System.Windows.Forms.Button();
-      this.zoomOutButton = new System.Windows.Forms.Button();
-      this.zoomInButton = new System.Windows.Forms.Button();
-      this.zoomToFitButton = new System.Windows.Forms.Button();
-      this.relayoutButton = new System.Windows.Forms.Button();
-      this.connectButton = new System.Windows.Forms.Button();
-      this.panButton = new System.Windows.Forms.Button();
-      this.selectButton = new System.Windows.Forms.Button();
-      this.detailsGroupBox = new System.Windows.Forms.GroupBox();
-      this.detailsViewHost = new HeuristicLab.MainForm.WindowsForms.ViewHost();
-      this.buttonToolTip = new System.Windows.Forms.ToolTip(this.components);
-      this.shapeContextMenu.SuspendLayout();
-      this.splitContainer.Panel1.SuspendLayout();
-      this.splitContainer.Panel2.SuspendLayout();
-      this.splitContainer.SuspendLayout();
-      this.detailsGroupBox.SuspendLayout();
-      this.SuspendLayout();
-      // 
-      // graphVisualizationInfoView
-      // 
-      this.graphVisualizationInfoView.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
-                  | System.Windows.Forms.AnchorStyles.Left)
-                  | System.Windows.Forms.AnchorStyles.Right)));
-      this.graphVisualizationInfoView.Content = null;
-      this.graphVisualizationInfoView.Location = new System.Drawing.Point(3, 30);
-      this.graphVisualizationInfoView.Name = "graphVisualizationInfoView";
-      this.graphVisualizationInfoView.ReadOnly = false;
-      this.graphVisualizationInfoView.Size = new System.Drawing.Size(662, 248);
-      this.graphVisualizationInfoView.TabIndex = 0;
-      // 
-      // shapeContextMenu
-      // 
-      this.shapeContextMenu.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
-            this.openViewToolStripMenuItem,
-            this.initialToolStripMenuItem,
-            this.breakPointToolStripMenuItem});
-      this.shapeContextMenu.Name = "shapeContextMenu";
-      this.shapeContextMenu.Size = new System.Drawing.Size(154, 70);
-      this.shapeContextMenu.Opening += new System.ComponentModel.CancelEventHandler(this.shapeContextMenu_Opening);
-      // 
-      // openViewToolStripMenuItem
-      // 
-      this.openViewToolStripMenuItem.Font = new System.Drawing.Font("Segoe UI", 9F, System.Drawing.FontStyle.Bold);
-      this.openViewToolStripMenuItem.Name = "openViewToolStripMenuItem";
-      this.openViewToolStripMenuItem.Size = new System.Drawing.Size(153, 22);
-      this.openViewToolStripMenuItem.Text = "Open View";
-      this.openViewToolStripMenuItem.Click += new System.EventHandler(this.openViewToolStripMenuItem_Click);
-      // 
-      // initialToolStripMenuItem
-      // 
-      this.initialToolStripMenuItem.Name = "initialToolStripMenuItem";
-      this.initialToolStripMenuItem.Size = new System.Drawing.Size(153, 22);
-      this.initialToolStripMenuItem.Text = "Initial Operator";
-      this.initialToolStripMenuItem.Click += new System.EventHandler(this.initialOperatorToolStripMenuItem_Click);
-      // 
-      // breakPointToolStripMenuItem
-      // 
-      this.breakPointToolStripMenuItem.Name = "breakPointToolStripMenuItem";
-      this.breakPointToolStripMenuItem.Size = new System.Drawing.Size(153, 22);
-      this.breakPointToolStripMenuItem.Text = "Breakpoint";
-      this.breakPointToolStripMenuItem.Click += new System.EventHandler(this.breakPointToolStripMenuItem_Click);
-      // 
-      // splitContainer
-      // 
-      this.splitContainer.Dock = System.Windows.Forms.DockStyle.Fill;
-      this.splitContainer.Location = new System.Drawing.Point(0, 0);
-      this.splitContainer.Name = "splitContainer";
-      this.splitContainer.Orientation = System.Windows.Forms.Orientation.Horizontal;
-      // 
-      // splitContainer.Panel1
-      // 
-      this.splitContainer.Panel1.Controls.Add(this.screenshotButton);
-      this.splitContainer.Panel1.Controls.Add(this.zoomOutButton);
-      this.splitContainer.Panel1.Controls.Add(this.zoomInButton);
-      this.splitContainer.Panel1.Controls.Add(this.zoomToFitButton);
-      this.splitContainer.Panel1.Controls.Add(this.relayoutButton);
-      this.splitContainer.Panel1.Controls.Add(this.connectButton);
-      this.splitContainer.Panel1.Controls.Add(this.panButton);
-      this.splitContainer.Panel1.Controls.Add(this.selectButton);
-      this.splitContainer.Panel1.Controls.Add(this.graphVisualizationInfoView);
-      // 
-      // splitContainer.Panel2
-      // 
-      this.splitContainer.Panel2.Controls.Add(this.detailsGroupBox);
-      this.splitContainer.Size = new System.Drawing.Size(665, 444);
-      this.splitContainer.SplitterDistance = 279;
-      this.splitContainer.TabIndex = 1;
-      // 
-      // screenshotButton
-      // 
-      this.screenshotButton.Image = HeuristicLab.Common.Resources.VSImageLibrary.Image;
-      this.screenshotButton.Location = new System.Drawing.Point(243, 3);
-      this.screenshotButton.Name = "screenshotButton";
-      this.screenshotButton.Size = new System.Drawing.Size(24, 24);
-      this.screenshotButton.TabIndex = 8;
-      this.buttonToolTip.SetToolTip(this.screenshotButton, "Screenshot");
-      this.screenshotButton.UseVisualStyleBackColor = true;
-      this.screenshotButton.Click += new System.EventHandler(this.screenshotButton_Click);
-      // 
-      // zoomOutButton
-      // 
-      this.zoomOutButton.Image = HeuristicLab.Common.Resources.VSImageLibrary.ZoomOut;
-      this.zoomOutButton.Location = new System.Drawing.Point(213, 3);
-      this.zoomOutButton.Name = "zoomOutButton";
-      this.zoomOutButton.Size = new System.Drawing.Size(24, 24);
-      this.zoomOutButton.TabIndex = 7;
-      this.buttonToolTip.SetToolTip(this.zoomOutButton, "Zoom Out");
-      this.zoomOutButton.UseVisualStyleBackColor = true;
-      this.zoomOutButton.Click += new System.EventHandler(this.zoomOutButton_Click);
-      // 
-      // zoomInButton
-      // 
-      this.zoomInButton.Image = HeuristicLab.Common.Resources.VSImageLibrary.ZoomIn;
-      this.zoomInButton.Location = new System.Drawing.Point(183, 3);
-      this.zoomInButton.Name = "zoomInButton";
-      this.zoomInButton.Size = new System.Drawing.Size(24, 24);
-      this.zoomInButton.TabIndex = 6;
-      this.buttonToolTip.SetToolTip(this.zoomInButton, "Zoom In");
-      this.zoomInButton.UseVisualStyleBackColor = true;
-      this.zoomInButton.Click += new System.EventHandler(this.zoomInButton_Click);
-      // 
-      // zoomAreaButton
-      // 
-      this.zoomToFitButton.Image = HeuristicLab.Common.Resources.VSImageLibrary.ActualSize;
-      this.zoomToFitButton.Location = new System.Drawing.Point(153, 3);
-      this.zoomToFitButton.Name = "zoomAreaButton";
-      this.zoomToFitButton.Size = new System.Drawing.Size(24, 24);
-      this.zoomToFitButton.TabIndex = 5;
-      this.buttonToolTip.SetToolTip(this.zoomToFitButton, "Zoom to Fit");
-      this.zoomToFitButton.UseVisualStyleBackColor = true;
-      this.zoomToFitButton.Click += new System.EventHandler(this.zoomAreaButton_Click);
-      // 
-      // relayoutButton
-      // 
-      this.relayoutButton.Image = HeuristicLab.Common.Resources.VSImageLibrary.RefreshDocument;
-      this.relayoutButton.Location = new System.Drawing.Point(123, 3);
-      this.relayoutButton.Name = "relayoutButton";
-      this.relayoutButton.Size = new System.Drawing.Size(24, 24);
-      this.relayoutButton.TabIndex = 4;
-      this.buttonToolTip.SetToolTip(this.relayoutButton, "Relayout Graph");
-      this.relayoutButton.UseVisualStyleBackColor = true;
-      this.relayoutButton.Click += new System.EventHandler(this.relayoutButton_Click);
-      // 
-      // connectButton
-      // 
-      this.connectButton.Image = HeuristicLab.Common.Resources.VSImageLibrary.Interface;
-      this.connectButton.Location = new System.Drawing.Point(63, 3);
-      this.connectButton.Name = "connectButton";
-      this.connectButton.Size = new System.Drawing.Size(24, 24);
-      this.connectButton.TabIndex = 3;
-      this.buttonToolTip.SetToolTip(this.connectButton, "Connection Tool");
-      this.connectButton.UseVisualStyleBackColor = true;
-      this.connectButton.Click += new System.EventHandler(this.connectButton_Click);
-      // 
-      // panButton
-      // 
-      this.panButton.Image = HeuristicLab.Common.Resources.VSImageLibrary.Breakpoint;
-      this.panButton.Location = new System.Drawing.Point(33, 3);
-      this.panButton.Name = "panButton";
-      this.panButton.Size = new System.Drawing.Size(24, 24);
-      this.panButton.TabIndex = 2;
-      this.buttonToolTip.SetToolTip(this.panButton, "Pan Tool");
-      this.panButton.UseVisualStyleBackColor = true;
-      this.panButton.Click += new System.EventHandler(this.panButton_Click);
-      // 
-      // selectButton
-      // 
-      this.selectButton.Image = HeuristicLab.Common.Resources.VSImageLibrary.Pointer;
-      this.selectButton.Location = new System.Drawing.Point(3, 3);
-      this.selectButton.Name = "selectButton";
-      this.selectButton.Size = new System.Drawing.Size(24, 24);
-      this.selectButton.TabIndex = 1;
-      this.buttonToolTip.SetToolTip(this.selectButton, "Select Tool");
-      this.selectButton.UseVisualStyleBackColor = true;
-      this.selectButton.Click += new System.EventHandler(this.selectButton_Click);
-      // 
-      // detailsGroupBox
-      // 
-      this.detailsGroupBox.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
-                  | System.Windows.Forms.AnchorStyles.Left)
-                  | System.Windows.Forms.AnchorStyles.Right)));
-      this.detailsGroupBox.Controls.Add(this.detailsViewHost);
-      this.detailsGroupBox.Location = new System.Drawing.Point(0, 0);
-      this.detailsGroupBox.Name = "detailsGroupBox";
-      this.detailsGroupBox.Size = new System.Drawing.Size(665, 161);
-      this.detailsGroupBox.TabIndex = 0;
-      this.detailsGroupBox.TabStop = false;
-      this.detailsGroupBox.Text = "Details";
-      // 
-      // detailsViewHost
-      // 
-      this.detailsViewHost.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
-                  | System.Windows.Forms.AnchorStyles.Left)
-                  | System.Windows.Forms.AnchorStyles.Right)));
-      this.detailsViewHost.Content = null;
-      this.detailsViewHost.Location = new System.Drawing.Point(3, 16);
-      this.detailsViewHost.Name = "detailsViewHost";
-      this.detailsViewHost.ReadOnly = false;
-      this.detailsViewHost.Size = new System.Drawing.Size(659, 142);
-      this.detailsViewHost.TabIndex = 0;
-      this.detailsViewHost.ViewType = null;
-      // 
-      // OperatorGraphView
-      // 
-      this.DragOver += new System.Windows.Forms.DragEventHandler(this.OperatorGraphView_DragEnterOver);
-      this.DragDrop += new System.Windows.Forms.DragEventHandler(this.OperatorGraphView_DragDrop);
-      this.DragEnter += new System.Windows.Forms.DragEventHandler(this.OperatorGraphView_DragEnterOver);
-      this.AllowDrop = true;
-      this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
-      this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
-      this.Controls.Add(this.splitContainer);
-      this.Name = "OperatorGraphView";
-      this.Size = new System.Drawing.Size(665, 444);
-      this.shapeContextMenu.ResumeLayout(false);
-      this.splitContainer.Panel1.ResumeLayout(false);
-      this.splitContainer.Panel2.ResumeLayout(false);
-      this.splitContainer.ResumeLayout(false);
-      this.detailsGroupBox.ResumeLayout(false);
-      this.ResumeLayout(false);
-
-    }
-    #endregion
-
-    private GraphVisualizationInfoView graphVisualizationInfoView;
-    private System.Windows.Forms.ContextMenuStrip shapeContextMenu;
-    private System.Windows.Forms.ToolStripMenuItem openViewToolStripMenuItem;
-    private System.Windows.Forms.ToolStripMenuItem initialToolStripMenuItem;
-    private System.Windows.Forms.ToolStripMenuItem breakPointToolStripMenuItem;
-    private System.Windows.Forms.SplitContainer splitContainer;
-    private System.Windows.Forms.GroupBox detailsGroupBox;
-    private HeuristicLab.MainForm.WindowsForms.ViewHost detailsViewHost;
-    private System.Windows.Forms.Button selectButton;
-    private System.Windows.Forms.Button zoomOutButton;
-    private System.Windows.Forms.Button zoomInButton;
-    private System.Windows.Forms.Button zoomToFitButton;
-    private System.Windows.Forms.Button relayoutButton;
-    private System.Windows.Forms.Button connectButton;
-    private System.Windows.Forms.Button panButton;
-    private System.Windows.Forms.Button screenshotButton;
-    private System.Windows.Forms.ToolTip buttonToolTip;
-  }
-}
Index: anches/histogram/HeuristicLab.Operators.Views.GraphVisualization/3.3/OperatorGraphVisualization/OperatorGraphView.cs
===================================================================
--- /branches/histogram/HeuristicLab.Operators.Views.GraphVisualization/3.3/OperatorGraphVisualization/OperatorGraphView.cs	(revision 6045)
+++ 	(revision )
@@ -1,310 +1,0 @@
-﻿#region License Information
-/* HeuristicLab
- * Copyright (C) 2002-2011 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;
-using System.Drawing;
-using System.Linq;
-using System.Windows.Forms;
-using HeuristicLab.Core;
-using HeuristicLab.MainForm;
-using HeuristicLab.MainForm.WindowsForms;
-using Netron.Diagramming.Core;
-
-namespace HeuristicLab.Operators.Views.GraphVisualization {
-  [View("OperatorGraph View (Chart)")]
-  [Content(typeof(OperatorGraph), true)]
-  public partial class OperatorGraphView : AsynchronousContentView {
-    public OperatorGraphView() {
-      InitializeComponent();
-
-      this.graphVisualizationInfoView.Controller.OnShowContextMenu += new EventHandler<EntityMenuEventArgs>(Controller_OnShowContextMenu);
-      this.graphVisualizationInfoView.Controller.Model.Selection.OnNewSelection += new EventHandler(Controller_SelectionChanged);
-      this.graphVisualizationInfoView.Controller.OnMouseDown += new EventHandler<MouseEventArgs>(Controller_OnMouseDown);
-      foreach (ITool tool in this.graphVisualizationInfoView.Controller.Tools) {
-        tool.OnToolActivate += new EventHandler<ToolEventArgs>(tool_OnToolActivate);
-        tool.OnToolDeactivate += new EventHandler<ToolEventArgs>(tool_OnToolDeactivate);
-      }
-    }
-
-    public new OperatorGraph Content {
-      get { return (OperatorGraph)base.Content; }
-      set { base.Content = value; }
-    }
-
-    protected override void OnContentChanged() {
-      if (Content != null) {
-        bool createdVisualizationInfo = false;
-        if (this.VisualizationInfo == null) {
-          this.VisualizationInfo = new OperatorGraphVisualizationInfo(this.Content);
-          createdVisualizationInfo = true;
-        }
-        this.graphVisualizationInfoView.Content = this.VisualizationInfo;
-        if (createdVisualizationInfo)
-          this.graphVisualizationInfoView.RelayoutGraph();
-      } else {
-        this.graphVisualizationInfoView.Content = null;
-      }
-    }
-
-    protected override void SetEnabledStateOfControls() {
-      base.SetEnabledStateOfControls();
-      if (Content == null) {
-        selectButton.Enabled = false;
-        panButton.Enabled = false;
-        relayoutButton.Enabled = false;
-        zoomToFitButton.Enabled = false;
-        zoomInButton.Enabled = false;
-        zoomOutButton.Enabled = false;
-        screenshotButton.Enabled = false;
-        detailsViewHost.Enabled = false;
-        connectButton.Enabled = false;
-      } else {
-        selectButton.Enabled = true;
-        panButton.Enabled = true;
-        relayoutButton.Enabled = true;
-        zoomToFitButton.Enabled = true;
-        zoomInButton.Enabled = true;
-        zoomOutButton.Enabled = true;
-        screenshotButton.Enabled = true;
-        detailsViewHost.Enabled = true;
-        connectButton.Enabled = !ReadOnly;
-      }
-    }
-
-    private OperatorGraphVisualizationInfo VisualizationInfo {
-      get { return Content.VisualizationInfo as OperatorGraphVisualizationInfo; }
-      set { this.Content.VisualizationInfo = value; }
-    }
-
-    private void Controller_SelectionChanged(object sender, EventArgs e) {
-      this.detailsViewHost.ViewType = null;
-      this.detailsViewHost.Content = null;
-
-      CollectionBase<IDiagramEntity> selectedObjects = this.graphVisualizationInfoView.Controller.Model.Selection.SelectedItems;
-      if (selectedObjects.Count == 1) {
-        IShape shape = selectedObjects[0] as IShape;
-        if (shape != null) {
-          IOperatorShapeInfo shapeInfo = shape.Tag as IOperatorShapeInfo;
-          IOperator op = this.VisualizationInfo.GetOperatorForShapeInfo(shapeInfo);
-          this.detailsViewHost.Content = op;
-        }
-      }
-
-      IConnector connector = this.graphVisualizationInfoView.Controller.Model.Selection.Connector;
-      if (connector != null) {
-        IShape shape = connector.Parent as IShape;
-        string connectorName = connector.Name;
-        if (shape == null) {
-          shape = connector.AttachedTo.Parent as IShape; //connection connector selected
-          connectorName = connector.AttachedTo.Name;
-        }
-        if (shape != null) {
-          IOperatorShapeInfo shapeInfo = shape.Tag as IOperatorShapeInfo;
-          IOperator op = this.VisualizationInfo.GetOperatorForShapeInfo(shapeInfo);
-          if (connectorName != "Predecessor") {
-            IParameter parameter = op.Parameters.Where(p => p.Name == connectorName).First();
-            this.detailsViewHost.ViewType = null;
-            this.detailsViewHost.Content = parameter;
-          }
-        }
-      }
-
-    }
-
-    private void Controller_OnMouseDown(object sender, MouseEventArgs e) {
-      if (e.Clicks >= 2) {
-        IShape shape = this.graphVisualizationInfoView.Controller.Model.GetShapeAt(e.Location);
-        if (shape != null) {
-          IOperatorShapeInfo shapeInfo = shape.Tag as IOperatorShapeInfo;
-          if (shapeInfo != null) {
-            IOperator op = this.VisualizationInfo.GetOperatorForShapeInfo(shapeInfo);
-            IContentView view = MainFormManager.MainForm.ShowContent(op);
-            if (view != null) {
-              view.ReadOnly = this.ReadOnly;
-              view.Locked = this.Locked;
-            }
-            HandledMouseEventArgs eventArgs = e as HandledMouseEventArgs;
-            if (eventArgs != null)
-              eventArgs.Handled = true;
-          }
-        }
-      }
-    }
-
-    #region context menu
-    private void Controller_OnShowContextMenu(object sender, EntityMenuEventArgs e) {
-      IShape shape = this.graphVisualizationInfoView.Controller.Model.GetShapeAt(e.MouseEventArgs.Location);
-      if (shape != null) {
-        IShapeInfo shapeInfo = shape.Tag as IShapeInfo;
-        this.shapeContextMenu.Tag = shapeInfo;
-        PointF worldPoint = this.graphVisualizationInfoView.Controller.View.WorldToView(e.MouseEventArgs.Location);
-        this.shapeContextMenu.Show(this, Point.Round(worldPoint));
-      }
-    }
-
-    private void shapeContextMenu_Opening(object sender, System.ComponentModel.CancelEventArgs e) {
-      IOperatorShapeInfo shapeInfo = this.shapeContextMenu.Tag as IOperatorShapeInfo;
-      if (shapeInfo != null) {
-        IOperator op = this.VisualizationInfo.GetOperatorForShapeInfo(shapeInfo);
-        this.initialToolStripMenuItem.Checked = this.Content.InitialOperator == op;
-        this.initialToolStripMenuItem.Enabled = !ReadOnly && !Locked;
-        this.breakPointToolStripMenuItem.Checked = op.Breakpoint;
-        this.breakPointToolStripMenuItem.Enabled = !Locked;
-      }
-    }
-
-    private void openViewToolStripMenuItem_Click(object sender, EventArgs e) {
-      IOperatorShapeInfo shapeInfo = this.shapeContextMenu.Tag as IOperatorShapeInfo;
-      if (shapeInfo != null) {
-        IOperator op = this.VisualizationInfo.GetOperatorForShapeInfo(shapeInfo);
-        IContentView view = MainFormManager.MainForm.ShowContent(op);
-        if (view != null) {
-          view.ReadOnly = this.ReadOnly;
-          view.Locked = this.Locked;
-        }
-      }
-    }
-
-    private void initialOperatorToolStripMenuItem_Click(object sender, EventArgs e) {
-      IOperatorShapeInfo shapeInfo = this.shapeContextMenu.Tag as IOperatorShapeInfo;
-      if (this.VisualizationInfo.InitialShape == shapeInfo)
-        this.VisualizationInfo.InitialShape = null;
-      else
-        this.VisualizationInfo.InitialShape = shapeInfo;
-    }
-
-    private void breakPointToolStripMenuItem_Click(object sender, EventArgs e) {
-      IOperatorShapeInfo shapeInfo = this.shapeContextMenu.Tag as IOperatorShapeInfo;
-      if (shapeInfo != null) {
-        IOperator op = this.VisualizationInfo.GetOperatorForShapeInfo(shapeInfo);
-        op.Breakpoint = !op.Breakpoint;
-      }
-    }
-    #endregion
-
-    #region drag and drop
-    private void OperatorGraphView_DragEnterOver(object sender, DragEventArgs e) {
-      e.Effect = DragDropEffects.None;
-      if (!ReadOnly && (e.Data.GetData(HeuristicLab.Common.Constants.DragDropDataFormat) is IOperator)) {
-        if ((e.KeyState & 32) == 32) e.Effect = DragDropEffects.Link;  // ALT key
-        else if ((e.KeyState & 4) == 4) e.Effect = DragDropEffects.Move;  // SHIFT key
-        else if (e.AllowedEffect.HasFlag(DragDropEffects.Copy)) e.Effect = DragDropEffects.Copy;
-        else if (e.AllowedEffect.HasFlag(DragDropEffects.Move)) e.Effect = DragDropEffects.Move;
-        else if (e.AllowedEffect.HasFlag(DragDropEffects.Link)) e.Effect = DragDropEffects.Link;
-      }
-    }
-
-    private void OperatorGraphView_DragDrop(object sender, DragEventArgs e) {
-      if (e.Effect != DragDropEffects.None) {
-        IOperator op = e.Data.GetData(HeuristicLab.Common.Constants.DragDropDataFormat) as IOperator;
-        if (e.Effect.HasFlag(DragDropEffects.Copy)) op = (IOperator)op.Clone();
-        IOperatorShapeInfo shapeInfo = OperatorShapeInfoFactory.CreateOperatorShapeInfo(op);
-        Point mouse = new Point(MousePosition.X, MousePosition.Y);
-        Point screen = this.graphVisualizationInfoView.PointToScreen(new Point(0, 0));
-        Point control = new Point(mouse.X - screen.X, mouse.Y - screen.Y);
-        PointF worldPoint = this.graphVisualizationInfoView.Controller.View.ViewToWorld(control);
-
-        if (worldPoint.X < 0)
-          worldPoint.X = 0;
-        if (worldPoint.Y < 0)
-          worldPoint.Y = 0;
-
-        shapeInfo.Location = Point.Round(worldPoint);
-        this.VisualizationInfo.AddShapeInfo(op, shapeInfo);
-      }
-    }
-    #endregion
-
-    private void tool_OnToolActivate(object sender, ToolEventArgs e) {
-      Button button = GetButtonForTool(e.Properties.Name);
-      if (button != null)
-        button.Enabled = false;
-    }
-
-    private void tool_OnToolDeactivate(object sender, ToolEventArgs e) {
-      Button button = GetButtonForTool(e.Properties.Name);
-      if (button != null)
-        button.Enabled = true;
-    }
-
-    private Button GetButtonForTool(string toolName) {
-      Button button = null;
-      switch (toolName) {
-        case ControllerBase.SelectionToolName:
-          button = this.selectButton;
-          break;
-        case ControllerBase.PanToolName:
-          button = this.panButton;
-          break;
-        case ControllerBase.ConnectionToolName:
-          button = this.connectButton;
-          break;
-        case ControllerBase.ZoomAreaToolName:
-          button = this.zoomToFitButton;
-          break;
-      }
-      return button;
-    }
-
-    private void selectButton_Click(object sender, EventArgs e) {
-      ITool tool = this.graphVisualizationInfoView.Controller.Tools.Where(t => t.Name == ControllerBase.SelectionToolName).First();
-      this.graphVisualizationInfoView.Controller.DeactivateAllTools();
-    }
-
-    private void panButton_Click(object sender, EventArgs e) {
-      this.graphVisualizationInfoView.Controller.ActivateTool(ControllerBase.PanToolName);
-    }
-
-    private void connectButton_Click(object sender, EventArgs e) {
-      this.graphVisualizationInfoView.Controller.ActivateTool(ControllerBase.ConnectionToolName);
-    }
-
-    private void relayoutButton_Click(object sender, EventArgs e) {
-      this.graphVisualizationInfoView.RelayoutGraph();
-    }
-
-    private void zoomAreaButton_Click(object sender, EventArgs e) {
-      this.graphVisualizationInfoView.Controller.View.ZoomFit();
-    }
-
-    private void zoomInButton_Click(object sender, EventArgs e) {
-      this.graphVisualizationInfoView.Controller.ActivateTool(ControllerBase.ZoomInToolName);
-    }
-
-    private void zoomOutButton_Click(object sender, EventArgs e) {
-      this.graphVisualizationInfoView.Controller.ActivateTool(ControllerBase.ZoomOutToolName);
-    }
-
-    private void screenshotButton_Click(object sender, EventArgs e) {
-      Bitmap bitmap = ImageExporter.FromBundle(new Bundle(this.graphVisualizationInfoView.Controller.Model.Paintables), this.graphVisualizationInfoView.Controller.View.Graphics);
-      SaveFileDialog saveFileDialog = new SaveFileDialog();
-      saveFileDialog.Title = "Save Screenshot";
-      saveFileDialog.DefaultExt = "png";
-      saveFileDialog.Filter = "Portable Network Graphics|*.png|All Files|*.*";
-      saveFileDialog.FilterIndex = 1;
-      saveFileDialog.AddExtension = true;
-
-      if (saveFileDialog.ShowDialog() == DialogResult.OK) {
-        bitmap.Save(saveFileDialog.FileName);
-      }
-    }
-  }
-}
Index: /branches/histogram/HeuristicLab.Operators.Views.GraphVisualization/3.3/OperatorGraphVisualization/OperatorGraphVisualizationInfo.cs
===================================================================
--- /branches/histogram/HeuristicLab.Operators.Views.GraphVisualization/3.3/OperatorGraphVisualization/OperatorGraphVisualizationInfo.cs	(revision 6045)
+++ /branches/histogram/HeuristicLab.Operators.Views.GraphVisualization/3.3/OperatorGraphVisualization/OperatorGraphVisualizationInfo.cs	(revision 6046)
@@ -128,5 +128,5 @@
     }
 
-    internal IOperator GetOperatorForShapeInfo(IOperatorShapeInfo shapeInfo) {
+    public IOperator GetOperatorForShapeInfo(IOperatorShapeInfo shapeInfo) {
       return this.operatorShapeInfoMapping.GetBySecond(shapeInfo);
     }
@@ -192,5 +192,5 @@
 
     #region methods to manipulate operatorgraph by the shape info
-    internal void AddShapeInfo(IOperator op, IOperatorShapeInfo shapeInfo) {
+    public void AddShapeInfo(IOperator op, IOperatorShapeInfo shapeInfo) {
       this.RegisterOperatorEvents(op);
       this.operatorParameterCollectionMapping.Add(op, op.Parameters);
Index: /branches/histogram/HeuristicLab.Operators.Views.GraphVisualization/3.3/OperatorGraphVisualization/OperatorShape.cs
===================================================================
--- /branches/histogram/HeuristicLab.Operators.Views.GraphVisualization/3.3/OperatorGraphVisualization/OperatorShape.cs	(revision 6045)
+++ /branches/histogram/HeuristicLab.Operators.Views.GraphVisualization/3.3/OperatorGraphVisualization/OperatorShape.cs	(revision 6046)
@@ -20,262 +20,12 @@
 #endregion
 
-using System;
-using System.Collections.Generic;
-using System.Drawing;
-using System.Drawing.Drawing2D;
-using System.Linq;
-using HeuristicLab.Netron;
-using Netron.Diagramming.Core;
 
 
 namespace HeuristicLab.Operators.Views.GraphVisualization {
-  public class OperatorShape : ComplexShapeBase {
-    private static int LABEL_HEIGHT = 16;
-    private static int LABEL_WIDTH = 180;
-    private static int LABEL_SPACING = 3;
-    private int headerHeight = 30;
-
-    private ExpandableIconMaterial expandIconMaterial;
-    public OperatorShape()
-      : base() {
-      this.Resizable = false;
-      this.additionalConnectors = new List<IConnector>();
-      this.labels = new List<string>();
-    }
-
-    public override string EntityName {
-      get { return "Operator Shape"; }
-    }
-
-    public bool Collapsed {
-      get { return this.expandIconMaterial.Collapsed; }
-      set {
-        if (this.expandIconMaterial.Collapsed != value)
-          this.expandIconMaterial.Collapsed = value;
-      }
-    }
-
-    private Color lineColor;
-    public Color LineColor {
-      get { return this.lineColor; }
-      set { this.lineColor = value; }
-    }
-
-    private float lineWidth;
-    public float LineWidth {
-      get { return this.lineWidth; }
-      set { this.lineWidth = value; }
-    }
-
-    private Color color;
-    public Color Color {
-      get { return this.color; }
-      set { this.color = value; }
-    }
-
-    private string title;
-    public string Title {
-      get { return title; }
-      set { title = value; }
-    }
-
-    private IconMaterial iconMaterial;
-    public Bitmap Icon {
-      get { return this.iconMaterial.Icon; }
-      set {
-        this.iconMaterial.Icon = value;
-        this.iconMaterial.Transform(new Rectangle(new Point(Rectangle.X + 5, Rectangle.Y + 5), this.iconMaterial.Icon.Size));
-      }
-    }
-
-    #region additional connectors
-    private List<IConnector> additionalConnectors;
-    public IEnumerable<string> AdditionalConnectorNames {
-      get { return this.additionalConnectors.Select(c => c.Name); }
-    }
-
-    private IConnector predecessor;
-    public IConnector Predecessor {
-      get { return this.predecessor; }
-    }
-
-    private IConnector successor;
-    public IConnector Successor {
-      get { return this.successor; }
-    }
-
-    private IConnector CreateConnector(string connectorName, Point location) {
-      Connector connector = new Connector(location, this.Model);
-      connector.ConnectorStyle = ConnectorStyle.Square;
-      connector.Parent = this;
-      connector.Name = connectorName;
-      return connector;
-    }
-
-    public void AddConnector(string connectorName) {
-      IConnector connector = this.CreateConnector(connectorName, this.BottomRightCorner);
-
-      this.additionalConnectors.Add(connector);
-      this.Connectors.Add(connector);
-      this.UpdateConnectorLocation();
-    }
-
-    public void RemoveConnector(string connectorName) {
-      IConnector connector = this.additionalConnectors.Where(c => c.Name == connectorName).FirstOrDefault();
-      if (connector != null) {
-        this.additionalConnectors.Remove(connector);
-        this.Connectors.Remove(connector);
-        this.UpdateConnectorLocation();
-      }
-    }
-
-    private void UpdateConnectorLocation() {
-      if (this.additionalConnectors.Count == 0)
-        return;
-
-      int spacing = this.Rectangle.Width / this.additionalConnectors.Count;
-      int margin = spacing / 2;
-      int posX = margin + this.Rectangle.X;
-      for (int i = 0; i < this.additionalConnectors.Count; i++) {
-        this.additionalConnectors[i].MoveBy(new Point(posX - this.additionalConnectors[i].Point.X, 0));
-        posX += spacing;
-      }
-    }
-    #endregion
-
-    #region label material
-    private List<string> labels;
-    public IEnumerable<string> Labels {
-      get { return this.labels; }
-    }
-
-    public void UpdateLabels(IEnumerable<string> labels) {
-      this.labels = new List<string>(labels);
-      this.expandIconMaterial.Visible = this.labels.Count != 0;
-      this.UpdateLabels();
-    }
-    #endregion
-
-    private void expandIconMaterial_OnExpand(object sender, EventArgs e) {
-      this.UpdateLabels();
-    }
-
-    private void expandIconMaterial_OnCollapse(object sender, EventArgs e) {
-      this.UpdateLabels();
-    }
-
-    private Size CalculateSize() {
-      int width = this.Rectangle.Width;
-      int height = headerHeight;
-      if (!Collapsed)
-        height += this.labels.Count * (LABEL_HEIGHT + LABEL_SPACING);
-      return new Size(width, height);
-    }
-
-    private void UpdateLabels() {
-      Size newSize = CalculateSize();
-      if (this.Rectangle.Size != newSize) {
-        foreach (IConnector connector in this.additionalConnectors)
-          connector.MoveBy(new Point(0, newSize.Height - this.Rectangle.Height));
-        this.mRectangle = new Rectangle(this.Rectangle.Location, newSize);
-        this.Invalidate();
-        this.RaiseOnChange(this, new EntityEventArgs(this));
-      }
-    }
-
-    protected override void Initialize() {
-      base.Initialize();
-
-      //the initial size
-      this.Transform(0, 0, 200, headerHeight);
-      this.color = Color.LightBlue;
-
-      this.iconMaterial = new IconMaterial();
-      this.iconMaterial.Gliding = false;
-      this.Children.Add(iconMaterial);
-
-      Bitmap expandBitmap = new Bitmap(HeuristicLab.Common.Resources.VSImageLibrary.Expand);
-      Bitmap collapseBitmap = new Bitmap(HeuristicLab.Common.Resources.VSImageLibrary.Collapse);
-      this.expandIconMaterial = new ExpandableIconMaterial(expandBitmap, collapseBitmap);
-      this.expandIconMaterial.Gliding = false;
-      this.expandIconMaterial.Transform(new Rectangle(new Point(Rectangle.Right - 20, Rectangle.Y + 7), expandIconMaterial.Icon.Size));
-      this.expandIconMaterial.Visible = false;
-      this.expandIconMaterial.OnExpand += new EventHandler(expandIconMaterial_OnExpand);
-      this.expandIconMaterial.OnCollapse += new EventHandler(expandIconMaterial_OnCollapse);
-      this.Children.Add(expandIconMaterial);
-
-      this.predecessor = this.CreateConnector(OperatorShapeInfoFactory.PredecessorConnector, new Point(Rectangle.Left, Center.Y));
-      this.Connectors.Add(predecessor);
-
-      this.successor = this.CreateConnector(OperatorShapeInfoFactory.SuccessorConnector, (new Point(Rectangle.Right, Center.Y)));
-      this.Connectors.Add(successor);
-    }
-
-    public override void Paint(Graphics g) {
-      base.Paint(g);
-
-      g.SmoothingMode = SmoothingMode.HighQuality;
-
-      Pen pen = new Pen(lineColor, lineWidth);
-
-      SizeF titleSize = g.MeasureString(this.Title, ArtPalette.DefaultBoldFont, Rectangle.Width - 45);
-      if (titleSize.Height + 10 > Rectangle.Height) {
-        headerHeight = (int)titleSize.Height + 10;
-        this.UpdateLabels();
-      }
-
-      GraphicsPath path = new GraphicsPath();
-      path.AddArc(Rectangle.X, Rectangle.Y, 20, 20, -180, 90);
-      path.AddLine(Rectangle.X + 10, Rectangle.Y, Rectangle.X + Rectangle.Width - 10, Rectangle.Y);
-      path.AddArc(Rectangle.X + Rectangle.Width - 20, Rectangle.Y, 20, 20, -90, 90);
-      path.AddLine(Rectangle.X + Rectangle.Width, Rectangle.Y + 10, Rectangle.X + Rectangle.Width, Rectangle.Y + Rectangle.Height - 10);
-      path.AddArc(Rectangle.X + Rectangle.Width - 20, Rectangle.Y + Rectangle.Height - 20, 20, 20, 0, 90);
-      path.AddLine(Rectangle.X + Rectangle.Width - 10, Rectangle.Y + Rectangle.Height, Rectangle.X + 10, Rectangle.Y + Rectangle.Height);
-      path.AddArc(Rectangle.X, Rectangle.Y + Rectangle.Height - 20, 20, 20, 90, 90);
-      path.AddLine(Rectangle.X, Rectangle.Y + Rectangle.Height - 10, Rectangle.X, Rectangle.Y + 10);
-      //shadow
-      if (ArtPalette.EnableShadows) {
-        Region darkRegion = new Region(path);
-        darkRegion.Translate(5, 5);
-        g.FillRegion(ArtPalette.ShadowBrush, darkRegion);
-      }
-      //background
-      g.FillPath(Brush, path);
-
-      using (LinearGradientBrush gradientBrush = new LinearGradientBrush(Rectangle.Location, new Point(Rectangle.X + Rectangle.Width, Rectangle.Y), this.Color, Color.White)) {
-        Region gradientRegion = new Region(path);
-        g.FillRegion(gradientBrush, gradientRegion);
-      }
-
-      if (!this.Collapsed) {
-        TextStyle textStyle = new TextStyle(Color.Black, new Font("Arial", 7), StringAlignment.Near, StringAlignment.Near);
-        StringFormat stringFormat = textStyle.StringFormat;
-        stringFormat.Trimming = StringTrimming.EllipsisWord;
-        stringFormat.FormatFlags = StringFormatFlags.LineLimit;
-        Rectangle rect;
-
-        for (int i = 0; i < this.labels.Count; i++) {
-          rect = new Rectangle(Rectangle.X + 25, Rectangle.Y + headerHeight + i * (LABEL_HEIGHT + LABEL_SPACING), LABEL_WIDTH, LABEL_HEIGHT);
-          g.DrawString(textStyle.GetFormattedText(this.labels[i]), textStyle.Font, textStyle.GetBrush(), rect, stringFormat);
-        }
-      }
-
-      //the border
-      g.DrawPath(pen, path);
-
-      //the title
-      g.DrawString(this.Title, ArtPalette.DefaultBoldFont, Brushes.Black, new Rectangle(Rectangle.X + 25, Rectangle.Y + 5, Rectangle.Width - 45, Rectangle.Height - 5));
-
-
-      //the material
-      foreach (IPaintable material in Children)
-        material.Paint(g);
-
-      //the connectors
-      if (this.ShowConnectors) {
-        for (int k = 0; k < Connectors.Count; k++)
-          Connectors[k].Paint(g);
-      }
-    }
+  internal class OperatorShape {
+    //21.04.2011 mkommend
+    //Do not delete this empty class, because this type was moved in to the plugin GraphVisualiation.Views
+    //But it is referenced in persisted ShapeInfo objects and thus these files could not be loaded without this type
+    //Should be removed with HL 3.4
   }
 }
Index: /branches/histogram/HeuristicLab.Operators.Views.GraphVisualization/3.3/OperatorGraphVisualization/OperatorShapeInfo.cs
===================================================================
--- /branches/histogram/HeuristicLab.Operators.Views.GraphVisualization/3.3/OperatorGraphVisualization/OperatorShapeInfo.cs	(revision 6045)
+++ /branches/histogram/HeuristicLab.Operators.Views.GraphVisualization/3.3/OperatorGraphVisualization/OperatorShapeInfo.cs	(revision 6046)
@@ -22,14 +22,17 @@
 using System.Collections.Generic;
 using System.Drawing;
-using System.Linq;
 using HeuristicLab.Common;
 using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
-using Netron.Diagramming.Core;
 
 namespace HeuristicLab.Operators.Views.GraphVisualization {
   [StorableClass]
-  internal class OperatorShapeInfo : ShapeInfo, IOperatorShapeInfo {
+  public class OperatorShapeInfo : ShapeInfo, IOperatorShapeInfo {
     [Storable]
     private List<string> labels;
+    public IEnumerable<string> Labels {
+      get { return labels; }
+    }
+
+    private object lockObject = new object();
 
     [StorableConstructor]
@@ -42,5 +45,12 @@
       lineWidth = original.lineWidth;
       title = original.title;
-      if (original.icon != null) icon = (Bitmap)original.icon.Clone();
+
+      //mkommend: necessary because cloning a Bitmap is not threadsafe
+      //see http://stackoverflow.com/questions/1851292/invalidoperationexception-object-is-currently-in-use-elsewhere for further information
+      if (original.icon != null) {
+        lock (original.lockObject) {
+          icon = (Bitmap)original.icon.Clone();
+        }
+      }
 
       connectorNames = new List<string>(original.connectorNames);
@@ -52,5 +62,5 @@
 
     public OperatorShapeInfo()
-      : base(typeof(OperatorShape)) {
+      : base() {
       this.connectorNames = new List<string>();
       this.labels = new List<string>();
@@ -164,74 +174,4 @@
       }
     }
-
-    public override IShape CreateShape() {
-      OperatorShape shape = (OperatorShape)base.CreateShape();
-      shape.Title = this.Title;
-      shape.Color = this.Color;
-      shape.LineColor = this.LineColor;
-      shape.LineWidth = this.LineWidth;
-      shape.Icon = this.Icon;
-      shape.Collapsed = this.Collapsed;
-      foreach (string connectorName in this.connectorNames)
-        if (connectorName != OperatorShapeInfoFactory.SuccessorConnector && connectorName != OperatorShapeInfoFactory.PredecessorConnector)
-          shape.AddConnector(connectorName);
-
-      shape.UpdateLabels(this.labels);
-      return shape;
-    }
-
-    public override void UpdateShape(IShape shape) {
-      base.UpdateShape(shape);
-      OperatorShape operatorShape = (OperatorShape)shape;
-      operatorShape.Title = this.Title;
-      operatorShape.Color = this.Color;
-      operatorShape.LineColor = this.LineColor;
-      operatorShape.LineWidth = this.LineWidth;
-      operatorShape.Icon = this.Icon;
-      operatorShape.Collapsed = this.Collapsed;
-
-      int i = 0;
-      int j = 0;
-      //remove old connectors and skip correct connectors
-      List<string> oldConnectorNames = operatorShape.AdditionalConnectorNames.ToList();
-      while (i < this.connectorNames.Count && j < oldConnectorNames.Count) {
-        if (connectorNames[i] == OperatorShapeInfoFactory.SuccessorConnector ||
-          connectorNames[i] == OperatorShapeInfoFactory.PredecessorConnector)
-          i++;
-        else if (oldConnectorNames[j] == OperatorShapeInfoFactory.SuccessorConnector ||
-          oldConnectorNames[j] == OperatorShapeInfoFactory.PredecessorConnector)
-          j++;
-        else if (this.connectorNames[i] != oldConnectorNames[j]) {
-          operatorShape.RemoveConnector(oldConnectorNames[j]);
-          j++;
-        } else {
-          i++;
-          j++;
-        }
-      }
-      //remove remaining old connectors
-      for (; j < oldConnectorNames.Count; j++)
-        operatorShape.RemoveConnector(oldConnectorNames[j]);
-
-      //add new connectors except successor and connector
-      for (; i < this.connectorNames.Count; i++)
-        if (this.connectorNames[i] != OperatorShapeInfoFactory.SuccessorConnector && this.connectorNames[i] != OperatorShapeInfoFactory.PredecessorConnector)
-          operatorShape.AddConnector(this.connectorNames[i]);
-
-      operatorShape.UpdateLabels(this.labels);
-    }
-
-    public override void UpdateShapeInfo(IShape shape) {
-      base.UpdateShapeInfo(shape);
-      OperatorShape operatorShape = (OperatorShape)shape;
-      this.Title = operatorShape.Title;
-      this.Color = operatorShape.Color;
-      this.LineColor = operatorShape.LineColor;
-      this.LineWidth = operatorShape.LineWidth;
-      this.Icon = operatorShape.Icon;
-      this.Collapsed = operatorShape.Collapsed;
-
-      //TODO update Connector and labels;
-    }
   }
 }
Index: /branches/histogram/HeuristicLab.Operators.Views.GraphVisualization/3.3/OperatorGraphVisualization/OperatorShapeInfoFactory.cs
===================================================================
--- /branches/histogram/HeuristicLab.Operators.Views.GraphVisualization/3.3/OperatorGraphVisualization/OperatorShapeInfoFactory.cs	(revision 6045)
+++ /branches/histogram/HeuristicLab.Operators.Views.GraphVisualization/3.3/OperatorGraphVisualization/OperatorShapeInfoFactory.cs	(revision 6046)
@@ -26,5 +26,5 @@
 
 namespace HeuristicLab.Operators.Views.GraphVisualization {
-  internal static class OperatorShapeInfoFactory {
+  public static class OperatorShapeInfoFactory {
     public const string PredecessorConnector = "Predecessor";
     public const string SuccessorConnector = "Successor";
Index: /branches/histogram/HeuristicLab.Operators.Views/3.3/HeuristicLab.Operators.Views-3.3.csproj
===================================================================
--- /branches/histogram/HeuristicLab.Operators.Views/3.3/HeuristicLab.Operators.Views-3.3.csproj	(revision 6045)
+++ /branches/histogram/HeuristicLab.Operators.Views/3.3/HeuristicLab.Operators.Views-3.3.csproj	(revision 6046)
@@ -96,12 +96,4 @@
   </PropertyGroup>
   <ItemGroup>
-    <Reference Include="HeuristicLab.Common.Resources-3.3, Version=3.3.0.0, Culture=neutral, PublicKeyToken=ba48961d6f65dcec, processorArchitecture=MSIL" />
-    <Reference Include="HeuristicLab.Data-3.3, Version=3.3.0.0, Culture=neutral, PublicKeyToken=ba48961d6f65dcec, processorArchitecture=MSIL" />
-    <Reference Include="HeuristicLab.Data.Views-3.3">
-      <HintPath>..\..\HeuristicLab.Data.Views\3.3\bin\Debug\HeuristicLab.Data.Views-3.3.dll</HintPath>
-    </Reference>
-    <Reference Include="HeuristicLab.Optimization-3.3">
-      <HintPath>..\..\HeuristicLab.Optimization\3.3\bin\Debug\HeuristicLab.Optimization-3.3.dll</HintPath>
-    </Reference>
     <Reference Include="System" />
     <Reference Include="System.Core">
@@ -164,4 +156,8 @@
       <Name>HeuristicLab.Collections-3.3</Name>
     </ProjectReference>
+    <ProjectReference Include="..\..\HeuristicLab.Common.Resources\3.3\HeuristicLab.Common.Resources-3.3.csproj">
+      <Project>{0E27A536-1C4A-4624-A65E-DC4F4F23E3E1}</Project>
+      <Name>HeuristicLab.Common.Resources-3.3</Name>
+    </ProjectReference>
     <ProjectReference Include="..\..\HeuristicLab.Common\3.3\HeuristicLab.Common-3.3.csproj">
       <Project>{A9AD58B9-3EF9-4CC1-97E5-8D909039FF5C}</Project>
@@ -176,4 +172,12 @@
       <Name>HeuristicLab.Core-3.3</Name>
     </ProjectReference>
+    <ProjectReference Include="..\..\HeuristicLab.Data.Views\3.3\HeuristicLab.Data.Views-3.3.csproj">
+      <Project>{72104A0B-90E7-42F3-9ABE-9BBBADD4B943}</Project>
+      <Name>HeuristicLab.Data.Views-3.3</Name>
+    </ProjectReference>
+    <ProjectReference Include="..\..\HeuristicLab.Data\3.3\HeuristicLab.Data-3.3.csproj">
+      <Project>{BBAB9DF5-5EF3-4BA8-ADE9-B36E82114937}</Project>
+      <Name>HeuristicLab.Data-3.3</Name>
+    </ProjectReference>
     <ProjectReference Include="..\..\HeuristicLab.MainForm.WindowsForms\3.3\HeuristicLab.MainForm.WindowsForms-3.3.csproj">
       <Project>{AB687BBE-1BFE-476B-906D-44237135431D}</Project>
@@ -191,4 +195,8 @@
       <Project>{662B4B15-8F4D-4AE5-B3EB-D91C215F5AF2}</Project>
       <Name>HeuristicLab.Optimization.Views-3.3</Name>
+    </ProjectReference>
+    <ProjectReference Include="..\..\HeuristicLab.Optimization\3.3\HeuristicLab.Optimization-3.3.csproj">
+      <Project>{14AB8D24-25BC-400C-A846-4627AA945192}</Project>
+      <Name>HeuristicLab.Optimization-3.3</Name>
     </ProjectReference>
     <ProjectReference Include="..\..\HeuristicLab.PluginInfrastructure\3.3\HeuristicLab.PluginInfrastructure-3.3.csproj">
Index: /branches/histogram/HeuristicLab.Optimization.Operators/3.3/HeuristicLab.Optimization.Operators-3.3.csproj
===================================================================
--- /branches/histogram/HeuristicLab.Optimization.Operators/3.3/HeuristicLab.Optimization.Operators-3.3.csproj	(revision 6045)
+++ /branches/histogram/HeuristicLab.Optimization.Operators/3.3/HeuristicLab.Optimization.Operators-3.3.csproj	(revision 6046)
@@ -19,5 +19,6 @@
     </UpgradeBackupLocation>
     <TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
-    <TargetFrameworkProfile></TargetFrameworkProfile>
+    <TargetFrameworkProfile>
+    </TargetFrameworkProfile>
     <PublishUrl>publish\</PublishUrl>
     <Install>true</Install>
@@ -109,4 +110,5 @@
     <Compile Include="MultiObjective\FastNonDominatedSort.cs" />
     <Compile Include="MultiObjective\RankAndCrowdingSorter.cs" />
+    <Compile Include="ShakingOperator.cs" />
     <Compile Include="UserDefinedCrossover.cs" />
     <Compile Include="UserDefinedEvaluator.cs" />
Index: /branches/histogram/HeuristicLab.Optimization.Operators/3.3/QualityComparator.cs
===================================================================
--- /branches/histogram/HeuristicLab.Optimization.Operators/3.3/QualityComparator.cs	(revision 6045)
+++ /branches/histogram/HeuristicLab.Optimization.Operators/3.3/QualityComparator.cs	(revision 6046)
@@ -51,5 +51,5 @@
       Parameters.Add(new LookupParameter<DoubleValue>("LeftSide", "The left side of the comparison."));
       Parameters.Add(new ValueLookupParameter<DoubleValue>("RightSide", "The right side of the comparison."));
-      Parameters.Add(new LookupParameter<BoolValue>("Result", "The result of the comparison."));
+      Parameters.Add(new LookupParameter<BoolValue>("Result", "The result of the comparison, true if the quality on the LeftSide is better than the quality on the RightSide."));
       Parameters.Add(new ValueLookupParameter<BoolValue>("Maximization", "True if the problem is a maximization problem, otherwise false."));
     }
Index: /branches/histogram/HeuristicLab.Optimization.Operators/3.3/ShakingOperator.cs
===================================================================
--- /branches/histogram/HeuristicLab.Optimization.Operators/3.3/ShakingOperator.cs	(revision 6046)
+++ /branches/histogram/HeuristicLab.Optimization.Operators/3.3/ShakingOperator.cs	(revision 6046)
@@ -0,0 +1,73 @@
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2011 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.Linq;
+using HeuristicLab.Common;
+using HeuristicLab.Core;
+using HeuristicLab.Data;
+using HeuristicLab.Operators;
+using HeuristicLab.Parameters;
+using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
+
+namespace HeuristicLab.Optimization.Operators {
+  /// <summary>
+  /// A shaking operator for VNS.
+  /// </summary>
+  [Item("ShakingOperator", "A shaking operator for VNS that can be filled with arbitrary manipulation operators.")]
+  [StorableClass]
+  public class ShakingOperator<T> : CheckedMultiOperator<T>, IMultiNeighborhoodShakingOperator where T : class, IManipulator {
+
+    public IValueLookupParameter<IntValue> CurrentNeighborhoodIndexParameter {
+      get { return (IValueLookupParameter<IntValue>)Parameters["CurrentNeighborhoodIndex"]; }
+    }
+
+    public ILookupParameter<IntValue> NeighborhoodCountParameter {
+      get { return (ILookupParameter<IntValue>)Parameters["NeighborhoodCount"]; }
+    }
+
+    [StorableConstructor]
+    protected ShakingOperator(bool deserializing) : base(deserializing) { }
+    protected ShakingOperator(ShakingOperator<T> original, Cloner cloner) : base(original, cloner) { }
+    public override IDeepCloneable Clone(Cloner cloner) {
+      return new ShakingOperator<T>(this, cloner);
+    }
+    public ShakingOperator()
+      : base() {
+      Parameters.Add(new ValueLookupParameter<IntValue>("CurrentNeighborhoodIndex", "The index of the operator that should be applied (k)."));
+      Parameters.Add(new LookupParameter<IntValue>("NeighborhoodCount", "The number of operators that are available."));
+    }
+
+    public override IOperation Apply() {
+      if (NeighborhoodCountParameter.ActualValue == null)
+        NeighborhoodCountParameter.ActualValue = new IntValue(Operators.CheckedItems.Count());
+      else NeighborhoodCountParameter.ActualValue.Value = Operators.CheckedItems.Count();
+
+      int index = CurrentNeighborhoodIndexParameter.ActualValue.Value;
+      var shaker = base.Operators.CheckedItems.SingleOrDefault(x => x.Index == index);
+
+      OperationCollection next = new OperationCollection(base.Apply());
+      if (shaker.Value != null)
+        next.Insert(0, ExecutionContext.CreateChildOperation(shaker.Value));
+
+      return next;
+    }
+  }
+}
Index: /branches/histogram/HeuristicLab.Optimization.Views/3.3/RunCollectionBubbleChartView.Designer.cs
===================================================================
--- /branches/histogram/HeuristicLab.Optimization.Views/3.3/RunCollectionBubbleChartView.Designer.cs	(revision 6045)
+++ /branches/histogram/HeuristicLab.Optimization.Views/3.3/RunCollectionBubbleChartView.Designer.cs	(revision 6046)
@@ -204,5 +204,5 @@
       this.chart.Text = "chart";
       this.chart.AxisViewChanged += new System.EventHandler<System.Windows.Forms.DataVisualization.Charting.ViewEventArgs>(this.chart_AxisViewChanged);
-      this.chart.MouseDoubleClick += new System.Windows.Forms.MouseEventHandler(this.chart_DoubleClick);
+      this.chart.MouseDoubleClick += new System.Windows.Forms.MouseEventHandler(this.chart_MouseDoubleClick);
       this.chart.MouseMove += new System.Windows.Forms.MouseEventHandler(this.chart_MouseMove);
       this.chart.MouseUp += new System.Windows.Forms.MouseEventHandler(this.chart_MouseUp);
Index: /branches/histogram/HeuristicLab.Optimization.Views/3.3/RunCollectionBubbleChartView.cs
===================================================================
--- /branches/histogram/HeuristicLab.Optimization.Views/3.3/RunCollectionBubbleChartView.cs	(revision 6045)
+++ /branches/histogram/HeuristicLab.Optimization.Views/3.3/RunCollectionBubbleChartView.cs	(revision 6046)
@@ -432,5 +432,5 @@
 
     #region Drag & drop and tooltip
-    private void chart_DoubleClick(object sender, MouseEventArgs e) {
+    private void chart_MouseDoubleClick(object sender, MouseEventArgs e) {
       HitTestResult h = this.chart.HitTest(e.X, e.Y);
       if (h.ChartElementType == ChartElementType.DataPoint) {
@@ -441,6 +441,7 @@
           view.Locked = this.Locked;
         }
-        this.chart.ChartAreas[0].CursorX.SetSelectionPosition(double.NaN, double.NaN);
-        this.chart.ChartAreas[0].CursorY.SetSelectionPosition(double.NaN, double.NaN);
+
+        this.chart.ChartAreas[0].CursorX.SelectionStart = this.chart.ChartAreas[0].CursorX.SelectionEnd;
+        this.chart.ChartAreas[0].CursorY.SelectionStart = this.chart.ChartAreas[0].CursorY.SelectionEnd;
       }
     }
Index: /branches/histogram/HeuristicLab.Optimization/3.3/HeuristicLab.Optimization-3.3.csproj
===================================================================
--- /branches/histogram/HeuristicLab.Optimization/3.3/HeuristicLab.Optimization-3.3.csproj	(revision 6045)
+++ /branches/histogram/HeuristicLab.Optimization/3.3/HeuristicLab.Optimization-3.3.csproj	(revision 6046)
@@ -120,4 +120,6 @@
     <Compile Include="Interfaces\ILocalParticleUpdater.cs" />
     <Compile Include="Algorithms\HeuristicOptimizationAlgorithm.cs" />
+    <Compile Include="Interfaces\IMultiNeighborhoodShakingOperator.cs" />
+    <Compile Include="MoveHelper.cs" />
     <Compile Include="Problems\MultiObjectiveHeuristicOptimizationProblem.cs" />
     <Compile Include="Problems\HeuristicOptimizationProblem.cs" />
Index: /branches/histogram/HeuristicLab.Optimization/3.3/Interfaces/ILocalImprovementOperator.cs
===================================================================
--- /branches/histogram/HeuristicLab.Optimization/3.3/Interfaces/ILocalImprovementOperator.cs	(revision 6045)
+++ /branches/histogram/HeuristicLab.Optimization/3.3/Interfaces/ILocalImprovementOperator.cs	(revision 6046)
@@ -21,13 +21,14 @@
 
 using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
 using HeuristicLab.Core;
-using HeuristicLab.Optimization;
+using HeuristicLab.Data;
 
 namespace HeuristicLab.Optimization {
-  public interface ILocalImprovementOperator: IOperator {
-    void OnProblemChanged(IProblem problem);
+  public interface ILocalImprovementOperator : IOperator {
+    Type ProblemType { get; }
+    IProblem Problem { get; set; }
+    IValueLookupParameter<IntValue> MaximumIterationsParameter { get; }
+    ILookupParameter<IntValue> EvaluatedSolutionsParameter { get; }
+    ILookupParameter<ResultCollection> ResultsParameter { get; }
   }
 }
Index: /branches/histogram/HeuristicLab.Optimization/3.3/Interfaces/IMultiNeighborhoodShakingOperator.cs
===================================================================
--- /branches/histogram/HeuristicLab.Optimization/3.3/Interfaces/IMultiNeighborhoodShakingOperator.cs	(revision 6046)
+++ /branches/histogram/HeuristicLab.Optimization/3.3/Interfaces/IMultiNeighborhoodShakingOperator.cs	(revision 6046)
@@ -0,0 +1,30 @@
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2011 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 HeuristicLab.Core;
+using HeuristicLab.Data;
+
+namespace HeuristicLab.Optimization {
+  public interface IMultiNeighborhoodShakingOperator : IOperator {
+    IValueLookupParameter<IntValue> CurrentNeighborhoodIndexParameter { get; }
+    ILookupParameter<IntValue> NeighborhoodCountParameter { get; }
+  }
+}
Index: /branches/histogram/HeuristicLab.Optimization/3.3/MoveHelper.cs
===================================================================
--- /branches/histogram/HeuristicLab.Optimization/3.3/MoveHelper.cs	(revision 6046)
+++ /branches/histogram/HeuristicLab.Optimization/3.3/MoveHelper.cs	(revision 6046)
@@ -0,0 +1,66 @@
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2011 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;
+using System.Collections.Generic;
+using System.Linq;
+using HeuristicLab.Core;
+
+namespace HeuristicLab.Optimization {
+  /// <summary>
+  /// This class provides some methods useful when dealing with moves, such as getting compatible move makers to a move generator.
+  /// Compatibility is generally ensured in that both the generator and the move maker implement the same specific interface which is derived from IMoveOperator
+  /// </summary>
+  public static class MoveHelper {
+
+    public static IEnumerable<IMoveMaker> GetCompatibleMoveMakers(IMoveGenerator generator, IEnumerable<IOperator> operators) {
+      return GetCompatibleOperators<IMoveMaker>(generator, operators);
+    }
+
+    public static IEnumerable<ISingleObjectiveMoveEvaluator> GetCompatibleSingleObjectiveMoveEvaluators(IMoveGenerator generator, IEnumerable<IOperator> operators) {
+      return GetCompatibleOperators<ISingleObjectiveMoveEvaluator>(generator, operators);
+    }
+
+    public static IEnumerable<ITabuChecker> GetCompatibleTabuChekers(IMoveGenerator generator, IEnumerable<IOperator> operators) {
+      return GetCompatibleOperators<ITabuChecker>(generator, operators);
+    }
+
+    public static IEnumerable<ITabuMaker> GetCompatibleTabuMakers(IMoveGenerator generator, IEnumerable<IOperator> operators) {
+      return GetCompatibleOperators<ITabuMaker>(generator, operators);
+    }
+
+    private static IEnumerable<T> GetCompatibleOperators<T>(IMoveGenerator generator, IEnumerable<IOperator> operators) where T : IOperator {
+      foreach (Type type in GetMostSpecificMoveOperatorTypes(generator)) {
+        foreach (T op in operators.Where(x => type.IsAssignableFrom(x.GetType())).OfType<T>())
+          yield return op;
+      }
+    }
+
+    private static List<Type> GetMostSpecificMoveOperatorTypes(IMoveGenerator generator) {
+      List<Type> moveTypes = generator.GetType().GetInterfaces().Where(x => typeof(IMoveOperator).IsAssignableFrom(x)).ToList();
+      foreach (Type type in moveTypes.ToList()) {
+        if (moveTypes.Any(t => t != type && type.IsAssignableFrom(t)))
+          moveTypes.Remove(type);
+      }
+      return moveTypes;
+    }
+  }
+}
Index: /branches/histogram/HeuristicLab.Problems.Knapsack/3.3/KnapsackProblem.cs
===================================================================
--- /branches/histogram/HeuristicLab.Problems.Knapsack/3.3/KnapsackProblem.cs	(revision 6045)
+++ /branches/histogram/HeuristicLab.Problems.Knapsack/3.3/KnapsackProblem.cs	(revision 6046)
@@ -339,4 +339,6 @@
         op.ValuesParameter.ActualName = ValuesParameter.Name;
       }
+      foreach (var op in Operators.OfType<IBinaryVectorMultiNeighborhoodShakingOperator>())
+        op.BinaryVectorParameter.ActualName = SolutionCreator.BinaryVectorParameter.ActualName;
     }
     #endregion
Index: /branches/histogram/HeuristicLab.Problems.OneMax/3.3/OnemaxProblem.cs
===================================================================
--- /branches/histogram/HeuristicLab.Problems.OneMax/3.3/OnemaxProblem.cs	(revision 6045)
+++ /branches/histogram/HeuristicLab.Problems.OneMax/3.3/OnemaxProblem.cs	(revision 6046)
@@ -262,4 +262,6 @@
         op.BinaryVectorParameter.ActualName = SolutionCreator.BinaryVectorParameter.ActualName;
       }
+      foreach (var op in Operators.OfType<IBinaryVectorMultiNeighborhoodShakingOperator>())
+        op.BinaryVectorParameter.ActualName = SolutionCreator.BinaryVectorParameter.ActualName;
     }
     #endregion
Index: /branches/histogram/HeuristicLab.Problems.QuadraticAssignment/3.3/QuadraticAssignmentProblem.cs
===================================================================
--- /branches/histogram/HeuristicLab.Problems.QuadraticAssignment/3.3/QuadraticAssignmentProblem.cs	(revision 6045)
+++ /branches/histogram/HeuristicLab.Problems.QuadraticAssignment/3.3/QuadraticAssignmentProblem.cs	(revision 6046)
@@ -312,4 +312,6 @@
         }
       }
+      foreach (var op in Operators.OfType<IPermutationMultiNeighborhoodShakingOperator>())
+        op.PermutationParameter.ActualName = SolutionCreator.PermutationParameter.ActualName;
     }
 
Index: /branches/histogram/HeuristicLab.Problems.TestFunctions/3.3/SingleObjectiveTestFunctionProblem.cs
===================================================================
--- /branches/histogram/HeuristicLab.Problems.TestFunctions/3.3/SingleObjectiveTestFunctionProblem.cs	(revision 6045)
+++ /branches/histogram/HeuristicLab.Problems.TestFunctions/3.3/SingleObjectiveTestFunctionProblem.cs	(revision 6046)
@@ -417,4 +417,6 @@
         op.MaximizationParameter.ActualName = MaximizationParameter.Name;
       }
+      foreach (var op in Operators.OfType<IRealVectorMultiNeighborhoodShakingOperator>())
+        op.RealVectorParameter.ActualName = SolutionCreator.RealVectorParameter.ActualName;
     }
     private void UpdateStrategyVectorBounds() {
Index: /branches/histogram/HeuristicLab.Problems.TravelingSalesman/3.3/TravelingSalesmanProblem.cs
===================================================================
--- /branches/histogram/HeuristicLab.Problems.TravelingSalesman/3.3/TravelingSalesmanProblem.cs	(revision 6045)
+++ /branches/histogram/HeuristicLab.Problems.TravelingSalesman/3.3/TravelingSalesmanProblem.cs	(revision 6046)
@@ -389,4 +389,6 @@
       foreach (IPermutationTranslocationMoveOperator op in Operators.OfType<IPermutationTranslocationMoveOperator>())
         op.TranslocationMoveParameter.ActualName = translocationMove;
+      foreach (IPermutationMultiNeighborhoodShakingOperator op in Operators.OfType<IPermutationMultiNeighborhoodShakingOperator>())
+        op.PermutationParameter.ActualName = SolutionCreator.PermutationParameter.ActualName;
     }
 
Index: /branches/histogram/HeuristicLab.Problems.VehicleRouting/3.3/HeuristicLab.Problems.VehicleRouting-3.3.csproj
===================================================================
--- /branches/histogram/HeuristicLab.Problems.VehicleRouting/3.3/HeuristicLab.Problems.VehicleRouting-3.3.csproj	(revision 6045)
+++ /branches/histogram/HeuristicLab.Problems.VehicleRouting/3.3/HeuristicLab.Problems.VehicleRouting-3.3.csproj	(revision 6046)
@@ -19,5 +19,6 @@
     </UpgradeBackupLocation>
     <TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
-    <TargetFrameworkProfile></TargetFrameworkProfile>
+    <TargetFrameworkProfile>
+    </TargetFrameworkProfile>
     <PublishUrl>publish\</PublishUrl>
     <Install>true</Install>
@@ -111,4 +112,6 @@
     <Compile Include="Analyzers\BestVRPToursMemorizer.cs" />
     <Compile Include="Analyzers\BestVRPSolutionAnalyzer.cs" />
+    <Compile Include="Interfaces\IVRPMultiNeighborhoodShakingOperator.cs" />
+    <Compile Include="ShakingOperators\VehicleRoutingShakingOperator.cs" />
     <Compile Include="SolutionParser.cs" />
     <Compile Include="Encodings\Alba\Crossovers\AlbaPermutationCrossover.cs" />
Index: /branches/histogram/HeuristicLab.Problems.VehicleRouting/3.3/Interfaces/IVRPMultiNeighborhoodShakingOperator.cs
===================================================================
--- /branches/histogram/HeuristicLab.Problems.VehicleRouting/3.3/Interfaces/IVRPMultiNeighborhoodShakingOperator.cs	(revision 6046)
+++ /branches/histogram/HeuristicLab.Problems.VehicleRouting/3.3/Interfaces/IVRPMultiNeighborhoodShakingOperator.cs	(revision 6046)
@@ -0,0 +1,29 @@
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2011 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 HeuristicLab.Core;
+using HeuristicLab.Optimization;
+
+namespace HeuristicLab.Problems.VehicleRouting {
+  public interface IVRPMultiNeighborhoodShakingOperator : IMultiNeighborhoodShakingOperator, IVRPOperator {
+    ILookupParameter<IVRPEncoding> VRPToursParameter { get; }
+  }
+}
Index: /branches/histogram/HeuristicLab.Problems.VehicleRouting/3.3/ShakingOperators/VehicleRoutingShakingOperator.cs
===================================================================
--- /branches/histogram/HeuristicLab.Problems.VehicleRouting/3.3/ShakingOperators/VehicleRoutingShakingOperator.cs	(revision 6046)
+++ /branches/histogram/HeuristicLab.Problems.VehicleRouting/3.3/ShakingOperators/VehicleRoutingShakingOperator.cs	(revision 6046)
@@ -0,0 +1,148 @@
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2011 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.Linq;
+using HeuristicLab.Collections;
+using HeuristicLab.Common;
+using HeuristicLab.Core;
+using HeuristicLab.Data;
+using HeuristicLab.Optimization;
+using HeuristicLab.Optimization.Operators;
+using HeuristicLab.Parameters;
+using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
+using HeuristicLab.PluginInfrastructure;
+using HeuristicLab.Problems.VehicleRouting.Encodings.General;
+
+namespace HeuristicLab.Problems.VehicleRouting {
+  [Item("VRPShakingOperator", "A shaking operator for VNS that applies available mutation operators.")]
+  [StorableClass]
+  public class VehicleRoutingShakingOperator : ShakingOperator<IVRPManipulator>, IVRPMultiNeighborhoodShakingOperator, IStochasticOperator {
+    #region Parameters
+    public ILookupParameter<IVRPEncoding> VRPToursParameter {
+      get { return (ILookupParameter<IVRPEncoding>)Parameters["VRPTours"]; }
+    }
+
+    public ILookupParameter<IRandom> RandomParameter {
+      get { return (ILookupParameter<IRandom>)Parameters["Random"]; }
+    }
+
+    public ILookupParameter<DoubleMatrix> CoordinatesParameter {
+      get { return (ILookupParameter<DoubleMatrix>)Parameters["Coordinates"]; }
+    }
+
+    public int Cities {
+      get {
+        if (CoordinatesParameter.ActualValue != null)
+          return CoordinatesParameter.ActualValue.Rows;
+        else return 0;
+      }
+    }
+
+    public ILookupParameter<DoubleMatrix> DistanceMatrixParameter {
+      get { return (ILookupParameter<DoubleMatrix>)Parameters["DistanceMatrix"]; }
+    }
+
+    public ILookupParameter<BoolValue> UseDistanceMatrixParameter {
+      get { return (ILookupParameter<BoolValue>)Parameters["UseDistanceMatrix"]; }
+    }
+
+    public ILookupParameter<IntValue> VehiclesParameter {
+      get { return (ILookupParameter<IntValue>)Parameters["Vehicles"]; }
+    }
+
+    public ILookupParameter<DoubleValue> CapacityParameter {
+      get { return (ILookupParameter<DoubleValue>)Parameters["Capacity"]; }
+    }
+
+    public ILookupParameter<DoubleArray> DemandParameter {
+      get { return (ILookupParameter<DoubleArray>)Parameters["Demand"]; }
+    }
+
+    public ILookupParameter<DoubleArray> ReadyTimeParameter {
+      get { return (ILookupParameter<DoubleArray>)Parameters["ReadyTime"]; }
+    }
+
+    public ILookupParameter<DoubleArray> DueTimeParameter {
+      get { return (ILookupParameter<DoubleArray>)Parameters["DueTime"]; }
+    }
+
+    public ILookupParameter<DoubleArray> ServiceTimeParameter {
+      get { return (ILookupParameter<DoubleArray>)Parameters["ServiceTime"]; }
+    }
+    #endregion
+
+    [StorableConstructor]
+    protected VehicleRoutingShakingOperator(bool deserializing) : base(deserializing) { }
+    protected VehicleRoutingShakingOperator(VehicleRoutingShakingOperator original, Cloner cloner) : base(original, cloner) { }
+    public override IDeepCloneable Clone(Cloner cloner) {
+      return new VehicleRoutingShakingOperator(this, cloner);
+    }
+    public VehicleRoutingShakingOperator()
+      : base() {
+      Parameters.Add(new LookupParameter<IVRPEncoding>("VRPTours", "The vrp tour encoding to shake."));
+      Parameters.Add(new LookupParameter<IRandom>("Random", "The random number generator that will be used for stochastic shaking operators."));
+      Parameters.Add(new LookupParameter<DoubleMatrix>("Coordinates", "The coordinates of the cities."));
+      Parameters.Add(new LookupParameter<DoubleMatrix>("DistanceMatrix", "The matrix which contains the distances between the cities."));
+      Parameters.Add(new LookupParameter<BoolValue>("UseDistanceMatrix", "True if a distance matrix should be calculated and used for evaluation, otherwise false."));
+      Parameters.Add(new LookupParameter<IntValue>("Vehicles", "The number of vehicles."));
+      Parameters.Add(new LookupParameter<DoubleValue>("Capacity", "The capacity of each vehicle."));
+      Parameters.Add(new LookupParameter<DoubleArray>("Demand", "The demand of each customer."));
+      Parameters.Add(new LookupParameter<DoubleArray>("ReadyTime", "The ready time of each customer."));
+      Parameters.Add(new LookupParameter<DoubleArray>("DueTime", "The due time of each customer."));
+      Parameters.Add(new LookupParameter<DoubleArray>("ServiceTime", "The service time of each customer."));
+
+      foreach (IVRPManipulator shaker in ApplicationManager.Manager.GetInstances<IVRPManipulator>().OrderBy(x => x.Name))
+        if (!(shaker is MultiVRPSolutionManipulator)) Operators.Add(shaker);
+    }
+
+    #region Wiring of some parameters
+    protected override void Operators_ItemsAdded(object sender, CollectionItemsChangedEventArgs<IndexedItem<IVRPManipulator>> e) {
+      base.Operators_ItemsAdded(sender, e);
+      ParameterizeOperators(e.Items);
+    }
+
+    protected override void Operators_ItemsReplaced(object sender, CollectionItemsChangedEventArgs<IndexedItem<IVRPManipulator>> e) {
+      base.Operators_ItemsReplaced(sender, e);
+      ParameterizeOperators(e.Items);
+    }
+
+    private void ParameterizeOperators(IEnumerable<IndexedItem<IVRPManipulator>> items) {
+      if (items.Any()) {
+        foreach (IStochasticOperator op in items.Select(x => x.Value).OfType<IStochasticOperator>())
+          op.RandomParameter.ActualName = RandomParameter.Name;
+        foreach (IVRPManipulator op in items.Select(x => x.Value).OfType<IVRPManipulator>()) {
+          op.VRPToursParameter.ActualName = VRPToursParameter.Name;
+          if (op.CoordinatesParameter != null) op.CoordinatesParameter.ActualName = CoordinatesParameter.Name;
+          if (op.DistanceMatrixParameter != null) op.DistanceMatrixParameter.ActualName = DistanceMatrixParameter.Name;
+          if (op.UseDistanceMatrixParameter != null) op.UseDistanceMatrixParameter.ActualName = UseDistanceMatrixParameter.Name;
+          if (op.VehiclesParameter != null) op.VehiclesParameter.ActualName = VehiclesParameter.Name;
+          if (op.CapacityParameter != null) op.CapacityParameter.ActualName = CapacityParameter.Name;
+          if (op.DemandParameter != null) op.DemandParameter.ActualName = DemandParameter.Name;
+          if (op.ReadyTimeParameter != null) op.ReadyTimeParameter.ActualName = ReadyTimeParameter.Name;
+          if (op.DueTimeParameter != null) op.DueTimeParameter.ActualName = DueTimeParameter.Name;
+          if (op.ServiceTimeParameter != null) op.ServiceTimeParameter.ActualName = ServiceTimeParameter.Name;
+        }
+      }
+    }
+    #endregion
+  }
+}
Index: /branches/histogram/HeuristicLab.Problems.VehicleRouting/3.3/VehicleRoutingProblem.cs
===================================================================
--- /branches/histogram/HeuristicLab.Problems.VehicleRouting/3.3/VehicleRoutingProblem.cs	(revision 6045)
+++ /branches/histogram/HeuristicLab.Problems.VehicleRouting/3.3/VehicleRoutingProblem.cs	(revision 6046)
@@ -607,4 +607,8 @@
         op.VRPToursParameter.ActualName = SolutionCreator.VRPToursParameter.ActualName;
       }
+
+      foreach (var op in Operators.OfType<IVRPMultiNeighborhoodShakingOperator>()) {
+        op.VRPToursParameter.ActualName = SolutionCreator.VRPToursParameter.ActualName;
+      }
     }
     private void ClearDistanceMatrix() {
Index: /branches/histogram/HeuristicLab.Selection/3.3/NoSameMatesSelector.cs
===================================================================
--- /branches/histogram/HeuristicLab.Selection/3.3/NoSameMatesSelector.cs	(revision 6045)
+++ /branches/histogram/HeuristicLab.Selection/3.3/NoSameMatesSelector.cs	(revision 6046)
@@ -12,7 +12,9 @@
 namespace HeuristicLab.Selection {
   /// <summary>
-  /// A selector which tries to select two parents which differ in quality.
+  /// A selector which tries to select two parents which differ in quality
+  /// as described in: "S. Gustafson, E. K. Burke, N. Krasnogor, On improving genetic programming for symbolic regression, 
+  /// The 2005 IEEE Congress on Evolutionary Computation, pp. 912-919, 2005."
   /// </summary>
-  [Item("NoSameMatesSelector", "A selector which tries to select two parents which differ in quality.")]
+  [Item("NoSameMatesSelector", "A selector which tries to select two parents which differ in quality as described in: \"S. Gustafson, E. K. Burke, N. Krasnogor, On improving genetic programming for symbolic regression, The 2005 IEEE Congress on Evolutionary Computation, pp. 912-919, 2005.\"")]
   [StorableClass]
   public class NoSameMatesSelector : StochasticSingleObjectiveSelector, ISingleObjectiveSelector {
Index: /branches/histogram/HeuristicLab/3.3/Files.txt
===================================================================
--- /branches/histogram/HeuristicLab/3.3/Files.txt	(revision 6045)
+++ /branches/histogram/HeuristicLab/3.3/Files.txt	(revision 6046)
@@ -43,4 +43,5 @@
 HeuristicLab.Operators.Views\3.3:HeuristicLab.Operators.Views-3.3.dll
 HeuristicLab.Operators.Views.GraphVisualization\3.3:HeuristicLab.Operators.Views.GraphVisualization-3.3.dll
+HeuristicLab.Operators.Views.GraphVisualization.Views\3.3:HeuristicLab.Operators.Views.GraphVisualization.Views-3.3.dll
 HeuristicLab.Operators.Programmable\3.3:HeuristicLab.Operators.Programmable-3.3.dll
 HeuristicLab.Optimization\3.3:HeuristicLab.Optimization-3.3.dll
Index: /branches/histogram/HeuristicLab/3.3/Tests/Builder.testsettings
===================================================================
--- /branches/histogram/HeuristicLab/3.3/Tests/Builder.testsettings	(revision 6045)
+++ /branches/histogram/HeuristicLab/3.3/Tests/Builder.testsettings	(revision 6046)
@@ -46,4 +46,5 @@
     <DeploymentItem filename="HeuristicLab\3.3\Tests\bin\Release\HeuristicLab.Netron-3.0.2672.12446.dll" />
     <DeploymentItem filename="HeuristicLab\3.3\Tests\bin\Release\HeuristicLab.Operators.Programmable-3.3.dll" />
+    <DeploymentItem filename="HeuristicLab\3.3\Tests\bin\Release\HeuristicLab.Operators.Views.GraphVisualization.Views-3.3.dll" />
     <DeploymentItem filename="HeuristicLab\3.3\Tests\bin\Release\HeuristicLab.Operators.Views.GraphVisualization-3.3.dll" />
     <DeploymentItem filename="HeuristicLab\3.3\Tests\bin\Release\HeuristicLab.Operators.Views-3.3.dll" />
Index: /branches/histogram/HeuristicLab/3.3/Tests/HeuristicLab-3.3.Tests.csproj
===================================================================
--- /branches/histogram/HeuristicLab/3.3/Tests/HeuristicLab-3.3.Tests.csproj	(revision 6045)
+++ /branches/histogram/HeuristicLab/3.3/Tests/HeuristicLab-3.3.Tests.csproj	(revision 6046)
@@ -332,4 +332,8 @@
       <Name>HeuristicLab.Operators.Programmable-3.3</Name>
     </ProjectReference>
+    <ProjectReference Include="..\..\..\HeuristicLab.Operators.Views.GraphVisualization.Views\3.3\HeuristicLab.Operators.Views.GraphVisualization.Views-3.3.csproj">
+      <Project>{0C39A349-1979-419A-89BD-E4E2F26BD287}</Project>
+      <Name>HeuristicLab.Operators.Views.GraphVisualization.Views-3.3</Name>
+    </ProjectReference>
     <ProjectReference Include="..\..\..\HeuristicLab.Operators.Views.GraphVisualization\3.3\HeuristicLab.Operators.Views.GraphVisualization-3.3.csproj">
       <Project>{57F38579-409D-4DD8-AB19-3F2C4A665126}</Project>
Index: /branches/histogram/HistogramViewTest/HistogramViewTest.csproj
===================================================================
--- /branches/histogram/HistogramViewTest/HistogramViewTest.csproj	(revision 6045)
+++ /branches/histogram/HistogramViewTest/HistogramViewTest.csproj	(revision 6046)
@@ -34,4 +34,36 @@
     <ErrorReport>prompt</ErrorReport>
     <WarningLevel>4</WarningLevel>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|x64'">
+    <DebugSymbols>true</DebugSymbols>
+    <OutputPath>bin\x64\Debug\</OutputPath>
+    <DefineConstants>DEBUG;TRACE</DefineConstants>
+    <DebugType>full</DebugType>
+    <PlatformTarget>x64</PlatformTarget>
+    <CodeAnalysisLogFile>bin\Debug\HistogramViewTest.exe.CodeAnalysisLog.xml</CodeAnalysisLogFile>
+    <CodeAnalysisUseTypeNameInSuppression>true</CodeAnalysisUseTypeNameInSuppression>
+    <CodeAnalysisModuleSuppressionsFile>GlobalSuppressions.cs</CodeAnalysisModuleSuppressionsFile>
+    <ErrorReport>prompt</ErrorReport>
+    <CodeAnalysisRuleSet>MinimumRecommendedRules.ruleset</CodeAnalysisRuleSet>
+    <CodeAnalysisRuleSetDirectories>;C:\Program Files (x86)\Microsoft Visual Studio 10.0\Team Tools\Static Analysis Tools\\Rule Sets</CodeAnalysisRuleSetDirectories>
+    <CodeAnalysisIgnoreBuiltInRuleSets>true</CodeAnalysisIgnoreBuiltInRuleSets>
+    <CodeAnalysisRuleDirectories>;C:\Program Files (x86)\Microsoft Visual Studio 10.0\Team Tools\Static Analysis Tools\FxCop\\Rules</CodeAnalysisRuleDirectories>
+    <CodeAnalysisIgnoreBuiltInRules>true</CodeAnalysisIgnoreBuiltInRules>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Release|x64'">
+    <OutputPath>bin\x64\Release\</OutputPath>
+    <DefineConstants>TRACE</DefineConstants>
+    <Optimize>true</Optimize>
+    <DebugType>pdbonly</DebugType>
+    <PlatformTarget>x64</PlatformTarget>
+    <CodeAnalysisLogFile>bin\Release\HistogramViewTest.exe.CodeAnalysisLog.xml</CodeAnalysisLogFile>
+    <CodeAnalysisUseTypeNameInSuppression>true</CodeAnalysisUseTypeNameInSuppression>
+    <CodeAnalysisModuleSuppressionsFile>GlobalSuppressions.cs</CodeAnalysisModuleSuppressionsFile>
+    <ErrorReport>prompt</ErrorReport>
+    <CodeAnalysisRuleSet>MinimumRecommendedRules.ruleset</CodeAnalysisRuleSet>
+    <CodeAnalysisRuleSetDirectories>;C:\Program Files (x86)\Microsoft Visual Studio 10.0\Team Tools\Static Analysis Tools\\Rule Sets</CodeAnalysisRuleSetDirectories>
+    <CodeAnalysisIgnoreBuiltInRuleSets>true</CodeAnalysisIgnoreBuiltInRuleSets>
+    <CodeAnalysisRuleDirectories>;C:\Program Files (x86)\Microsoft Visual Studio 10.0\Team Tools\Static Analysis Tools\FxCop\\Rules</CodeAnalysisRuleDirectories>
+    <CodeAnalysisIgnoreBuiltInRules>true</CodeAnalysisIgnoreBuiltInRules>
   </PropertyGroup>
   <ItemGroup>
