Index: branches/HeuristicLab.BinPacking/HeuristicLab.Problems.BinPacking/3.3/PackingBin/RectangularPackingBin.cs
===================================================================
--- branches/HeuristicLab.BinPacking/HeuristicLab.Problems.BinPacking/3.3/PackingBin/RectangularPackingBin.cs	(revision 13478)
+++ branches/HeuristicLab.BinPacking/HeuristicLab.Problems.BinPacking/3.3/PackingBin/RectangularPackingBin.cs	(revision 13497)
@@ -32,8 +32,5 @@
 
     public RectangularPackingBin(int width, int height) : base(width, height) { }
-    public RectangularPackingBin()
-      : base() {
-
-    }
+    public RectangularPackingBin() : base() { }
 
     [StorableConstructor]
Index: branches/HeuristicLab.BinPacking/HeuristicLab.Problems.BinPacking/3.3/PackingItem/CuboidPackingItem.cs
===================================================================
--- branches/HeuristicLab.BinPacking/HeuristicLab.Problems.BinPacking/3.3/PackingItem/CuboidPackingItem.cs	(revision 13478)
+++ branches/HeuristicLab.BinPacking/HeuristicLab.Problems.BinPacking/3.3/PackingItem/CuboidPackingItem.cs	(revision 13497)
@@ -29,11 +29,16 @@
 
 namespace HeuristicLab.Problems.BinPacking.PackingItem {
-  [Item ("CuboidPackingItem", "Represents a cuboidic packing-item for bin-packing problems.")]
+  [Item("CuboidPackingItem", "Represents a cuboidic packing-item for bin-packing problems.")]
   [StorableClass]
   public class CuboidPackingItem : CuboidPackingShape, IPackingItem {
+    [Storable]
+    public CuboidPackingBin TargetBin { get; set; }
 
-    public CuboidPackingBin TargetBin { get; set; }
+    [Storable]
     public double Weight { get; set; }
+
+    [Storable]
     public int Material { get; set; }
+
     public bool SupportsStacking(IPackingItem other) {
       return ((other.Material < this.Material) || (other.Material.Equals(this.Material) && other.Weight <= this.Weight));
@@ -44,15 +49,25 @@
     protected CuboidPackingItem(CuboidPackingItem original, Cloner cloner)
       : base(original, cloner) {
-        this.Weight = original.Weight;
-        this.Material = original.Material;
+      this.Weight = original.Weight;
+      this.Material = original.Material;
+      this.TargetBin = cloner.Clone(TargetBin);
     }
     public override IDeepCloneable Clone(Cloner cloner) {
       return new CuboidPackingItem(this, cloner);
     }
-    public CuboidPackingItem() : base() {
+    public CuboidPackingItem()
+      : base() {
     }
 
-    public CuboidPackingItem(int width, int height, int depth, CuboidPackingBin targetBin, double weight, int material) : this(width, height, depth, targetBin) { this.Weight = weight; this.Material = material; }
-    public CuboidPackingItem(int width, int height, int depth, CuboidPackingBin targetBin) : base(width, height, depth) { this.TargetBin = new CuboidPackingBin(targetBin.Width, targetBin.Height, targetBin.Depth); }
+    public CuboidPackingItem(int width, int height, int depth, CuboidPackingBin targetBin, double weight, int material)
+      : this(width, height, depth, targetBin) {
+      this.Weight = weight;
+      this.Material = material;
+    }
+
+    public CuboidPackingItem(int width, int height, int depth, CuboidPackingBin targetBin)
+      : base(width, height, depth) {
+      this.TargetBin = (CuboidPackingBin)targetBin.Clone();
+    }
 
     public void AddTargetBinMeasures(int[] targetBinMeasures) {
@@ -61,5 +76,5 @@
 
     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}; w={3}, m={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 13478)
+++ branches/HeuristicLab.BinPacking/HeuristicLab.Problems.BinPacking/3.3/PackingItem/RectangularPackingItem.cs	(revision 13497)
@@ -33,7 +33,13 @@
   public class RectangularPackingItem : RectangularPackingShape, IPackingItem {
 
+    [Storable]
     public RectangularPackingBin TargetBin { get; set; }
+
+    [Storable]
     public double Weight { get; set; }
+
+    [Storable]
     public int Material { get; set; }
+
     public bool SupportsStacking(IPackingItem other) {
       return ((other.Material < this.Material) || (other.Material.Equals(this.Material) && other.Weight <= this.Weight));
@@ -46,4 +52,5 @@
       this.Weight = original.Weight;
       this.Material = original.Material;
+      this.TargetBin = cloner.Clone(TargetBin);
     }
     public override IDeepCloneable Clone(Cloner cloner) {
@@ -54,5 +61,8 @@
     }
 
-    public RectangularPackingItem(int width, int height, RectangularPackingBin targetBin) : base(width, height) { this.TargetBin = new RectangularPackingBin(targetBin.Width, targetBin.Height); }
+    public RectangularPackingItem(int width, int height, RectangularPackingBin targetBin)
+      : base(width, height) {
+      this.TargetBin = (RectangularPackingBin)targetBin.Clone();
+    }
 
     public void AddTargetBinMeasures(int[] targetBinMeasures) {
Index: branches/HeuristicLab.BinPacking/HeuristicLab.Problems.BinPacking/3.3/Shapes/CuboidPackingShape.cs
===================================================================
--- branches/HeuristicLab.BinPacking/HeuristicLab.Problems.BinPacking/3.3/Shapes/CuboidPackingShape.cs	(revision 13478)
+++ branches/HeuristicLab.BinPacking/HeuristicLab.Problems.BinPacking/3.3/Shapes/CuboidPackingShape.cs	(revision 13497)
@@ -21,4 +21,5 @@
 
 using System;
+using System.Diagnostics;
 using HeuristicLab.Problems.BinPacking.Interfaces;
 using HeuristicLab.Core;
@@ -148,7 +149,7 @@
 
     public int CompareTo(object obj) {
-      if (obj.GetType() == this.GetType())
-        return this.CompareTo((CuboidPackingShape)obj);
-      else return 0;
+      var other = (CuboidPackingShape)obj;
+      if (other != null) return CompareTo(other);
+      else throw new ArgumentException(string.Format("Cannot compare with object {0}", obj), "obj");
     }
 
Index: branches/HeuristicLab.BinPacking/HeuristicLab.Problems.BinPacking/3.3/Shapes/PackingShape.cs
===================================================================
--- branches/HeuristicLab.BinPacking/HeuristicLab.Problems.BinPacking/3.3/Shapes/PackingShape.cs	(revision 13478)
+++ branches/HeuristicLab.BinPacking/HeuristicLab.Problems.BinPacking/3.3/Shapes/PackingShape.cs	(revision 13497)
@@ -30,17 +30,17 @@
   [Item("PackingShape", "Represents an abstract shape to describe the measures and the positioning of objects related to bin-packing problems.")]
   [StorableClass]
-  public abstract class PackingShape<D> : Item, IPackingShape
-    where D : class, IPackingDimensions {
+  public abstract class PackingShape<T> : Item, IPackingShape
+    where T : class, IPackingDimensions {
     public static Type PositionType {
-      get { return typeof(D); }
+      get { return typeof(T); }
     }
 
-    public abstract bool EnclosesPoint(D myPosition, D checkedPoint);
-    public abstract bool Encloses(D checkedPosition, PackingShape<D> checkedShape);
-    public abstract bool Overlaps(D myPosition, D checkedPosition, PackingShape<D> checkedShape);
+    public abstract bool EnclosesPoint(T myPosition, T checkedPoint);
+    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 D Origin { get; }
+    public abstract T Origin { get; }
 
     protected PackingShape(int[] measures) {
@@ -53,5 +53,5 @@
     [StorableConstructor]
     protected PackingShape(bool deserializing) : base(deserializing) { }
-    protected PackingShape(PackingShape<D> original, Cloner cloner)
+    protected PackingShape(PackingShape<T> original, Cloner cloner)
       : base(original, cloner) {
     }
Index: branches/HeuristicLab.BinPacking/HeuristicLab.Problems.BinPacking/3.3/Shapes/RectangularPackingShape.cs
===================================================================
--- branches/HeuristicLab.BinPacking/HeuristicLab.Problems.BinPacking/3.3/Shapes/RectangularPackingShape.cs	(revision 13478)
+++ branches/HeuristicLab.BinPacking/HeuristicLab.Problems.BinPacking/3.3/Shapes/RectangularPackingShape.cs	(revision 13497)
@@ -33,12 +33,7 @@
   public abstract class RectangularPackingShape : PackingShape<TwoDimensionalPacking>, IRegularPackingShape, IComparable<RectangularPackingShape> {
     #region Properties
-    /// <summary>
-    /// Describes the size on the Y-axis
-    /// </summary> 
     [Storable]
     public int Height { get; set; }
-    /// <summary>
-    /// Describes the size on the X-axis
-    /// </summary>  
+
     [Storable]
     public int Width { get; set; }
@@ -60,7 +55,7 @@
     private bool Encloses(TwoDimensionalPacking checkedPosition, RectangularPackingShape checkedShape) {
       return Encloses(new RectangleDiagonal(this), new RectangleDiagonal(checkedPosition, checkedShape));
-    }       
+    }
     private bool Encloses(RectangleDiagonal r1, RectangleDiagonal r2) {
-      return  ( r1.x1 <= r2.x1 &&
+      return (r1.x1 <= r2.x1 &&
                 r1.x2 >= r2.x2 &&
                 r1.y1 <= r2.y1 &&
@@ -71,6 +66,6 @@
       return Overlaps(myPosition, checkedPosition, (RectangularPackingShape)checkedShape);
     }
-    private bool Overlaps(TwoDimensionalPacking myPosition, TwoDimensionalPacking checkedPosition, RectangularPackingShape checkedShape) {    
-      return Overlaps(new RectangleDiagonal (myPosition, this),new RectangleDiagonal (checkedPosition, checkedShape));
+    private bool Overlaps(TwoDimensionalPacking myPosition, TwoDimensionalPacking checkedPosition, RectangularPackingShape checkedShape) {
+      return Overlaps(new RectangleDiagonal(myPosition, this), new RectangleDiagonal(checkedPosition, checkedShape));
     }
     private bool Overlaps(RectangleDiagonal r1, RectangleDiagonal r2) {
@@ -90,5 +85,7 @@
     #endregion
 
-    public RectangularPackingShape(int width, int height) : base () {
+    protected RectangularPackingShape() : base() { }
+    protected RectangularPackingShape(int width, int height)
+      : base() {
       this.Height = height;
       this.Width = width;
@@ -101,7 +98,5 @@
       this.Height = measures[1];
     }
-    public override int[] ToArray() {
-      return new int[] { Width, Height };
-    }
+
 
     [StorableConstructor]
@@ -112,5 +107,4 @@
       this.Height = original.Height;
     }
-    public RectangularPackingShape() : base() {}
 
     public override string ToString() {
@@ -124,5 +118,5 @@
       if (result == 0) {
         result = this.Width.CompareTo(other.Width);
-        if (result == 0) 
+        if (result == 0)
           result = this.Height.CompareTo(other.Height);
       }
@@ -131,10 +125,14 @@
 
     public int CompareTo(object obj) {
-      if (obj.GetType().Equals(this.GetType()))
-        return this.CompareTo((RectangularPackingShape)obj);
-      else return 0;
+      var other = obj as RectangularPackingShape;
+      if (other != null) return CompareTo(other);
+      else throw new ArgumentException(string.Format("Cannot compare to object {0}", obj), "obj");
     }
 
     #endregion
+
+    public override int[] ToArray() {
+      return new int[] { Width, Height };
+    }
 
     private struct RectangleDiagonal {
Index: branches/HeuristicLab.BinPacking/PackingPlanVisualizations/2D/CenteredContainer2D.cs
===================================================================
--- branches/HeuristicLab.BinPacking/PackingPlanVisualizations/2D/CenteredContainer2D.cs	(revision 13478)
+++ branches/HeuristicLab.BinPacking/PackingPlanVisualizations/2D/CenteredContainer2D.cs	(revision 13497)
@@ -31,8 +31,4 @@
     private float yScaling;
     private readonly List<PackingItem> packingItems = new List<PackingItem>();
-
-    //public Vector2 ContainerCenter {
-    //  get { return new Vector2(controlSize.X / 2, controlSize.Y / 2); }
-    //}
 
     private struct PackingItem {
Index: branches/HeuristicLab.BinPacking/PackingPlanVisualizations/2D/PackingPlan2D.cs
===================================================================
--- branches/HeuristicLab.BinPacking/PackingPlanVisualizations/2D/PackingPlan2D.cs	(revision 13478)
+++ branches/HeuristicLab.BinPacking/PackingPlanVisualizations/2D/PackingPlan2D.cs	(revision 13497)
@@ -33,28 +33,23 @@
 namespace PackingPlanVisualizations {
   public partial class PackingPlan2D : UserControl {
-    WindowRenderTarget wndRender = null;
-    Factory2D1 factory = new Factory2D1(FactoryType2D1.SingleThreaded);
-    SharpDX.DirectWrite.Factory dwFactory = new SharpDX.DirectWrite.Factory(SharpDX.DirectWrite.FactoryType.Shared);
-    RenderTargetProperties rndTargProperties = new RenderTargetProperties(new PixelFormat(Format.B8G8R8A8_UNorm, AlphaMode.Premultiplied));
-    HwndRenderTargetProperties hwndProperties = new HwndRenderTargetProperties();
+    private WindowRenderTarget wndRender;
+    private readonly Factory2D1 factory = new Factory2D1(FactoryType2D1.SingleThreaded);
+    private readonly SharpDX.DirectWrite.Factory dwFactory = new SharpDX.DirectWrite.Factory(SharpDX.DirectWrite.FactoryType.Shared);
+    private readonly RenderTargetProperties rndTargProperties = new RenderTargetProperties(new PixelFormat(Format.B8G8R8A8_UNorm, AlphaMode.Premultiplied));
+    private HwndRenderTargetProperties hwndProperties;
 
 
-    #region Packing members BEGIN
-    SolidColorBrush containerBrush;
-    SolidColorBrush containerFillingBrush;
-    SolidColorBrush itemBrush;
-    SolidColorBrush itemFillingBrush;
-    SolidColorBrush labelBrush;
-    TextFormat textFormat;
+    private SolidColorBrush containerBrush;
+    private SolidColorBrush containerFillingBrush;
+    private SolidColorBrush itemBrush;
+    private SolidColorBrush itemFillingBrush;
+    private SolidColorBrush labelBrush;
+    private TextFormat textFormat;
 
-    CenteredContainer2D container;
-    #endregion
-
-    //Initialization-Methods
+    private CenteredContainer2D container;
 
     public PackingPlan2D() {
       InitializeComponent();
-      this.SetStyle(
-        ControlStyles.ResizeRedraw, true);
+      this.SetStyle(ControlStyles.ResizeRedraw, true);
     }
 
@@ -74,9 +69,4 @@
     }
 
-
-
-
-
-    //Packing-Methods
     public void InitializeContainer(float width, float height) {
       container = new CenteredContainer2D(new Vector2(Math.Max(this.Width - 12, 1), Math.Max(this.Height - 12, 1)), new Vector2(width, height));
@@ -86,6 +76,4 @@
       container.AddItem(new Vector2(width, height), new Vector2(x, y), label);
     }
-
-    //Event-Listeners
 
     private void PackingPlan2D_Load(object sender, EventArgs e) {
@@ -119,5 +107,4 @@
         wndRender.Resize(new Size2(this.Width, this.Height));
     }
-
   }
 }
Index: branches/HeuristicLab.BinPacking/PackingPlanVisualizations/3D/BasicCuboidShape.cs
===================================================================
--- branches/HeuristicLab.BinPacking/PackingPlanVisualizations/3D/BasicCuboidShape.cs	(revision 13478)
+++ branches/HeuristicLab.BinPacking/PackingPlanVisualizations/3D/BasicCuboidShape.cs	(revision 13497)
@@ -27,23 +27,18 @@
 
   public class BasicCuboidShape {
-    //Basic information
-    private readonly Vector3 shapeSize;
-    public Vector3 ShapeSize { get { return shapeSize; } }
-    private readonly Vector3 shapePosition;
-    public Vector3 ShapePosition { get { return shapePosition; } }
-    private readonly int shapeID;
-    public int ShapeID { get { return shapeID; } }
-    public int Material { get; set; }
+    public Vector3 ShapeSize { get; private set; }
+    public Vector3 ShapePosition { get; private set; }
+    public int ShapeID { get; private set; }
+    public int Material { get; private set; }
 
 
-    //Vertices
     private VertexPositionColorNormal[] shapeTriangleVertices;
     private VertexPositionColorNormal[] shapeLineVertices;
 
     public BasicCuboidShape(Vector3 size, Vector3 position, int shapeNr, int material) {
-      shapeSize = size;
-      shapePosition = position;
-      shapeID = shapeNr;
-      this.Material = material;
+      ShapeSize = size;
+      ShapePosition = position;
+      ShapeID = shapeNr;
+      Material = material;
     }
     public BasicCuboidShape(Vector3 size, int shapeNr) : this(size, new Vector3(0, 0, 0), shapeNr, 0) { }
@@ -53,9 +48,8 @@
     }
     public void RenderShapeLines(GraphicsDevice device, Color color) {
-      shapeLineVertices = (new CuboidShapePreparations(shapeSize, shapePosition, color)).CreateVertexDefinitionsForEdgeLines();
-      Buffer<VertexPositionColorNormal> shapeLineBuffer = Buffer.Vertex.New(
-          device,
-          shapeLineVertices);
-      VertexInputLayout inputLayoutLine = VertexInputLayout.FromBuffer(0, shapeLineBuffer);
+      shapeLineVertices =
+        new CuboidShapePreparations(ShapeSize, ShapePosition, color).CreateVertexDefinitionsForEdgeLines();
+      var shapeLineBuffer = Buffer.Vertex.New(device, shapeLineVertices);
+      var inputLayoutLine = VertexInputLayout.FromBuffer(0, shapeLineBuffer);
 
       device.SetVertexBuffer(shapeLineBuffer);
@@ -69,9 +63,8 @@
 
     public void RenderShapeTriangles(GraphicsDevice device, Color color) {
-      shapeTriangleVertices = (new CuboidShapePreparations(shapeSize, shapePosition, color)).CreateVertexDefinitionsForTriangles();
-      Buffer<VertexPositionColorNormal> shapeTriangleBuffer = Buffer.Vertex.New(
-          device,
-          shapeTriangleVertices);
-      VertexInputLayout inputLayoutTriangles = VertexInputLayout.FromBuffer(0, shapeTriangleBuffer);
+      shapeTriangleVertices =
+        new CuboidShapePreparations(ShapeSize, ShapePosition, color).CreateVertexDefinitionsForTriangles();
+      var shapeTriangleBuffer = Buffer.Vertex.New(device, shapeTriangleVertices);
+      var inputLayoutTriangles = VertexInputLayout.FromBuffer(0, shapeTriangleBuffer);
 
       device.SetVertexBuffer(shapeTriangleBuffer);
@@ -86,5 +79,5 @@
 
     public Vector3 CalculatePositionRelativeToBottomLeftBackCorner(Vector3 itemSize, Vector3 itemPosition) {
-      Vector3 newPosition = itemPosition - (shapeSize / 2 - itemSize / 2);
+      Vector3 newPosition = itemPosition - (ShapeSize / 2 - itemSize / 2);
       return newPosition;
     }
Index: branches/HeuristicLab.BinPacking/PackingPlanVisualizations/3D/CenteredContainer.cs
===================================================================
--- branches/HeuristicLab.BinPacking/PackingPlanVisualizations/3D/CenteredContainer.cs	(revision 13478)
+++ branches/HeuristicLab.BinPacking/PackingPlanVisualizations/3D/CenteredContainer.cs	(revision 13497)
@@ -27,12 +27,13 @@
 
   public class CenteredContainer {
-    private readonly BasicCuboidShape container;
-    private readonly List<BasicCuboidShape> packingItems;
+    public BasicCuboidShape Container { get; private set; }
+    public List<BasicCuboidShape> PackingItems { get; private set; }
+
     private readonly float normalizingFactor;
 
     public CenteredContainer(BasicCuboidShape container) {
       normalizingFactor = CalculateNormalizingFactor(container);
-      this.container = Normalize (container);
-      packingItems = new List<BasicCuboidShape>();
+      Container = Normalize(container);
+      PackingItems = new List<BasicCuboidShape>();
     }
 
@@ -45,20 +46,10 @@
     }
 
-
-
-    public BasicCuboidShape Container {
-      get { return container; }
-    }
-    public List<BasicCuboidShape> PackingItems {
-      get { return packingItems; }
-    }
-
-
     public void AddPackingItem(Vector3 size, Vector3 position, int index, int material) {
-      Vector3 itemSize = size * normalizingFactor;
-      Vector3 itemPosition = position * normalizingFactor;
-      Vector3 actualPosition = container.CalculatePositionRelativeToBottomLeftBackCorner(itemSize, itemPosition);
-      BasicCuboidShape itemShape = new BasicCuboidShape(itemSize, actualPosition, index, material); 
-      packingItems.Add(itemShape);
+      var itemSize = size * normalizingFactor;
+      var itemPosition = position * normalizingFactor;
+      var actualPosition = Container.CalculatePositionRelativeToBottomLeftBackCorner(itemSize, itemPosition);
+      var itemShape = new BasicCuboidShape(itemSize, actualPosition, index, material);
+      PackingItems.Add(itemShape);
     }
   }
Index: branches/HeuristicLab.BinPacking/PackingPlanVisualizations/3D/CuboidShapePreparations.cs
===================================================================
--- branches/HeuristicLab.BinPacking/PackingPlanVisualizations/3D/CuboidShapePreparations.cs	(revision 13497)
+++ branches/HeuristicLab.BinPacking/PackingPlanVisualizations/3D/CuboidShapePreparations.cs	(revision 13497)
@@ -0,0 +1,229 @@
+﻿#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 SharpDX;
+
+namespace PackingPlanVisualizations {
+  public class CuboidShapePreparations {
+
+    #region Private Members
+    //Define the shape in a way so that the position is in the center of the shape.
+    //Define the 8 defining points of the cube
+    private readonly Vector3 topLeftFront;
+    private readonly Vector3 bottomLeftFront;
+    private readonly Vector3 topRightFront;
+    private readonly Vector3 bottomRightFront;
+    private readonly Vector3 topLeftBack;
+    private readonly Vector3 topRightBack;
+    private readonly Vector3 bottomLeftBack;
+    private readonly Vector3 bottomRightBack;
+
+    //Define normal vectors of the 6 surfaces
+    private readonly Vector3 frontNormal;
+    private readonly Vector3 backNormal;
+    private readonly Vector3 topNormal;
+    private readonly Vector3 bottomNormal;
+    private readonly Vector3 leftNormal;
+    private readonly Vector3 rightNormal;
+
+    //Define colors of the 6 surfaces
+    private readonly Color frontColor = Color.Black;
+    private readonly Color backColor = Color.Black;
+    private readonly Color topColor = Color.Black;
+    private readonly Color bottomColor = Color.Black;
+    private readonly Color leftColor = Color.Black;
+    private readonly Color rightColor = Color.Black;
+
+    #endregion Private Members
+
+
+    public CuboidShapePreparations(Vector3 shapeSize, Vector3 shapePosition) : this(shapeSize, shapePosition, Color.Black) { }
+    public CuboidShapePreparations(Vector3 shapeSize, Vector3 shapePosition, Color color) {
+      var halfShapeSize = shapeSize / 2;
+      //Define the shape in a way so that the position is in the center of the shape.
+      //Define the 8 defining points of the cube
+      topLeftFront = shapePosition + new Vector3(-1.0f, 1.0f, 1.0f) * halfShapeSize;
+      bottomLeftFront = shapePosition + new Vector3(-1.0f, -1.0f, 1.0f) * halfShapeSize;
+      topRightFront = shapePosition + new Vector3(1.0f, 1.0f, 1.0f) * halfShapeSize;
+      bottomRightFront = shapePosition + new Vector3(1.0f, -1.0f, 1.0f) * halfShapeSize;
+      topLeftBack = shapePosition + new Vector3(-1.0f, 1.0f, -1.0f) * halfShapeSize;
+      topRightBack = shapePosition + new Vector3(1.0f, 1.0f, -1.0f) * halfShapeSize;
+      bottomLeftBack = shapePosition + new Vector3(-1.0f, -1.0f, -1.0f) * halfShapeSize;
+      bottomRightBack = shapePosition + new Vector3(1.0f, -1.0f, -1.0f) * halfShapeSize;
+
+      //Define normal vectors of the 6 surfaces
+      frontNormal = new Vector3(0.0f, 0.0f, 1.0f) * halfShapeSize;
+      backNormal = new Vector3(0.0f, 0.0f, -1.0f) * halfShapeSize;
+      topNormal = new Vector3(0.0f, 1.0f, 0.0f) * halfShapeSize;
+      bottomNormal = new Vector3(0.0f, -1.0f, 0.0f) * halfShapeSize;
+      leftNormal = new Vector3(-1.0f, 0.0f, 0.0f) * halfShapeSize;
+      rightNormal = new Vector3(1.0f, 0.0f, 0.0f) * halfShapeSize;
+
+      //Define colors of the 6 surfaces
+      frontColor = color;
+      backColor = color;
+      topColor = color;
+      bottomColor = color;
+      leftColor = color;
+      rightColor = color;
+    }
+
+    public VertexPositionColorNormal[] CreateVertexDefinitionsForTriangles() {
+      //Definition of the actual triangles
+      VertexPositionColorNormal[] shapeVertices = new VertexPositionColorNormal[36];
+
+      // Front face.
+      shapeVertices[0] = new VertexPositionColorNormal(frontColor, topLeftFront, frontNormal);
+      shapeVertices[1] = new VertexPositionColorNormal(frontColor, bottomLeftFront, frontNormal);
+      shapeVertices[2] = new VertexPositionColorNormal(frontColor, topRightFront, frontNormal);
+
+      shapeVertices[3] = new VertexPositionColorNormal(frontColor, bottomLeftFront, frontNormal);
+      shapeVertices[4] = new VertexPositionColorNormal(frontColor, bottomRightFront, frontNormal);
+      shapeVertices[5] = new VertexPositionColorNormal(frontColor, topRightFront, frontNormal);
+
+
+      // Back face.
+      shapeVertices[6] = new VertexPositionColorNormal(backColor, topLeftBack, backNormal);
+      shapeVertices[7] = new VertexPositionColorNormal(backColor, topRightBack, backNormal);
+      shapeVertices[8] = new VertexPositionColorNormal(backColor, bottomLeftBack, backNormal);
+
+      shapeVertices[9] = new VertexPositionColorNormal(backColor, bottomLeftBack, backNormal);
+      shapeVertices[10] = new VertexPositionColorNormal(backColor, topRightBack, backNormal);
+      shapeVertices[11] = new VertexPositionColorNormal(backColor, bottomRightBack, backNormal);
+
+
+      // Top face.
+      shapeVertices[12] = new VertexPositionColorNormal(topColor, topLeftFront, topNormal);
+      shapeVertices[13] = new VertexPositionColorNormal(topColor, topRightBack, topNormal);
+      shapeVertices[14] = new VertexPositionColorNormal(topColor, topLeftBack, topNormal);
+
+      shapeVertices[15] = new VertexPositionColorNormal(topColor, topLeftFront, topNormal);
+      shapeVertices[16] = new VertexPositionColorNormal(topColor, topRightFront, topNormal);
+      shapeVertices[17] = new VertexPositionColorNormal(topColor, topRightBack, topNormal);
+
+
+      // Bottom face. 
+      shapeVertices[18] = new VertexPositionColorNormal(bottomColor, bottomLeftFront, bottomNormal);
+      shapeVertices[19] = new VertexPositionColorNormal(bottomColor, bottomLeftBack, bottomNormal);
+      shapeVertices[20] = new VertexPositionColorNormal(bottomColor, bottomRightBack, bottomNormal);
+
+      shapeVertices[21] = new VertexPositionColorNormal(bottomColor, bottomLeftFront, bottomNormal);
+      shapeVertices[22] = new VertexPositionColorNormal(bottomColor, bottomRightBack, bottomNormal);
+      shapeVertices[23] = new VertexPositionColorNormal(bottomColor, bottomRightFront, bottomNormal);
+
+
+      // Left face.
+      shapeVertices[24] = new VertexPositionColorNormal(leftColor, topLeftFront, leftNormal);
+      shapeVertices[25] = new VertexPositionColorNormal(leftColor, bottomLeftBack, leftNormal);
+      shapeVertices[26] = new VertexPositionColorNormal(leftColor, bottomLeftFront, leftNormal);
+
+      shapeVertices[27] = new VertexPositionColorNormal(leftColor, topLeftBack, leftNormal);
+      shapeVertices[28] = new VertexPositionColorNormal(leftColor, bottomLeftBack, leftNormal);
+      shapeVertices[29] = new VertexPositionColorNormal(leftColor, topLeftFront, leftNormal);
+
+
+      // Right face. 
+      shapeVertices[30] = new VertexPositionColorNormal(rightColor, topRightFront, rightNormal);
+      shapeVertices[31] = new VertexPositionColorNormal(rightColor, bottomRightFront, rightNormal);
+      shapeVertices[32] = new VertexPositionColorNormal(rightColor, bottomRightBack, rightNormal);
+
+      shapeVertices[33] = new VertexPositionColorNormal(rightColor, topRightBack, rightNormal);
+      shapeVertices[34] = new VertexPositionColorNormal(rightColor, topRightFront, rightNormal);
+      shapeVertices[35] = new VertexPositionColorNormal(rightColor, bottomRightBack, rightNormal);
+
+      return shapeVertices;
+    }
+
+    public VertexPositionColorNormal[] CreateVertexDefinitionsForEdgeLines() {
+      return CreateVertexDefinitionsForEdgeLines(frontColor);
+    }
+
+    public VertexPositionColorNormal[] CreateVertexDefinitionsForEdgeLines(Color color) {
+      //Definition of the actual lines
+      var shapeVertices = new VertexPositionColorNormal[48];
+
+      var topRightFrontNormal = (topNormal + rightNormal + frontNormal) / 3;
+      var topRightBackNormal = (topNormal + rightNormal + backNormal) / 3;
+      var topLeftFrontNormal = (topNormal + leftNormal + frontNormal) / 3;
+      var topLeftBackNormal = (topNormal + leftNormal + backNormal) / 3;
+      var bottomRightFrontNormal = (topNormal + rightNormal + frontNormal) / 3;
+      var bottomRightBackNormal = (topNormal + rightNormal + backNormal) / 3;
+      var bottomLeftFrontNormal = (topNormal + leftNormal + frontNormal) / 3;
+      var bottomLeftBackNormal = (topNormal + leftNormal + backNormal) / 3;
+
+      shapeVertices[0] = new VertexPositionColorNormal(color, topRightFront, topRightFrontNormal);
+      shapeVertices[1] = new VertexPositionColorNormal(color, topLeftFront, topLeftFrontNormal);
+      shapeVertices[2] = new VertexPositionColorNormal(color, topLeftFront, topLeftFrontNormal);
+      shapeVertices[3] = new VertexPositionColorNormal(color, bottomLeftFront, bottomLeftFrontNormal);
+      shapeVertices[4] = new VertexPositionColorNormal(color, bottomLeftFront, bottomLeftFrontNormal);
+      shapeVertices[5] = new VertexPositionColorNormal(color, bottomRightFront, bottomRightFrontNormal);
+      shapeVertices[6] = new VertexPositionColorNormal(color, bottomRightFront, bottomRightFrontNormal);
+      shapeVertices[7] = new VertexPositionColorNormal(color, topRightFront, topRightFrontNormal);
+
+      shapeVertices[8] = new VertexPositionColorNormal(color, topRightBack, topRightBackNormal);
+      shapeVertices[9] = new VertexPositionColorNormal(color, topLeftBack, topLeftBackNormal);
+      shapeVertices[10] = new VertexPositionColorNormal(color, topLeftBack, topLeftBackNormal);
+      shapeVertices[11] = new VertexPositionColorNormal(color, bottomLeftBack, bottomLeftBackNormal);
+      shapeVertices[12] = new VertexPositionColorNormal(color, bottomLeftBack, bottomLeftBackNormal);
+      shapeVertices[13] = new VertexPositionColorNormal(color, bottomRightBack, bottomRightBackNormal);
+      shapeVertices[14] = new VertexPositionColorNormal(color, bottomRightBack, bottomRightBackNormal);
+      shapeVertices[15] = new VertexPositionColorNormal(color, topRightBack, topRightBackNormal);
+
+      shapeVertices[16] = new VertexPositionColorNormal(color, topLeftFront, topLeftFrontNormal);
+      shapeVertices[17] = new VertexPositionColorNormal(color, topLeftBack, topLeftBackNormal);
+      shapeVertices[18] = new VertexPositionColorNormal(color, topRightFront, topRightFrontNormal);
+      shapeVertices[19] = new VertexPositionColorNormal(color, topRightBack, topRightBackNormal);
+      shapeVertices[20] = new VertexPositionColorNormal(color, topLeftFront, topLeftFrontNormal);
+      shapeVertices[21] = new VertexPositionColorNormal(color, topRightFront, topRightFrontNormal);
+      shapeVertices[22] = new VertexPositionColorNormal(color, topRightBack, topRightBackNormal);
+      shapeVertices[23] = new VertexPositionColorNormal(color, topLeftBack, topLeftBackNormal);
+
+      shapeVertices[24] = new VertexPositionColorNormal(color, bottomLeftFront, bottomLeftFrontNormal);
+      shapeVertices[25] = new VertexPositionColorNormal(color, bottomRightFront, bottomRightFrontNormal);
+      shapeVertices[26] = new VertexPositionColorNormal(color, bottomLeftBack, bottomLeftBackNormal);
+      shapeVertices[27] = new VertexPositionColorNormal(color, bottomRightBack, bottomRightBackNormal);
+      shapeVertices[28] = new VertexPositionColorNormal(color, bottomRightFront, bottomRightFrontNormal);
+      shapeVertices[29] = new VertexPositionColorNormal(color, bottomRightBack, bottomRightBackNormal);
+      shapeVertices[30] = new VertexPositionColorNormal(color, bottomLeftFront, bottomLeftFrontNormal);
+      shapeVertices[31] = new VertexPositionColorNormal(color, bottomLeftBack, bottomLeftBackNormal);
+
+      shapeVertices[32] = new VertexPositionColorNormal(color, topLeftFront, topLeftFrontNormal);
+      shapeVertices[33] = new VertexPositionColorNormal(color, topLeftBack, topLeftBackNormal);
+      shapeVertices[34] = new VertexPositionColorNormal(color, topLeftBack, topLeftBackNormal);
+      shapeVertices[35] = new VertexPositionColorNormal(color, bottomLeftBack, bottomLeftBackNormal);
+      shapeVertices[36] = new VertexPositionColorNormal(color, bottomLeftBack, bottomLeftBackNormal);
+      shapeVertices[37] = new VertexPositionColorNormal(color, bottomLeftFront, bottomLeftFrontNormal);
+      shapeVertices[38] = new VertexPositionColorNormal(color, bottomLeftFront, bottomLeftFrontNormal);
+      shapeVertices[39] = new VertexPositionColorNormal(color, topLeftFront, topLeftFrontNormal);
+
+      shapeVertices[40] = new VertexPositionColorNormal(color, topRightFront, topRightFrontNormal);
+      shapeVertices[41] = new VertexPositionColorNormal(color, topRightBack, topRightBackNormal);
+      shapeVertices[42] = new VertexPositionColorNormal(color, topRightBack, topRightBackNormal);
+      shapeVertices[43] = new VertexPositionColorNormal(color, bottomRightBack, bottomRightBackNormal);
+      shapeVertices[44] = new VertexPositionColorNormal(color, bottomRightBack, bottomRightBackNormal);
+      shapeVertices[45] = new VertexPositionColorNormal(color, bottomRightFront, bottomRightFrontNormal);
+      shapeVertices[46] = new VertexPositionColorNormal(color, bottomRightFront, bottomRightFrontNormal);
+      shapeVertices[47] = new VertexPositionColorNormal(color, topRightFront, topRightFrontNormal);
+
+      return shapeVertices;
+    }
+  }
+}
Index: branches/HeuristicLab.BinPacking/PackingPlanVisualizations/3D/CuboidShapePreperations.cs
===================================================================
--- branches/HeuristicLab.BinPacking/PackingPlanVisualizations/3D/CuboidShapePreperations.cs	(revision 13478)
+++ 	(revision )
@@ -1,232 +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 SharpDX;
-
-namespace PackingPlanVisualizations {
-  public class CuboidShapePreparations {
-
-    #region Private Members 
-    //Define the shape in a way so that the position is in the center of the shape.
-    //Define the 8 defining points of the cube
-    Vector3 topLeftFront;
-    Vector3 bottomLeftFront;
-    Vector3 topRightFront;
-    Vector3 bottomRightFront;
-    Vector3 topLeftBack;
-    Vector3 topRightBack;
-    Vector3 bottomLeftBack;
-    Vector3 bottomRightBack;
-
-    //Define normal vectors of the 6 surfaces
-    Vector3 frontNormal;
-    Vector3 backNormal;
-    Vector3 topNormal;
-    Vector3 bottomNormal;
-    Vector3 leftNormal;
-    Vector3 rightNormal;
-
-    //Define colors of the 6 surfaces
-    Color frontColor = Color.Black;
-    Color backColor = Color.Black;
-    Color topColor = Color.Black;
-    Color bottomColor = Color.Black;
-    Color leftColor = Color.Black;
-    Color rightColor = Color.Black;
-
-    #endregion Private Members
-
-
-    public CuboidShapePreparations(Vector3 shapeSize, Vector3 shapePosition) : this (shapeSize, shapePosition, Color.Black) { }
-    public CuboidShapePreparations(Vector3 shapeSize, Vector3 shapePosition, Color color) {
-      var halfShapeSize = shapeSize / 2;
-      //Define the shape in a way so that the position is in the center of the shape.
-      //Define the 8 defining points of the cube
-      topLeftFront = shapePosition + new Vector3(-1.0f, 1.0f, 1.0f) * halfShapeSize;
-      bottomLeftFront = shapePosition + new Vector3(-1.0f, -1.0f, 1.0f) * halfShapeSize;
-      topRightFront = shapePosition + new Vector3(1.0f, 1.0f, 1.0f) * halfShapeSize;
-      bottomRightFront = shapePosition + new Vector3(1.0f, -1.0f, 1.0f) * halfShapeSize;
-      topLeftBack = shapePosition + new Vector3(-1.0f, 1.0f, -1.0f) * halfShapeSize;
-      topRightBack = shapePosition + new Vector3(1.0f, 1.0f, -1.0f) * halfShapeSize;
-      bottomLeftBack = shapePosition + new Vector3(-1.0f, -1.0f, -1.0f) * halfShapeSize;
-      bottomRightBack = shapePosition + new Vector3(1.0f, -1.0f, -1.0f) * halfShapeSize;
-
-      //Define normal vectors of the 6 surfaces
-      frontNormal = new Vector3(0.0f, 0.0f, 1.0f) * halfShapeSize;
-      backNormal = new Vector3(0.0f, 0.0f, -1.0f) * halfShapeSize;
-      topNormal = new Vector3(0.0f, 1.0f, 0.0f) * halfShapeSize;
-      bottomNormal = new Vector3(0.0f, -1.0f, 0.0f) * halfShapeSize;
-      leftNormal = new Vector3(-1.0f, 0.0f, 0.0f) * halfShapeSize;
-      rightNormal = new Vector3(1.0f, 0.0f, 0.0f) * halfShapeSize;
-
-      //Define colors of the 6 surfaces
-      frontColor = color;
-      backColor = color;
-      topColor = color;
-      bottomColor = color;
-      leftColor = color;
-      rightColor = color;
-
-    }
-
-    public VertexPositionColorNormal[] CreateVertexDefinitionsForTriangles () {
-      //Definition of the actual triangles
-      VertexPositionColorNormal[] shapeVertices = new VertexPositionColorNormal[36];
-
-      // Front face.
-      shapeVertices[0] = new VertexPositionColorNormal(frontColor, topLeftFront, frontNormal);
-      shapeVertices[1] = new VertexPositionColorNormal(frontColor, bottomLeftFront, frontNormal);
-      shapeVertices[2] = new VertexPositionColorNormal(frontColor, topRightFront, frontNormal);
-
-      shapeVertices[3] = new VertexPositionColorNormal(frontColor, bottomLeftFront, frontNormal);
-      shapeVertices[4] = new VertexPositionColorNormal(frontColor, bottomRightFront, frontNormal);
-      shapeVertices[5] = new VertexPositionColorNormal(frontColor, topRightFront, frontNormal);
-
-
-      // Back face.
-      shapeVertices[6] = new VertexPositionColorNormal(backColor, topLeftBack, backNormal);
-      shapeVertices[7] = new VertexPositionColorNormal(backColor, topRightBack, backNormal);
-      shapeVertices[8] = new VertexPositionColorNormal(backColor, bottomLeftBack, backNormal);
-
-      shapeVertices[9] = new VertexPositionColorNormal(backColor, bottomLeftBack, backNormal);
-      shapeVertices[10] = new VertexPositionColorNormal(backColor, topRightBack, backNormal);
-      shapeVertices[11] = new VertexPositionColorNormal(backColor, bottomRightBack, backNormal);
-
-
-      // Top face.
-      shapeVertices[12] = new VertexPositionColorNormal(topColor, topLeftFront, topNormal);
-      shapeVertices[13] = new VertexPositionColorNormal(topColor, topRightBack, topNormal);
-      shapeVertices[14] = new VertexPositionColorNormal(topColor, topLeftBack, topNormal);
-
-      shapeVertices[15] = new VertexPositionColorNormal(topColor, topLeftFront, topNormal);
-      shapeVertices[16] = new VertexPositionColorNormal(topColor, topRightFront, topNormal);
-      shapeVertices[17] = new VertexPositionColorNormal(topColor, topRightBack, topNormal);
-
-
-      // Bottom face. 
-      shapeVertices[18] = new VertexPositionColorNormal(bottomColor, bottomLeftFront, bottomNormal);
-      shapeVertices[19] = new VertexPositionColorNormal(bottomColor, bottomLeftBack, bottomNormal);
-      shapeVertices[20] = new VertexPositionColorNormal(bottomColor, bottomRightBack, bottomNormal);
-
-      shapeVertices[21] = new VertexPositionColorNormal(bottomColor, bottomLeftFront, bottomNormal);
-      shapeVertices[22] = new VertexPositionColorNormal(bottomColor, bottomRightBack, bottomNormal);
-      shapeVertices[23] = new VertexPositionColorNormal(bottomColor, bottomRightFront, bottomNormal);
-
-
-      // Left face.
-      shapeVertices[24] = new VertexPositionColorNormal(leftColor, topLeftFront, leftNormal);
-      shapeVertices[25] = new VertexPositionColorNormal(leftColor, bottomLeftBack, leftNormal);
-      shapeVertices[26] = new VertexPositionColorNormal(leftColor, bottomLeftFront, leftNormal);
-
-      shapeVertices[27] = new VertexPositionColorNormal(leftColor, topLeftBack, leftNormal);
-      shapeVertices[28] = new VertexPositionColorNormal(leftColor, bottomLeftBack, leftNormal);
-      shapeVertices[29] = new VertexPositionColorNormal(leftColor, topLeftFront, leftNormal);
-
-
-      // Right face. 
-      shapeVertices[30] = new VertexPositionColorNormal(rightColor, topRightFront, rightNormal);
-      shapeVertices[31] = new VertexPositionColorNormal(rightColor, bottomRightFront, rightNormal);
-      shapeVertices[32] = new VertexPositionColorNormal(rightColor, bottomRightBack, rightNormal);
-
-      shapeVertices[33] = new VertexPositionColorNormal(rightColor, topRightBack, rightNormal);
-      shapeVertices[34] = new VertexPositionColorNormal(rightColor, topRightFront, rightNormal);
-      shapeVertices[35] = new VertexPositionColorNormal(rightColor, bottomRightBack, rightNormal);
-
-      return shapeVertices;
-    }
-
-    public VertexPositionColorNormal[] CreateVertexDefinitionsForEdgeLines() {
-      return CreateVertexDefinitionsForEdgeLines(frontColor);
-    }
-
-    public VertexPositionColorNormal[] CreateVertexDefinitionsForEdgeLines(Color color) {
-      //Definition of the actual lines
-      VertexPositionColorNormal[] shapeVertices = new VertexPositionColorNormal[48];
-
-      Vector3 topRightFrontNormal = (topNormal + rightNormal + frontNormal) / 3;
-      Vector3 topRightBackNormal = (topNormal + rightNormal + backNormal) / 3;
-      Vector3 topLeftFrontNormal = (topNormal + leftNormal + frontNormal) / 3;
-      Vector3 topLeftBackNormal = (topNormal + leftNormal + backNormal) / 3;
-      Vector3 bottomRightFrontNormal = (topNormal + rightNormal + frontNormal) / 3;
-      Vector3 bottomRightBackNormal = (topNormal + rightNormal + backNormal) / 3;
-      Vector3 bottomLeftFrontNormal = (topNormal + leftNormal + frontNormal) / 3;
-      Vector3 bottomLeftBackNormal = (topNormal + leftNormal + backNormal) / 3;
-
-      shapeVertices[0] = new VertexPositionColorNormal(color, topRightFront, topRightFrontNormal);
-      shapeVertices[1] = new VertexPositionColorNormal(color, topLeftFront, topLeftFrontNormal);
-      shapeVertices[2] = new VertexPositionColorNormal(color, topLeftFront, topLeftFrontNormal);
-      shapeVertices[3] = new VertexPositionColorNormal(color, bottomLeftFront, bottomLeftFrontNormal);
-      shapeVertices[4] = new VertexPositionColorNormal(color, bottomLeftFront, bottomLeftFrontNormal);
-      shapeVertices[5] = new VertexPositionColorNormal(color, bottomRightFront, bottomRightFrontNormal);
-      shapeVertices[6] = new VertexPositionColorNormal(color, bottomRightFront, bottomRightFrontNormal);
-      shapeVertices[7] = new VertexPositionColorNormal(color, topRightFront, topRightFrontNormal);
-
-      shapeVertices[8] = new VertexPositionColorNormal(color, topRightBack, topRightBackNormal);
-      shapeVertices[9] = new VertexPositionColorNormal(color, topLeftBack, topLeftBackNormal);
-      shapeVertices[10] = new VertexPositionColorNormal(color, topLeftBack, topLeftBackNormal);
-      shapeVertices[11] = new VertexPositionColorNormal(color, bottomLeftBack, bottomLeftBackNormal);
-      shapeVertices[12] = new VertexPositionColorNormal(color, bottomLeftBack, bottomLeftBackNormal);
-      shapeVertices[13] = new VertexPositionColorNormal(color, bottomRightBack, bottomRightBackNormal);
-      shapeVertices[14] = new VertexPositionColorNormal(color, bottomRightBack, bottomRightBackNormal);
-      shapeVertices[15] = new VertexPositionColorNormal(color, topRightBack, topRightBackNormal);
-
-      shapeVertices[16] = new VertexPositionColorNormal(color, topLeftFront, topLeftFrontNormal);
-      shapeVertices[17] = new VertexPositionColorNormal(color, topLeftBack, topLeftBackNormal);
-      shapeVertices[18] = new VertexPositionColorNormal(color, topRightFront, topRightFrontNormal);
-      shapeVertices[19] = new VertexPositionColorNormal(color, topRightBack, topRightBackNormal);
-      shapeVertices[20] = new VertexPositionColorNormal(color, topLeftFront, topLeftFrontNormal);
-      shapeVertices[21] = new VertexPositionColorNormal(color, topRightFront, topRightFrontNormal);
-      shapeVertices[22] = new VertexPositionColorNormal(color, topRightBack, topRightBackNormal);
-      shapeVertices[23] = new VertexPositionColorNormal(color, topLeftBack, topLeftBackNormal);
-
-      shapeVertices[24] = new VertexPositionColorNormal(color, bottomLeftFront, bottomLeftFrontNormal);
-      shapeVertices[25] = new VertexPositionColorNormal(color, bottomRightFront, bottomRightFrontNormal);
-      shapeVertices[26] = new VertexPositionColorNormal(color, bottomLeftBack, bottomLeftBackNormal);
-      shapeVertices[27] = new VertexPositionColorNormal(color, bottomRightBack, bottomRightBackNormal);
-      shapeVertices[28] = new VertexPositionColorNormal(color, bottomRightFront, bottomRightFrontNormal);
-      shapeVertices[29] = new VertexPositionColorNormal(color, bottomRightBack, bottomRightBackNormal);
-      shapeVertices[30] = new VertexPositionColorNormal(color, bottomLeftFront, bottomLeftFrontNormal);
-      shapeVertices[31] = new VertexPositionColorNormal(color, bottomLeftBack, bottomLeftBackNormal);
-
-      shapeVertices[32] = new VertexPositionColorNormal(color, topLeftFront, topLeftFrontNormal);
-      shapeVertices[33] = new VertexPositionColorNormal(color, topLeftBack, topLeftBackNormal);
-      shapeVertices[34] = new VertexPositionColorNormal(color, topLeftBack, topLeftBackNormal);
-      shapeVertices[35] = new VertexPositionColorNormal(color, bottomLeftBack, bottomLeftBackNormal);
-      shapeVertices[36] = new VertexPositionColorNormal(color, bottomLeftBack, bottomLeftBackNormal);
-      shapeVertices[37] = new VertexPositionColorNormal(color, bottomLeftFront, bottomLeftFrontNormal);
-      shapeVertices[38] = new VertexPositionColorNormal(color, bottomLeftFront, bottomLeftFrontNormal);
-      shapeVertices[39] = new VertexPositionColorNormal(color, topLeftFront, topLeftFrontNormal);
-
-      shapeVertices[40] = new VertexPositionColorNormal(color, topRightFront, topRightFrontNormal);
-      shapeVertices[41] = new VertexPositionColorNormal(color, topRightBack, topRightBackNormal);
-      shapeVertices[42] = new VertexPositionColorNormal(color, topRightBack, topRightBackNormal);
-      shapeVertices[43] = new VertexPositionColorNormal(color, bottomRightBack, bottomRightBackNormal);
-      shapeVertices[44] = new VertexPositionColorNormal(color, bottomRightBack, bottomRightBackNormal);
-      shapeVertices[45] = new VertexPositionColorNormal(color, bottomRightFront, bottomRightFrontNormal);
-      shapeVertices[46] = new VertexPositionColorNormal(color, bottomRightFront, bottomRightFrontNormal);
-      shapeVertices[47] = new VertexPositionColorNormal(color, topRightFront, topRightFrontNormal);
-
-      return shapeVertices;
-    }
-
-
-  }
-}
Index: branches/HeuristicLab.BinPacking/PackingPlanVisualizations/3D/PackingGame.cs
===================================================================
--- branches/HeuristicLab.BinPacking/PackingPlanVisualizations/3D/PackingGame.cs	(revision 13478)
+++ branches/HeuristicLab.BinPacking/PackingPlanVisualizations/3D/PackingGame.cs	(revision 13497)
@@ -22,4 +22,5 @@
 using System;
 using System.Drawing.Printing;
+using System.Windows.Forms;
 using SharpDX;
 using SharpDX.Direct3D11;
@@ -65,8 +66,8 @@
       graphicsDeviceManager.PreparingDeviceSettings +=
         (object sender, PreparingDeviceSettingsEventArgs e) => {
-          e.GraphicsDeviceInformation.PresentationParameters.MultiSampleCount = MSAALevel.X4;
+          e.GraphicsDeviceInformation.PresentationParameters.MultiSampleCount = MSAALevel.X4;          
           return;
         };
-      var controlColor = Color.White;//System.Drawing.SystemColors.Control;
+      var controlColor = Color.White; // System.Drawing.SystemColors.Control;
       backgroundColor = new Color(controlColor.R, controlColor.G, controlColor.B, controlColor.A);
 
@@ -103,10 +104,10 @@
     protected override void Initialize() {
       base.Initialize();
-      initializeWorld();
+      InitializeWorld();
       previousMouseState = Mouse.GetState();
       Console.WriteLine("Initial bounds:" + Window.ClientBounds);
       this.Window.IsMouseVisible = true;
     }
-    private void initializeWorld() {
+    private void InitializeWorld() {
       #region Matrix-Initialization
       worldMatrix = Matrix.Identity;
@@ -233,5 +234,5 @@
 
     protected override void Update(GameTime gameTime) {
-      computeMouseHandling();
+      ComputeMouseHandling();
       base.Update(gameTime);
     }
@@ -242,13 +243,13 @@
     private Vector2 currentViewAngle = new Vector2(0, 0);
     #endregion Mouse-Handling Variables
-    private void computeMouseHandling() {
+    private void ComputeMouseHandling() {
       MouseState mouseState = Mouse.GetState();
 
-      computeLeftMouseBtnHandling(mouseState);
-      computeMouseWheelHandling(mouseState);
+      ComputeLeftMouseBtnHandling(mouseState);
+      ComputeMouseWheelHandling(mouseState);
 
       previousMouseState = mouseState;
     }
-    private void computeLeftMouseBtnHandling(MouseState mouseState) {
+    private void ComputeLeftMouseBtnHandling(MouseState mouseState) {
       //Left btn pressed
       if (mouseState.LeftButton.Down && (previousMouseState.LeftButton.Pressed || previousMouseState.LeftButton.Down)) {
@@ -268,5 +269,5 @@
       }
     }
-    private void computeMouseWheelHandling(MouseState mouseState) {
+    private void ComputeMouseWheelHandling(MouseState mouseState) {
       int curr = mouseState.WheelDelta;
       if (curr < 0 && zoom > 1) {
Index: branches/HeuristicLab.BinPacking/PackingPlanVisualizations/3D/PackingPlan3D.cs
===================================================================
--- branches/HeuristicLab.BinPacking/PackingPlanVisualizations/3D/PackingPlan3D.cs	(revision 13478)
+++ branches/HeuristicLab.BinPacking/PackingPlanVisualizations/3D/PackingPlan3D.cs	(revision 13497)
@@ -23,14 +23,19 @@
 using System.Windows.Forms;
 using System.Threading;
+using SharpDX.Toolkit;
+using SharpDX.Windows;
 
 
 namespace PackingPlanVisualizations {
   public partial class PackingPlan3D : UserControl {
-    private PackingGame game;
+    private readonly PackingGame game;
     private Thread gameLoopThread;
+    private RenderForm renderForm;
 
     public PackingPlan3D() {
       InitializeComponent();
-      if (!(System.Diagnostics.Process.GetCurrentProcess().ProcessName == "devenv")) {
+
+      using (var proc = System.Diagnostics.Process.GetCurrentProcess()) {
+        if (proc.ProcessName == "devenv") return;
         game = new PackingGame(this);
       }
@@ -39,5 +44,6 @@
 
     public void StartRendering() {
-      if (!(System.Diagnostics.Process.GetCurrentProcess().ProcessName == "devenv")) {
+      using (var proc = System.Diagnostics.Process.GetCurrentProcess()) {
+        if (proc.ProcessName == "devenv") return;
         if (!game.IsRunning)
           StartGameLoop();
@@ -55,5 +61,8 @@
                 new MethodInvoker(
                   () => {
-                    game.Run(this);
+                    var renderForm = new RenderForm("bla");
+                    var gameContext = new GameContext(renderForm);
+                    gameContext.UseApplicationDoEvents = false;
+                    game.Run(gameContext);
                   }
                 )
@@ -95,8 +104,16 @@
     private void PackingPlan3D_Resize(object sender, EventArgs e) {
       //this.Refresh();                                          
-      if (!(System.Diagnostics.Process.GetCurrentProcess().ProcessName == "devenv")) {
+      using (var proc = System.Diagnostics.Process.GetCurrentProcess()) {
+        if (proc.ProcessName == "devenv") return;
         game.SetSize(this.Width, this.Height);
       }
     }
+
+    private void PackingPlan3D_MouseEnter(object sender, EventArgs e) {
+    }
+
+    private void PackingPlan3D_MouseLeave(object sender, EventArgs e) {
+
+    }
   }
 }
Index: branches/HeuristicLab.BinPacking/PackingPlanVisualizations/PackingPlanVisualizations.csproj
===================================================================
--- branches/HeuristicLab.BinPacking/PackingPlanVisualizations/PackingPlanVisualizations.csproj	(revision 13478)
+++ branches/HeuristicLab.BinPacking/PackingPlanVisualizations/PackingPlanVisualizations.csproj	(revision 13497)
@@ -87,5 +87,5 @@
     <Compile Include="3D\BasicCuboidShape.cs" />
     <Compile Include="3D\CenteredContainer.cs" />
-    <Compile Include="3D\CuboidShapePreperations.cs" />
+    <Compile Include="3D\CuboidShapePreparations.cs" />
     <Compile Include="3D\PackingGame.cs" />
     <Compile Include="3D\PackingPlan3D.cs">
