Index: /branches/HeuristicLab.BinPacking/HeuristicLab.Problems.BinPacking.2D/3.3/BinPacking2D.cs
===================================================================
--- /branches/HeuristicLab.BinPacking/HeuristicLab.Problems.BinPacking.2D/3.3/BinPacking2D.cs	(revision 14044)
+++ /branches/HeuristicLab.BinPacking/HeuristicLab.Problems.BinPacking.2D/3.3/BinPacking2D.cs	(revision 14045)
@@ -28,12 +28,13 @@
 using HeuristicLab.Common;
 using HeuristicLab.Problems.BinPacking.Dimensions;
-using HeuristicLab.Problems.BinPacking.PackingBin;
+
+using HeuristicLab.Problems.BinPacking.Shapes;
 
 namespace HeuristicLab.Encodings.PackingEncoding.PackingPlan {
   [Item("BinPacking2D", "Represents a single-bin packing for a 2D bin-packing problem.")]
   [StorableClass]
-  public class BinPacking2D : BinPacking<TwoDimensionalPacking, RectangularPackingBin, RectangularPackingItem> {
-
-    public BinPacking2D(RectangularPackingBin binMeasures)
+  public class BinPacking2D : BinPacking<TwoDimensionalPacking, RectangularPackingShape, RectangularPackingItem> {
+
+    public BinPacking2D(RectangularPackingShape binMeasures)
       : base(binMeasures) {
       ExtremePoints = new SortedSet<TwoDimensionalPacking>(new EPComparer2D());
Index: /branches/HeuristicLab.BinPacking/HeuristicLab.Problems.BinPacking.2D/3.3/Decoders/BL/BottomLeftGroupingVectorDecoder.cs
===================================================================
--- /branches/HeuristicLab.BinPacking/HeuristicLab.Problems.BinPacking.2D/3.3/Decoders/BL/BottomLeftGroupingVectorDecoder.cs	(revision 14044)
+++ /branches/HeuristicLab.BinPacking/HeuristicLab.Problems.BinPacking.2D/3.3/Decoders/BL/BottomLeftGroupingVectorDecoder.cs	(revision 14045)
@@ -24,5 +24,5 @@
 using HeuristicLab.Core;
 using HeuristicLab.Problems.BinPacking.Dimensions;
-using HeuristicLab.Problems.BinPacking.PackingBin;
+
 using HeuristicLab.Problems.BinPacking.PackingItem;
 using HeuristicLab.Encodings.PackingEncoding.PackingPlan;
@@ -31,9 +31,10 @@
 using HeuristicLab.Encodings.PackingEncoding.GroupingVector;
 using HeuristicLab.Problems.BinPacking2D;
+using HeuristicLab.Problems.BinPacking.Shapes;
 
 namespace HeuristicLab.Problems.BinPacking.Decoders {
   [Item("Identical bin two dimensional grouping vector decoder", "<Description missing...>")]
   [StorableClass]
-  public class BottomLeftGroupingVectorDecoder : PackingSolutionDecoder<TwoDimensionalPacking, RectangularPackingBin,RectangularPackingItem>, I2DGVDecoder {
+  public class BottomLeftGroupingVectorDecoder : PackingSolutionDecoder<TwoDimensionalPacking, RectangularPackingShape, RectangularPackingItem>, I2DGVDecoder {
     public BottomLeftGroupingVectorDecoder() : base() {}
     [StorableConstructor]
@@ -46,5 +47,5 @@
     }
 
-    public override PackingPlan<TwoDimensionalPacking, RectangularPackingBin, RectangularPackingItem> CreatePackingPlanFromEncoding(IItem encodedSolution, RectangularPackingBin binMeasures, ItemList<RectangularPackingItem> itemMeasures) {
+    public override PackingPlan<TwoDimensionalPacking, RectangularPackingShape, RectangularPackingItem> CreatePackingPlanFromEncoding(IItem encodedSolution, RectangularPackingShape binMeasures, ItemList<RectangularPackingItem> itemMeasures) {
       var solution = encodedSolution as GroupingVectorEncoding;
       if (solution == null) throw new InvalidOperationException("Encoding is not of type GroupingVector");
Index: /branches/HeuristicLab.BinPacking/HeuristicLab.Problems.BinPacking.2D/3.3/Decoders/BL/BottomLeftMultiComponentVectorDecoder.cs
===================================================================
--- /branches/HeuristicLab.BinPacking/HeuristicLab.Problems.BinPacking.2D/3.3/Decoders/BL/BottomLeftMultiComponentVectorDecoder.cs	(revision 14044)
+++ /branches/HeuristicLab.BinPacking/HeuristicLab.Problems.BinPacking.2D/3.3/Decoders/BL/BottomLeftMultiComponentVectorDecoder.cs	(revision 14045)
@@ -24,5 +24,4 @@
 using HeuristicLab.Core;
 using HeuristicLab.Problems.BinPacking.Dimensions;
-using HeuristicLab.Problems.BinPacking.PackingBin;
 using HeuristicLab.Problems.BinPacking.PackingItem;
 using HeuristicLab.Encodings.PackingEncoding.PackingPlan;
@@ -31,9 +30,10 @@
 using HeuristicLab.Encodings.PackingEncoding.MultiComponentVector;
 using HeuristicLab.Problems.BinPacking2D;
+using HeuristicLab.Problems.BinPacking.Shapes;
 
 namespace HeuristicLab.Problems.BinPacking.Decoders {
   [Item("Identical bin two dimensional multi component vector decoder", "<Description missing...>")]
   [StorableClass]
-  public class BottomLeftMultiComponentVectorDecoder : PackingSolutionDecoder<TwoDimensionalPacking,RectangularPackingBin, RectangularPackingItem>, I2DMCVDecoder {
+  public class BottomLeftMultiComponentVectorDecoder : PackingSolutionDecoder<TwoDimensionalPacking,RectangularPackingShape, RectangularPackingItem>, I2DMCVDecoder {
     public BottomLeftMultiComponentVectorDecoder() : base() {}
     [StorableConstructor]
@@ -46,5 +46,5 @@
     }
 
-    public override PackingPlan<TwoDimensionalPacking, RectangularPackingBin, RectangularPackingItem> CreatePackingPlanFromEncoding(IItem encodedSolution, RectangularPackingBin binMeasures, ItemList<RectangularPackingItem> itemMeasures) {
+    public override PackingPlan<TwoDimensionalPacking, RectangularPackingShape, RectangularPackingItem> CreatePackingPlanFromEncoding(IItem encodedSolution, RectangularPackingShape binMeasures, ItemList<RectangularPackingItem> itemMeasures) {
       var solution = encodedSolution as MultiComponentVectorEncoding;
       if (solution == null) throw new InvalidOperationException("Encoding is not of type MultiComponent Vector");
Index: /branches/HeuristicLab.BinPacking/HeuristicLab.Problems.BinPacking.2D/3.3/Decoders/BL/BottomLeftPackingSequenceDecoder.cs
===================================================================
--- /branches/HeuristicLab.BinPacking/HeuristicLab.Problems.BinPacking.2D/3.3/Decoders/BL/BottomLeftPackingSequenceDecoder.cs	(revision 14044)
+++ /branches/HeuristicLab.BinPacking/HeuristicLab.Problems.BinPacking.2D/3.3/Decoders/BL/BottomLeftPackingSequenceDecoder.cs	(revision 14045)
@@ -25,5 +25,5 @@
 using HeuristicLab.Core;
 using HeuristicLab.Problems.BinPacking.Dimensions;
-using HeuristicLab.Problems.BinPacking.PackingBin;
+
 using HeuristicLab.Problems.BinPacking.PackingItem;
 using HeuristicLab.Encodings.PackingEncoding.PackingPlan;
@@ -32,9 +32,10 @@
 using HeuristicLab.Problems.BinPacking.Interfaces;
 using HeuristicLab.Problems.BinPacking2D;
+using HeuristicLab.Problems.BinPacking.Shapes;
 
 namespace HeuristicLab.Problems.BinPacking.Decoders {
   [Item("Identical bin, two dimensional, direct permutation decoder", "<Description missing...>")]
   [StorableClass]
-  public class BottomLeftPackingSequenceDecoder : PackingSolutionDecoder<TwoDimensionalPacking, RectangularPackingBin, RectangularPackingItem>, I2DPSDecoder {
+  public class BottomLeftPackingSequenceDecoder : PackingSolutionDecoder<TwoDimensionalPacking, RectangularPackingShape, RectangularPackingItem>, I2DPSDecoder {
 
     public BottomLeftPackingSequenceDecoder(): base() { }
@@ -48,5 +49,5 @@
     }
 
-    public override PackingPlan<TwoDimensionalPacking, RectangularPackingBin, RectangularPackingItem> CreatePackingPlanFromEncoding(IItem encodedSolution, RectangularPackingBin binMeasures, ItemList<RectangularPackingItem> itemMeasures) {
+    public override PackingPlan<TwoDimensionalPacking, RectangularPackingShape, RectangularPackingItem> CreatePackingPlanFromEncoding(IItem encodedSolution, RectangularPackingShape binMeasures, ItemList<RectangularPackingItem> itemMeasures) {
       var solution = encodedSolution as PackingSequenceEncoding;
       if (solution == null) throw new InvalidOperationException("Encoding is not of type PackingSequence");
Index: /branches/HeuristicLab.BinPacking/HeuristicLab.Problems.BinPacking.2D/3.3/Decoders/EP/ExtremePointGroupingVectorDecoder2D.cs
===================================================================
--- /branches/HeuristicLab.BinPacking/HeuristicLab.Problems.BinPacking.2D/3.3/Decoders/EP/ExtremePointGroupingVectorDecoder2D.cs	(revision 14044)
+++ /branches/HeuristicLab.BinPacking/HeuristicLab.Problems.BinPacking.2D/3.3/Decoders/EP/ExtremePointGroupingVectorDecoder2D.cs	(revision 14045)
@@ -25,5 +25,5 @@
 using HeuristicLab.Core;
 using HeuristicLab.Problems.BinPacking.Dimensions;
-using HeuristicLab.Problems.BinPacking.PackingBin;
+
 using HeuristicLab.Problems.BinPacking.PackingItem;
 using HeuristicLab.Encodings.PackingEncoding.PackingPlan;
@@ -32,9 +32,10 @@
 using HeuristicLab.Encodings.PackingEncoding.GroupingVector;
 using HeuristicLab.Problems.BinPacking2D;
+using HeuristicLab.Problems.BinPacking.Shapes;
 
 namespace HeuristicLab.Problems.BinPacking.Decoders {
   [Item("Identical bin, two dimensional, extreme points based decoder for the GroupingVector encoding.", "<Description missing...>")]
   [StorableClass]
-  public class ExtremePointGroupingVectorDecoder2D : PackingSolutionDecoder<TwoDimensionalPacking, RectangularPackingBin, RectangularPackingItem>, I2DGVDecoder {
+  public class ExtremePointGroupingVectorDecoder2D : PackingSolutionDecoder<TwoDimensionalPacking, RectangularPackingShape, RectangularPackingItem>, I2DGVDecoder {
     public ExtremePointGroupingVectorDecoder2D () : base() {}
     [StorableConstructor]
@@ -47,5 +48,5 @@
     }
 
-    public static PackingPlan<TwoDimensionalPacking, RectangularPackingBin, RectangularPackingItem> Decode(GroupingVectorEncoding solution, RectangularPackingBin binMeasures, ItemList<RectangularPackingItem> itemMeasures) {
+    public static PackingPlan<TwoDimensionalPacking, RectangularPackingShape, RectangularPackingItem> Decode(GroupingVectorEncoding solution, RectangularPackingShape binMeasures, ItemList<RectangularPackingItem> itemMeasures) {
       PackingPlan2D result = new PackingPlan2D(binMeasures, true, false);
       result.Pack(solution, itemMeasures);
@@ -53,5 +54,5 @@
     }
 
-    public override PackingPlan<TwoDimensionalPacking, RectangularPackingBin, RectangularPackingItem> CreatePackingPlanFromEncoding(IItem encodedSolution, RectangularPackingBin binMeasures, ItemList<RectangularPackingItem> itemMeasures) {
+    public override PackingPlan<TwoDimensionalPacking, RectangularPackingShape, RectangularPackingItem> CreatePackingPlanFromEncoding(IItem encodedSolution, RectangularPackingShape binMeasures, ItemList<RectangularPackingItem> itemMeasures) {
       var solution = encodedSolution as GroupingVectorEncoding;
       if (solution == null) throw new InvalidOperationException("Encoding is not of type GroupingVector");
Index: /branches/HeuristicLab.BinPacking/HeuristicLab.Problems.BinPacking.2D/3.3/Decoders/EP/ExtremePointMultiComponentVectorDecoder2D.cs
===================================================================
--- /branches/HeuristicLab.BinPacking/HeuristicLab.Problems.BinPacking.2D/3.3/Decoders/EP/ExtremePointMultiComponentVectorDecoder2D.cs	(revision 14044)
+++ /branches/HeuristicLab.BinPacking/HeuristicLab.Problems.BinPacking.2D/3.3/Decoders/EP/ExtremePointMultiComponentVectorDecoder2D.cs	(revision 14045)
@@ -24,5 +24,5 @@
 using HeuristicLab.Core;
 using HeuristicLab.Problems.BinPacking.Dimensions;
-using HeuristicLab.Problems.BinPacking.PackingBin;
+
 using HeuristicLab.Problems.BinPacking.PackingItem;
 using HeuristicLab.Encodings.PackingEncoding.PackingPlan;
@@ -31,9 +31,10 @@
 using HeuristicLab.Encodings.PackingEncoding.MultiComponentVector;
 using HeuristicLab.Problems.BinPacking2D;
+using HeuristicLab.Problems.BinPacking.Shapes;
 
 namespace HeuristicLab.Problems.BinPacking.Decoders {
   [Item("Identical bin, two dimensional, extreme points based decoder for the MultiComponentVector encoding.", "<Description missing...>")] // TODO
   [StorableClass]
-  public class ExtremePointMultiComponentVectorDecoder2D : PackingSolutionDecoder<TwoDimensionalPacking,RectangularPackingBin, RectangularPackingItem>, I2DMCVDecoder {
+  public class ExtremePointMultiComponentVectorDecoder2D : PackingSolutionDecoder<TwoDimensionalPacking, RectangularPackingShape, RectangularPackingItem>, I2DMCVDecoder {
     public ExtremePointMultiComponentVectorDecoder2D () : base() {}
     [StorableConstructor]
@@ -46,5 +47,5 @@
     }
 
-    public static PackingPlan<TwoDimensionalPacking, RectangularPackingBin, RectangularPackingItem> Decode(MultiComponentVectorEncoding solution, RectangularPackingBin binMeasures, ItemList<RectangularPackingItem> itemMeasures) {
+    public static PackingPlan<TwoDimensionalPacking, RectangularPackingShape, RectangularPackingItem> Decode(MultiComponentVectorEncoding solution, RectangularPackingShape binMeasures, ItemList<RectangularPackingItem> itemMeasures) {
       PackingPlan2D result = new PackingPlan2D(binMeasures, true, false);
       result.Pack(solution, itemMeasures);
@@ -52,5 +53,5 @@
     }
 
-    public override PackingPlan<TwoDimensionalPacking, RectangularPackingBin, RectangularPackingItem> CreatePackingPlanFromEncoding(IItem encodedSolution, RectangularPackingBin binMeasures, ItemList<RectangularPackingItem> itemMeasures) {
+    public override PackingPlan<TwoDimensionalPacking, RectangularPackingShape, RectangularPackingItem> CreatePackingPlanFromEncoding(IItem encodedSolution, RectangularPackingShape binMeasures, ItemList<RectangularPackingItem> itemMeasures) {
       var solution = encodedSolution as MultiComponentVectorEncoding;
       if (solution == null) throw new InvalidOperationException("Encoding is not of type MultiComponentVector");
Index: /branches/HeuristicLab.BinPacking/HeuristicLab.Problems.BinPacking.2D/3.3/Decoders/EP/ExtremePointPackingSequenceDecoder2D.cs
===================================================================
--- /branches/HeuristicLab.BinPacking/HeuristicLab.Problems.BinPacking.2D/3.3/Decoders/EP/ExtremePointPackingSequenceDecoder2D.cs	(revision 14044)
+++ /branches/HeuristicLab.BinPacking/HeuristicLab.Problems.BinPacking.2D/3.3/Decoders/EP/ExtremePointPackingSequenceDecoder2D.cs	(revision 14045)
@@ -25,5 +25,4 @@
 using HeuristicLab.Core;
 using HeuristicLab.Problems.BinPacking.Dimensions;
-using HeuristicLab.Problems.BinPacking.PackingBin;
 using HeuristicLab.Problems.BinPacking.PackingItem;
 using HeuristicLab.Encodings.PackingEncoding.PackingPlan;
@@ -32,9 +31,10 @@
 using HeuristicLab.Problems.BinPacking.Interfaces;
 using HeuristicLab.Problems.BinPacking2D;
+using HeuristicLab.Problems.BinPacking.Shapes;
 
 namespace HeuristicLab.Problems.BinPacking.Decoders {
   [Item("Identical bin, two dimensional, extreme points based decoder for the PackingSequence encoding.", "<Description missing...>")] // TODO
   [StorableClass]
-  public class ExtremePointPackingSequenceDecoder2D : PackingSolutionDecoder<TwoDimensionalPacking, RectangularPackingBin, RectangularPackingItem>, I2DPSDecoder {
+  public class ExtremePointPackingSequenceDecoder2D : PackingSolutionDecoder<TwoDimensionalPacking, RectangularPackingShape, RectangularPackingItem>, I2DPSDecoder {
     public ExtremePointPackingSequenceDecoder2D () : base() {}
     [StorableConstructor]
@@ -48,5 +48,5 @@
 
 
-    public override PackingPlan<TwoDimensionalPacking, RectangularPackingBin, RectangularPackingItem> CreatePackingPlanFromEncoding(IItem encodedSolution, RectangularPackingBin binMeasures, ItemList<RectangularPackingItem> itemMeasures) {
+    public override PackingPlan<TwoDimensionalPacking, RectangularPackingShape, RectangularPackingItem> CreatePackingPlanFromEncoding(IItem encodedSolution, RectangularPackingShape binMeasures, ItemList<RectangularPackingItem> itemMeasures) {
       var solution = encodedSolution as PackingSequenceEncoding;
       if (solution == null) throw new InvalidOperationException("Encoding is not of type PackingSequence");
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 14044)
+++ /branches/HeuristicLab.BinPacking/HeuristicLab.Problems.BinPacking.2D/3.3/HeuristicLab.Problems.BinPacking2D-3.3.csproj	(revision 14045)
@@ -177,5 +177,4 @@
     <Compile Include="Properties\AssemblyInfo.cs" />
     <Compile Include="RectangularIdenticalBinPackingProblem.cs" />
-    <Compile Include="RectangularPackingBin.cs" />
     <Compile Include="RectangularPackingItem.cs" />
     <Compile Include="RectangularPackingShape.cs" />
Index: /branches/HeuristicLab.BinPacking/HeuristicLab.Problems.BinPacking.2D/3.3/MoveEvaluators/PackingMoveEvaluator2DGV.cs
===================================================================
--- /branches/HeuristicLab.BinPacking/HeuristicLab.Problems.BinPacking.2D/3.3/MoveEvaluators/PackingMoveEvaluator2DGV.cs	(revision 14044)
+++ /branches/HeuristicLab.BinPacking/HeuristicLab.Problems.BinPacking.2D/3.3/MoveEvaluators/PackingMoveEvaluator2DGV.cs	(revision 14045)
@@ -26,6 +26,7 @@
 using HeuristicLab.Problems.BinPacking.Dimensions;
 using HeuristicLab.Problems.BinPacking.Interfaces;
-using HeuristicLab.Problems.BinPacking.PackingBin;
+
 using HeuristicLab.Problems.BinPacking.PackingItem;
+using HeuristicLab.Problems.BinPacking.Shapes;
 using HeuristicLab.Problems.BinPacking2D.Interfaces;
 
@@ -33,5 +34,5 @@
   [Item("GroupingVectorMoveEvaluator2D", "Class for evaluating packing moves for 2dimensional problems.")]
   [StorableClass]
-  public class PackingMoveEvaluator2DGV : PackingMoveEvaluator<TwoDimensionalPacking, RectangularPackingBin, RectangularPackingItem>, ISingleObjectiveMoveEvaluator, IGroupingVectorMoveOperator, I2DOperator {
+  public class PackingMoveEvaluator2DGV : PackingMoveEvaluator<TwoDimensionalPacking, RectangularPackingShape, RectangularPackingItem>, ISingleObjectiveMoveEvaluator, IGroupingVectorMoveOperator, I2DOperator {
     [StorableConstructor]
     protected PackingMoveEvaluator2DGV(bool deserializing) : base(deserializing) { }
Index: /branches/HeuristicLab.BinPacking/HeuristicLab.Problems.BinPacking.2D/3.3/MoveEvaluators/PackingMoveEvaluator2DMCV.cs
===================================================================
--- /branches/HeuristicLab.BinPacking/HeuristicLab.Problems.BinPacking.2D/3.3/MoveEvaluators/PackingMoveEvaluator2DMCV.cs	(revision 14044)
+++ /branches/HeuristicLab.BinPacking/HeuristicLab.Problems.BinPacking.2D/3.3/MoveEvaluators/PackingMoveEvaluator2DMCV.cs	(revision 14045)
@@ -26,6 +26,7 @@
 using HeuristicLab.Problems.BinPacking.Dimensions;
 using HeuristicLab.Problems.BinPacking.Interfaces;
-using HeuristicLab.Problems.BinPacking.PackingBin;
+
 using HeuristicLab.Problems.BinPacking.PackingItem;
+using HeuristicLab.Problems.BinPacking.Shapes;
 using HeuristicLab.Problems.BinPacking2D.Interfaces;
 
@@ -33,5 +34,5 @@
   [Item("MultiComponentVectorMoveEvaluator2D", "Class for evaluating packing moves for 2dimensional problems.")]
   [StorableClass]
-  public class PackingMoveEvaluator2DMCV : PackingMoveEvaluator<TwoDimensionalPacking, RectangularPackingBin, RectangularPackingItem>, ISingleObjectiveMoveEvaluator, IMultiComponentVectorMoveOperator, I2DOperator {
+  public class PackingMoveEvaluator2DMCV : PackingMoveEvaluator<TwoDimensionalPacking, RectangularPackingShape, RectangularPackingItem>, ISingleObjectiveMoveEvaluator, IMultiComponentVectorMoveOperator, I2DOperator {
     [StorableConstructor]
     protected PackingMoveEvaluator2DMCV(bool deserializing) : base(deserializing) { }
Index: /branches/HeuristicLab.BinPacking/HeuristicLab.Problems.BinPacking.2D/3.3/MoveEvaluators/PackingMoveEvaluator2DPS.cs
===================================================================
--- /branches/HeuristicLab.BinPacking/HeuristicLab.Problems.BinPacking.2D/3.3/MoveEvaluators/PackingMoveEvaluator2DPS.cs	(revision 14044)
+++ /branches/HeuristicLab.BinPacking/HeuristicLab.Problems.BinPacking.2D/3.3/MoveEvaluators/PackingMoveEvaluator2DPS.cs	(revision 14045)
@@ -26,6 +26,7 @@
 using HeuristicLab.Problems.BinPacking.Dimensions;
 using HeuristicLab.Problems.BinPacking.Interfaces;
-using HeuristicLab.Problems.BinPacking.PackingBin;
+
 using HeuristicLab.Problems.BinPacking.PackingItem;
+using HeuristicLab.Problems.BinPacking.Shapes;
 using HeuristicLab.Problems.BinPacking2D.Interfaces;
 
@@ -33,5 +34,5 @@
   [Item("PackingSequenceMoveEvaluator2D", "Class for evaluating packing moves for 2dimensional problems.")]
   [StorableClass]
-  public class PackingMoveEvaluator2DPS : PackingMoveEvaluator<TwoDimensionalPacking, RectangularPackingBin, RectangularPackingItem>, ISingleObjectiveMoveEvaluator, IPackingSequenceMoveOperator, I2DOperator {
+  public class PackingMoveEvaluator2DPS : PackingMoveEvaluator<TwoDimensionalPacking, RectangularPackingShape, RectangularPackingItem>, ISingleObjectiveMoveEvaluator, IPackingSequenceMoveOperator, I2DOperator {
     [StorableConstructor]
     protected PackingMoveEvaluator2DPS(bool deserializing) : base(deserializing) { }
Index: /branches/HeuristicLab.BinPacking/HeuristicLab.Problems.BinPacking.2D/3.3/PackingPlan2D.cs
===================================================================
--- /branches/HeuristicLab.BinPacking/HeuristicLab.Problems.BinPacking.2D/3.3/PackingPlan2D.cs	(revision 14044)
+++ /branches/HeuristicLab.BinPacking/HeuristicLab.Problems.BinPacking.2D/3.3/PackingPlan2D.cs	(revision 14045)
@@ -25,13 +25,14 @@
 using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
 using HeuristicLab.Problems.BinPacking.Dimensions;
-using HeuristicLab.Problems.BinPacking.PackingBin;
+
 using HeuristicLab.Problems.BinPacking.PackingItem;
+using HeuristicLab.Problems.BinPacking.Shapes;
 
 namespace HeuristicLab.Problems.BinPacking2D {
   [Item("PackingPlan2D", "Represents a solution for a 2D bin packing problem.")]
   [StorableClass]
-  public class PackingPlan2D : PackingPlan<TwoDimensionalPacking, RectangularPackingBin, RectangularPackingItem> {
-    public PackingPlan2D(RectangularPackingBin binMeasures) : this(binMeasures, false, false) { }
-    public PackingPlan2D(RectangularPackingBin binMeasures, bool useExtremePoints, bool stackingConstraints) : base(binMeasures, useExtremePoints, stackingConstraints) { }
+  public class PackingPlan2D : PackingPlan<TwoDimensionalPacking, RectangularPackingShape, RectangularPackingItem> {
+    public PackingPlan2D(RectangularPackingShape binMeasures) : this(binMeasures, false, false) { }
+    public PackingPlan2D(RectangularPackingShape binMeasures, bool useExtremePoints, bool stackingConstraints) : base(binMeasures, useExtremePoints, stackingConstraints) { }
     [StorableConstructor]
     protected PackingPlan2D(bool deserializing) : base(deserializing) { }
@@ -42,5 +43,5 @@
       return new PackingPlan2D(this, cloner);
     }
-    public override BinPacking<TwoDimensionalPacking, RectangularPackingBin, RectangularPackingItem> NewBinPacking() {
+    public override BinPacking<TwoDimensionalPacking, RectangularPackingShape, RectangularPackingItem> NewBinPacking() {
       return new Encodings.PackingEncoding.PackingPlan.BinPacking2D(BinMeasures);
     }
Index: /branches/HeuristicLab.BinPacking/HeuristicLab.Problems.BinPacking.2D/3.3/PackingRatioRectangularIdenticalBinEvaluator.cs
===================================================================
--- /branches/HeuristicLab.BinPacking/HeuristicLab.Problems.BinPacking.2D/3.3/PackingRatioRectangularIdenticalBinEvaluator.cs	(revision 14044)
+++ /branches/HeuristicLab.BinPacking/HeuristicLab.Problems.BinPacking.2D/3.3/PackingRatioRectangularIdenticalBinEvaluator.cs	(revision 14045)
@@ -25,11 +25,11 @@
 using HeuristicLab.Common;
 using HeuristicLab.Problems.BinPacking.PackingItem;
-using HeuristicLab.Problems.BinPacking.PackingBin;
 using HeuristicLab.Problems.BinPacking.Dimensions;
+using HeuristicLab.Problems.BinPacking.Shapes;
 
 namespace HeuristicLab.Problems.BinPacking.Evaluators {
   [Item("Packing-Ratio Rectangular Identical-Bin Evaluator", "Represents an evaluation-algorithm for rectangular-shaped bin-packing problems with identical bins which calculates the ratio between packed and unpacked space. Found in Falkenauer:1996")]
   [StorableClass]
-  public class PackingRatioRectangularIdenticalBinEvaluator : PackingRatioRegularIdenticalBinEvaluator<TwoDimensionalPacking, RectangularPackingBin, RectangularPackingItem> {
+  public class PackingRatioRectangularIdenticalBinEvaluator : PackingRatioRegularIdenticalBinEvaluator<TwoDimensionalPacking, RectangularPackingShape, RectangularPackingItem> {
 
     [StorableConstructor]
Index: /branches/HeuristicLab.BinPacking/HeuristicLab.Problems.BinPacking.2D/3.3/RectangularIdenticalBinPackingProblem.cs
===================================================================
--- /branches/HeuristicLab.BinPacking/HeuristicLab.Problems.BinPacking.2D/3.3/RectangularIdenticalBinPackingProblem.cs	(revision 14044)
+++ /branches/HeuristicLab.BinPacking/HeuristicLab.Problems.BinPacking.2D/3.3/RectangularIdenticalBinPackingProblem.cs	(revision 14045)
@@ -22,5 +22,5 @@
 using HeuristicLab.Problems.BinPacking.Dimensions;
 using HeuristicLab.Problems.BinPacking.Interfaces;
-using HeuristicLab.Problems.BinPacking.PackingBin;
+
 using HeuristicLab.Problems.BinPacking.PackingItem;
 using HeuristicLab.Core;
@@ -36,4 +36,5 @@
 using HeuristicLab.Data;
 using System;
+using HeuristicLab.Problems.BinPacking.Shapes;
 
 namespace HeuristicLab.Problems.BinPacking.Problem {
@@ -42,5 +43,5 @@
   [Creatable(CreatableAttribute.Categories.CombinatorialProblems, Priority = 300)]
   // TODO: only support 2d BPPData
-  public class RectangularIdenticalBinPackingProblem : BinPackingProblem<TwoDimensionalPacking, RectangularPackingBin, RectangularPackingItem>, IProblemInstanceConsumer<BPPData>, IProblemInstanceExporter<BPPData> {
+  public class RectangularIdenticalBinPackingProblem : BinPackingProblem<TwoDimensionalPacking, RectangularPackingShape, RectangularPackingItem>, IProblemInstanceConsumer<BPPData>, IProblemInstanceExporter<BPPData> {
 
     #region Default Instance
@@ -101,5 +102,5 @@
     }
     public RectangularIdenticalBinPackingProblem() : base(
-      new PackingPlanEvaluationAlgorithm<Permutation, TwoDimensionalPacking, RectangularPackingBin, RectangularPackingItem>()) {
+      new PackingPlanEvaluationAlgorithm<Permutation, TwoDimensionalPacking, RectangularPackingShape, RectangularPackingItem>()) {
     }
 
@@ -107,9 +108,9 @@
     public void Load(BPPData data) {
       var realData = data as RealBPPData;
-      var binData = new RectangularPackingBin(data.BinMeasures[0], data.BinMeasures[1]);
+      var binData = new RectangularPackingShape(data.BinMeasures[0], data.BinMeasures[1]);
 
       var itemData = new ItemList<RectangularPackingItem>(data.Items);
       for (int j = 0; j < data.Items; j++) {
-        var bin = new RectangularPackingBin(data.BinMeasures[0], data.BinMeasures[1]);
+        var bin = new RectangularPackingShape(data.BinMeasures[0], data.BinMeasures[1]);
         var item = new RectangularPackingItem(data.ItemMeasures[j][0], data.ItemMeasures[j][1], bin);
         if (realData != null) {
Index: anches/HeuristicLab.BinPacking/HeuristicLab.Problems.BinPacking.2D/3.3/RectangularPackingBin.cs
===================================================================
--- /branches/HeuristicLab.BinPacking/HeuristicLab.Problems.BinPacking.2D/3.3/RectangularPackingBin.cs	(revision 14044)
+++ 	(revision )
@@ -1,44 +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.Problems.BinPacking.Interfaces;
-using HeuristicLab.Problems.BinPacking.Shapes;
-using HeuristicLab.Core;
-using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
-using HeuristicLab.Common;
-
-namespace HeuristicLab.Problems.BinPacking.PackingBin {
-  [Item("RectangularPackingBin", "Represents a rectangular bin for a two-dimensional bin-packing problem.")]
-  [StorableClass]
-  public class RectangularPackingBin : RectangularPackingShape, IPackingBin {
-    public RectangularPackingBin(int width, int height) : base(width, height) { }
-    public RectangularPackingBin() : base() { }
-
-    [StorableConstructor]
-    protected RectangularPackingBin(bool deserializing) : base(deserializing) { }
-    protected RectangularPackingBin(RectangularPackingBin original, Cloner cloner)
-      : base(original, cloner) {
-    }
-    public override IDeepCloneable Clone(Cloner cloner) {
-      return new RectangularPackingBin(this, cloner);
-    }
-  }
-}
Index: /branches/HeuristicLab.BinPacking/HeuristicLab.Problems.BinPacking.2D/3.3/RectangularPackingItem.cs
===================================================================
--- /branches/HeuristicLab.BinPacking/HeuristicLab.Problems.BinPacking.2D/3.3/RectangularPackingItem.cs	(revision 14044)
+++ /branches/HeuristicLab.BinPacking/HeuristicLab.Problems.BinPacking.2D/3.3/RectangularPackingItem.cs	(revision 14045)
@@ -28,5 +28,5 @@
 using HeuristicLab.Data;
 using HeuristicLab.Parameters;
-using HeuristicLab.Problems.BinPacking.PackingBin;
+
 
 namespace HeuristicLab.Problems.BinPacking.PackingItem {
@@ -35,7 +35,7 @@
   public class RectangularPackingItem : RectangularPackingShape, IPackingItem {
 
-    public RectangularPackingBin TargetBin {
-      get { return ((IValueParameter<RectangularPackingBin>)Parameters["TargetBin"]).Value; }
-      set { ((IValueParameter<RectangularPackingBin>)Parameters["TargetBin"]).Value = value; }
+    public RectangularPackingShape TargetBin {
+      get { return ((IValueParameter<RectangularPackingShape>)Parameters["TargetBin"]).Value; }
+      set { ((IValueParameter<RectangularPackingShape>)Parameters["TargetBin"]).Value = value; }
     }
 
@@ -62,14 +62,14 @@
     public RectangularPackingItem()
       : base() {
-      Parameters.Add(new ValueParameter<RectangularPackingBin>("TargetBin"));
+      Parameters.Add(new ValueParameter<RectangularPackingShape>("TargetBin"));
       Parameters.Add(new FixedValueParameter<DoubleValue>("Weight"));
       Parameters.Add(new FixedValueParameter<IntValue>("Material"));
     }
 
-    public RectangularPackingItem(int width, int height, RectangularPackingBin targetBin)
+    public RectangularPackingItem(int width, int height, RectangularPackingShape targetBin)
       : this() {
       this.Width = width;
       this.Height = height;
-      this.TargetBin = (RectangularPackingBin)targetBin.Clone();
+      this.TargetBin = (RectangularPackingShape)targetBin.Clone();
     }
 
Index: /branches/HeuristicLab.BinPacking/HeuristicLab.Problems.BinPacking.2D/3.3/RectangularPackingShape.cs
===================================================================
--- /branches/HeuristicLab.BinPacking/HeuristicLab.Problems.BinPacking.2D/3.3/RectangularPackingShape.cs	(revision 14044)
+++ /branches/HeuristicLab.BinPacking/HeuristicLab.Problems.BinPacking.2D/3.3/RectangularPackingShape.cs	(revision 14045)
@@ -33,5 +33,5 @@
   [Item("RectangularPackingShape", "Represents the rectangular measures (width, height) of a two-dimensional bin-packing object.")]
   [StorableClass]
-  public abstract class RectangularPackingShape : PackingShape<TwoDimensionalPacking>, IComparable<RectangularPackingShape> {
+  public class RectangularPackingShape : PackingShape<TwoDimensionalPacking>, IComparable<RectangularPackingShape> {
     public int Height {
       get { return ((IFixedValueParameter<IntValue>)Parameters["Height"]).Value.Value; }
@@ -49,13 +49,17 @@
       : base(original, cloner) {
     }
-    protected RectangularPackingShape()
+    public RectangularPackingShape()
       : base() {
       Parameters.Add(new FixedValueParameter<IntValue>("Width"));
       Parameters.Add(new FixedValueParameter<IntValue>("Height"));
     }
-    protected RectangularPackingShape(int width, int height)
+    public RectangularPackingShape(int width, int height)
       : this() {
       this.Height = height;
       this.Width = width;
+    }
+
+    public override IDeepCloneable Clone(Cloner cloner) {
+      return new RectangularPackingShape(this, cloner);
     }
 
Index: /branches/HeuristicLab.BinPacking/HeuristicLab.Problems.BinPacking.3D/3.3/BinPacking3D.cs
===================================================================
--- /branches/HeuristicLab.BinPacking/HeuristicLab.Problems.BinPacking.3D/3.3/BinPacking3D.cs	(revision 14044)
+++ /branches/HeuristicLab.BinPacking/HeuristicLab.Problems.BinPacking.3D/3.3/BinPacking3D.cs	(revision 14045)
@@ -27,12 +27,12 @@
 using HeuristicLab.Common;
 using HeuristicLab.Problems.BinPacking.Dimensions;
-using HeuristicLab.Problems.BinPacking.PackingBin;
+using HeuristicLab.Problems.BinPacking.Shapes;
 
 namespace HeuristicLab.Encodings.PackingEncoding.PackingPlan {
   [Item("BinPacking3D", "Represents a single-bin packing for a 3D bin-packing problem.")]
   [StorableClass]
-  public class BinPacking3D : BinPacking<ThreeDimensionalPacking, CuboidPackingBin, CuboidPackingItem> {
-
-    public BinPacking3D(CuboidPackingBin binMeasures)
+  public class BinPacking3D : BinPacking<ThreeDimensionalPacking, CuboidPackingShape, CuboidPackingItem> {
+
+    public BinPacking3D(CuboidPackingShape binMeasures)
       : base(binMeasures) {
       ExtremePoints = new SortedSet<ThreeDimensionalPacking>(new EPComparer3D());
Index: /branches/HeuristicLab.BinPacking/HeuristicLab.Problems.BinPacking.3D/3.3/CuboidIdenticalBinPackingProblem.cs
===================================================================
--- /branches/HeuristicLab.BinPacking/HeuristicLab.Problems.BinPacking.3D/3.3/CuboidIdenticalBinPackingProblem.cs	(revision 14044)
+++ /branches/HeuristicLab.BinPacking/HeuristicLab.Problems.BinPacking.3D/3.3/CuboidIdenticalBinPackingProblem.cs	(revision 14045)
@@ -22,5 +22,5 @@
 using HeuristicLab.Problems.BinPacking.Dimensions;
 using HeuristicLab.Problems.BinPacking.Interfaces;
-using HeuristicLab.Problems.BinPacking.PackingBin;
+
 using HeuristicLab.Problems.BinPacking.PackingItem;
 using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
@@ -36,4 +36,5 @@
 using System;
 using HeuristicLab.Data;
+using HeuristicLab.Problems.BinPacking.Shapes;
 
 namespace HeuristicLab.Problems.BinPacking.Problem {
@@ -42,5 +43,5 @@
   [Creatable(CreatableAttribute.Categories.CombinatorialProblems, Priority = 310)]
   // TODO don't support generic BPPData but only 3d BPPData
-  public class CuboidIdenticalBinPackingProblem : BinPackingProblem<ThreeDimensionalPacking, CuboidPackingBin, CuboidPackingItem>, IProblemInstanceConsumer<BPPData>, IProblemInstanceExporter<BPPData> {
+  public class CuboidIdenticalBinPackingProblem : BinPackingProblem<ThreeDimensionalPacking, CuboidPackingShape, CuboidPackingItem>, IProblemInstanceConsumer<BPPData>, IProblemInstanceExporter<BPPData> {
 
 
@@ -106,5 +107,5 @@
     }
     public CuboidIdenticalBinPackingProblem() : base(
-      new PackingPlanEvaluationAlgorithm<Permutation, ThreeDimensionalPacking, CuboidPackingBin, CuboidPackingItem>()) {
+      new PackingPlanEvaluationAlgorithm<Permutation, ThreeDimensionalPacking, CuboidPackingShape, CuboidPackingItem>()) {
     }
 
@@ -113,9 +114,9 @@
     public void Load(BPPData data) {
       var realData = data as RealBPPData;
-      var binData = new CuboidPackingBin(data.BinMeasures[0], data.BinMeasures[1], data.BinMeasures[2]);
+      var binData = new CuboidPackingShape(data.BinMeasures[0], data.BinMeasures[1], data.BinMeasures[2]);
 
       var itemData = new ItemList<CuboidPackingItem>(data.Items);
       for (int j = 0; j < data.Items; j++) {
-        var bin = new CuboidPackingBin(data.BinMeasures[0], data.BinMeasures[1], data.BinMeasures[2]);
+        var bin = new CuboidPackingShape(data.BinMeasures[0], data.BinMeasures[1], data.BinMeasures[2]);
         var item = new CuboidPackingItem(data.ItemMeasures[j][0], data.ItemMeasures[j][1], data.ItemMeasures[j][2], bin);
         if (realData != null) {
Index: anches/HeuristicLab.BinPacking/HeuristicLab.Problems.BinPacking.3D/3.3/CuboidPackingBin.cs
===================================================================
--- /branches/HeuristicLab.BinPacking/HeuristicLab.Problems.BinPacking.3D/3.3/CuboidPackingBin.cs	(revision 14044)
+++ 	(revision )
@@ -1,47 +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.Problems.BinPacking.Interfaces;
-using HeuristicLab.Problems.BinPacking.Shapes;
-using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
-using HeuristicLab.Core;
-using HeuristicLab.Common;
-
-
-namespace HeuristicLab.Problems.BinPacking.PackingBin {
-  [Item("CuboidPackingBin", "Represents a cuboidic container for a three dimensional bin-packing problem.")]
-  [StorableClass]
-  public class CuboidPackingBin : CuboidPackingShape, IPackingBin {
-    public CuboidPackingBin(int width, int height, int depth) : base(width, height, depth) { }
-
-    [StorableConstructor]
-    protected CuboidPackingBin(bool deserializing) : base(deserializing) { }
-    protected CuboidPackingBin(CuboidPackingBin original, Cloner cloner)
-      : base(original, cloner) {
-    }
-    public override IDeepCloneable Clone(Cloner cloner) {
-      return new CuboidPackingBin(this, cloner);
-    }
-    public CuboidPackingBin()
-      : base() {
-    }
-  }
-}
Index: /branches/HeuristicLab.BinPacking/HeuristicLab.Problems.BinPacking.3D/3.3/CuboidPackingItem.cs
===================================================================
--- /branches/HeuristicLab.BinPacking/HeuristicLab.Problems.BinPacking.3D/3.3/CuboidPackingItem.cs	(revision 14044)
+++ /branches/HeuristicLab.BinPacking/HeuristicLab.Problems.BinPacking.3D/3.3/CuboidPackingItem.cs	(revision 14045)
@@ -28,5 +28,5 @@
 using HeuristicLab.Data;
 using HeuristicLab.Parameters;
-using HeuristicLab.Problems.BinPacking.PackingBin;
+
 
 namespace HeuristicLab.Problems.BinPacking.PackingItem {
@@ -34,6 +34,6 @@
   [StorableClass]
   public class CuboidPackingItem : CuboidPackingShape, IPackingItem {
-    public IValueParameter<CuboidPackingBin> TargetBinParameter {
-      get { return (IValueParameter<CuboidPackingBin>)Parameters["TargetBin"]; }
+    public IValueParameter<CuboidPackingShape> TargetBinParameter {
+      get { return (IValueParameter<CuboidPackingShape>)Parameters["TargetBin"]; }
     }
     public IFixedValueParameter<DoubleValue> WeightParameter {
@@ -44,5 +44,5 @@
     }
 
-    public CuboidPackingBin TargetBin {
+    public CuboidPackingShape TargetBin {
       get { return TargetBinParameter.Value; }
       set { TargetBinParameter.Value = value; }
@@ -71,5 +71,5 @@
     public CuboidPackingItem()
       : base() {
-      Parameters.Add(new ValueParameter<CuboidPackingBin>("TargetBin"));
+      Parameters.Add(new ValueParameter<CuboidPackingShape>("TargetBin"));
       Parameters.Add(new FixedValueParameter<DoubleValue>("Weight"));
       Parameters.Add(new FixedValueParameter<IntValue>("Material"));
@@ -78,5 +78,5 @@
     }
 
-    public CuboidPackingItem(int width, int height, int depth, CuboidPackingBin targetBin, double weight, int material)
+    public CuboidPackingItem(int width, int height, int depth, CuboidPackingShape targetBin, double weight, int material)
       : this() {
       this.Width = width;
@@ -85,13 +85,13 @@
       this.Weight = weight;
       this.Material = material;
-      this.TargetBin = (CuboidPackingBin)targetBin.Clone();
+      this.TargetBin = (CuboidPackingShape)targetBin.Clone();
     }
 
-    public CuboidPackingItem(int width, int height, int depth, CuboidPackingBin targetBin)
+    public CuboidPackingItem(int width, int height, int depth, CuboidPackingShape targetBin)
       : this() {
       this.Width = width;
       this.Height = height;
       this.Depth = depth;
-      this.TargetBin = (CuboidPackingBin)targetBin.Clone();
+      this.TargetBin = (CuboidPackingShape)targetBin.Clone();
     }
 
Index: /branches/HeuristicLab.BinPacking/HeuristicLab.Problems.BinPacking.3D/3.3/CuboidPackingShape.cs
===================================================================
--- /branches/HeuristicLab.BinPacking/HeuristicLab.Problems.BinPacking.3D/3.3/CuboidPackingShape.cs	(revision 14044)
+++ /branches/HeuristicLab.BinPacking/HeuristicLab.Problems.BinPacking.3D/3.3/CuboidPackingShape.cs	(revision 14045)
@@ -32,5 +32,5 @@
   [Item("CuboidPackingShape", "Represents the cuboid measures (width, height, depth) of a three-dimensional cuboidic bin-packing object.")]
   [StorableClass]
-  public abstract class CuboidPackingShape : PackingShape<ThreeDimensionalPacking>, IComparable<CuboidPackingShape> {
+  public class CuboidPackingShape : PackingShape<ThreeDimensionalPacking>, IComparable<CuboidPackingShape> {
     public IFixedValueParameter<IntValue> HeightParameter {
       get { return (IFixedValueParameter<IntValue>)Parameters["Height"]; }
@@ -64,5 +64,5 @@
       RegisterEvents();
     }
-    protected CuboidPackingShape()
+    public CuboidPackingShape()
       : base() {
       Parameters.Add(new FixedValueParameter<IntValue>("Width"));
@@ -73,9 +73,13 @@
     }
 
-    protected CuboidPackingShape(int width, int height, int depth)
+    public CuboidPackingShape(int width, int height, int depth)
       : this() {
       this.Width = width;
       this.Height = height;
       this.Depth = depth;
+    }
+
+    public override IDeepCloneable Clone(Cloner cloner) {
+      return new CuboidPackingShape(this, cloner);
     }
 
Index: /branches/HeuristicLab.BinPacking/HeuristicLab.Problems.BinPacking.3D/3.3/Decoders/DBL/DeepestBottomLeftGroupingVectorDecoder.cs
===================================================================
--- /branches/HeuristicLab.BinPacking/HeuristicLab.Problems.BinPacking.3D/3.3/Decoders/DBL/DeepestBottomLeftGroupingVectorDecoder.cs	(revision 14044)
+++ /branches/HeuristicLab.BinPacking/HeuristicLab.Problems.BinPacking.3D/3.3/Decoders/DBL/DeepestBottomLeftGroupingVectorDecoder.cs	(revision 14045)
@@ -24,5 +24,5 @@
 using HeuristicLab.Core;
 using HeuristicLab.Problems.BinPacking.Dimensions;
-using HeuristicLab.Problems.BinPacking.PackingBin;
+
 using HeuristicLab.Problems.BinPacking.PackingItem;
 using HeuristicLab.Encodings.PackingEncoding.PackingPlan;
@@ -30,9 +30,10 @@
 using HeuristicLab.Problems.BinPacking.Interfaces;
 using HeuristicLab.Encodings.PackingEncoding.GroupingVector;
+using HeuristicLab.Problems.BinPacking.Shapes;
 
 namespace HeuristicLab.Problems.BinPacking.Decoders {
   [Item("Identical bin, three dimensional, GroupingVector-decoder", "<Description missing...>")]
   [StorableClass]
-  public class DeepestBottomLeftGroupingVectorDecoder : PackingSolutionDecoder<ThreeDimensionalPacking, CuboidPackingBin, CuboidPackingItem>, I3DGVDecoder {
+  public class DeepestBottomLeftGroupingVectorDecoder : PackingSolutionDecoder<ThreeDimensionalPacking, CuboidPackingShape, CuboidPackingItem>, I3DGVDecoder {
     public DeepestBottomLeftGroupingVectorDecoder() : base() {}
     [StorableConstructor]
@@ -45,5 +46,5 @@
     }
 
-    public override PackingPlan<ThreeDimensionalPacking, CuboidPackingBin, CuboidPackingItem> CreatePackingPlanFromEncoding(IItem encodedSolution, CuboidPackingBin binMeasures, ItemList<CuboidPackingItem> itemMeasures) {
+    public override PackingPlan<ThreeDimensionalPacking, CuboidPackingShape, CuboidPackingItem> CreatePackingPlanFromEncoding(IItem encodedSolution, CuboidPackingShape binMeasures, ItemList<CuboidPackingItem> itemMeasures) {
       var solution = encodedSolution as GroupingVectorEncoding;
       if (solution == null) throw new InvalidOperationException("Encoding is not of type GroupingVector");
Index: /branches/HeuristicLab.BinPacking/HeuristicLab.Problems.BinPacking.3D/3.3/Decoders/DBL/DeepestBottomLeftMultiComponentVectorDecoder.cs
===================================================================
--- /branches/HeuristicLab.BinPacking/HeuristicLab.Problems.BinPacking.3D/3.3/Decoders/DBL/DeepestBottomLeftMultiComponentVectorDecoder.cs	(revision 14044)
+++ /branches/HeuristicLab.BinPacking/HeuristicLab.Problems.BinPacking.3D/3.3/Decoders/DBL/DeepestBottomLeftMultiComponentVectorDecoder.cs	(revision 14045)
@@ -24,5 +24,5 @@
 using HeuristicLab.Core;
 using HeuristicLab.Problems.BinPacking.Dimensions;
-using HeuristicLab.Problems.BinPacking.PackingBin;
+
 using HeuristicLab.Problems.BinPacking.PackingItem;
 using HeuristicLab.Encodings.PackingEncoding.PackingPlan;
@@ -30,9 +30,10 @@
 using HeuristicLab.Problems.BinPacking.Interfaces;
 using HeuristicLab.Encodings.PackingEncoding.MultiComponentVector;
+using HeuristicLab.Problems.BinPacking.Shapes;
 
 namespace HeuristicLab.Problems.BinPacking.Decoders {
   [Item("Identical bin, three dimensional, MultiComponentVector-decoder", "<Description missing...>")]
   [StorableClass]
-  public class DeepestBottomLeftMultiComponentVectorDecoder : PackingSolutionDecoder<ThreeDimensionalPacking, CuboidPackingBin, CuboidPackingItem>, I3DMCVDecoder {
+  public class DeepestBottomLeftMultiComponentVectorDecoder : PackingSolutionDecoder<ThreeDimensionalPacking, CuboidPackingShape, CuboidPackingItem>, I3DMCVDecoder {
     public DeepestBottomLeftMultiComponentVectorDecoder() : base() { }
     [StorableConstructor]
@@ -45,5 +46,5 @@
     }
 
-    public override PackingPlan<ThreeDimensionalPacking, CuboidPackingBin, CuboidPackingItem> CreatePackingPlanFromEncoding(IItem encodedSolution, CuboidPackingBin binMeasures, ItemList<CuboidPackingItem> itemMeasures) {
+    public override PackingPlan<ThreeDimensionalPacking, CuboidPackingShape, CuboidPackingItem> CreatePackingPlanFromEncoding(IItem encodedSolution, CuboidPackingShape binMeasures, ItemList<CuboidPackingItem> itemMeasures) {
       var solution = encodedSolution as MultiComponentVectorEncoding;
       if (solution == null) throw new InvalidOperationException("Encoding is not of type MultiComponent Vector");
Index: /branches/HeuristicLab.BinPacking/HeuristicLab.Problems.BinPacking.3D/3.3/Decoders/DBL/DeepestBottomLeftPackingSequenceDecoder.cs
===================================================================
--- /branches/HeuristicLab.BinPacking/HeuristicLab.Problems.BinPacking.3D/3.3/Decoders/DBL/DeepestBottomLeftPackingSequenceDecoder.cs	(revision 14044)
+++ /branches/HeuristicLab.BinPacking/HeuristicLab.Problems.BinPacking.3D/3.3/Decoders/DBL/DeepestBottomLeftPackingSequenceDecoder.cs	(revision 14045)
@@ -24,5 +24,5 @@
 using HeuristicLab.Core;
 using HeuristicLab.Problems.BinPacking.Dimensions;
-using HeuristicLab.Problems.BinPacking.PackingBin;
+
 using HeuristicLab.Problems.BinPacking.PackingItem;
 using HeuristicLab.Encodings.PackingEncoding.PackingPlan;
@@ -30,9 +30,10 @@
 using HeuristicLab.Encodings.PackingEncoding.PackingSequence;
 using HeuristicLab.Problems.BinPacking.Interfaces;
+using HeuristicLab.Problems.BinPacking.Shapes;
 
 namespace HeuristicLab.Problems.BinPacking.Decoders {
   [Item("Identical bin, three dimensional, PackingSequence-decoder", "<Description missing...>")]
   [StorableClass]
-  public class DeepestBottomLeftPackingSequenceDecoder : PackingSolutionDecoder<ThreeDimensionalPacking, CuboidPackingBin, CuboidPackingItem>, I3DPSDecoder {
+  public class DeepestBottomLeftPackingSequenceDecoder : PackingSolutionDecoder<ThreeDimensionalPacking, CuboidPackingShape, CuboidPackingItem>, I3DPSDecoder {
     public DeepestBottomLeftPackingSequenceDecoder(): base() {}
     [StorableConstructor]
@@ -45,5 +46,5 @@
     }
 
-    public override PackingPlan<ThreeDimensionalPacking, CuboidPackingBin, CuboidPackingItem> CreatePackingPlanFromEncoding(IItem encodedSolution, CuboidPackingBin binMeasures, ItemList<CuboidPackingItem> itemMeasures) {
+    public override PackingPlan<ThreeDimensionalPacking, CuboidPackingShape, CuboidPackingItem> CreatePackingPlanFromEncoding(IItem encodedSolution, CuboidPackingShape binMeasures, ItemList<CuboidPackingItem> itemMeasures) {
       var solution = encodedSolution as PackingSequenceEncoding;
       if (solution == null) throw new InvalidOperationException("Encoding is not of type PackingSequence");
Index: /branches/HeuristicLab.BinPacking/HeuristicLab.Problems.BinPacking.3D/3.3/Decoders/EP/ExtremePointGroupingVectorDecoder3D.cs
===================================================================
--- /branches/HeuristicLab.BinPacking/HeuristicLab.Problems.BinPacking.3D/3.3/Decoders/EP/ExtremePointGroupingVectorDecoder3D.cs	(revision 14044)
+++ /branches/HeuristicLab.BinPacking/HeuristicLab.Problems.BinPacking.3D/3.3/Decoders/EP/ExtremePointGroupingVectorDecoder3D.cs	(revision 14045)
@@ -24,5 +24,5 @@
 using HeuristicLab.Core;
 using HeuristicLab.Problems.BinPacking.Dimensions;
-using HeuristicLab.Problems.BinPacking.PackingBin;
+
 using HeuristicLab.Problems.BinPacking.PackingItem;
 using HeuristicLab.Encodings.PackingEncoding.PackingPlan;
@@ -30,9 +30,10 @@
 using HeuristicLab.Problems.BinPacking.Interfaces;
 using HeuristicLab.Encodings.PackingEncoding.GroupingVector;
+using HeuristicLab.Problems.BinPacking.Shapes;
 
 namespace HeuristicLab.Problems.BinPacking.Decoders {
   [Item("Identical bin, three dimensional, extreme points based decoder for the GroupingVector encoding.", "<Description missing...>")]
   [StorableClass]
-  public class ExtremePointGroupingVectorDecoder3D : PackingSolutionDecoder<ThreeDimensionalPacking, CuboidPackingBin, CuboidPackingItem>, I3DGVDecoder {
+  public class ExtremePointGroupingVectorDecoder3D : PackingSolutionDecoder<ThreeDimensionalPacking, CuboidPackingShape, CuboidPackingItem>, I3DGVDecoder {
     public ExtremePointGroupingVectorDecoder3D() : base() { }
     [StorableConstructor]
@@ -45,5 +46,5 @@
     }
 
-    public static PackingPlan<ThreeDimensionalPacking, CuboidPackingBin, CuboidPackingItem> Decode(GroupingVectorEncoding solution, CuboidPackingBin binMeasures, ItemList<CuboidPackingItem> itemMeasures, bool stackingConstraints) {
+    public static PackingPlan<ThreeDimensionalPacking, CuboidPackingShape, CuboidPackingItem> Decode(GroupingVectorEncoding solution, CuboidPackingShape binMeasures, ItemList<CuboidPackingItem> itemMeasures, bool stackingConstraints) {
       PackingPlan3D result = new PackingPlan3D(binMeasures, true, stackingConstraints);
       result.Pack(solution, itemMeasures);
@@ -51,5 +52,5 @@
     }
 
-    public override PackingPlan<ThreeDimensionalPacking, CuboidPackingBin, CuboidPackingItem> CreatePackingPlanFromEncoding(IItem encodedSolution, CuboidPackingBin binMeasures, ItemList<CuboidPackingItem> itemMeasures) {
+    public override PackingPlan<ThreeDimensionalPacking, CuboidPackingShape, CuboidPackingItem> CreatePackingPlanFromEncoding(IItem encodedSolution, CuboidPackingShape binMeasures, ItemList<CuboidPackingItem> itemMeasures) {
       var solution = encodedSolution as GroupingVectorEncoding;
       if (solution == null) throw new InvalidOperationException("Encoding is not of type GroupingVector");
Index: /branches/HeuristicLab.BinPacking/HeuristicLab.Problems.BinPacking.3D/3.3/Decoders/EP/ExtremePointMultiComponentVectorDecoder3D.cs
===================================================================
--- /branches/HeuristicLab.BinPacking/HeuristicLab.Problems.BinPacking.3D/3.3/Decoders/EP/ExtremePointMultiComponentVectorDecoder3D.cs	(revision 14044)
+++ /branches/HeuristicLab.BinPacking/HeuristicLab.Problems.BinPacking.3D/3.3/Decoders/EP/ExtremePointMultiComponentVectorDecoder3D.cs	(revision 14045)
@@ -24,5 +24,5 @@
 using HeuristicLab.Core;
 using HeuristicLab.Problems.BinPacking.Dimensions;
-using HeuristicLab.Problems.BinPacking.PackingBin;
+
 using HeuristicLab.Problems.BinPacking.PackingItem;
 using HeuristicLab.Encodings.PackingEncoding.PackingPlan;
@@ -30,9 +30,10 @@
 using HeuristicLab.Problems.BinPacking.Interfaces;
 using HeuristicLab.Encodings.PackingEncoding.MultiComponentVector;
+using HeuristicLab.Problems.BinPacking.Shapes;
 
 namespace HeuristicLab.Problems.BinPacking.Decoders {
   [Item("Identical bin, three dimensional, extreme points based decoder for the MultiComponentVector encoding.", "<Description missing...>")]
   [StorableClass]
-  public class ExtremePointMultiComponentVectorDecoder3D : PackingSolutionDecoder<ThreeDimensionalPacking, CuboidPackingBin, CuboidPackingItem>, I3DMCVDecoder {
+  public class ExtremePointMultiComponentVectorDecoder3D : PackingSolutionDecoder<ThreeDimensionalPacking, CuboidPackingShape, CuboidPackingItem>, I3DMCVDecoder {
     public ExtremePointMultiComponentVectorDecoder3D () : base() { }
     [StorableConstructor]
@@ -45,5 +46,5 @@
     }
 
-    public static PackingPlan<ThreeDimensionalPacking, CuboidPackingBin, CuboidPackingItem> Decode(MultiComponentVectorEncoding solution, CuboidPackingBin binMeasures, ItemList<CuboidPackingItem> itemMeasures, bool stackingConstraints) {
+    public static PackingPlan<ThreeDimensionalPacking, CuboidPackingShape, CuboidPackingItem> Decode(MultiComponentVectorEncoding solution, CuboidPackingShape binMeasures, ItemList<CuboidPackingItem> itemMeasures, bool stackingConstraints) {
       PackingPlan3D result = new PackingPlan3D(binMeasures, true, stackingConstraints);
       result.Pack(solution, itemMeasures);
@@ -51,5 +52,5 @@
     }
 
-    public override PackingPlan<ThreeDimensionalPacking, CuboidPackingBin, CuboidPackingItem> CreatePackingPlanFromEncoding(IItem encodedSolution, CuboidPackingBin binMeasures, ItemList<CuboidPackingItem> itemMeasures) {
+    public override PackingPlan<ThreeDimensionalPacking, CuboidPackingShape, CuboidPackingItem> CreatePackingPlanFromEncoding(IItem encodedSolution, CuboidPackingShape binMeasures, ItemList<CuboidPackingItem> itemMeasures) {
       var solution = encodedSolution as MultiComponentVectorEncoding;
       if (solution == null) throw new InvalidOperationException("Encoding is not of type MultiComponentVector");
Index: /branches/HeuristicLab.BinPacking/HeuristicLab.Problems.BinPacking.3D/3.3/Decoders/EP/ExtremePointPackingSequenceDecoder3D.cs
===================================================================
--- /branches/HeuristicLab.BinPacking/HeuristicLab.Problems.BinPacking.3D/3.3/Decoders/EP/ExtremePointPackingSequenceDecoder3D.cs	(revision 14044)
+++ /branches/HeuristicLab.BinPacking/HeuristicLab.Problems.BinPacking.3D/3.3/Decoders/EP/ExtremePointPackingSequenceDecoder3D.cs	(revision 14045)
@@ -25,5 +25,5 @@
 using HeuristicLab.Core;
 using HeuristicLab.Problems.BinPacking.Dimensions;
-using HeuristicLab.Problems.BinPacking.PackingBin;
+
 using HeuristicLab.Problems.BinPacking.PackingItem;
 using HeuristicLab.Encodings.PackingEncoding.PackingPlan;
@@ -31,9 +31,10 @@
 using HeuristicLab.Encodings.PackingEncoding.PackingSequence;
 using HeuristicLab.Problems.BinPacking.Interfaces;
+using HeuristicLab.Problems.BinPacking.Shapes;
 
 namespace HeuristicLab.Problems.BinPacking.Decoders {
   [Item("Identical bin, three dimensional, extreme points based decoder for the PackingSequence encoding.", "<Description missing...>")]
   [StorableClass]
-  public class ExtremePointPackingSequenceDecoder3D : PackingSolutionDecoder<ThreeDimensionalPacking, CuboidPackingBin, CuboidPackingItem>, I3DPSDecoder {
+  public class ExtremePointPackingSequenceDecoder3D : PackingSolutionDecoder<ThreeDimensionalPacking, CuboidPackingShape, CuboidPackingItem>, I3DPSDecoder {
     public ExtremePointPackingSequenceDecoder3D () : base() {}
     [StorableConstructor]
@@ -47,5 +48,5 @@
 
 
-    public override PackingPlan<ThreeDimensionalPacking, CuboidPackingBin, CuboidPackingItem> CreatePackingPlanFromEncoding(IItem encodedSolution, CuboidPackingBin binMeasures, ItemList<CuboidPackingItem> itemMeasures) {
+    public override PackingPlan<ThreeDimensionalPacking, CuboidPackingShape, CuboidPackingItem> CreatePackingPlanFromEncoding(IItem encodedSolution, CuboidPackingShape binMeasures, ItemList<CuboidPackingItem> itemMeasures) {
       var solution = encodedSolution as PackingSequenceEncoding;
       if (solution == null) throw new InvalidOperationException("Encoding is not of type PackingSequence");
Index: /branches/HeuristicLab.BinPacking/HeuristicLab.Problems.BinPacking.3D/3.3/HeuristicLab.Problems.BinPacking3D-3.3.csproj
===================================================================
--- /branches/HeuristicLab.BinPacking/HeuristicLab.Problems.BinPacking.3D/3.3/HeuristicLab.Problems.BinPacking3D-3.3.csproj	(revision 14044)
+++ /branches/HeuristicLab.BinPacking/HeuristicLab.Problems.BinPacking.3D/3.3/HeuristicLab.Problems.BinPacking3D-3.3.csproj	(revision 14045)
@@ -160,5 +160,4 @@
     <Compile Include="BinPacking3D.cs" />
     <Compile Include="CuboidIdenticalBinPackingProblem.cs" />
-    <Compile Include="CuboidPackingBin.cs" />
     <Compile Include="CuboidPackingItem.cs" />
     <Compile Include="CuboidPackingShape.cs" />
Index: /branches/HeuristicLab.BinPacking/HeuristicLab.Problems.BinPacking.3D/3.3/MoveEvaluators/PackingMoveEvaluator3DGV.cs
===================================================================
--- /branches/HeuristicLab.BinPacking/HeuristicLab.Problems.BinPacking.3D/3.3/MoveEvaluators/PackingMoveEvaluator3DGV.cs	(revision 14044)
+++ /branches/HeuristicLab.BinPacking/HeuristicLab.Problems.BinPacking.3D/3.3/MoveEvaluators/PackingMoveEvaluator3DGV.cs	(revision 14045)
@@ -27,11 +27,12 @@
 using HeuristicLab.Problems.BinPacking.Dimensions;
 using HeuristicLab.Problems.BinPacking.Interfaces;
-using HeuristicLab.Problems.BinPacking.PackingBin;
+
 using HeuristicLab.Problems.BinPacking.PackingItem;
+using HeuristicLab.Problems.BinPacking.Shapes;
 
 namespace HeuristicLab.Problems.BinPacking {
   [Item("GroupingVectorMoveEvaluator3D", "Class for evaluating packing moves for 3dimensional problems.")]
   [StorableClass]
-  public class PackingMoveEvaluator3DGV : PackingMoveEvaluator<ThreeDimensionalPacking, CuboidPackingBin, CuboidPackingItem>, ISingleObjectiveMoveEvaluator, IGroupingVectorMoveOperator, I3DOperator {
+  public class PackingMoveEvaluator3DGV : PackingMoveEvaluator<ThreeDimensionalPacking, CuboidPackingShape, CuboidPackingItem>, ISingleObjectiveMoveEvaluator, IGroupingVectorMoveOperator, I3DOperator {
     [StorableConstructor]
     protected PackingMoveEvaluator3DGV(bool deserializing) : base(deserializing) { }
Index: /branches/HeuristicLab.BinPacking/HeuristicLab.Problems.BinPacking.3D/3.3/MoveEvaluators/PackingMoveEvaluator3DMCV.cs
===================================================================
--- /branches/HeuristicLab.BinPacking/HeuristicLab.Problems.BinPacking.3D/3.3/MoveEvaluators/PackingMoveEvaluator3DMCV.cs	(revision 14044)
+++ /branches/HeuristicLab.BinPacking/HeuristicLab.Problems.BinPacking.3D/3.3/MoveEvaluators/PackingMoveEvaluator3DMCV.cs	(revision 14045)
@@ -27,11 +27,12 @@
 using HeuristicLab.Problems.BinPacking.Dimensions;
 using HeuristicLab.Problems.BinPacking.Interfaces;
-using HeuristicLab.Problems.BinPacking.PackingBin;
+
 using HeuristicLab.Problems.BinPacking.PackingItem;
+using HeuristicLab.Problems.BinPacking.Shapes;
 
 namespace HeuristicLab.Problems.BinPacking {
   [Item("MultiComponentVectorMoveEvaluator3D", "Class for evaluating packing moves for 3dimensional problems.")]
   [StorableClass]
-  public class PackingMoveEvaluator3DMCV : PackingMoveEvaluator<ThreeDimensionalPacking, CuboidPackingBin, CuboidPackingItem>, ISingleObjectiveMoveEvaluator, IMultiComponentVectorMoveOperator, I3DOperator {
+  public class PackingMoveEvaluator3DMCV : PackingMoveEvaluator<ThreeDimensionalPacking, CuboidPackingShape, CuboidPackingItem>, ISingleObjectiveMoveEvaluator, IMultiComponentVectorMoveOperator, I3DOperator {
     [StorableConstructor]
     protected PackingMoveEvaluator3DMCV(bool deserializing) : base(deserializing) { }
Index: /branches/HeuristicLab.BinPacking/HeuristicLab.Problems.BinPacking.3D/3.3/MoveEvaluators/PackingMoveEvaluator3DPS.cs
===================================================================
--- /branches/HeuristicLab.BinPacking/HeuristicLab.Problems.BinPacking.3D/3.3/MoveEvaluators/PackingMoveEvaluator3DPS.cs	(revision 14044)
+++ /branches/HeuristicLab.BinPacking/HeuristicLab.Problems.BinPacking.3D/3.3/MoveEvaluators/PackingMoveEvaluator3DPS.cs	(revision 14045)
@@ -27,11 +27,12 @@
 using HeuristicLab.Problems.BinPacking.Dimensions;
 using HeuristicLab.Problems.BinPacking.Interfaces;
-using HeuristicLab.Problems.BinPacking.PackingBin;
+
 using HeuristicLab.Problems.BinPacking.PackingItem;
+using HeuristicLab.Problems.BinPacking.Shapes;
 
 namespace HeuristicLab.Problems.BinPacking {
   [Item("PackingSequenceMoveEvaluator3D", "Class for evaluating packing moves for 3dimensional problems.")]
   [StorableClass]
-  public class PackingMoveEvaluator3DPS : PackingMoveEvaluator<ThreeDimensionalPacking, CuboidPackingBin, CuboidPackingItem>, ISingleObjectiveMoveEvaluator, IPackingSequenceMoveOperator, I3DOperator {
+  public class PackingMoveEvaluator3DPS : PackingMoveEvaluator<ThreeDimensionalPacking, CuboidPackingShape, CuboidPackingItem>, ISingleObjectiveMoveEvaluator, IPackingSequenceMoveOperator, I3DOperator {
     [StorableConstructor]
     protected PackingMoveEvaluator3DPS(bool deserializing) : base(deserializing) { }
Index: /branches/HeuristicLab.BinPacking/HeuristicLab.Problems.BinPacking.3D/3.3/PackingPlan3D.cs
===================================================================
--- /branches/HeuristicLab.BinPacking/HeuristicLab.Problems.BinPacking.3D/3.3/PackingPlan3D.cs	(revision 14044)
+++ /branches/HeuristicLab.BinPacking/HeuristicLab.Problems.BinPacking.3D/3.3/PackingPlan3D.cs	(revision 14045)
@@ -4,13 +4,14 @@
 using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
 using HeuristicLab.Problems.BinPacking.Dimensions;
-using HeuristicLab.Problems.BinPacking.PackingBin;
+
 using HeuristicLab.Problems.BinPacking.PackingItem;
+using HeuristicLab.Problems.BinPacking.Shapes;
 
 namespace HeuristicLab.Problems.BinPacking {
   [Item("PackingPlan3D", "Represents a solution for a 3D bin packing problem.")]
   [StorableClass]
-  public class PackingPlan3D : PackingPlan<ThreeDimensionalPacking, CuboidPackingBin, CuboidPackingItem> {
-    public PackingPlan3D(CuboidPackingBin binMeasures) : this(binMeasures, false, false) { }
-    public PackingPlan3D(CuboidPackingBin binMeasures, bool useExtremePoints, bool stackingConstraints) : base(binMeasures, useExtremePoints, stackingConstraints) { }
+  public class PackingPlan3D : PackingPlan<ThreeDimensionalPacking, CuboidPackingShape, CuboidPackingItem> {
+    public PackingPlan3D(CuboidPackingShape binMeasures) : this(binMeasures, false, false) { }
+    public PackingPlan3D(CuboidPackingShape binMeasures, bool useExtremePoints, bool stackingConstraints) : base(binMeasures, useExtremePoints, stackingConstraints) { }
     [StorableConstructor]
     protected PackingPlan3D(bool deserializing) : base(deserializing) { }
@@ -21,5 +22,5 @@
       return new PackingPlan3D(this, cloner);
     }
-    public override BinPacking<ThreeDimensionalPacking, CuboidPackingBin, CuboidPackingItem> NewBinPacking() {
+    public override BinPacking<ThreeDimensionalPacking, CuboidPackingShape, CuboidPackingItem> NewBinPacking() {
       return new BinPacking3D(BinMeasures);
     }
Index: /branches/HeuristicLab.BinPacking/HeuristicLab.Problems.BinPacking.3D/3.3/PackingRatioCuboidIdenticalBinEvaluator.cs
===================================================================
--- /branches/HeuristicLab.BinPacking/HeuristicLab.Problems.BinPacking.3D/3.3/PackingRatioCuboidIdenticalBinEvaluator.cs	(revision 14044)
+++ /branches/HeuristicLab.BinPacking/HeuristicLab.Problems.BinPacking.3D/3.3/PackingRatioCuboidIdenticalBinEvaluator.cs	(revision 14045)
@@ -24,11 +24,12 @@
 using HeuristicLab.Common;
 using HeuristicLab.Problems.BinPacking.Dimensions;
-using HeuristicLab.Problems.BinPacking.PackingBin;
+
 using HeuristicLab.Problems.BinPacking.PackingItem;
+using HeuristicLab.Problems.BinPacking.Shapes;
 
 namespace HeuristicLab.Problems.BinPacking.Evaluators {
   [Item("Packing-Ratio Cuboid Identical-Bin Evaluator", "Represents an evaluation-algorithm for cuboid-shaped bin-packing problems with identical bins which calculates the ratio between packed and unpacked space. Found in Falkenauer:1996")]
   [StorableClass]
-  public class PackingRatioCuboidIdenticalBinEvaluator : PackingRatioRegularIdenticalBinEvaluator<ThreeDimensionalPacking, CuboidPackingBin, CuboidPackingItem> {
+  public class PackingRatioCuboidIdenticalBinEvaluator : PackingRatioRegularIdenticalBinEvaluator<ThreeDimensionalPacking, CuboidPackingShape, CuboidPackingItem> {
 
     [StorableConstructor]
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 14044)
+++ /branches/HeuristicLab.BinPacking/HeuristicLab.Problems.BinPacking.Views/3.3/Container2DView.xaml.cs	(revision 14045)
@@ -25,6 +25,6 @@
 using HeuristicLab.Encodings.PackingEncoding.PackingPlan;
 using HeuristicLab.Problems.BinPacking.Dimensions;
-using HeuristicLab.Problems.BinPacking.PackingBin;
 using HeuristicLab.Problems.BinPacking.PackingItem;
+using HeuristicLab.Problems.BinPacking.Shapes;
 using Point = System.Windows.Point;
 using Size = System.Windows.Size;
@@ -35,6 +35,6 @@
     private int selectedItemKey;
     private Size renderSize;
-    private BinPacking<TwoDimensionalPacking, RectangularPackingBin, RectangularPackingItem> packing;
-    public BinPacking<TwoDimensionalPacking, RectangularPackingBin, RectangularPackingItem> Packing {
+    private BinPacking<TwoDimensionalPacking, RectangularPackingShape, RectangularPackingItem> packing;
+    public BinPacking<TwoDimensionalPacking, RectangularPackingShape, RectangularPackingItem> Packing {
       get { return packing; }
       set {
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 14044)
+++ /branches/HeuristicLab.BinPacking/HeuristicLab.Problems.BinPacking.Views/3.3/Container3DView.xaml.cs	(revision 14045)
@@ -26,6 +26,6 @@
 using HeuristicLab.Encodings.PackingEncoding.PackingPlan;
 using HeuristicLab.Problems.BinPacking.Dimensions;
-using HeuristicLab.Problems.BinPacking.PackingBin;
 using HeuristicLab.Problems.BinPacking.PackingItem;
+using HeuristicLab.Problems.BinPacking.Shapes;
 
 namespace HeuristicLab.Problems.BinPacking.Views {
@@ -37,6 +37,6 @@
     private int selectedItemKey;
 
-    private BinPacking<ThreeDimensionalPacking, CuboidPackingBin, CuboidPackingItem> packing;
-    public BinPacking<ThreeDimensionalPacking, CuboidPackingBin, CuboidPackingItem> Packing {
+    private BinPacking<ThreeDimensionalPacking, CuboidPackingShape, CuboidPackingItem> packing;
+    public BinPacking<ThreeDimensionalPacking, CuboidPackingShape, CuboidPackingItem> Packing {
       get { return packing; }
       set {
Index: /branches/HeuristicLab.BinPacking/HeuristicLab.Problems.BinPacking.Views/3.3/PackingPlan2DView.cs
===================================================================
--- /branches/HeuristicLab.BinPacking/HeuristicLab.Problems.BinPacking.Views/3.3/PackingPlan2DView.cs	(revision 14044)
+++ /branches/HeuristicLab.BinPacking/HeuristicLab.Problems.BinPacking.Views/3.3/PackingPlan2DView.cs	(revision 14045)
@@ -25,10 +25,11 @@
 using HeuristicLab.Encodings.PackingEncoding.PackingPlan;
 using HeuristicLab.Problems.BinPacking.Dimensions;
-using HeuristicLab.Problems.BinPacking.PackingBin;
+
 using HeuristicLab.Problems.BinPacking.PackingItem;
+using HeuristicLab.Problems.BinPacking.Shapes;
 
 namespace HeuristicLab.Problems.BinPacking.Views {
   [View("2-dimensional packing plan view")]
-  [Content(typeof(PackingPlan<TwoDimensionalPacking, RectangularPackingBin, RectangularPackingItem>), true)]
+  [Content(typeof(PackingPlan<TwoDimensionalPacking, RectangularPackingShape, RectangularPackingItem>), true)]
   public partial class PackingPlan2DView : ItemView {
 
@@ -37,6 +38,6 @@
     }
 
-    public new PackingPlan<TwoDimensionalPacking, RectangularPackingBin, RectangularPackingItem> Content {
-      get { return (PackingPlan<TwoDimensionalPacking, RectangularPackingBin, RectangularPackingItem>)base.Content; }
+    public new PackingPlan<TwoDimensionalPacking, RectangularPackingShape, RectangularPackingItem> Content {
+      get { return (PackingPlan<TwoDimensionalPacking, RectangularPackingShape, RectangularPackingItem>)base.Content; }
       set { base.Content = value; }
     }
@@ -58,5 +59,5 @@
     }
 
-    private void UpdateState(PackingPlan<TwoDimensionalPacking, RectangularPackingBin, RectangularPackingItem> plan) {
+    private void UpdateState(PackingPlan<TwoDimensionalPacking, RectangularPackingShape, RectangularPackingItem> plan) {
       int currentBin = (binSelection != null && binSelection.SelectedItem != null) ? (int)(binSelection.SelectedItem) : 0;
       container2DView.Packing = plan.BinPackings[currentBin];
Index: /branches/HeuristicLab.BinPacking/HeuristicLab.Problems.BinPacking.Views/3.3/PackingPlan3DView.cs
===================================================================
--- /branches/HeuristicLab.BinPacking/HeuristicLab.Problems.BinPacking.Views/3.3/PackingPlan3DView.cs	(revision 14044)
+++ /branches/HeuristicLab.BinPacking/HeuristicLab.Problems.BinPacking.Views/3.3/PackingPlan3DView.cs	(revision 14045)
@@ -25,10 +25,11 @@
 using HeuristicLab.Encodings.PackingEncoding.PackingPlan;
 using HeuristicLab.Problems.BinPacking.PackingItem;
-using HeuristicLab.Problems.BinPacking.PackingBin;
+
 using HeuristicLab.Problems.BinPacking.Dimensions;
+using HeuristicLab.Problems.BinPacking.Shapes;
 
 namespace HeuristicLab.Problems.BinPacking.Views {
   [View("3-dimensional packing plan View")]
-  [Content(typeof(PackingPlan<ThreeDimensionalPacking, CuboidPackingBin, CuboidPackingItem>), true)]
+  [Content(typeof(PackingPlan<ThreeDimensionalPacking, CuboidPackingShape, CuboidPackingItem>), true)]
   public partial class PackingPlan3DView : ItemView {
 
@@ -37,6 +38,6 @@
     }
 
-    public new PackingPlan<ThreeDimensionalPacking, CuboidPackingBin, CuboidPackingItem> Content {
-      get { return (PackingPlan<ThreeDimensionalPacking, CuboidPackingBin, CuboidPackingItem>)base.Content; }
+    public new PackingPlan<ThreeDimensionalPacking, CuboidPackingShape, CuboidPackingItem> Content {
+      get { return (PackingPlan<ThreeDimensionalPacking, CuboidPackingShape, CuboidPackingItem>)base.Content; }
       set { base.Content = value; }
     }
Index: /branches/HeuristicLab.BinPacking/HeuristicLab.Problems.BinPacking/3.3/Analyzers/BestBinPackingSolutionAnalyzer.cs
===================================================================
--- /branches/HeuristicLab.BinPacking/HeuristicLab.Problems.BinPacking/3.3/Analyzers/BestBinPackingSolutionAnalyzer.cs	(revision 14044)
+++ /branches/HeuristicLab.BinPacking/HeuristicLab.Problems.BinPacking/3.3/Analyzers/BestBinPackingSolutionAnalyzer.cs	(revision 14045)
@@ -38,5 +38,5 @@
   public class BestBinPackingSolutionAnalyzer<D, B, I> : BinPackingAnalyzer<D, B, I>, IStochasticOperator
     where D : class, IPackingDimensions
-    where B : PackingShape<D>, IPackingBin
+    where B : PackingShape<D>
     where I : PackingShape<D>, IPackingItem {
 
Index: /branches/HeuristicLab.BinPacking/HeuristicLab.Problems.BinPacking/3.3/Analyzers/BinPackingAnalyzer.cs
===================================================================
--- /branches/HeuristicLab.BinPacking/HeuristicLab.Problems.BinPacking/3.3/Analyzers/BinPackingAnalyzer.cs	(revision 14044)
+++ /branches/HeuristicLab.BinPacking/HeuristicLab.Problems.BinPacking/3.3/Analyzers/BinPackingAnalyzer.cs	(revision 14045)
@@ -36,5 +36,5 @@
   public abstract class BinPackingAnalyzer<D, B, I> : SingleSuccessorOperator, IAnalyzer
     where D : class, IPackingDimensions
-    where B : PackingShape<D>, IPackingBin
+    where B : PackingShape<D>
     where I : PackingShape<D>, IPackingItem {
     public virtual bool EnabledByDefault {
Index: /branches/HeuristicLab.BinPacking/HeuristicLab.Problems.BinPacking/3.3/BinPackingProblem.cs
===================================================================
--- /branches/HeuristicLab.BinPacking/HeuristicLab.Problems.BinPacking/3.3/BinPackingProblem.cs	(revision 14044)
+++ /branches/HeuristicLab.BinPacking/HeuristicLab.Problems.BinPacking/3.3/BinPackingProblem.cs	(revision 14045)
@@ -43,5 +43,5 @@
   public abstract class BinPackingProblem<D, B, I> : SingleObjectiveHeuristicOptimizationProblem<IPackingPlanEvaluationAlgorithm, IPackingSolutionCreator> 
     where D : class, IPackingDimensions 
-    where B : PackingShape<D>, IPackingBin, new()
+    where B : PackingShape<D>, new()
     where I : PackingShape<D>, IPackingItem, new () {
 
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 14044)
+++ /branches/HeuristicLab.BinPacking/HeuristicLab.Problems.BinPacking/3.3/Encodings/PackingPlans/BinPacking.cs	(revision 14045)
@@ -34,5 +34,5 @@
   public abstract class BinPacking<D,B,I>  : Item
     where D : class, IPackingDimensions
-    where B : PackingShape<D>, IPackingBin
+    where B : PackingShape<D>
     where I : PackingShape<D>, IPackingItem {
     #region Properties
Index: /branches/HeuristicLab.BinPacking/HeuristicLab.Problems.BinPacking/3.3/Encodings/PackingPlans/PackingPlan.cs
===================================================================
--- /branches/HeuristicLab.BinPacking/HeuristicLab.Problems.BinPacking/3.3/Encodings/PackingPlans/PackingPlan.cs	(revision 14044)
+++ /branches/HeuristicLab.BinPacking/HeuristicLab.Problems.BinPacking/3.3/Encodings/PackingPlans/PackingPlan.cs	(revision 14045)
@@ -40,5 +40,5 @@
   public abstract class PackingPlan<D, B, I> :Item, IPackingPlan
     where D : class, IPackingDimensions
-    where B : PackingShape<D>, IPackingBin
+    where B : PackingShape<D>
     where I : PackingShape<D>, IPackingItem {
 
Index: /branches/HeuristicLab.BinPacking/HeuristicLab.Problems.BinPacking/3.3/Evaluators/BinUtilizationRegularIdenticalBinEvaluator.cs
===================================================================
--- /branches/HeuristicLab.BinPacking/HeuristicLab.Problems.BinPacking/3.3/Evaluators/BinUtilizationRegularIdenticalBinEvaluator.cs	(revision 14044)
+++ /branches/HeuristicLab.BinPacking/HeuristicLab.Problems.BinPacking/3.3/Evaluators/BinUtilizationRegularIdenticalBinEvaluator.cs	(revision 14045)
@@ -34,5 +34,5 @@
   public abstract class BinUtilizationRegularIdenticalBinEvaluator<D, B, I> : RegularSimpleRotationIdenticalBinPackingPlanEvaluator<D, B, I>
     where D : class, IPackingDimensions
-    where B : PackingShape<D>, IPackingBin
+    where B : PackingShape<D>
     where I : PackingShape<D>, IPackingItem {
 
Index: /branches/HeuristicLab.BinPacking/HeuristicLab.Problems.BinPacking/3.3/Evaluators/PackingPlanEvaluationAlgorithm.cs
===================================================================
--- /branches/HeuristicLab.BinPacking/HeuristicLab.Problems.BinPacking/3.3/Evaluators/PackingPlanEvaluationAlgorithm.cs	(revision 14044)
+++ /branches/HeuristicLab.BinPacking/HeuristicLab.Problems.BinPacking/3.3/Evaluators/PackingPlanEvaluationAlgorithm.cs	(revision 14045)
@@ -36,5 +36,5 @@
     where E : Item //E defines the used Encoding
     where D : class, IPackingDimensions
-    where B : PackingShape<D>, IPackingBin
+    where B : PackingShape<D>
     where I : PackingShape<D>, IPackingItem {
 
Index: /branches/HeuristicLab.BinPacking/HeuristicLab.Problems.BinPacking/3.3/Evaluators/PackingPlanEvaluator.cs
===================================================================
--- /branches/HeuristicLab.BinPacking/HeuristicLab.Problems.BinPacking/3.3/Evaluators/PackingPlanEvaluator.cs	(revision 14044)
+++ /branches/HeuristicLab.BinPacking/HeuristicLab.Problems.BinPacking/3.3/Evaluators/PackingPlanEvaluator.cs	(revision 14045)
@@ -35,5 +35,5 @@
   public abstract class PackingPlanEvaluator<D,B,I> : SingleSuccessorOperator, IPackingPlanEvaluator
     where D : class, IPackingDimensions
-    where B : PackingShape<D>, IPackingBin
+    where B : PackingShape<D>
     where I : PackingShape<D>, IPackingItem {
 
Index: /branches/HeuristicLab.BinPacking/HeuristicLab.Problems.BinPacking/3.3/Evaluators/PackingRatioRegularIdenticalBinEvaluator.cs
===================================================================
--- /branches/HeuristicLab.BinPacking/HeuristicLab.Problems.BinPacking/3.3/Evaluators/PackingRatioRegularIdenticalBinEvaluator.cs	(revision 14044)
+++ /branches/HeuristicLab.BinPacking/HeuristicLab.Problems.BinPacking/3.3/Evaluators/PackingRatioRegularIdenticalBinEvaluator.cs	(revision 14045)
@@ -34,5 +34,5 @@
   public abstract class PackingRatioRegularIdenticalBinEvaluator<D, B, I> : RegularSimpleRotationIdenticalBinPackingPlanEvaluator<D, B, I>
     where D : class, IPackingDimensions
-    where B : PackingShape<D>, IPackingBin
+    where B : PackingShape<D>
     where I : PackingShape<D>, IPackingItem {
 
Index: /branches/HeuristicLab.BinPacking/HeuristicLab.Problems.BinPacking/3.3/Evaluators/RegularSimpleRotationIdenticalBinPackingPlanEvaluator.cs
===================================================================
--- /branches/HeuristicLab.BinPacking/HeuristicLab.Problems.BinPacking/3.3/Evaluators/RegularSimpleRotationIdenticalBinPackingPlanEvaluator.cs	(revision 14044)
+++ /branches/HeuristicLab.BinPacking/HeuristicLab.Problems.BinPacking/3.3/Evaluators/RegularSimpleRotationIdenticalBinPackingPlanEvaluator.cs	(revision 14045)
@@ -33,5 +33,5 @@
   public abstract class RegularSimpleRotationIdenticalBinPackingPlanEvaluator<D, B, I> : PackingPlanEvaluator<D, B, I>
     where D : class, IPackingDimensions
-    where B : PackingShape<D>, IPackingBin
+    where B : PackingShape<D>
     where I : PackingShape<D>, IPackingItem {
 
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 14044)
+++ /branches/HeuristicLab.BinPacking/HeuristicLab.Problems.BinPacking/3.3/HeuristicLab.Problems.BinPacking-3.3.csproj	(revision 14045)
@@ -282,5 +282,4 @@
     <Compile Include="PackingDimensions.cs" />
     <Compile Include="PackingMoveEvaluator.cs" />
-    <Compile Include="Interfaces\IPackingBin.cs" />
     <Compile Include="Interfaces\IPackingItem.cs" />
     <Compile Include="Interfaces\IPackingPlan.cs" />
Index: anches/HeuristicLab.BinPacking/HeuristicLab.Problems.BinPacking/3.3/Interfaces/IPackingBin.cs
===================================================================
--- /branches/HeuristicLab.BinPacking/HeuristicLab.Problems.BinPacking/3.3/Interfaces/IPackingBin.cs	(revision 14044)
+++ 	(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
-
-
-namespace HeuristicLab.Problems.BinPacking.Interfaces {
-  // a packing bin represents the container for a packing solution
-  public interface IPackingBin : IPackingShape { }
-}
Index: /branches/HeuristicLab.BinPacking/HeuristicLab.Problems.BinPacking/3.3/PackingMoveEvaluator.cs
===================================================================
--- /branches/HeuristicLab.BinPacking/HeuristicLab.Problems.BinPacking/3.3/PackingMoveEvaluator.cs	(revision 14044)
+++ /branches/HeuristicLab.BinPacking/HeuristicLab.Problems.BinPacking/3.3/PackingMoveEvaluator.cs	(revision 14045)
@@ -38,5 +38,5 @@
   public abstract class PackingMoveEvaluator<D, B, I> : SingleSuccessorOperator, IPackingMoveEvaluator, IMoveOperator
     where D : class, IPackingDimensions
-    where B : PackingShape<D>, IPackingBin
+    where B : PackingShape<D>
     where I : PackingShape<D>, IPackingItem {     
     public override bool CanChangeName {
Index: /branches/HeuristicLab.BinPacking/HeuristicLab.Problems.BinPacking/3.3/PackingSolutionDecoder.cs
===================================================================
--- /branches/HeuristicLab.BinPacking/HeuristicLab.Problems.BinPacking/3.3/PackingSolutionDecoder.cs	(revision 14044)
+++ /branches/HeuristicLab.BinPacking/HeuristicLab.Problems.BinPacking/3.3/PackingSolutionDecoder.cs	(revision 14045)
@@ -37,5 +37,5 @@
   public abstract class PackingSolutionDecoder<D, B, I> : SingleSuccessorOperator, IPackingSolutionDecoder
     where D : class, IPackingDimensions
-    where B : PackingShape<D>, IPackingBin
+    where B : PackingShape<D>
     where I : PackingShape<D>, IPackingItem {
 
Index: /branches/HeuristicLab.BinPacking/old files/CuboidPackingBin.cs
===================================================================
--- /branches/HeuristicLab.BinPacking/old files/CuboidPackingBin.cs	(revision 14045)
+++ /branches/HeuristicLab.BinPacking/old files/CuboidPackingBin.cs	(revision 14045)
@@ -0,0 +1,47 @@
+﻿#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.Problems.BinPacking.Interfaces;
+using HeuristicLab.Problems.BinPacking.Shapes;
+using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
+using HeuristicLab.Core;
+using HeuristicLab.Common;
+
+
+namespace HeuristicLab.Problems.BinPacking.PackingBin {
+  [Item("CuboidPackingBin", "Represents a cuboidic container for a three dimensional bin-packing problem.")]
+  [StorableClass]
+  public class CuboidPackingBin : CuboidPackingShape, IPackingBin {
+    public CuboidPackingBin(int width, int height, int depth) : base(width, height, depth) { }
+
+    [StorableConstructor]
+    protected CuboidPackingBin(bool deserializing) : base(deserializing) { }
+    protected CuboidPackingBin(CuboidPackingBin original, Cloner cloner)
+      : base(original, cloner) {
+    }
+    public override IDeepCloneable Clone(Cloner cloner) {
+      return new CuboidPackingBin(this, cloner);
+    }
+    public CuboidPackingBin()
+      : base() {
+    }
+  }
+}
Index: /branches/HeuristicLab.BinPacking/old files/IPackingBin.cs
===================================================================
--- /branches/HeuristicLab.BinPacking/old files/IPackingBin.cs	(revision 14045)
+++ /branches/HeuristicLab.BinPacking/old files/IPackingBin.cs	(revision 14045)
@@ -0,0 +1,26 @@
+﻿#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
+
+
+namespace HeuristicLab.Problems.BinPacking.Interfaces {
+  // a packing bin represents the container for a packing solution
+  public interface IPackingBin : IPackingShape { }
+}
Index: /branches/HeuristicLab.BinPacking/old files/RectangularPackingBin.cs
===================================================================
--- /branches/HeuristicLab.BinPacking/old files/RectangularPackingBin.cs	(revision 14045)
+++ /branches/HeuristicLab.BinPacking/old files/RectangularPackingBin.cs	(revision 14045)
@@ -0,0 +1,44 @@
+﻿#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.Problems.BinPacking.Interfaces;
+using HeuristicLab.Problems.BinPacking.Shapes;
+using HeuristicLab.Core;
+using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
+using HeuristicLab.Common;
+
+namespace HeuristicLab.Problems.BinPacking.PackingBin {
+  [Item("RectangularPackingBin", "Represents a rectangular bin for a two-dimensional bin-packing problem.")]
+  [StorableClass]
+  public class RectangularPackingBin : RectangularPackingShape, IPackingBin {
+    public RectangularPackingBin(int width, int height) : base(width, height) { }
+    public RectangularPackingBin() : base() { }
+
+    [StorableConstructor]
+    protected RectangularPackingBin(bool deserializing) : base(deserializing) { }
+    protected RectangularPackingBin(RectangularPackingBin original, Cloner cloner)
+      : base(original, cloner) {
+    }
+    public override IDeepCloneable Clone(Cloner cloner) {
+      return new RectangularPackingBin(this, cloner);
+    }
+  }
+}
