Index: branches/HeuristicLab.BinPacking/HeuristicLab.BinPacking.sln
===================================================================
--- branches/HeuristicLab.BinPacking/HeuristicLab.BinPacking.sln	(revision 13604)
+++ branches/HeuristicLab.BinPacking/HeuristicLab.BinPacking.sln	(revision 13605)
@@ -13,5 +13,5 @@
 Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "HeuristicLab.Problems.BinPacking.Views-3.3", "HeuristicLab.Problems.BinPacking.Views\3.3\HeuristicLab.Problems.BinPacking.Views-3.3.csproj", "{78763A4E-E163-48C2-98EB-709760D06F25}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "PackingPlanVisualizations", "PackingPlanVisualizations\PackingPlanVisualizations.csproj", "{0FD5EA67-A284-4166-9F45-9C6BC07D5B83}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "HeuristicLab.Problems.BinPacking2D-3.3", "HeuristicLab.Problems.BinPacking.2D\3.3\HeuristicLab.Problems.BinPacking2D-3.3.csproj", "{56DD7F51-3164-4C26-A97A-ADD6FE4B4E86}"
 EndProject
 Global
@@ -59,16 +59,20 @@
 		{78763A4E-E163-48C2-98EB-709760D06F25}.Release|x86.ActiveCfg = Release|x86
 		{78763A4E-E163-48C2-98EB-709760D06F25}.Release|x86.Build.0 = Release|x86
-		{0FD5EA67-A284-4166-9F45-9C6BC07D5B83}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-		{0FD5EA67-A284-4166-9F45-9C6BC07D5B83}.Debug|Any CPU.Build.0 = Debug|Any CPU
-		{0FD5EA67-A284-4166-9F45-9C6BC07D5B83}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
-		{0FD5EA67-A284-4166-9F45-9C6BC07D5B83}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
-		{0FD5EA67-A284-4166-9F45-9C6BC07D5B83}.Debug|x64.ActiveCfg = Debug|Any CPU
-		{0FD5EA67-A284-4166-9F45-9C6BC07D5B83}.Debug|x86.ActiveCfg = Debug|Any CPU
-		{0FD5EA67-A284-4166-9F45-9C6BC07D5B83}.Release|Any CPU.ActiveCfg = Release|Any CPU
-		{0FD5EA67-A284-4166-9F45-9C6BC07D5B83}.Release|Any CPU.Build.0 = Release|Any CPU
-		{0FD5EA67-A284-4166-9F45-9C6BC07D5B83}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
-		{0FD5EA67-A284-4166-9F45-9C6BC07D5B83}.Release|Mixed Platforms.Build.0 = Release|Any CPU
-		{0FD5EA67-A284-4166-9F45-9C6BC07D5B83}.Release|x64.ActiveCfg = Release|Any CPU
-		{0FD5EA67-A284-4166-9F45-9C6BC07D5B83}.Release|x86.ActiveCfg = Release|Any CPU
+		{56DD7F51-3164-4C26-A97A-ADD6FE4B4E86}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{56DD7F51-3164-4C26-A97A-ADD6FE4B4E86}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{56DD7F51-3164-4C26-A97A-ADD6FE4B4E86}.Debug|Mixed Platforms.ActiveCfg = Debug|x86
+		{56DD7F51-3164-4C26-A97A-ADD6FE4B4E86}.Debug|Mixed Platforms.Build.0 = Debug|x86
+		{56DD7F51-3164-4C26-A97A-ADD6FE4B4E86}.Debug|x64.ActiveCfg = Debug|x64
+		{56DD7F51-3164-4C26-A97A-ADD6FE4B4E86}.Debug|x64.Build.0 = Debug|x64
+		{56DD7F51-3164-4C26-A97A-ADD6FE4B4E86}.Debug|x86.ActiveCfg = Debug|x86
+		{56DD7F51-3164-4C26-A97A-ADD6FE4B4E86}.Debug|x86.Build.0 = Debug|x86
+		{56DD7F51-3164-4C26-A97A-ADD6FE4B4E86}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{56DD7F51-3164-4C26-A97A-ADD6FE4B4E86}.Release|Any CPU.Build.0 = Release|Any CPU
+		{56DD7F51-3164-4C26-A97A-ADD6FE4B4E86}.Release|Mixed Platforms.ActiveCfg = Release|x86
+		{56DD7F51-3164-4C26-A97A-ADD6FE4B4E86}.Release|Mixed Platforms.Build.0 = Release|x86
+		{56DD7F51-3164-4C26-A97A-ADD6FE4B4E86}.Release|x64.ActiveCfg = Release|x64
+		{56DD7F51-3164-4C26-A97A-ADD6FE4B4E86}.Release|x64.Build.0 = Release|x64
+		{56DD7F51-3164-4C26-A97A-ADD6FE4B4E86}.Release|x86.ActiveCfg = Release|x86
+		{56DD7F51-3164-4C26-A97A-ADD6FE4B4E86}.Release|x86.Build.0 = Release|x86
 	EndGlobalSection
 	GlobalSection(SolutionProperties) = preSolution
Index: branches/HeuristicLab.BinPacking/HeuristicLab.Problems.BinPacking.2D/3.3/HeuristicLab.Problems.BinPacking2D-3.3.csproj
===================================================================
--- branches/HeuristicLab.BinPacking/HeuristicLab.Problems.BinPacking.2D/3.3/HeuristicLab.Problems.BinPacking2D-3.3.csproj	(revision 13605)
+++ branches/HeuristicLab.BinPacking/HeuristicLab.Problems.BinPacking.2D/3.3/HeuristicLab.Problems.BinPacking2D-3.3.csproj	(revision 13605)
@@ -0,0 +1,186 @@
+﻿<?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>{56DD7F51-3164-4C26-A97A-ADD6FE4B4E86}</ProjectGuid>
+    <OutputType>Library</OutputType>
+    <AppDesignerFolder>Properties</AppDesignerFolder>
+    <RootNamespace>HeuristicLab.Problems.BinPacking2D</RootNamespace>
+    <AssemblyName>HeuristicLab.Problems.BinPacking2D-3.3</AssemblyName>
+    <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>
+    <FileAlignment>512</FileAlignment>
+    <TargetFrameworkProfile />
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+    <DebugSymbols>true</DebugSymbols>
+    <DebugType>full</DebugType>
+    <Optimize>false</Optimize>
+    <OutputPath>..\..\..\..\trunk\sources\bin\</OutputPath>
+    <DefineConstants>DEBUG;TRACE</DefineConstants>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+    <Prefer32Bit>false</Prefer32Bit>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+    <DebugType>pdbonly</DebugType>
+    <Optimize>true</Optimize>
+    <OutputPath>..\..\..\..\trunk\sources\bin\</OutputPath>
+    <DefineConstants>TRACE</DefineConstants>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+    <Prefer32Bit>false</Prefer32Bit>
+  </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\HeuristicLab.Problems.BinPacking.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>
+    <Prefer32Bit>false</Prefer32Bit>
+  </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\HeuristicLab.Problems.BinPacking.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>
+    <Prefer32Bit>false</Prefer32Bit>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|x86'">
+    <DebugSymbols>true</DebugSymbols>
+    <OutputPath>..\..\..\..\trunk\sources\bin\</OutputPath>
+    <DefineConstants>DEBUG;TRACE</DefineConstants>
+    <DebugType>full</DebugType>
+    <PlatformTarget>x86</PlatformTarget>
+    <CodeAnalysisLogFile>bin\Debug\HeuristicLab.Problems.BinPacking.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>
+    <Prefer32Bit>false</Prefer32Bit>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Release|x86'">
+    <OutputPath>..\..\..\..\trunk\sources\bin\</OutputPath>
+    <DefineConstants>TRACE</DefineConstants>
+    <Optimize>true</Optimize>
+    <DebugType>pdbonly</DebugType>
+    <PlatformTarget>x86</PlatformTarget>
+    <CodeAnalysisLogFile>bin\Release\HeuristicLab.Problems.BinPacking.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>
+    <Prefer32Bit>false</Prefer32Bit>
+  </PropertyGroup>
+  <PropertyGroup>
+    <SignAssembly>true</SignAssembly>
+  </PropertyGroup>
+  <PropertyGroup>
+    <AssemblyOriginatorKeyFile>HeuristicLab.snk</AssemblyOriginatorKeyFile>
+  </PropertyGroup>
+  <ItemGroup>
+    <Reference Include="HeuristicLab.Collections-3.3, Version=3.3.0.0, Culture=neutral, PublicKeyToken=ba48961d6f65dcec, processorArchitecture=MSIL">
+      <Private>False</Private>
+    </Reference>
+    <Reference Include="HeuristicLab.Common-3.3, Version=3.3.0.0, Culture=neutral, PublicKeyToken=ba48961d6f65dcec, processorArchitecture=MSIL">
+      <Private>False</Private>
+    </Reference>
+    <Reference Include="HeuristicLab.Core-3.3, Version=3.3.0.0, Culture=neutral, PublicKeyToken=ba48961d6f65dcec, processorArchitecture=MSIL">
+      <Private>False</Private>
+    </Reference>
+    <Reference Include="HeuristicLab.Data-3.3, Version=3.3.0.0, Culture=neutral, PublicKeyToken=ba48961d6f65dcec, processorArchitecture=MSIL">
+      <Private>False</Private>
+    </Reference>
+    <Reference Include="HeuristicLab.Encodings.IntegerVectorEncoding-3.3, Version=3.3.0.0, Culture=neutral, PublicKeyToken=ba48961d6f65dcec, processorArchitecture=MSIL">
+      <SpecificVersion>False</SpecificVersion>
+      <HintPath>..\..\..\..\trunk\sources\bin\HeuristicLab.Encodings.IntegerVectorEncoding-3.3.dll</HintPath>
+    </Reference>
+    <Reference Include="HeuristicLab.Encodings.PermutationEncoding-3.3, Version=3.3.0.0, Culture=neutral, PublicKeyToken=ba48961d6f65dcec, processorArchitecture=MSIL">
+      <Private>False</Private>
+    </Reference>
+    <Reference Include="HeuristicLab.Operators-3.3, Version=3.3.0.0, Culture=neutral, PublicKeyToken=ba48961d6f65dcec, processorArchitecture=MSIL">
+      <Private>False</Private>
+    </Reference>
+    <Reference Include="HeuristicLab.Optimization-3.3, Version=3.3.0.0, Culture=neutral, PublicKeyToken=ba48961d6f65dcec, processorArchitecture=MSIL">
+      <Private>False</Private>
+    </Reference>
+    <Reference Include="HeuristicLab.Optimization.Operators-3.3, Version=3.3.0.0, Culture=neutral, PublicKeyToken=ba48961d6f65dcec, processorArchitecture=MSIL">
+      <SpecificVersion>False</SpecificVersion>
+      <HintPath>..\..\..\..\trunk\sources\bin\HeuristicLab.Optimization.Operators-3.3.dll</HintPath>
+    </Reference>
+    <Reference Include="HeuristicLab.Parameters-3.3, Version=3.3.0.0, Culture=neutral, PublicKeyToken=ba48961d6f65dcec, processorArchitecture=MSIL">
+      <Private>False</Private>
+    </Reference>
+    <Reference Include="HeuristicLab.Persistence-3.3, Version=3.3.0.0, Culture=neutral, PublicKeyToken=ba48961d6f65dcec, processorArchitecture=MSIL">
+      <Private>False</Private>
+    </Reference>
+    <Reference Include="HeuristicLab.PluginInfrastructure-3.3, Version=3.3.0.0, Culture=neutral, PublicKeyToken=ba48961d6f65dcec, processorArchitecture=MSIL">
+      <Private>False</Private>
+    </Reference>
+    <Reference Include="HeuristicLab.Problems.Instances-3.3, Version=3.3.0.0, Culture=neutral, PublicKeyToken=ba48961d6f65dcec, processorArchitecture=MSIL">
+      <SpecificVersion>False</SpecificVersion>
+      <HintPath>..\..\..\..\trunk\sources\bin\HeuristicLab.Problems.Instances-3.3.dll</HintPath>
+    </Reference>
+    <Reference Include="System" />
+    <Reference Include="System.Core" />
+    <Reference Include="System.Drawing" />
+    <Reference Include="System.IO.Compression" />
+    <Reference Include="System.Windows.Forms" />
+  </ItemGroup>
+  <ItemGroup>
+    <Compile Include="Plugin.cs" />
+    <Compile Include="Properties\AssemblyInfo.cs" />
+  </ItemGroup>
+  <ItemGroup>
+    <None Include="HeuristicLab.snk" />
+    <None Include="Properties\AssemblyInfo.cs.frame" />
+    <None Include="Plugin.cs.frame" />
+  </ItemGroup>
+  <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
+</PreBuildEvent>
+  </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/HeuristicLab.BinPacking/HeuristicLab.Problems.BinPacking.2D/3.3/Plugin.cs
===================================================================
--- branches/HeuristicLab.BinPacking/HeuristicLab.Problems.BinPacking.2D/3.3/Plugin.cs	(revision 13605)
+++ branches/HeuristicLab.BinPacking/HeuristicLab.Problems.BinPacking.2D/3.3/Plugin.cs	(revision 13605)
@@ -0,0 +1,43 @@
+#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2015 Joseph Helm and 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.Problems.BinPacking2D {
+  /// <summary>
+  /// Plugin class for HeuristicLab.Problems.BinPacking plugin.
+  /// </summary>
+  [Plugin("HeuristicLab.Problems.BinPacking2D", "3.3.7.13578")]
+  [PluginFile("HeuristicLab.Problems.BinPacking2D-3.3.dll", PluginFileType.Assembly)]
+  [PluginDependency("HeuristicLab.Common", "3.3")]
+  [PluginDependency("HeuristicLab.Core", "3.3")]
+  [PluginDependency("HeuristicLab.Data", "3.3")]
+  [PluginDependency("HeuristicLab.Encodings.IntegerVectorEncoding", "3.3")]
+  [PluginDependency("HeuristicLab.Collections", "3.3")]
+  [PluginDependency("HeuristicLab.Encodings.PermutationEncoding", "3.3")]
+  [PluginDependency("HeuristicLab.Optimization", "3.3")]
+  [PluginDependency("HeuristicLab.Optimization.Operators", "3.3")]
+  [PluginDependency("HeuristicLab.Parameters", "3.3")]
+  [PluginDependency("HeuristicLab.Persistence", "3.3")]
+  [PluginDependency("HeuristicLab.Problems.Instances", "3.3")]
+  public class Plugin : PluginBase {
+  }
+}
Index: branches/HeuristicLab.BinPacking/HeuristicLab.Problems.BinPacking.2D/3.3/Plugin.cs.frame
===================================================================
--- branches/HeuristicLab.BinPacking/HeuristicLab.Problems.BinPacking.2D/3.3/Plugin.cs.frame	(revision 13605)
+++ branches/HeuristicLab.BinPacking/HeuristicLab.Problems.BinPacking.2D/3.3/Plugin.cs.frame	(revision 13605)
@@ -0,0 +1,43 @@
+#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2015 Joseph Helm and 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.Problems.BinPacking2D {
+  /// <summary>
+  /// Plugin class for HeuristicLab.Problems.BinPacking plugin.
+  /// </summary>
+  [Plugin("HeuristicLab.Problems.BinPacking2D", "3.3.7.$WCREV$")]
+  [PluginFile("HeuristicLab.Problems.BinPacking2D-3.3.dll", PluginFileType.Assembly)]
+  [PluginDependency("HeuristicLab.Common", "3.3")]
+  [PluginDependency("HeuristicLab.Core", "3.3")]
+  [PluginDependency("HeuristicLab.Data", "3.3")]
+  [PluginDependency("HeuristicLab.Encodings.IntegerVectorEncoding", "3.3")]
+  [PluginDependency("HeuristicLab.Collections", "3.3")]
+  [PluginDependency("HeuristicLab.Encodings.PermutationEncoding", "3.3")]
+  [PluginDependency("HeuristicLab.Optimization", "3.3")]
+  [PluginDependency("HeuristicLab.Optimization.Operators", "3.3")]
+  [PluginDependency("HeuristicLab.Parameters", "3.3")]
+  [PluginDependency("HeuristicLab.Persistence", "3.3")]
+  [PluginDependency("HeuristicLab.Problems.Instances", "3.3")]
+  public class Plugin : PluginBase {
+  }
+}
Index: branches/HeuristicLab.BinPacking/HeuristicLab.Problems.BinPacking.2D/3.3/Properties/AssemblyInfo.cs
===================================================================
--- branches/HeuristicLab.BinPacking/HeuristicLab.Problems.BinPacking.2D/3.3/Properties/AssemblyInfo.cs	(revision 13605)
+++ branches/HeuristicLab.BinPacking/HeuristicLab.Problems.BinPacking.2D/3.3/Properties/AssemblyInfo.cs	(revision 13605)
@@ -0,0 +1,56 @@
+#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2015 Joseph Helm and 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.Problems.BinPacking")]
+[assembly: AssemblyDescription("HeuristicLab binPacking classes")]
+[assembly: AssemblyConfiguration("")]
+[assembly: AssemblyCompany("")]
+[assembly: AssemblyProduct("HeuristicLab")]
+[assembly: AssemblyCopyright("(c) 2002-2015 HEAL and Joseph Helm")]
+[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("5D63ECBE-F92C-40DC-A081-C073323D72FF")]
+
+// 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 Revision and Build Numbers 
+// by using the '*' as shown below:
+[assembly: AssemblyVersion("3.3.0.0")]
+[assembly: AssemblyFileVersion("3.3.14.13578")]
Index: branches/HeuristicLab.BinPacking/HeuristicLab.Problems.BinPacking.2D/3.3/Properties/AssemblyInfo.cs.frame
===================================================================
--- branches/HeuristicLab.BinPacking/HeuristicLab.Problems.BinPacking.2D/3.3/Properties/AssemblyInfo.cs.frame	(revision 13605)
+++ branches/HeuristicLab.BinPacking/HeuristicLab.Problems.BinPacking.2D/3.3/Properties/AssemblyInfo.cs.frame	(revision 13605)
@@ -0,0 +1,56 @@
+#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2015 Joseph Helm and 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.Problems.BinPacking.2D")]
+[assembly: AssemblyDescription("HeuristicLab bin packing classes (2D)")]
+[assembly: AssemblyConfiguration("")]
+[assembly: AssemblyCompany("")]
+[assembly: AssemblyProduct("HeuristicLab")]
+[assembly: AssemblyCopyright("(c) 2002-2015 HEAL and Joseph Helm")]
+[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("43175434-F3CA-48F1-8471-88A774C28428")]
+
+// 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 Revision and Build Numbers 
+// by using the '*' as shown below:
+[assembly: AssemblyVersion("3.3.0.0")]
+[assembly: AssemblyFileVersion("3.3.14.$WCREV$")]
Index: branches/HeuristicLab.BinPacking/HeuristicLab.Problems.BinPacking.Views/3.3/Container2DView.xaml
===================================================================
--- branches/HeuristicLab.BinPacking/HeuristicLab.Problems.BinPacking.Views/3.3/Container2DView.xaml	(revision 13604)
+++ branches/HeuristicLab.BinPacking/HeuristicLab.Problems.BinPacking.Views/3.3/Container2DView.xaml	(revision 13605)
@@ -1,3 +1,24 @@
-﻿<UserControl x:Class="HeuristicLab.Problems.BinPacking.Views.Container2DView"
+﻿<!--
+/* HeuristicLab
+ * Copyright (C) 2002-2015 Joseph Helm and 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/> .
+ */
+-->
+
+<UserControl x:Class="HeuristicLab.Problems.BinPacking.Views.Container2DView"
              xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
              xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Index: branches/HeuristicLab.BinPacking/HeuristicLab.Problems.BinPacking.Views/3.3/Container2DView.xaml.cs
===================================================================
--- branches/HeuristicLab.BinPacking/HeuristicLab.Problems.BinPacking.Views/3.3/Container2DView.xaml.cs	(revision 13604)
+++ branches/HeuristicLab.BinPacking/HeuristicLab.Problems.BinPacking.Views/3.3/Container2DView.xaml.cs	(revision 13605)
@@ -1,9 +1,26 @@
-﻿using System;
-using System.Linq;
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2015 Joseph Helm and 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.Windows;
-using System.Windows.Forms;
-using System.Windows.Input;
 using System.Windows.Media;
-using System.Windows.Media.Media3D;
 using HeuristicLab.Encodings.PackingEncoding.PackingPlan;
 using HeuristicLab.Problems.BinPacking.Dimensions;
Index: branches/HeuristicLab.BinPacking/HeuristicLab.Problems.BinPacking.Views/3.3/Container3DView.xaml
===================================================================
--- branches/HeuristicLab.BinPacking/HeuristicLab.Problems.BinPacking.Views/3.3/Container3DView.xaml	(revision 13604)
+++ branches/HeuristicLab.BinPacking/HeuristicLab.Problems.BinPacking.Views/3.3/Container3DView.xaml	(revision 13605)
@@ -1,3 +1,24 @@
-﻿<UserControl x:Class="HeuristicLab.Problems.BinPacking.Views.Container3DView"
+﻿<!--
+/* HeuristicLab
+ * Copyright (C) 2002-2015 Joseph Helm and 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/> .
+ */
+-->
+
+<UserControl x:Class="HeuristicLab.Problems.BinPacking.Views.Container3DView"
              xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
              xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Index: branches/HeuristicLab.BinPacking/HeuristicLab.Problems.BinPacking.Views/3.3/Container3DView.xaml.cs
===================================================================
--- branches/HeuristicLab.BinPacking/HeuristicLab.Problems.BinPacking.Views/3.3/Container3DView.xaml.cs	(revision 13604)
+++ branches/HeuristicLab.BinPacking/HeuristicLab.Problems.BinPacking.Views/3.3/Container3DView.xaml.cs	(revision 13605)
@@ -1,3 +1,22 @@
-﻿using System;
+﻿/* HeuristicLab
+ * Copyright (C) 2002-2015 Joseph Helm and 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/> .
+ */
+
+using System;
 using System.Linq;
 using System.Windows;
Index: branches/HeuristicLab.BinPacking/HeuristicLab.Problems.BinPacking.Views/3.3/HeuristicLab.Problems.BinPacking.Views-3.3.csproj
===================================================================
--- branches/HeuristicLab.BinPacking/HeuristicLab.Problems.BinPacking.Views/3.3/HeuristicLab.Problems.BinPacking.Views-3.3.csproj	(revision 13604)
+++ branches/HeuristicLab.BinPacking/HeuristicLab.Problems.BinPacking.Views/3.3/HeuristicLab.Problems.BinPacking.Views-3.3.csproj	(revision 13605)
@@ -158,13 +158,9 @@
       <DependentUpon>Container2DView.xaml</DependentUpon>
     </Compile>
-    <Compile Include="PackingPlan2DView.cs">
-      <SubType>UserControl</SubType>
-    </Compile>
+    <Compile Include="PackingPlan2DView.cs" />
     <Compile Include="PackingPlan2DView.Designer.cs">
       <DependentUpon>PackingPlan2DView.cs</DependentUpon>
     </Compile>
-    <Compile Include="PackingPlan3DView.cs">
-      <SubType>UserControl</SubType>
-    </Compile>
+    <Compile Include="PackingPlan3DView.cs" />
     <Compile Include="PackingPlan3DView.Designer.cs">
       <DependentUpon>PackingPlan3DView.cs</DependentUpon>
Index: branches/HeuristicLab.BinPacking/HeuristicLab.Problems.BinPacking/3.3/Analyzers/BestBinPackingSolutionAnalyzer.cs
===================================================================
--- branches/HeuristicLab.BinPacking/HeuristicLab.Problems.BinPacking/3.3/Analyzers/BestBinPackingSolutionAnalyzer.cs	(revision 13604)
+++ branches/HeuristicLab.BinPacking/HeuristicLab.Problems.BinPacking/3.3/Analyzers/BestBinPackingSolutionAnalyzer.cs	(revision 13605)
@@ -33,5 +33,5 @@
 using HeuristicLab.Problems.BinPacking.Evaluators;
 
-namespace HeuristicLab.Problems.BinPacking.Analyzers {     
+namespace HeuristicLab.Problems.BinPacking.Analyzers {
   [Item("BestBinPackingSolutionAnalyzer", "An operator for analyzing the best solution of BinPacking Problems given in packingPlan-representation.")]
   [StorableClass]
@@ -40,12 +40,4 @@
     where B : PackingShape<D>, IPackingBin, IRegularPackingShape
     where I : PackingShape<D>, IPackingItem, IRegularPackingShape {
-
-    protected BestBinPackingSolutionAnalyzer(BestBinPackingSolutionAnalyzer<D,B,I> original, Cloner cloner)
-      : base(original, cloner) {
-    }
-    public override IDeepCloneable Clone(Cloner cloner) {
-      return new BestBinPackingSolutionAnalyzer<D,B,I>(this, cloner);
-    }
-
 
     public ILookupParameter<IRandom> RandomParameter {
@@ -56,7 +48,15 @@
     }
 
+    [StorableConstructor]
+    protected BestBinPackingSolutionAnalyzer(bool deserializing) : base(deserializing) { }
+    protected BestBinPackingSolutionAnalyzer(BestBinPackingSolutionAnalyzer<D, B, I> original, Cloner cloner)
+      : base(original, cloner) {
+    }
     public BestBinPackingSolutionAnalyzer()
       : base() {
       Parameters.Add(new LookupParameter<IRandom>("Random", "The pseudo random number generator."));
+    }
+    public override IDeepCloneable Clone(Cloner cloner) {
+      return new BestBinPackingSolutionAnalyzer<D, B, I>(this, cloner);
     }
 
@@ -105,7 +105,7 @@
       string nocKey = "Nr Of Containers";
       if (!results.ContainsKey(nocKey))
-        results.Add(new Result(nocKey, new IntValue (bestSolution.NrOfBins)));
+        results.Add(new Result(nocKey, new IntValue(bestSolution.NrOfBins)));
       else
-        results[nocKey].Value = new IntValue (bestSolution.NrOfBins);
+        results[nocKey].Value = new IntValue(bestSolution.NrOfBins);
 
       return base.Apply();
Index: branches/HeuristicLab.BinPacking/HeuristicLab.Problems.BinPacking/3.3/Analyzers/BinPackingAnalyzer.cs
===================================================================
--- branches/HeuristicLab.BinPacking/HeuristicLab.Problems.BinPacking/3.3/Analyzers/BinPackingAnalyzer.cs	(revision 13604)
+++ branches/HeuristicLab.BinPacking/HeuristicLab.Problems.BinPacking/3.3/Analyzers/BinPackingAnalyzer.cs	(revision 13605)
@@ -42,8 +42,4 @@
     }
 
-    protected BinPackingAnalyzer(BinPackingAnalyzer<D,B,I> original, Cloner cloner)
-      : base(original, cloner) {
-    }
-
     #region Parameter Properties
     public LookupParameter<BoolValue> MaximizationParameter {
@@ -70,13 +66,18 @@
     #endregion
 
-    public BinPackingAnalyzer()
+    [StorableConstructor]
+    protected BinPackingAnalyzer(bool deserializing) : base(deserializing) { }
+    protected BinPackingAnalyzer(BinPackingAnalyzer<D, B, I> original, Cloner cloner)
+      : base(original, cloner) {
+    }
+    protected BinPackingAnalyzer()
       : base() {
       Parameters.Add(new LookupParameter<BoolValue>("Maximization", "True if the problem is a maximization problem."));
       Parameters.Add(new ScopeTreeLookupParameter<DoubleValue>("Quality", "The qualities of the packing solutions which should be analyzed."));
-      Parameters.Add(new ScopeTreeLookupParameter<PackingPlan<D, B, I>>("PackingPlan", "The solutions from which the best solution has to be chosen from."));
       Parameters.Add(new LookupParameter<PackingPlan<D, B, I>>("BestSolution", "The best performing packing plan."));
       Parameters.Add(new ValueLookupParameter<ResultCollection>("Results", "The result collection where the best packing solution should be stored."));
       Parameters.Add(new LookupParameter<DoubleValue>("BestKnownQuality", "The quality of the best known solution of this packing-problem instance."));
       Parameters.Add(new LookupParameter<PackingPlan<D, B, I>>("BestKnownSolution", "The best known solution of this packing-problem instance."));
+      Parameters.Add(new ScopeTreeLookupParameter<PackingPlan<D, B, I>>("PackingPlan", "The solutions from which the best solution has to be chosen from."));
     }
   }
Index: branches/HeuristicLab.BinPacking/HeuristicLab.Problems.BinPacking/3.3/Dimensions/PackingDimensions.cs
===================================================================
--- branches/HeuristicLab.BinPacking/HeuristicLab.Problems.BinPacking/3.3/Dimensions/PackingDimensions.cs	(revision 13604)
+++ branches/HeuristicLab.BinPacking/HeuristicLab.Problems.BinPacking/3.3/Dimensions/PackingDimensions.cs	(revision 13605)
@@ -21,6 +21,4 @@
 
 
-using System;
-using System.Text;
 using HeuristicLab.Problems.BinPacking.Interfaces;
 using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
@@ -31,13 +29,23 @@
   [Item("Packing Dimensions", "Represents an abstract packing-position associated with a packing-problem.")]
   [StorableClass]
+  // PackingDimensions is immutable (and handled as value types concerning Equals and GetHashCode)
   public abstract class PackingDimensions : Item, IPackingDimensions {
     /// <summary>
     /// The number of the bin to which the current item is assigned is stored in this variable. Counting starts at 0 !!!
+    /// </summary>    
+    [Storable]
+    private readonly int assignedBin;
+    public int AssignedBin {
+      get { return assignedBin; }
+    }
+
+    [Storable]
+    private readonly bool rotated;
+    /// <summary>
+    /// Determines if the positioned item is to be rotate by 90 degrees or not. (TODO: which axis?)
     /// </summary>
-    public Int32 AssignedBin { get; set; }
-    /// <summary>
-    /// Determins if the positioned item is to be rotate by 90 degrees or not.
-    /// </summary>
-    public Boolean Rotated { get; set; }
+    public bool Rotated {
+      get { return rotated; }
+    }
 
     [StorableConstructor]
@@ -45,26 +53,21 @@
     protected PackingDimensions(PackingDimensions original, Cloner cloner)
       : base(original, cloner) {
-        AssignedBin = original.AssignedBin;
-        Rotated = original.Rotated;
+      assignedBin = original.AssignedBin;
+      rotated = original.Rotated;
     }
 
-    public PackingDimensions(Int32 assignedBin, Boolean rotated) {
-      this.AssignedBin = assignedBin;
-      this.Rotated = rotated;
+    protected PackingDimensions(int assignedBin, bool rotated) {
+      this.assignedBin = assignedBin;
+      this.rotated = rotated;
     }
 
     public override string ToString() {
-      StringBuilder sb = new StringBuilder();
-      sb.Append("[");
-      sb.Append(AssignedBin + "-");
-      sb.Append(Rotated);
-      sb.Append("]");
-      return sb.ToString();
+      return string.Format("[{0}-{1}]", AssignedBin, Rotated);
     }
 
     public override bool Equals(object obj) {
-      var pd = obj as PackingDimensions;
-      if (pd != null)
-        return (pd.AssignedBin == this.AssignedBin && pd.Rotated == this.Rotated);
+      var other = obj as PackingDimensions;
+      if (other != null)
+        return (other.AssignedBin == this.AssignedBin && other.Rotated == this.Rotated);
       else return false;
     }
Index: branches/HeuristicLab.BinPacking/HeuristicLab.Problems.BinPacking/3.3/Dimensions/ThreeDimensionalPacking.cs
===================================================================
--- branches/HeuristicLab.BinPacking/HeuristicLab.Problems.BinPacking/3.3/Dimensions/ThreeDimensionalPacking.cs	(revision 13604)
+++ branches/HeuristicLab.BinPacking/HeuristicLab.Problems.BinPacking/3.3/Dimensions/ThreeDimensionalPacking.cs	(revision 13605)
@@ -28,8 +28,16 @@
   [Item("Three Dimensional Packing", "Represents a packing-position associated with a three dimensional packing-problem.")]
   [StorableClass]
-  public class ThreeDimensionalPacking: PackingDimensions {
-    public int X { get; set; }
-    public int Y { get; set; }
-    public int Z { get; set; }
+  // ThreeDimensionalPacking is immutable (and handled as value type concerning Equals and GetHashCode)
+  public class ThreeDimensionalPacking : PackingDimensions {
+    [Storable]
+    private readonly int x;
+    [Storable]
+    private readonly int y;
+    [Storable]
+    private readonly int z;
+
+    public int X { get { return x; } }
+    public int Y { get { return y; } }
+    public int Z { get { return z; } }
 
     [StorableConstructor]
@@ -37,7 +45,7 @@
     protected ThreeDimensionalPacking(ThreeDimensionalPacking original, Cloner cloner)
       : base(original, cloner) {
-      X = original.X;
-      Y = original.Y;
-      Z = original.Z;
+      x = original.X;
+      y = original.Y;
+      z = original.Z;
     }
     public override IDeepCloneable Clone(Cloner cloner) {
@@ -45,23 +53,13 @@
     }
 
-    public ThreeDimensionalPacking(int assignedBin, int x, int y, int z) : this(assignedBin, x, y, z, false) {}
-    public ThreeDimensionalPacking(int assignedBin, int x, int y, int z, bool rotated)
+    public ThreeDimensionalPacking(int assignedBin, int x, int y, int z, bool rotated = false)
       : base(assignedBin, rotated) {
-      this.X = x;
-      this.Y = y;
-      this.Z = z;
+      this.x = x;
+      this.y = y;
+      this.z = z;
     }
+
     public override string ToString() {
-      StringBuilder sb = new StringBuilder();
-      sb.Append("[");
-      sb.Append("AssignedBin: ");
-      sb.Append(AssignedBin);
-      sb.Append("; (");
-      sb.Append(X + ",");
-      sb.Append(Y + ",");
-      sb.Append(Z);
-      sb.Append(")");
-      sb.Append("]");
-      return sb.ToString();
+      return string.Format("[AssignedBin: {0}; ({1},{2},{3})]", AssignedBin, X, Y, Z);
     }
 
Index: branches/HeuristicLab.BinPacking/HeuristicLab.Problems.BinPacking/3.3/Dimensions/TwoDimensionalPacking.cs
===================================================================
--- branches/HeuristicLab.BinPacking/HeuristicLab.Problems.BinPacking/3.3/Dimensions/TwoDimensionalPacking.cs	(revision 13604)
+++ branches/HeuristicLab.BinPacking/HeuristicLab.Problems.BinPacking/3.3/Dimensions/TwoDimensionalPacking.cs	(revision 13605)
@@ -28,7 +28,13 @@
   [Item("Two Dimensional Packing", "Represents a packing-position associated with a two dimensional packing-problem.")]
   [StorableClass]
+  // TwoDimensionalPacking is an immutable class (and handled as value type concerning Equals and GetHashCode())
   public class TwoDimensionalPacking : PackingDimensions {
-    public int X { get; set; }
-    public int Y { get; set; }
+    [Storable]
+    private readonly int x;
+    public int X { get { return x; } }
+
+    [Storable]
+    private readonly int y;
+    public int Y { get { return y; } }
 
     [StorableConstructor]
@@ -36,35 +42,26 @@
     protected TwoDimensionalPacking(TwoDimensionalPacking original, Cloner cloner)
       : base(original, cloner) {
-        X = original.X;
-        Y = original.Y;
+      x = original.X;
+      y = original.Y;
     }
+
+    public TwoDimensionalPacking(int assignedBin, int x, int y, bool rotated = false)
+      : base(assignedBin, rotated) {
+      this.x = x;
+      this.y = y;
+    }
+
     public override IDeepCloneable Clone(Cloner cloner) {
       return new TwoDimensionalPacking(this, cloner);
     }
-
-    public TwoDimensionalPacking(int assignedBin, int x, int y) : this(assignedBin, x, y, false) { }
-    public TwoDimensionalPacking(int assignedBin, int x, int y, bool rotated)
-      : base(assignedBin, rotated) {
-      this.X = x;
-      this.Y = y;
-    }
+    
     public override string ToString() {
-      StringBuilder sb = new StringBuilder();
-      sb.Append("[");
-      sb.Append("AssignedBin: ");
-      sb.Append(AssignedBin);
-      sb.Append("; (");
-      sb.Append(X + ",");
-      sb.Append(Y);
-      sb.Append(")");
-      sb.Append("]");
-      return sb.ToString();
+      return string.Format("[AssignedBin: {0}; ({1},{2})]", AssignedBin, x, y);
     }
 
-
     public override bool Equals(object obj) {
-      var tdp = obj as TwoDimensionalPacking;
-      if (tdp != null)
-        return (tdp.X == this.X && tdp.Y == this.Y);
+      var other = obj as TwoDimensionalPacking;
+      if (other != null)
+        return (other.X == this.X && other.Y == this.Y && base.Equals(other));
       else return false;
     }
Index: branches/HeuristicLab.BinPacking/HeuristicLab.Problems.BinPacking/3.3/Encodings/PackingPlans/BinPacking.cs
===================================================================
--- branches/HeuristicLab.BinPacking/HeuristicLab.Problems.BinPacking/3.3/Encodings/PackingPlans/BinPacking.cs	(revision 13604)
+++ branches/HeuristicLab.BinPacking/HeuristicLab.Problems.BinPacking/3.3/Encodings/PackingPlans/BinPacking.cs	(revision 13605)
@@ -101,6 +101,6 @@
         double result = 0;
         foreach (var entry in ItemMeasures)
-          result += entry.Value.MultipliedMeasures;
-        result /= BinMeasures.MultipliedMeasures;
+          result += entry.Value.Volume;
+        result /= BinMeasures.Volume;
         return result;
       }
Index: branches/HeuristicLab.BinPacking/HeuristicLab.Problems.BinPacking/3.3/Evaluators/Abstract/BinUtilizationRegularIdenticalBinEvaluator.cs
===================================================================
--- branches/HeuristicLab.BinPacking/HeuristicLab.Problems.BinPacking/3.3/Evaluators/Abstract/BinUtilizationRegularIdenticalBinEvaluator.cs	(revision 13604)
+++ branches/HeuristicLab.BinPacking/HeuristicLab.Problems.BinPacking/3.3/Evaluators/Abstract/BinUtilizationRegularIdenticalBinEvaluator.cs	(revision 13605)
@@ -87,5 +87,5 @@
 
       for (int i = 0; i < nrOfBins; i++) {
-        double usableSpace = plan.BinPackings[i].BinMeasures.MultipliedMeasures;
+        double usableSpace = plan.BinPackings[i].BinMeasures.Volume;
         //var indexes = plan.PackingItemPositions.Select((Value, Index) => new { Value, Index }).Where(s => s.Value.Value.AssignedBin == i).Select(s => s.Index);
         //var packedItemsInThisBin = plan.PackingItemMeasures.Select((Value, Index) => new { Value, Index }).Where(s => indexes.Contains(s.Index));
Index: branches/HeuristicLab.BinPacking/HeuristicLab.Problems.BinPacking/3.3/HeuristicLab.Problems.BinPacking-3.3.csproj
===================================================================
--- branches/HeuristicLab.BinPacking/HeuristicLab.Problems.BinPacking/3.3/HeuristicLab.Problems.BinPacking-3.3.csproj	(revision 13604)
+++ branches/HeuristicLab.BinPacking/HeuristicLab.Problems.BinPacking/3.3/HeuristicLab.Problems.BinPacking-3.3.csproj	(revision 13605)
@@ -287,5 +287,4 @@
     <Compile Include="Interfaces\I2DOperator.cs" />
     <Compile Include="Interfaces\IPackingMove.cs" />
-    <Compile Include="Interfaces\IPotvinOperator.cs" />
     <Compile Include="Interfaces\IMultiComponentVectorMoveOperator.cs" />
     <Compile Include="Interfaces\IGroupingVectorMoveOperator.cs" />
Index: branches/HeuristicLab.BinPacking/HeuristicLab.Problems.BinPacking/3.3/Interfaces/I2DOperator.cs
===================================================================
--- branches/HeuristicLab.BinPacking/HeuristicLab.Problems.BinPacking/3.3/Interfaces/I2DOperator.cs	(revision 13604)
+++ branches/HeuristicLab.BinPacking/HeuristicLab.Problems.BinPacking/3.3/Interfaces/I2DOperator.cs	(revision 13605)
@@ -20,5 +20,4 @@
 #endregion
 
-
 namespace HeuristicLab.Problems.BinPacking.Interfaces {
   public interface I2DOperator {
Index: branches/HeuristicLab.BinPacking/HeuristicLab.Problems.BinPacking/3.3/Interfaces/I3DOperator.cs
===================================================================
--- branches/HeuristicLab.BinPacking/HeuristicLab.Problems.BinPacking/3.3/Interfaces/I3DOperator.cs	(revision 13604)
+++ branches/HeuristicLab.BinPacking/HeuristicLab.Problems.BinPacking/3.3/Interfaces/I3DOperator.cs	(revision 13605)
@@ -20,5 +20,4 @@
 #endregion
 
-
 namespace HeuristicLab.Problems.BinPacking.Interfaces {
   public interface I3DOperator {
Index: branches/HeuristicLab.BinPacking/HeuristicLab.Problems.BinPacking/3.3/Interfaces/IPackingBin.cs
===================================================================
--- branches/HeuristicLab.BinPacking/HeuristicLab.Problems.BinPacking/3.3/Interfaces/IPackingBin.cs	(revision 13604)
+++ branches/HeuristicLab.BinPacking/HeuristicLab.Problems.BinPacking/3.3/Interfaces/IPackingBin.cs	(revision 13605)
@@ -22,5 +22,5 @@
 
 namespace HeuristicLab.Problems.BinPacking.Interfaces {
-  public interface IPackingBin : IPackingShape {
-  }
+  // a packing bin represents the container for a packing solution
+  public interface IPackingBin : IPackingShape { }
 }
Index: branches/HeuristicLab.BinPacking/HeuristicLab.Problems.BinPacking/3.3/Interfaces/IPackingDimensions.cs
===================================================================
--- branches/HeuristicLab.BinPacking/HeuristicLab.Problems.BinPacking/3.3/Interfaces/IPackingDimensions.cs	(revision 13604)
+++ branches/HeuristicLab.BinPacking/HeuristicLab.Problems.BinPacking/3.3/Interfaces/IPackingDimensions.cs	(revision 13605)
@@ -20,10 +20,10 @@
 #endregion
 
-using System;
 using HeuristicLab.Core;
 
 namespace HeuristicLab.Problems.BinPacking.Interfaces {
+  // TODO: this interface should contain positions 
   public interface IPackingDimensions : IItem {
-    Int32 AssignedBin { get; }
+    int AssignedBin { get; }
     bool Rotated { get; }
   }
Index: branches/HeuristicLab.BinPacking/HeuristicLab.Problems.BinPacking/3.3/Interfaces/IPackingItem.cs
===================================================================
--- branches/HeuristicLab.BinPacking/HeuristicLab.Problems.BinPacking/3.3/Interfaces/IPackingItem.cs	(revision 13604)
+++ branches/HeuristicLab.BinPacking/HeuristicLab.Problems.BinPacking/3.3/Interfaces/IPackingItem.cs	(revision 13605)
@@ -20,12 +20,11 @@
 #endregion
 
-
 namespace HeuristicLab.Problems.BinPacking.Interfaces {
+  // a packing item is one of the items that needs to be located in one of the packing bins (containers)
   public interface IPackingItem : IPackingShape {
-    void AddTargetBinMeasures(int[] targetBinMeasures);
     double Weight { get; set; }
     int Material { get; set; }
     /// <summary>
-    /// Returns if the "other" item can be stacked on this item.
+    /// Returns true if the "other" item can be stacked on this item.
     /// </summary>
     /// <param name="other"></param>
Index: branches/HeuristicLab.BinPacking/HeuristicLab.Problems.BinPacking/3.3/Interfaces/IPackingPlan.cs
===================================================================
--- branches/HeuristicLab.BinPacking/HeuristicLab.Problems.BinPacking/3.3/Interfaces/IPackingPlan.cs	(revision 13604)
+++ branches/HeuristicLab.BinPacking/HeuristicLab.Problems.BinPacking/3.3/Interfaces/IPackingPlan.cs	(revision 13605)
@@ -23,4 +23,5 @@
 
 namespace HeuristicLab.Problems.BinPacking.Interfaces {
+  // represents a packing solution (either 2d or 3d)
   public interface IPackingPlan : IItem {
     int NrOfBins { get; }
Index: branches/HeuristicLab.BinPacking/HeuristicLab.Problems.BinPacking/3.3/Interfaces/IPackingShape.cs
===================================================================
--- branches/HeuristicLab.BinPacking/HeuristicLab.Problems.BinPacking/3.3/Interfaces/IPackingShape.cs	(revision 13604)
+++ branches/HeuristicLab.BinPacking/HeuristicLab.Problems.BinPacking/3.3/Interfaces/IPackingShape.cs	(revision 13605)
@@ -23,5 +23,6 @@
 
 namespace HeuristicLab.Problems.BinPacking.Interfaces {
-  public interface IPackingShape : IItem {
-  }
+  // a packing shape represents a physical object of correct dimension (2d or 3d) 
+  // packing bins (containers) and packing items are both packing shapes
+  public interface IPackingShape : IItem { }
 }
Index: branches/HeuristicLab.BinPacking/HeuristicLab.Problems.BinPacking/3.3/Interfaces/IPotvinOperator.cs
===================================================================
--- branches/HeuristicLab.BinPacking/HeuristicLab.Problems.BinPacking/3.3/Interfaces/IPotvinOperator.cs	(revision 13604)
+++ 	(revision )
@@ -1,26 +1,0 @@
-﻿#region License Information
-/* HeuristicLab
- * Copyright (C) 2002-2015 Joseph Helm and 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.Problems.BinPacking.Interfaces {
-  public interface IPotvinOperator : IOperator {
-  }
-}
Index: branches/HeuristicLab.BinPacking/HeuristicLab.Problems.BinPacking/3.3/Interfaces/IRegularPackingShape.cs
===================================================================
--- branches/HeuristicLab.BinPacking/HeuristicLab.Problems.BinPacking/3.3/Interfaces/IRegularPackingShape.cs	(revision 13604)
+++ branches/HeuristicLab.BinPacking/HeuristicLab.Problems.BinPacking/3.3/Interfaces/IRegularPackingShape.cs	(revision 13605)
@@ -25,5 +25,5 @@
   ///A regularPackingShape has special geometric properties that allow special handling = Rectangle, Cuboid
   public interface IRegularPackingShape : IPackingShape, IComparable {
-    int MultipliedMeasures { get; }
+    int Volume { get; }
     void ApplyHorizontalOrientation();
   }
Index: branches/HeuristicLab.BinPacking/HeuristicLab.Problems.BinPacking/3.3/PackingItem/CuboidPackingItem.cs
===================================================================
--- branches/HeuristicLab.BinPacking/HeuristicLab.Problems.BinPacking/3.3/PackingItem/CuboidPackingItem.cs	(revision 13604)
+++ branches/HeuristicLab.BinPacking/HeuristicLab.Problems.BinPacking/3.3/PackingItem/CuboidPackingItem.cs	(revision 13605)
@@ -34,17 +34,27 @@
   [StorableClass]
   public class CuboidPackingItem : CuboidPackingShape, IPackingItem {
+    public IValueParameter<CuboidPackingBin> TargetBinParameter {
+      get { return (IValueParameter<CuboidPackingBin>)Parameters["TargetBin"]; }
+    }
+    public IFixedValueParameter<DoubleValue> WeightParameter {
+      get { return (IFixedValueParameter<DoubleValue>)Parameters["Weight"]; }
+    }
+    public IFixedValueParameter<IntValue> MaterialParameter {
+      get { return (IFixedValueParameter<IntValue>)Parameters["Material"]; }
+    }
+
     public CuboidPackingBin TargetBin {
-      get { return ((IValueParameter<CuboidPackingBin>)Parameters["TargetBin"]).Value; }
-      set { ((IValueParameter<CuboidPackingBin>)Parameters["TargetBin"]).Value = value; }
+      get { return TargetBinParameter.Value; }
+      set { TargetBinParameter.Value = value; }
     }
 
     public double Weight {
-      get { return ((IFixedValueParameter<DoubleValue>)Parameters["Weight"]).Value.Value; }
-      set { ((IFixedValueParameter<DoubleValue>)Parameters["Weight"]).Value.Value = value; }
+      get { return WeightParameter.Value.Value; }
+      set { WeightParameter.Value.Value = value; }
     }
 
     public int Material {
-      get { return ((IFixedValueParameter<IntValue>)Parameters["Material"]).Value.Value; }
-      set { ((IFixedValueParameter<IntValue>)Parameters["Material"]).Value.Value = value; }
+      get { return MaterialParameter.Value.Value; }
+      set { MaterialParameter.Value.Value = value; }
     }
 
@@ -57,4 +67,5 @@
     protected CuboidPackingItem(CuboidPackingItem original, Cloner cloner)
       : base(original, cloner) {
+      RegisterEvents();
     }
     public CuboidPackingItem()
@@ -63,4 +74,6 @@
       Parameters.Add(new FixedValueParameter<DoubleValue>("Weight"));
       Parameters.Add(new FixedValueParameter<IntValue>("Material"));
+
+      RegisterEvents();
     }
 
@@ -83,14 +96,24 @@
     }
 
+    [StorableHook(HookType.AfterDeserialization)]
+    private void AfterDeserialization() {
+      RegisterEvents();
+    }
+
     public override IDeepCloneable Clone(Cloner cloner) {
       return new CuboidPackingItem(this, cloner);
     }
 
-    public void AddTargetBinMeasures(int[] targetBinMeasures) {
-      TargetBin = new CuboidPackingBin(targetBinMeasures[0], targetBinMeasures[1], targetBinMeasures[2]);
+    private void RegisterEvents() {
+      // only because of ToString override
+      WeightParameter.Value.ValueChanged += (sender, args) => OnToStringChanged();
+      MaterialParameter.Value.ValueChanged += (sender, args) => OnToStringChanged();
+
+      // target bin does not occur in ToString()
     }
 
+
     public override string ToString() {
-      return String.Format("CuboidPackingItem ({0}, {1}, {2}; w={3}, m={4})", this.Width, this.Height, this.Depth, this.Weight, this.Material);
+      return string.Format("CuboidPackingItem ({0}, {1}, {2}; weight={3}, mat={4})", this.Width, this.Height, this.Depth, this.Weight, this.Material);
     }
   }
Index: branches/HeuristicLab.BinPacking/HeuristicLab.Problems.BinPacking/3.3/PackingItem/RectangularPackingItem.cs
===================================================================
--- branches/HeuristicLab.BinPacking/HeuristicLab.Problems.BinPacking/3.3/PackingItem/RectangularPackingItem.cs	(revision 13604)
+++ branches/HeuristicLab.BinPacking/HeuristicLab.Problems.BinPacking/3.3/PackingItem/RectangularPackingItem.cs	(revision 13605)
@@ -77,8 +77,4 @@
       return ((other.Material < this.Material) || (other.Material.Equals(this.Material) && other.Weight <= this.Weight));
     }
-
-    public void AddTargetBinMeasures(int[] targetBinMeasures) {
-      TargetBin = new RectangularPackingBin(targetBinMeasures[0], targetBinMeasures[1]);
-    }
   }
 }
Index: branches/HeuristicLab.BinPacking/HeuristicLab.Problems.BinPacking/3.3/Problem/BinPackingProblem.cs
===================================================================
--- branches/HeuristicLab.BinPacking/HeuristicLab.Problems.BinPacking/3.3/Problem/BinPackingProblem.cs	(revision 13604)
+++ branches/HeuristicLab.BinPacking/HeuristicLab.Problems.BinPacking/3.3/Problem/BinPackingProblem.cs	(revision 13605)
@@ -86,13 +86,8 @@
     }
 
-
-
-
-    #region Helpers         
     protected abstract void InitializeDecoder(); 
     protected abstract void InitializeProblemInstance();
     protected abstract void InitializeOperators();
     protected abstract void InitializeEventHandlers();
-    #endregion
   }
 }
Index: branches/HeuristicLab.BinPacking/HeuristicLab.Problems.BinPacking/3.3/Problem/RegularIdenticalBinPackingProblem.cs
===================================================================
--- branches/HeuristicLab.BinPacking/HeuristicLab.Problems.BinPacking/3.3/Problem/RegularIdenticalBinPackingProblem.cs	(revision 13604)
+++ branches/HeuristicLab.BinPacking/HeuristicLab.Problems.BinPacking/3.3/Problem/RegularIdenticalBinPackingProblem.cs	(revision 13605)
@@ -112,6 +112,6 @@
     private int CalculateLowerBound() {
       //This is the obvious continuous lower bound calculation; Martello and Vigo proposed a better way but it has not been implemented yet;
-      int items = PackingItemMeasures.Select(x => x.MultipliedMeasures).Sum();
-      int bin = PackingBinMeasures.MultipliedMeasures;
+      int items = PackingItemMeasures.Select(x => x.Volume).Sum();
+      int bin = PackingBinMeasures.Volume;
       return (items + bin - 1)/(bin);
     }
@@ -229,47 +229,51 @@
     #region Problem instance handling
     public virtual void Load(BPPData data) {
-      var realData = data as RealBPPData;
-      var binData = new B();
-      binData.InitializeFromMeasures (data.BinMeasures);
-
-      var itemData = new ItemList<I>(data.Items);
-      for (int j = 0; j < data.Items; j++) {
-        var item = new I();
-        item.InitializeFromMeasures(data.ItemMeasures[j]);
-        item.AddTargetBinMeasures(data.BinMeasures);
-        if (realData != null) {
-          item.Weight = realData.ItemWeights[j];
-          item.Material = realData.ItemMaterials[j];
-        }
-        itemData.Add(item);
-      }
-
-      BestKnownQuality = data.BestKnownQuality.HasValue ? new DoubleValue(data.BestKnownQuality.Value) : null;
-
-      PackingBinMeasures = binData;    
-      PackingItemMeasures = itemData;
-
-      ApplyHorizontalOrientation();
-      SortItems();
-      PackingItemsParameter.Value.Value = PackingItemMeasures.Count;
-      LowerBoundParameter.Value.Value = CalculateLowerBound();
+      // var realData = data as RealBPPData;
+      // var binData = new B();
+      // binData.InitializeFromMeasures (data.BinMeasures);
+      // 
+      // var itemData = new ItemList<I>(data.Items);
+      // for (int j = 0; j < data.Items; j++) {
+      //   var item = new I();
+      //   item.InitializeFromMeasures(data.ItemMeasures[j]);
+      //   item.AddTargetBinMeasures(data.BinMeasures);
+      //   if (realData != null) {
+      //     item.Weight = realData.ItemWeights[j];
+      //     item.Material = realData.ItemMaterials[j];
+      //   }
+      //   itemData.Add(item);
+      // }
+      // 
+      // BestKnownQuality = data.BestKnownQuality.HasValue ? new DoubleValue(data.BestKnownQuality.Value) : null;
+      // 
+      // PackingBinMeasures = binData;    
+      // PackingItemMeasures = itemData;
+      // 
+      // ApplyHorizontalOrientation();
+      // SortItems();
+      // PackingItemsParameter.Value.Value = PackingItemMeasures.Count;
+      // LowerBoundParameter.Value.Value = CalculateLowerBound();
+
+      throw new NotImplementedException();
     }
 
     public BPPData Export() {
-      var result = new BPPData{
-        Name = Name,
-        Description = Description,
-        Items = PackingItemsParameter.Value.Value,
-        BinMeasures = PackingBinMeasures.ToArray()
-      };
-
-      var itemMeasures = new int[result.Items][];
-      int i = 0;
-      foreach (var item in PackingItemMeasures) {
-        itemMeasures[i] = item.ToArray();
-        i++;
-      }
-      result.ItemMeasures = itemMeasures;
-      return result;
+      // var result = new BPPData{
+      //   Name = Name,
+      //   Description = Description,
+      //   Items = PackingItemsParameter.Value.Value,
+      //   BinMeasures = PackingBinMeasures.ToArray() // TODO: split functionality of class in 2d and 3d code
+      // };
+      // 
+      // var itemMeasures = new int[result.Items][];
+      // int i = 0;
+      // foreach (var item in PackingItemMeasures) {
+      //   itemMeasures[i] = item.ToArray();
+      //   i++;
+      // }
+      // result.ItemMeasures = itemMeasures;
+      // return result;
+
+      throw new NotImplementedException();
     }
     #endregion
Index: branches/HeuristicLab.BinPacking/HeuristicLab.Problems.BinPacking/3.3/Shapes/CuboidPackingShape.cs
===================================================================
--- branches/HeuristicLab.BinPacking/HeuristicLab.Problems.BinPacking/3.3/Shapes/CuboidPackingShape.cs	(revision 13604)
+++ branches/HeuristicLab.BinPacking/HeuristicLab.Problems.BinPacking/3.3/Shapes/CuboidPackingShape.cs	(revision 13605)
@@ -21,5 +21,4 @@
 
 using System;
-using System.Diagnostics;
 using HeuristicLab.Problems.BinPacking.Interfaces;
 using HeuristicLab.Core;
@@ -34,25 +33,111 @@
   [StorableClass]
   public abstract class CuboidPackingShape : PackingShape<ThreeDimensionalPacking>, IRegularPackingShape, IComparable<CuboidPackingShape> {
-    #region Properties
+    public IFixedValueParameter<IntValue> HeightParameter {
+      get { return (IFixedValueParameter<IntValue>)Parameters["Height"]; }
+    }
+    public IFixedValueParameter<IntValue> WidthParameter {
+      get { return (IFixedValueParameter<IntValue>)Parameters["Width"]; }
+    }
+    public IFixedValueParameter<IntValue> DepthParameter {
+      get { return (IFixedValueParameter<IntValue>)Parameters["Depth"]; }
+    }
+
     public int Height {
-      get { return ((IFixedValueParameter<IntValue>)Parameters["Height"]).Value.Value; }
-      set { ((IFixedValueParameter<IntValue>)Parameters["Height"]).Value.Value = value; }
+      get { return HeightParameter.Value.Value; }
+      set { HeightParameter.Value.Value = value; }
     }
 
     public int Width {
-      get { return ((IFixedValueParameter<IntValue>)Parameters["Width"]).Value.Value; }
-      set { ((IFixedValueParameter<IntValue>)Parameters["Width"]).Value.Value = value; }
+      get { return WidthParameter.Value.Value; }
+      set { WidthParameter.Value.Value = value; }
     }
 
     public int Depth {
-      get { return ((IFixedValueParameter<IntValue>)Parameters["Depth"]).Value.Value; }
-      set { ((IFixedValueParameter<IntValue>)Parameters["Depth"]).Value.Value = value; }
+      get { return DepthParameter.Value.Value; }
+      set { DepthParameter.Value.Value = value; }
+    }
+
+    [StorableConstructor]
+    protected CuboidPackingShape(bool deserializing) : base(deserializing) { }
+    protected CuboidPackingShape(CuboidPackingShape original, Cloner cloner)
+      : base(original, cloner) {
+      RegisterEvents();
+    }
+    protected CuboidPackingShape()
+      : base() {
+      Parameters.Add(new FixedValueParameter<IntValue>("Width"));
+      Parameters.Add(new FixedValueParameter<IntValue>("Height"));
+      Parameters.Add(new FixedValueParameter<IntValue>("Depth"));
+
+      RegisterEvents();
+    }
+
+    protected CuboidPackingShape(int width, int height, int depth)
+      : this() {
+      this.Width = width;
+      this.Height = height;
+      this.Depth = depth;
+    }
+
+    [StorableHook(HookType.AfterDeserialization)]
+    private void AfterDeserialization() {
+      RegisterEvents();
+    }
+
+    private void RegisterEvents() {
+      // only because of ToString override
+      HeightParameter.Value.ValueChanged += (sender, args) => OnToStringChanged();
+      WidthParameter.Value.ValueChanged += (sender, args) => OnToStringChanged();
+      DepthParameter.Value.ValueChanged += (sender, args) => OnToStringChanged();
+    }
+
+    public override string ToString() {
+      return String.Format("CuboidPackingShape ({0}, {1}, {2})", this.Width, this.Height, this.Depth);
+    }
+
+    #region IComparable Members
+
+    public int CompareTo(CuboidPackingShape other) {
+      //Using "Clustered-Area-Height"-comparison as descr
+
+      int result = (this.Width * this.Depth).CompareTo(other.Width * other.Depth);
+
+      if (result == 0)
+        result = this.Volume.CompareTo(other.Volume);
+      if (result == 0)
+        result = this.Height.CompareTo(other.Height);
+      return result;
+    }
+
+    public int CompareTo(object obj) {
+      var other = (CuboidPackingShape)obj;
+      if (other != null) return CompareTo(other);
+      else throw new ArgumentException(string.Format("Cannot compare with object {0}", obj), "obj");
     }
 
     #endregion
 
+    private struct CuboidDiagonal {
+      public int x1;
+      public int y1;
+      public int z1;
+      public int x2;
+      public int y2;
+      public int z2;
+      public CuboidDiagonal(CuboidPackingShape myShape) : this(new ThreeDimensionalPacking(0, 0, 0, 0), myShape) { }
+      public CuboidDiagonal(ThreeDimensionalPacking myPosition, CuboidPackingShape myShape) {
+        x1 = myPosition.X;
+        y1 = myPosition.Y;
+        z1 = myPosition.Z;
+        x2 = myPosition.X + (myPosition.Rotated ? myShape.Depth : myShape.Width) - 1;
+        y2 = myPosition.Y + myShape.Height - 1;
+        z2 = myPosition.Z + (myPosition.Rotated ? myShape.Width : myShape.Depth) - 1;
+      }
+    }
+
+
     #region Helpers
     public override ThreeDimensionalPacking Origin { get { return new ThreeDimensionalPacking(0, 0, 0, 0); } }
-    public override int MultipliedMeasures { get { return Width * Height * Depth; } }
+    public override int Volume { get { return Width * Height * Depth; } }
 
     public override bool EnclosesPoint(ThreeDimensionalPacking myPosition, ThreeDimensionalPacking checkedPoint) {
@@ -103,81 +188,4 @@
     #endregion
 
-
-
-    public override void InitializeFromMeasures(int[] measures) {
-      if (measures.Length != 3)
-        throw new InvalidOperationException("Nr of measures does not fit shape-dimension.");
-      this.Width = measures[0];
-      this.Height = measures[1];
-      this.Depth = measures[2];
-    }
-    public override int[] ToArray() {
-      return new int[] { Width, Height, Depth };
-    }
-
-
-    protected CuboidPackingShape()
-      : base() {
-      Parameters.Add(new FixedValueParameter<IntValue>("Width"));
-      Parameters.Add(new FixedValueParameter<IntValue>("Height"));
-      Parameters.Add(new FixedValueParameter<IntValue>("Depth"));
-    }
-
-    protected CuboidPackingShape(int width, int height, int depth)
-      : this() {
-      this.Width = width;
-      this.Height = height;
-      this.Depth = depth;
-    }
-
-    [StorableConstructor]
-    protected CuboidPackingShape(bool deserializing) : base(deserializing) { }
-    protected CuboidPackingShape(CuboidPackingShape original, Cloner cloner)
-      : base(original, cloner) {
-    }
-
-    public override string ToString() {
-      return String.Format("CuboidPackingShape ({0}, {1}, {2})", this.Width, this.Height, this.Depth);
-    }
-
-    #region IComparable Members
-
-    public int CompareTo(CuboidPackingShape other) {
-      //Using "Clustered-Area-Height"-comparison as descr
-
-      int result = (this.Width * this.Depth).CompareTo(other.Width * other.Depth);
-
-      if (result == 0)
-        result = this.MultipliedMeasures.CompareTo(other.MultipliedMeasures);
-      if (result == 0)
-        result = this.Height.CompareTo(other.Height);
-      return result;
-    }
-
-    public int CompareTo(object obj) {
-      var other = (CuboidPackingShape)obj;
-      if (other != null) return CompareTo(other);
-      else throw new ArgumentException(string.Format("Cannot compare with object {0}", obj), "obj");
-    }
-
-    #endregion
-
-    private struct CuboidDiagonal {
-      public int x1;
-      public int y1;
-      public int z1;
-      public int x2;
-      public int y2;
-      public int z2;
-      public CuboidDiagonal(CuboidPackingShape myShape) : this(new ThreeDimensionalPacking(0, 0, 0, 0), myShape) { }
-      public CuboidDiagonal(ThreeDimensionalPacking myPosition, CuboidPackingShape myShape) {
-        x1 = myPosition.X;
-        y1 = myPosition.Y;
-        z1 = myPosition.Z;
-        x2 = myPosition.X + (myPosition.Rotated ? myShape.Depth : myShape.Width) - 1;
-        y2 = myPosition.Y + myShape.Height - 1;
-        z2 = myPosition.Z + (myPosition.Rotated ? myShape.Width : myShape.Depth) - 1;
-      }
-    }
   }
 }
Index: branches/HeuristicLab.BinPacking/HeuristicLab.Problems.BinPacking/3.3/Shapes/PackingShape.cs
===================================================================
--- branches/HeuristicLab.BinPacking/HeuristicLab.Problems.BinPacking/3.3/Shapes/PackingShape.cs	(revision 13604)
+++ branches/HeuristicLab.BinPacking/HeuristicLab.Problems.BinPacking/3.3/Shapes/PackingShape.cs	(revision 13605)
@@ -42,7 +42,5 @@
     public abstract bool Encloses(T checkedPosition, PackingShape<T> checkedShape);
     public abstract bool Overlaps(T myPosition, T checkedPosition, PackingShape<T> checkedShape);
-    public abstract void InitializeFromMeasures(int[] measures);
-    public abstract int[] ToArray();
-    public abstract int MultipliedMeasures { get; }
+    public abstract int Volume { get; }
     public abstract T Origin { get; }
 
Index: branches/HeuristicLab.BinPacking/HeuristicLab.Problems.BinPacking/3.3/Shapes/RectangularPackingShape.cs
===================================================================
--- branches/HeuristicLab.BinPacking/HeuristicLab.Problems.BinPacking/3.3/Shapes/RectangularPackingShape.cs	(revision 13604)
+++ branches/HeuristicLab.BinPacking/HeuristicLab.Problems.BinPacking/3.3/Shapes/RectangularPackingShape.cs	(revision 13605)
@@ -34,5 +34,4 @@
   [StorableClass]
   public abstract class RectangularPackingShape : PackingShape<TwoDimensionalPacking>, IRegularPackingShape, IComparable<RectangularPackingShape> {
-    #region Properties
     public int Height {
       get { return ((IFixedValueParameter<IntValue>)Parameters["Height"]).Value.Value; }
@@ -45,6 +44,9 @@
     }
 
-    #endregion
-
+    [StorableConstructor]
+    protected RectangularPackingShape(bool deserializing) : base(deserializing) { }
+    protected RectangularPackingShape(RectangularPackingShape original, Cloner cloner)
+      : base(original, cloner) {
+    }
     protected RectangularPackingShape()
       : base() {
@@ -57,19 +59,4 @@
       this.Width = width;
     }
-
-    [StorableConstructor]
-    protected RectangularPackingShape(bool deserializing) : base(deserializing) { }
-    protected RectangularPackingShape(RectangularPackingShape original, Cloner cloner)
-      : base(original, cloner) {
-    }
-
-    public override void InitializeFromMeasures(int[] measures) {
-      if (measures.Length != 2)
-        throw new InvalidOperationException("Nr of measures does not fit shape-dimension.");
-      this.Width = measures[0];
-      this.Height = measures[1];
-    }
-
-
 
     public override string ToString() {
@@ -94,13 +81,8 @@
     #endregion
 
-    public override int[] ToArray() {
-      return new int[] { Width, Height };
-    }
-
-
 
     #region Helpers
     public override TwoDimensionalPacking Origin { get { return new TwoDimensionalPacking(0, 0, 0); } }
-    public override int MultipliedMeasures { get { return Height * Width; } }
+    public override int Volume { get { return Height * Width; } }
 
     public override bool EnclosesPoint(TwoDimensionalPacking myPosition, TwoDimensionalPacking checkedPoint) {
