From e018e3e028783558d3e71284aa44b9fac02c533c Mon Sep 17 00:00:00 2001
From: Lukas Ladenberger <lukas.ladenberger@googlemail.com>
Date: Mon, 5 Nov 2012 15:54:49 +0100
Subject: [PATCH] refactoring attribute handling

---
 .../editor/attribute/AbstractAttribute.java   |  20 +--
 .../gef/editor/attribute/AttributeBlocks.java |   4 +
 .../editor/attribute/AttributeFillColor.java  |   4 +
 .../editor/attribute/AttributeFillHeight.java |   4 +
 .../gef/editor/attribute/AttributeLights.java |   4 +
 .../attribute/AttributeMeasureInterval.java   |   4 +
 .../attribute/AttributeMeasureMaxPos.java     |   4 +
 .../attribute/AttributeShowMeasure.java       |   4 +
 .../attribute/AttributeSignalColor.java       |   4 +
 .../attribute/AttributeSwitchDirection.java   |   4 +
 .../attribute/AttributeSwitchPosition.java    |   5 +-
 .../attribute/AttributeTrackDirection.java    |   5 +-
 .../gef/editor/attribute/BAttributeAlpha.java |   4 +
 .../attribute/BAttributeBackgroundColor.java  |   4 +
 .../BAttributeBackgroundVisible.java          |   4 +
 .../attribute/BAttributeButtonGroup.java      |   4 +
 .../editor/attribute/BAttributeChecked.java   |   4 +
 .../editor/attribute/BAttributeColumns.java   |   4 +
 .../attribute/BAttributeConnection.java       |   4 +
 .../BAttributeConnectionSourceDecoration.java |   4 +
 .../BAttributeConnectionTargetDecoration.java |   4 +
 .../attribute/BAttributeCoordinates.java      |   4 +
 .../editor/attribute/BAttributeCustom.java    |   4 +
 .../editor/attribute/BAttributeDirection.java |   4 +
 .../editor/attribute/BAttributeEnabled.java   |   4 +
 .../attribute/BAttributeFalseValue.java       |  10 ++
 .../editor/attribute/BAttributeFillType.java  |   4 +
 .../gef/editor/attribute/BAttributeFont.java  |   4 +
 .../attribute/BAttributeForegroundColor.java  |   4 +
 .../editor/attribute/BAttributeHeight.java    |   4 +
 .../gef/editor/attribute/BAttributeID.java    |   4 +
 .../gef/editor/attribute/BAttributeImage.java |   4 +
 .../gef/editor/attribute/BAttributeLabel.java |   4 +
 .../editor/attribute/BAttributeLineStyle.java |   4 +
 .../editor/attribute/BAttributeLineWidth.java |   4 +
 .../gef/editor/attribute/BAttributeMain.java  |   4 +
 .../gef/editor/attribute/BAttributeMisc.java  |   4 +
 .../editor/attribute/BAttributeOffsetH.java   |   4 +
 .../editor/attribute/BAttributeOffsetV.java   |   4 +
 .../attribute/BAttributeOrientation.java      |   4 +
 .../attribute/BAttributeOutlineAlpha.java     |   4 +
 .../gef/editor/attribute/BAttributeRows.java  |   4 +
 .../gef/editor/attribute/BAttributeShape.java |   4 +
 .../gef/editor/attribute/BAttributeSize.java  |   4 +
 .../gef/editor/attribute/BAttributeText.java  |   4 +
 .../editor/attribute/BAttributeTextColor.java |   4 +
 .../editor/attribute/BAttributeTrueValue.java |   4 +
 .../gef/editor/attribute/BAttributeValue.java |   4 +
 .../editor/attribute/BAttributeVisible.java   |   4 +
 .../gef/editor/attribute/BAttributeWidth.java |   4 +
 .../gef/editor/attribute/BAttributeX.java     |   4 +
 .../gef/editor/attribute/BAttributeY.java     |   4 +
 .../internal/BControlPropertySource.java      |   3 +-
 .../gef/editor/model/BButton.java             |  31 ++--
 .../gef/editor/model/BCheckbox.java           |  30 +++-
 .../gef/editor/model/BComposite.java          |  10 +-
 .../gef/editor/model/BConnection.java         |  55 ++++---
 .../gef/editor/model/BControl.java            | 138 ++++++++----------
 .../gef/editor/model/BImage.java              |   6 +-
 .../gef/editor/model/BRadioButton.java        |  30 +++-
 .../gef/editor/model/BShape.java              |  32 ++--
 .../gef/editor/model/BTable.java              |  41 ++++--
 .../gef/editor/model/BTableCell.java          |  33 +++--
 .../gef/editor/model/BTableColumn.java        |  21 ++-
 .../bmotionstudio/gef/editor/model/BText.java |  23 +--
 .../gef/editor/model/BTextfield.java          |  15 +-
 .../bmotionstudio/gef/editor/model/Light.java |  42 ++++--
 .../gef/editor/model/Signal.java              |  19 ++-
 .../gef/editor/model/Switch.java              |  22 ++-
 .../bmotionstudio/gef/editor/model/Tank.java  |  27 ++--
 .../bmotionstudio/gef/editor/model/Track.java |  44 ++++--
 .../gef/editor/model/TrackNode.java           |  42 ++++--
 72 files changed, 638 insertions(+), 258 deletions(-)

diff --git a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/attribute/AbstractAttribute.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/attribute/AbstractAttribute.java
index a274533a..b34b32c1 100644
--- a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/attribute/AbstractAttribute.java
+++ b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/attribute/AbstractAttribute.java
@@ -14,6 +14,7 @@ import org.eclipse.ui.views.properties.IPropertyDescriptor;
 import org.eclipse.ui.views.properties.IPropertySource;
 import org.eclipse.ui.views.properties.PropertyDescriptor;
 
+import de.bmotionstudio.gef.editor.AttributeConstants;
 import de.bmotionstudio.gef.editor.model.BControl;
 
 /**
@@ -40,21 +41,14 @@ public abstract class AbstractAttribute implements IPropertySource, Cloneable {
 	// The current value of the attribute
 	private Object value;
 
-	public AbstractAttribute() {
+	public AbstractAttribute(Object value) {
+		this.value = value;
+		this.defaultValue = value;
+		this.group = AttributeConstants.ATTRIBUTE_MISC;
+		this.editable = true;
+		this.show = true;
 	}
 
-	// public AbstractAttribute(Object value) {
-	// this(value, true, true);
-	// }
-	//
-	// public AbstractAttribute(Object value, boolean isEditable,
-	// boolean showInPropertiesView) {
-	// this.value = value;
-	// this.initValue = value;
-	// this.editable = isEditable;
-	// this.show = showInPropertiesView;
-	// }
-
 	private Object readResolve() {
 		this.initValue = this.value;
 		return this;
diff --git a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/attribute/AttributeBlocks.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/attribute/AttributeBlocks.java
index 315644b9..c8bc0a27 100644
--- a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/attribute/AttributeBlocks.java
+++ b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/attribute/AttributeBlocks.java
@@ -13,6 +13,10 @@ import de.bmotionstudio.gef.editor.property.IntegerPropertyDescriptor;
 
 public class AttributeBlocks extends AbstractAttribute {
 
+	public AttributeBlocks(Object value) {
+		super(value);
+	}
+
 	public PropertyDescriptor preparePropertyDescriptor() {
 		IntegerPropertyDescriptor descriptor = new IntegerPropertyDescriptor(
 				getID(), getName());
diff --git a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/attribute/AttributeFillColor.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/attribute/AttributeFillColor.java
index cd80f70d..bf60950d 100644
--- a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/attribute/AttributeFillColor.java
+++ b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/attribute/AttributeFillColor.java
@@ -13,6 +13,10 @@ import org.eclipse.ui.views.properties.PropertyDescriptor;
 
 public class AttributeFillColor extends AbstractAttribute {
 
+	public AttributeFillColor(Object value) {
+		super(value);
+	}
+
 	public PropertyDescriptor preparePropertyDescriptor() {
 		return new ColorPropertyDescriptor(getID(), getName());
 	}
diff --git a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/attribute/AttributeFillHeight.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/attribute/AttributeFillHeight.java
index 9f01d0b6..87fd14a7 100644
--- a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/attribute/AttributeFillHeight.java
+++ b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/attribute/AttributeFillHeight.java
@@ -13,6 +13,10 @@ import de.bmotionstudio.gef.editor.property.IntegerPropertyDescriptor;
 
 public class AttributeFillHeight extends AbstractAttribute {
 
+	public AttributeFillHeight(Object value) {
+		super(value);
+	}
+
 	public PropertyDescriptor preparePropertyDescriptor() {
 		IntegerPropertyDescriptor descriptor = new IntegerPropertyDescriptor(
 				getID(), getName());
diff --git a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/attribute/AttributeLights.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/attribute/AttributeLights.java
index 627d92db..0c1d0822 100644
--- a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/attribute/AttributeLights.java
+++ b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/attribute/AttributeLights.java
@@ -13,6 +13,10 @@ import de.bmotionstudio.gef.editor.property.IntegerPropertyDescriptor;
 
 public class AttributeLights extends AbstractAttribute {
 
+	public AttributeLights(Object value) {
+		super(value);
+	}
+
 	public PropertyDescriptor preparePropertyDescriptor() {
 		IntegerPropertyDescriptor descriptor = new IntegerPropertyDescriptor(
 				getID(), getName());
diff --git a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/attribute/AttributeMeasureInterval.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/attribute/AttributeMeasureInterval.java
index 1680c972..7c78a501 100644
--- a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/attribute/AttributeMeasureInterval.java
+++ b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/attribute/AttributeMeasureInterval.java
@@ -13,6 +13,10 @@ import de.bmotionstudio.gef.editor.property.IntegerPropertyDescriptor;
 
 public class AttributeMeasureInterval extends AbstractAttribute {
 
+	public AttributeMeasureInterval(Object value) {
+		super(value);
+	}
+
 	public PropertyDescriptor preparePropertyDescriptor() {
 		IntegerPropertyDescriptor descriptor = new IntegerPropertyDescriptor(
 				getID(), getName());
diff --git a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/attribute/AttributeMeasureMaxPos.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/attribute/AttributeMeasureMaxPos.java
index e9f6f8e1..328348c8 100644
--- a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/attribute/AttributeMeasureMaxPos.java
+++ b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/attribute/AttributeMeasureMaxPos.java
@@ -13,6 +13,10 @@ import de.bmotionstudio.gef.editor.property.IntegerPropertyDescriptor;
 
 public class AttributeMeasureMaxPos extends AbstractAttribute {
 
+	public AttributeMeasureMaxPos(Object value) {
+		super(value);
+	}
+
 	public PropertyDescriptor preparePropertyDescriptor() {
 		IntegerPropertyDescriptor descriptor = new IntegerPropertyDescriptor(
 				getID(), getName());
diff --git a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/attribute/AttributeShowMeasure.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/attribute/AttributeShowMeasure.java
index ef0519e2..2d53e779 100644
--- a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/attribute/AttributeShowMeasure.java
+++ b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/attribute/AttributeShowMeasure.java
@@ -13,6 +13,10 @@ import de.bmotionstudio.gef.editor.property.CheckboxPropertyDescriptor;
 
 public class AttributeShowMeasure extends AbstractAttribute {
 
+	public AttributeShowMeasure(Object value) {
+		super(value);
+	}
+
 	public PropertyDescriptor preparePropertyDescriptor() {
 		return new CheckboxPropertyDescriptor(getID(), getName());
 	}
diff --git a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/attribute/AttributeSignalColor.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/attribute/AttributeSignalColor.java
index dbb67bfa..19bc1383 100644
--- a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/attribute/AttributeSignalColor.java
+++ b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/attribute/AttributeSignalColor.java
@@ -15,6 +15,10 @@ public class AttributeSignalColor extends AbstractAttribute {
 	public static final int GREEN = 1;
 	public static final int NO_COLOR = 2;
 
+	public AttributeSignalColor(Object value) {
+		super(value);
+	}
+
 	@Override
 	protected PropertyDescriptor preparePropertyDescriptor() {
 		return new ComboBoxPropertyDescriptor(getID(), getName(), new String[] {
diff --git a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/attribute/AttributeSwitchDirection.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/attribute/AttributeSwitchDirection.java
index 346ebe11..783b1822 100644
--- a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/attribute/AttributeSwitchDirection.java
+++ b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/attribute/AttributeSwitchDirection.java
@@ -16,6 +16,10 @@ public class AttributeSwitchDirection extends AbstractAttribute {
 	public static final int RIGHT_NORTH = 2;
 	public static final int LEFT_NORTH = 3;
 
+	public AttributeSwitchDirection(Object value) {
+		super(value);
+	}
+
 	@Override
 	public Object unmarshal(final String s) {
 		return Integer.valueOf(s);
diff --git a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/attribute/AttributeSwitchPosition.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/attribute/AttributeSwitchPosition.java
index 6ef89531..a214d084 100644
--- a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/attribute/AttributeSwitchPosition.java
+++ b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/attribute/AttributeSwitchPosition.java
@@ -8,13 +8,16 @@ package de.bmotionstudio.gef.editor.attribute;
 import org.eclipse.ui.views.properties.ComboBoxPropertyDescriptor;
 import org.eclipse.ui.views.properties.PropertyDescriptor;
 
-
 public class AttributeSwitchPosition extends AbstractAttribute {
 
 	public static final int LEFT = 0;
 	public static final int RIGHT = 1;
 	public static final int UNKNOWN = 2;
 
+	public AttributeSwitchPosition(Object value) {
+		super(value);
+	}
+
 	@Override
 	public Object unmarshal(final String s) {
 		return Integer.valueOf(s);
diff --git a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/attribute/AttributeTrackDirection.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/attribute/AttributeTrackDirection.java
index 64220550..b6a6dff2 100644
--- a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/attribute/AttributeTrackDirection.java
+++ b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/attribute/AttributeTrackDirection.java
@@ -8,12 +8,15 @@ package de.bmotionstudio.gef.editor.attribute;
 import org.eclipse.ui.views.properties.ComboBoxPropertyDescriptor;
 import org.eclipse.ui.views.properties.PropertyDescriptor;
 
-
 public class AttributeTrackDirection extends AbstractAttribute {
 
 	public static final int RIGHT = 0;
 	public static final int LEFT = 1;
 
+	public AttributeTrackDirection(Object value) {
+		super(value);
+	}
+
 	@Override
 	public Object unmarshal(final String s) {
 		return Integer.valueOf(s);
diff --git a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/attribute/BAttributeAlpha.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/attribute/BAttributeAlpha.java
index 41eea7fe..fe192157 100644
--- a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/attribute/BAttributeAlpha.java
+++ b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/attribute/BAttributeAlpha.java
@@ -13,6 +13,10 @@ import de.bmotionstudio.gef.editor.property.SliderPropertyDescriptor;
 
 public class BAttributeAlpha extends AbstractAttribute {
 
+	public BAttributeAlpha(Object value) {
+		super(value);
+	}
+
 	public PropertyDescriptor preparePropertyDescriptor() {
 		SliderPropertyDescriptor descriptor = new SliderPropertyDescriptor(
 				getID(), getName());
diff --git a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/attribute/BAttributeBackgroundColor.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/attribute/BAttributeBackgroundColor.java
index a0fc14f9..0023246f 100644
--- a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/attribute/BAttributeBackgroundColor.java
+++ b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/attribute/BAttributeBackgroundColor.java
@@ -14,6 +14,10 @@ import de.bmotionstudio.gef.editor.model.BControl;
 
 public class BAttributeBackgroundColor extends AbstractAttribute {
 
+	public BAttributeBackgroundColor(Object value) {
+		super(value);
+	}
+
 	public PropertyDescriptor preparePropertyDescriptor() {
 		return new ColorPropertyDescriptor(getID(), getName());
 	}
diff --git a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/attribute/BAttributeBackgroundVisible.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/attribute/BAttributeBackgroundVisible.java
index 32054a9b..05c468b6 100644
--- a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/attribute/BAttributeBackgroundVisible.java
+++ b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/attribute/BAttributeBackgroundVisible.java
@@ -13,6 +13,10 @@ import de.bmotionstudio.gef.editor.property.CheckboxPropertyDescriptor;
 
 public class BAttributeBackgroundVisible extends AbstractAttribute {
 
+	public BAttributeBackgroundVisible(Object value) {
+		super(value);
+	}
+
 	public PropertyDescriptor preparePropertyDescriptor() {
 		return new CheckboxPropertyDescriptor(getID(), getName());
 	}
diff --git a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/attribute/BAttributeButtonGroup.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/attribute/BAttributeButtonGroup.java
index aefb1043..e1518271 100644
--- a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/attribute/BAttributeButtonGroup.java
+++ b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/attribute/BAttributeButtonGroup.java
@@ -11,6 +11,10 @@ import org.eclipse.ui.views.properties.TextPropertyDescriptor;
 
 public class BAttributeButtonGroup extends AbstractAttribute {
 
+	public BAttributeButtonGroup(Object value) {
+		super(value);
+	}
+
 	@Override
 	protected PropertyDescriptor preparePropertyDescriptor() {
 		return new TextPropertyDescriptor(getID(), getName());
diff --git a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/attribute/BAttributeChecked.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/attribute/BAttributeChecked.java
index de45a3af..d3013220 100644
--- a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/attribute/BAttributeChecked.java
+++ b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/attribute/BAttributeChecked.java
@@ -13,6 +13,10 @@ import de.bmotionstudio.gef.editor.property.CheckboxPropertyDescriptor;
 
 public class BAttributeChecked extends AbstractAttribute {
 
+	public BAttributeChecked(Object value) {
+		super(value);
+	}
+
 	@Override
 	protected PropertyDescriptor preparePropertyDescriptor() {
 		return new CheckboxPropertyDescriptor(getID(), getName());
diff --git a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/attribute/BAttributeColumns.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/attribute/BAttributeColumns.java
index 0ce92a69..12a636d1 100644
--- a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/attribute/BAttributeColumns.java
+++ b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/attribute/BAttributeColumns.java
@@ -13,6 +13,10 @@ import de.bmotionstudio.gef.editor.property.IntegerPropertyDescriptor;
 
 public class BAttributeColumns extends AbstractAttribute {
 
+	public BAttributeColumns(Object value) {
+		super(value);
+	}
+
 	public PropertyDescriptor preparePropertyDescriptor() {
 		IntegerPropertyDescriptor descriptor = new IntegerPropertyDescriptor(
 				getID(), getName());
diff --git a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/attribute/BAttributeConnection.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/attribute/BAttributeConnection.java
index 1e5e4a1f..19428d8b 100644
--- a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/attribute/BAttributeConnection.java
+++ b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/attribute/BAttributeConnection.java
@@ -11,6 +11,10 @@ import org.eclipse.ui.views.properties.PropertyDescriptor;
 
 public class BAttributeConnection extends AbstractAttribute {
 
+	public BAttributeConnection(Object value) {
+		super(value);
+	}
+
 	@Override
 	public PropertyDescriptor preparePropertyDescriptor() {
 		PropertyDescriptor descriptor = new PropertyDescriptor(getID(),
diff --git a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/attribute/BAttributeConnectionSourceDecoration.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/attribute/BAttributeConnectionSourceDecoration.java
index f62678f8..0a63dffb 100644
--- a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/attribute/BAttributeConnectionSourceDecoration.java
+++ b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/attribute/BAttributeConnectionSourceDecoration.java
@@ -11,6 +11,10 @@ import org.eclipse.ui.views.properties.PropertyDescriptor;
 
 public class BAttributeConnectionSourceDecoration extends AbstractAttribute {
 
+	public BAttributeConnectionSourceDecoration(Object value) {
+		super(value);
+	}
+
 	public static int DECORATION_NONE = 0;
 	public static int DECORATION_TRIANGLE = 1;
 
diff --git a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/attribute/BAttributeConnectionTargetDecoration.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/attribute/BAttributeConnectionTargetDecoration.java
index 1e22657d..0666b259 100644
--- a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/attribute/BAttributeConnectionTargetDecoration.java
+++ b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/attribute/BAttributeConnectionTargetDecoration.java
@@ -11,6 +11,10 @@ import org.eclipse.ui.views.properties.PropertyDescriptor;
 
 public class BAttributeConnectionTargetDecoration extends AbstractAttribute {
 
+	public BAttributeConnectionTargetDecoration(Object value) {
+		super(value);
+	}
+
 	public static int DECORATION_NONE = 0;
 	public static int DECORATION_TRIANGLE = 1;
 
diff --git a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/attribute/BAttributeCoordinates.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/attribute/BAttributeCoordinates.java
index 01447dc7..2aeb359d 100644
--- a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/attribute/BAttributeCoordinates.java
+++ b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/attribute/BAttributeCoordinates.java
@@ -14,6 +14,10 @@ import de.bmotionstudio.gef.editor.AttributeConstants;
 
 public class BAttributeCoordinates extends AbstractAttribute {
 
+	public BAttributeCoordinates(Object value) {
+		super(value);
+	}
+
 	@Override
 	public PropertyDescriptor preparePropertyDescriptor() {
 		PropertyDescriptor descriptor = new PropertyDescriptor(getID(),
diff --git a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/attribute/BAttributeCustom.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/attribute/BAttributeCustom.java
index 3342762e..a2ff6fa2 100644
--- a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/attribute/BAttributeCustom.java
+++ b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/attribute/BAttributeCustom.java
@@ -11,6 +11,10 @@ import org.eclipse.ui.views.properties.TextPropertyDescriptor;
 
 public class BAttributeCustom extends AbstractAttribute {
 
+	public BAttributeCustom(Object value) {
+		super(value);
+	}
+
 	@Override
 	public PropertyDescriptor preparePropertyDescriptor() {
 		return new TextPropertyDescriptor(getID(), getName());
diff --git a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/attribute/BAttributeDirection.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/attribute/BAttributeDirection.java
index 40f9418e..ffd7f2c1 100644
--- a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/attribute/BAttributeDirection.java
+++ b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/attribute/BAttributeDirection.java
@@ -11,6 +11,10 @@ import org.eclipse.ui.views.properties.PropertyDescriptor;
 
 public class BAttributeDirection extends AbstractAttribute {
 
+	public BAttributeDirection(Object value) {
+		super(value);
+	}
+
 	public static final int NORTH = 0;
 	public static final int SOUTH = 1;
 	public static final int WEST = 2;
diff --git a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/attribute/BAttributeEnabled.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/attribute/BAttributeEnabled.java
index c8ae7422..170e1dfd 100644
--- a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/attribute/BAttributeEnabled.java
+++ b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/attribute/BAttributeEnabled.java
@@ -13,6 +13,10 @@ import de.bmotionstudio.gef.editor.property.CheckboxPropertyDescriptor;
 
 public class BAttributeEnabled extends AbstractAttribute {
 
+	public BAttributeEnabled(Object value) {
+		super(value);
+	}
+
 	public PropertyDescriptor preparePropertyDescriptor() {
 		return new CheckboxPropertyDescriptor(getID(), getName());
 	}
diff --git a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/attribute/BAttributeFalseValue.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/attribute/BAttributeFalseValue.java
index 6ea18bb0..342f0d7a 100644
--- a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/attribute/BAttributeFalseValue.java
+++ b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/attribute/BAttributeFalseValue.java
@@ -1,3 +1,9 @@
+/** 
+ * (c) 2009 Lehrstuhl fuer Softwaretechnik und Programmiersprachen, 
+ * Heinrich Heine Universitaet Duesseldorf
+ * This software is licenced under EPL 1.0 (http://www.eclipse.org/org/documents/epl-v10.html) 
+ * */
+
 package de.bmotionstudio.gef.editor.attribute;
 
 import org.eclipse.ui.views.properties.PropertyDescriptor;
@@ -5,6 +11,10 @@ import org.eclipse.ui.views.properties.TextPropertyDescriptor;
 
 public class BAttributeFalseValue extends AbstractAttribute {
 
+	public BAttributeFalseValue(Object value) {
+		super(value);
+	}
+
 	@Override
 	public PropertyDescriptor preparePropertyDescriptor() {
 		return new TextPropertyDescriptor(getID(), getName());
diff --git a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/attribute/BAttributeFillType.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/attribute/BAttributeFillType.java
index bd57f9d8..81abe496 100644
--- a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/attribute/BAttributeFillType.java
+++ b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/attribute/BAttributeFillType.java
@@ -16,6 +16,10 @@ public class BAttributeFillType extends AbstractAttribute {
 	public static final int SHADED = 2;
 	public static final int GRADIENT = 3;
 
+	public BAttributeFillType(Object value) {
+		super(value);
+	}
+
 	@Override
 	protected PropertyDescriptor preparePropertyDescriptor() {
 		return new ComboBoxPropertyDescriptor(getID(), getName(), new String[] {
diff --git a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/attribute/BAttributeFont.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/attribute/BAttributeFont.java
index 9c89418c..85986759 100644
--- a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/attribute/BAttributeFont.java
+++ b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/attribute/BAttributeFont.java
@@ -12,6 +12,10 @@ import de.bmotionstudio.gef.editor.property.FontPropertyDescriptor;
 
 public class BAttributeFont extends AbstractAttribute {
 
+	public BAttributeFont(Object value) {
+		super(value);
+	}
+
 	public PropertyDescriptor preparePropertyDescriptor() {
 		return new FontPropertyDescriptor(getID(), getName());
 	}
diff --git a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/attribute/BAttributeForegroundColor.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/attribute/BAttributeForegroundColor.java
index 8a17fe13..cf4abf23 100644
--- a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/attribute/BAttributeForegroundColor.java
+++ b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/attribute/BAttributeForegroundColor.java
@@ -14,6 +14,10 @@ import de.bmotionstudio.gef.editor.model.BControl;
 
 public class BAttributeForegroundColor extends AbstractAttribute {
 
+	public BAttributeForegroundColor(Object value) {
+		super(value);
+	}
+
 	public PropertyDescriptor preparePropertyDescriptor() {
 		return new ColorPropertyDescriptor(getID(), getName());
 	}
diff --git a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/attribute/BAttributeHeight.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/attribute/BAttributeHeight.java
index b0a6191a..5947e5cd 100644
--- a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/attribute/BAttributeHeight.java
+++ b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/attribute/BAttributeHeight.java
@@ -13,6 +13,10 @@ import de.bmotionstudio.gef.editor.property.IntegerPropertyDescriptor;
 
 public class BAttributeHeight extends AbstractAttribute {
 
+	public BAttributeHeight(Object value) {
+		super(value);
+	}
+
 	public PropertyDescriptor preparePropertyDescriptor() {
 		IntegerPropertyDescriptor descriptor = new IntegerPropertyDescriptor(
 				getID(), getName());
diff --git a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/attribute/BAttributeID.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/attribute/BAttributeID.java
index 2af7dadd..b181122c 100644
--- a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/attribute/BAttributeID.java
+++ b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/attribute/BAttributeID.java
@@ -13,6 +13,10 @@ import de.bmotionstudio.gef.editor.model.BControl;
 
 public class BAttributeID extends AbstractAttribute {
 
+	public BAttributeID(Object value) {
+		super(value);
+	}
+
 	public PropertyDescriptor preparePropertyDescriptor() {
 		TextPropertyDescriptor descriptor = new TextPropertyDescriptor(getID(),
 				getName());
diff --git a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/attribute/BAttributeImage.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/attribute/BAttributeImage.java
index d3938ae2..86f1d299 100644
--- a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/attribute/BAttributeImage.java
+++ b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/attribute/BAttributeImage.java
@@ -16,6 +16,10 @@ import de.bmotionstudio.gef.editor.property.ImagePropertyDescriptor;
 
 public class BAttributeImage extends AbstractAttribute {
 
+	public BAttributeImage(Object value) {
+		super(value);
+	}
+
 	public PropertyDescriptor preparePropertyDescriptor() {
 		return new ImagePropertyDescriptor(getID(), getName());
 	}
diff --git a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/attribute/BAttributeLabel.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/attribute/BAttributeLabel.java
index 47b72fb4..a3f962a2 100644
--- a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/attribute/BAttributeLabel.java
+++ b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/attribute/BAttributeLabel.java
@@ -11,6 +11,10 @@ import org.eclipse.ui.views.properties.TextPropertyDescriptor;
 
 public class BAttributeLabel extends AbstractAttribute {
 
+	public BAttributeLabel(Object value) {
+		super(value);
+	}
+
 	@Override
 	protected PropertyDescriptor preparePropertyDescriptor() {
 		return new TextPropertyDescriptor(getID(), getName());
diff --git a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/attribute/BAttributeLineStyle.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/attribute/BAttributeLineStyle.java
index 262e5fd9..9e0132d7 100644
--- a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/attribute/BAttributeLineStyle.java
+++ b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/attribute/BAttributeLineStyle.java
@@ -17,6 +17,10 @@ public class BAttributeLineStyle extends AbstractAttribute {
 	public static final int DASHED_DOTTED_CONNECTION = 3;
 	public static final int DASHED_DOTTED_DOTTED_CONNECTION = 4;
 
+	public BAttributeLineStyle(Object value) {
+		super(value);
+	}
+
 	@Override
 	protected PropertyDescriptor preparePropertyDescriptor() {
 		return new ComboBoxPropertyDescriptor(getID(), getName(), new String[] {
diff --git a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/attribute/BAttributeLineWidth.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/attribute/BAttributeLineWidth.java
index b40020c5..82f43fda 100644
--- a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/attribute/BAttributeLineWidth.java
+++ b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/attribute/BAttributeLineWidth.java
@@ -13,6 +13,10 @@ public class BAttributeLineWidth extends AbstractAttribute {
 		return descriptor;
 	}
 
+	public BAttributeLineWidth(Object value) {
+		super(value);
+	}
+
 	@Override
 	public String validateValue(Object value, BControl control) {
 		if (!(String.valueOf(value)).trim().matches("\\d*")) {
diff --git a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/attribute/BAttributeMain.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/attribute/BAttributeMain.java
index 8429e403..2870f97b 100644
--- a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/attribute/BAttributeMain.java
+++ b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/attribute/BAttributeMain.java
@@ -11,6 +11,10 @@ import org.eclipse.ui.views.properties.PropertyDescriptor;
 
 public class BAttributeMain extends AbstractAttribute {
 
+	public BAttributeMain(Object value) {
+		super(value);
+	}
+
 	@Override
 	public PropertyDescriptor preparePropertyDescriptor() {
 		PropertyDescriptor descriptor = new PropertyDescriptor(getID(),
diff --git a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/attribute/BAttributeMisc.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/attribute/BAttributeMisc.java
index c32fa268..658f9e91 100644
--- a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/attribute/BAttributeMisc.java
+++ b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/attribute/BAttributeMisc.java
@@ -11,6 +11,10 @@ import org.eclipse.ui.views.properties.PropertyDescriptor;
 
 public class BAttributeMisc extends AbstractAttribute {
 
+	public BAttributeMisc(Object value) {
+		super(value);
+	}
+
 	@Override
 	public PropertyDescriptor preparePropertyDescriptor() {
 		PropertyDescriptor descriptor = new PropertyDescriptor(getID(),
diff --git a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/attribute/BAttributeOffsetH.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/attribute/BAttributeOffsetH.java
index f91d9446..f173bbfb 100644
--- a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/attribute/BAttributeOffsetH.java
+++ b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/attribute/BAttributeOffsetH.java
@@ -13,6 +13,10 @@ import de.bmotionstudio.gef.editor.property.IntegerPropertyDescriptor;
 
 public class BAttributeOffsetH extends AbstractAttribute {
 
+	public BAttributeOffsetH(Object value) {
+		super(value);
+	}
+
 	public PropertyDescriptor preparePropertyDescriptor() {
 		IntegerPropertyDescriptor descriptor = new IntegerPropertyDescriptor(
 				getID(), getName());
diff --git a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/attribute/BAttributeOffsetV.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/attribute/BAttributeOffsetV.java
index 6c8ef25c..9fafedfc 100644
--- a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/attribute/BAttributeOffsetV.java
+++ b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/attribute/BAttributeOffsetV.java
@@ -13,6 +13,10 @@ import de.bmotionstudio.gef.editor.property.IntegerPropertyDescriptor;
 
 public class BAttributeOffsetV extends AbstractAttribute {
 
+	public BAttributeOffsetV(Object value) {
+		super(value);
+	}
+
 	public PropertyDescriptor preparePropertyDescriptor() {
 		IntegerPropertyDescriptor descriptor = new IntegerPropertyDescriptor(
 				getID(), getName());
diff --git a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/attribute/BAttributeOrientation.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/attribute/BAttributeOrientation.java
index ac0656a5..db025c10 100644
--- a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/attribute/BAttributeOrientation.java
+++ b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/attribute/BAttributeOrientation.java
@@ -5,6 +5,10 @@ import org.eclipse.ui.views.properties.PropertyDescriptor;
 
 public class BAttributeOrientation extends AbstractAttribute {
 
+	public BAttributeOrientation(Object value) {
+		super(value);
+	}
+
 	public static final int HORIZONTAL = 0;
 	public static final int VERTICAL = 1;
 
diff --git a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/attribute/BAttributeOutlineAlpha.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/attribute/BAttributeOutlineAlpha.java
index 218e74de..f583a8f0 100644
--- a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/attribute/BAttributeOutlineAlpha.java
+++ b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/attribute/BAttributeOutlineAlpha.java
@@ -13,6 +13,10 @@ import de.bmotionstudio.gef.editor.property.SliderPropertyDescriptor;
 
 public class BAttributeOutlineAlpha extends AbstractAttribute {
 
+	public BAttributeOutlineAlpha(Object value) {
+		super(value);
+	}
+
 	public PropertyDescriptor preparePropertyDescriptor() {
 		SliderPropertyDescriptor descriptor = new SliderPropertyDescriptor(
 				getID(), getName());
diff --git a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/attribute/BAttributeRows.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/attribute/BAttributeRows.java
index dbd8fdd4..b3df0f42 100644
--- a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/attribute/BAttributeRows.java
+++ b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/attribute/BAttributeRows.java
@@ -13,6 +13,10 @@ import de.bmotionstudio.gef.editor.property.IntegerPropertyDescriptor;
 
 public class BAttributeRows extends AbstractAttribute {
 
+	public BAttributeRows(Object value) {
+		super(value);
+	}
+
 	public PropertyDescriptor preparePropertyDescriptor() {
 		IntegerPropertyDescriptor descriptor = new IntegerPropertyDescriptor(
 				getID(), getName());
diff --git a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/attribute/BAttributeShape.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/attribute/BAttributeShape.java
index 48547232..506461de 100644
--- a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/attribute/BAttributeShape.java
+++ b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/attribute/BAttributeShape.java
@@ -11,6 +11,10 @@ import org.eclipse.ui.views.properties.PropertyDescriptor;
 
 public class BAttributeShape extends AbstractAttribute {
 
+	public BAttributeShape(Object value) {
+		super(value);
+	}
+
 	public static final int SHAPE_RECTANGLE = 0;
 	public static final int SHAPE_OVAL = 1;
 	public static final int SHAPE_TRIANGLE = 2;
diff --git a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/attribute/BAttributeSize.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/attribute/BAttributeSize.java
index 6244b248..23094707 100644
--- a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/attribute/BAttributeSize.java
+++ b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/attribute/BAttributeSize.java
@@ -14,6 +14,10 @@ import de.bmotionstudio.gef.editor.AttributeConstants;
 
 public class BAttributeSize extends AbstractAttribute {
 
+	public BAttributeSize(Object value) {
+		super(value);
+	}
+
 	public static final String ID = "de.bmotionstudio.gef.editor.attribute.BAttributeSize";
 
 	@Override
diff --git a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/attribute/BAttributeText.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/attribute/BAttributeText.java
index b5c18d5c..97d07163 100644
--- a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/attribute/BAttributeText.java
+++ b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/attribute/BAttributeText.java
@@ -11,6 +11,10 @@ import org.eclipse.ui.views.properties.TextPropertyDescriptor;
 
 public class BAttributeText extends AbstractAttribute {
 
+	public BAttributeText(Object value) {
+		super(value);
+	}
+
 	public PropertyDescriptor preparePropertyDescriptor() {
 		return new TextPropertyDescriptor(getID(), getName());
 	}
diff --git a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/attribute/BAttributeTextColor.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/attribute/BAttributeTextColor.java
index d6e64650..dbba315d 100644
--- a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/attribute/BAttributeTextColor.java
+++ b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/attribute/BAttributeTextColor.java
@@ -14,6 +14,10 @@ import de.bmotionstudio.gef.editor.model.BControl;
 
 public class BAttributeTextColor extends AbstractAttribute {
 
+	public BAttributeTextColor(Object value) {
+		super(value);
+	}
+
 	public PropertyDescriptor preparePropertyDescriptor() {
 		return new ColorPropertyDescriptor(getID(), getName());
 	}
diff --git a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/attribute/BAttributeTrueValue.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/attribute/BAttributeTrueValue.java
index 27ef95ab..3d58d1fb 100644
--- a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/attribute/BAttributeTrueValue.java
+++ b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/attribute/BAttributeTrueValue.java
@@ -11,6 +11,10 @@ import org.eclipse.ui.views.properties.TextPropertyDescriptor;
 
 public class BAttributeTrueValue extends AbstractAttribute {
 
+	public BAttributeTrueValue(Object value) {
+		super(value);
+	}
+
 	@Override
 	public PropertyDescriptor preparePropertyDescriptor() {
 		return new TextPropertyDescriptor(getID(), getName());
diff --git a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/attribute/BAttributeValue.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/attribute/BAttributeValue.java
index f6f62ad7..2b0aaf11 100644
--- a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/attribute/BAttributeValue.java
+++ b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/attribute/BAttributeValue.java
@@ -11,6 +11,10 @@ import org.eclipse.ui.views.properties.TextPropertyDescriptor;
 
 public class BAttributeValue extends AbstractAttribute {
 
+	public BAttributeValue(Object value) {
+		super(value);
+	}
+
 	@Override
 	protected PropertyDescriptor preparePropertyDescriptor() {
 		return new TextPropertyDescriptor(getID(), getName());
diff --git a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/attribute/BAttributeVisible.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/attribute/BAttributeVisible.java
index de3ca30f..bbf89608 100644
--- a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/attribute/BAttributeVisible.java
+++ b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/attribute/BAttributeVisible.java
@@ -13,6 +13,10 @@ import de.bmotionstudio.gef.editor.property.CheckboxPropertyDescriptor;
 
 public class BAttributeVisible extends AbstractAttribute {
 
+	public BAttributeVisible(Object value) {
+		super(value);
+	}
+
 	public PropertyDescriptor preparePropertyDescriptor() {
 		return new CheckboxPropertyDescriptor(getID(), getName());
 	}
diff --git a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/attribute/BAttributeWidth.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/attribute/BAttributeWidth.java
index 78853723..34844653 100644
--- a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/attribute/BAttributeWidth.java
+++ b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/attribute/BAttributeWidth.java
@@ -13,6 +13,10 @@ import de.bmotionstudio.gef.editor.property.IntegerPropertyDescriptor;
 
 public class BAttributeWidth extends AbstractAttribute {
 
+	public BAttributeWidth(Object value) {
+		super(value);
+	}
+
 	public PropertyDescriptor preparePropertyDescriptor() {
 		IntegerPropertyDescriptor descriptor = new IntegerPropertyDescriptor(
 				getID(), getName());
diff --git a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/attribute/BAttributeX.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/attribute/BAttributeX.java
index 3494ad60..e3f91139 100644
--- a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/attribute/BAttributeX.java
+++ b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/attribute/BAttributeX.java
@@ -13,6 +13,10 @@ import de.bmotionstudio.gef.editor.property.IntegerPropertyDescriptor;
 
 public class BAttributeX extends AbstractAttribute {
 
+	public BAttributeX(Object value) {
+		super(value);
+	}
+
 	public PropertyDescriptor preparePropertyDescriptor() {
 		IntegerPropertyDescriptor descriptor = new IntegerPropertyDescriptor(
 				getID(), getName());
diff --git a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/attribute/BAttributeY.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/attribute/BAttributeY.java
index 1ac07281..45c5959a 100644
--- a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/attribute/BAttributeY.java
+++ b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/attribute/BAttributeY.java
@@ -13,6 +13,10 @@ import de.bmotionstudio.gef.editor.property.IntegerPropertyDescriptor;
 
 public class BAttributeY extends AbstractAttribute {
 
+	public BAttributeY(Object value) {
+		super(value);
+	}
+
 	public PropertyDescriptor preparePropertyDescriptor() {
 		IntegerPropertyDescriptor descriptor = new IntegerPropertyDescriptor(
 				getID(), getName());
diff --git a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/internal/BControlPropertySource.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/internal/BControlPropertySource.java
index 625d7521..2a836bbb 100644
--- a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/internal/BControlPropertySource.java
+++ b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/internal/BControlPropertySource.java
@@ -19,8 +19,9 @@ public class BControlPropertySource extends AbstractAttribute {
 	private BAttributeMisc miscAttribute;
 
 	public BControlPropertySource(BControl control) {
+		super(null);
 		this.control = control;
-		this.miscAttribute = new BAttributeMisc();
+		this.miscAttribute = new BAttributeMisc("");
 		addChild(this.miscAttribute);
 		init();
 	}
diff --git a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/model/BButton.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/model/BButton.java
index ba400c1e..0c472a56 100644
--- a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/model/BButton.java
+++ b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/model/BButton.java
@@ -8,7 +8,13 @@ package de.bmotionstudio.gef.editor.model;
 
 import org.eclipse.swt.graphics.RGB;
 
-import de.bmotionstudio.gef.editor.AttributeConstants;
+import de.bmotionstudio.gef.editor.attribute.BAttributeBackgroundColor;
+import de.bmotionstudio.gef.editor.attribute.BAttributeEnabled;
+import de.bmotionstudio.gef.editor.attribute.BAttributeHeight;
+import de.bmotionstudio.gef.editor.attribute.BAttributeSize;
+import de.bmotionstudio.gef.editor.attribute.BAttributeText;
+import de.bmotionstudio.gef.editor.attribute.BAttributeTextColor;
+import de.bmotionstudio.gef.editor.attribute.BAttributeWidth;
 
 /**
  * @author Lukas Ladenberger
@@ -31,15 +37,20 @@ public class BButton extends BControl {
 
 	@Override
 	protected void initAttributes() {
-		initAttribute(AttributeConstants.ATTRIBUTE_TEXT, DEFAULT_TEXT);
-		initAttribute(AttributeConstants.ATTRIBUTE_BACKGROUND_COLOR, new RGB(
-				192, 192, 192));
-		initAttribute(AttributeConstants.ATTRIBUTE_TEXT_COLOR, new RGB(0, 0, 0));
-		initAttribute(AttributeConstants.ATTRIBUTE_ENABLED, true);
-		initAttribute(AttributeConstants.ATTRIBUTE_HEIGHT, 25,
-				AttributeConstants.ATTRIBUTE_SIZE);
-		initAttribute(AttributeConstants.ATTRIBUTE_WIDTH, 100,
-				AttributeConstants.ATTRIBUTE_SIZE);
+
+		initAttribute(new BAttributeText(DEFAULT_TEXT));
+		initAttribute(new BAttributeBackgroundColor(new RGB(192, 192, 192)));
+		initAttribute(new BAttributeTextColor(new RGB(0, 0, 0)));
+		initAttribute(new BAttributeEnabled(true));
+
+		BAttributeHeight aHeight = new BAttributeHeight(25);
+		aHeight.setGroup(BAttributeSize.ID);
+		initAttribute(aHeight);
+
+		BAttributeWidth aWidth = new BAttributeWidth(100);
+		aHeight.setGroup(BAttributeSize.ID);
+		initAttribute(aWidth);
+
 	}
 
 }
diff --git a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/model/BCheckbox.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/model/BCheckbox.java
index 39cc02f8..96950332 100644
--- a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/model/BCheckbox.java
+++ b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/model/BCheckbox.java
@@ -9,6 +9,14 @@ package de.bmotionstudio.gef.editor.model;
 import org.eclipse.swt.graphics.RGB;
 
 import de.bmotionstudio.gef.editor.AttributeConstants;
+import de.bmotionstudio.gef.editor.attribute.BAttributeChecked;
+import de.bmotionstudio.gef.editor.attribute.BAttributeEnabled;
+import de.bmotionstudio.gef.editor.attribute.BAttributeFalseValue;
+import de.bmotionstudio.gef.editor.attribute.BAttributeHeight;
+import de.bmotionstudio.gef.editor.attribute.BAttributeSize;
+import de.bmotionstudio.gef.editor.attribute.BAttributeText;
+import de.bmotionstudio.gef.editor.attribute.BAttributeTextColor;
+import de.bmotionstudio.gef.editor.attribute.BAttributeTrueValue;
 
 /**
  * @author Lukas Ladenberger
@@ -31,14 +39,20 @@ public class BCheckbox extends BControl {
 
 	@Override
 	protected void initAttributes() {
-		initAttribute(AttributeConstants.ATTRIBUTE_TEXT, DEFAULT_TEXT);
-		initAttribute(AttributeConstants.ATTRIBUTE_TEXT_COLOR, new RGB(0, 0, 0));
-		initAttribute(AttributeConstants.ATTRIBUTE_CHECKED, true);
-		initAttribute(AttributeConstants.ATTRIBUTE_ENABLED, true);
-		initAttribute(AttributeConstants.ATTRIBUTE_TRUEVALUE, "");
-		initAttribute(AttributeConstants.ATTRIBUTE_FALSEVALUE, "");
-		initAttribute(AttributeConstants.ATTRIBUTE_HEIGHT, 21, false, false,
-				AttributeConstants.ATTRIBUTE_SIZE);
+
+		initAttribute(new BAttributeText(DEFAULT_TEXT));
+		initAttribute(new BAttributeTextColor(new RGB(0, 0, 0)));
+		initAttribute(new BAttributeEnabled(true));
+		initAttribute(new BAttributeChecked(true));
+		initAttribute(new BAttributeTrueValue(""));
+		initAttribute(new BAttributeFalseValue(""));
+
+		BAttributeHeight aHeight = new BAttributeHeight(21);
+		aHeight.setGroup(BAttributeSize.ID);
+		aHeight.setShow(false);
+		aHeight.setEditable(false);
+		initAttribute(aHeight);
+
 	}
 
 	@Override
diff --git a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/model/BComposite.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/model/BComposite.java
index 8bfb44d6..52d060b4 100644
--- a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/model/BComposite.java
+++ b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/model/BComposite.java
@@ -8,7 +8,8 @@ package de.bmotionstudio.gef.editor.model;
 
 import org.eclipse.swt.graphics.RGB;
 
-import de.bmotionstudio.gef.editor.AttributeConstants;
+import de.bmotionstudio.gef.editor.attribute.BAttributeBackgroundColor;
+import de.bmotionstudio.gef.editor.attribute.BAttributeImage;
 
 /**
  * @author Lukas Ladenberger
@@ -29,9 +30,10 @@ public class BComposite extends BControl {
 
 	@Override
 	protected void initAttributes() {
-		initAttribute(AttributeConstants.ATTRIBUTE_BACKGROUND_COLOR, new RGB(
-				192, 192, 192));
-		initAttribute(AttributeConstants.ATTRIBUTE_IMAGE, null);
+
+		initAttribute(new BAttributeBackgroundColor(new RGB(192, 192, 192)));
+		initAttribute(new BAttributeImage(null));
+
 	}
 
 	@Override
diff --git a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/model/BConnection.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/model/BConnection.java
index 048da4cf..30427a03 100644
--- a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/model/BConnection.java
+++ b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/model/BConnection.java
@@ -8,10 +8,13 @@ package de.bmotionstudio.gef.editor.model;
 
 import org.eclipse.swt.graphics.RGB;
 
-import de.bmotionstudio.gef.editor.AttributeConstants;
+import de.bmotionstudio.gef.editor.attribute.BAttributeConnection;
 import de.bmotionstudio.gef.editor.attribute.BAttributeConnectionSourceDecoration;
 import de.bmotionstudio.gef.editor.attribute.BAttributeConnectionTargetDecoration;
+import de.bmotionstudio.gef.editor.attribute.BAttributeForegroundColor;
+import de.bmotionstudio.gef.editor.attribute.BAttributeLabel;
 import de.bmotionstudio.gef.editor.attribute.BAttributeLineStyle;
+import de.bmotionstudio.gef.editor.attribute.BAttributeLineWidth;
 
 public class BConnection extends BControl {
 
@@ -117,24 +120,38 @@ public class BConnection extends BControl {
 
 	@Override
 	protected void initAttributes() {
-		initAttribute(AttributeConstants.ATTRIBUTE_CONNECTION, null);
-		initAttribute(AttributeConstants.ATTRIBUTE_LINEWIDTH, 1,
-				AttributeConstants.ATTRIBUTE_CONNECTION);
-		initAttribute(AttributeConstants.ATTRIBUTE_LINESTYLE,
-				BAttributeLineStyle.SOLID_CONNECTION,
-				AttributeConstants.ATTRIBUTE_CONNECTION);
-		initAttribute(AttributeConstants.ATTRIBUTE_FOREGROUND_COLOR, new RGB(0,
-				0, 0), AttributeConstants.ATTRIBUTE_CONNECTION);
-		initAttribute(
-				AttributeConstants.ATTRIBUTE_CONNECTION_SOURCE_DECORATION,
-				BAttributeConnectionSourceDecoration.DECORATION_NONE,
-				AttributeConstants.ATTRIBUTE_CONNECTION);
-		initAttribute(
-				AttributeConstants.ATTRIBUTE_CONNECTION_TARGET_DECORATION,
-				BAttributeConnectionTargetDecoration.DECORATION_NONE,
-				AttributeConstants.ATTRIBUTE_CONNECTION);
-		initAttribute(AttributeConstants.ATTRIBUTE_LABEL, "Label...",
-				AttributeConstants.ATTRIBUTE_CONNECTION);
+
+		BAttributeConnection aConnection = new BAttributeConnection(null);
+		initAttribute(aConnection);
+
+		BAttributeLineWidth aLineWidth = new BAttributeLineWidth(1);
+		aLineWidth.setGroup(aConnection);
+		initAttribute(aLineWidth);
+
+		BAttributeLineStyle aLineStyle = new BAttributeLineStyle(
+				BAttributeLineStyle.SOLID_CONNECTION);
+		aLineStyle.setGroup(aConnection);
+		initAttribute(aLineStyle);
+
+		BAttributeForegroundColor aForegroundColor = new BAttributeForegroundColor(
+				new RGB(0, 0, 0));
+		aForegroundColor.setGroup(aConnection);
+		initAttribute(aForegroundColor);
+
+		BAttributeConnectionSourceDecoration aSourceDeco = new BAttributeConnectionSourceDecoration(
+				BAttributeConnectionSourceDecoration.DECORATION_NONE);
+		aSourceDeco.setGroup(aConnection);
+		initAttribute(aSourceDeco);
+
+		BAttributeConnectionTargetDecoration aTargetDeco = new BAttributeConnectionTargetDecoration(
+				BAttributeConnectionSourceDecoration.DECORATION_NONE);
+		aTargetDeco.setGroup(aConnection);
+		initAttribute(aTargetDeco);
+
+		BAttributeLabel aLabel = new BAttributeLabel("Label ...");
+		aLabel.setGroup(aConnection);
+		initAttribute(aLabel);
+
 	}
 
 }
\ No newline at end of file
diff --git a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/model/BControl.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/model/BControl.java
index c65e1973..3b18b6d6 100644
--- a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/model/BControl.java
+++ b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/model/BControl.java
@@ -29,6 +29,16 @@ import de.bmotionstudio.gef.editor.AttributeConstants;
 import de.bmotionstudio.gef.editor.BMotionEditorPlugin;
 import de.bmotionstudio.gef.editor.BMotionStudioImage;
 import de.bmotionstudio.gef.editor.attribute.AbstractAttribute;
+import de.bmotionstudio.gef.editor.attribute.BAttributeCoordinates;
+import de.bmotionstudio.gef.editor.attribute.BAttributeCustom;
+import de.bmotionstudio.gef.editor.attribute.BAttributeHeight;
+import de.bmotionstudio.gef.editor.attribute.BAttributeID;
+import de.bmotionstudio.gef.editor.attribute.BAttributeMisc;
+import de.bmotionstudio.gef.editor.attribute.BAttributeSize;
+import de.bmotionstudio.gef.editor.attribute.BAttributeVisible;
+import de.bmotionstudio.gef.editor.attribute.BAttributeWidth;
+import de.bmotionstudio.gef.editor.attribute.BAttributeX;
+import de.bmotionstudio.gef.editor.attribute.BAttributeY;
 import de.bmotionstudio.gef.editor.internal.BControlPropertySource;
 import de.bmotionstudio.gef.editor.observer.IObserverListener;
 import de.bmotionstudio.gef.editor.observer.Observer;
@@ -189,45 +199,47 @@ public abstract class BControl implements IAdaptable, Cloneable {
 			ID = UUID.randomUUID().toString();
 		else
 			ID = (visualization.getMaxIDString(type));
-		initAttribute(AttributeConstants.ATTRIBUTE_ID, ID,
-				AbstractAttribute.ROOT);
 
-		initAttribute(AttributeConstants.ATTRIBUTE_MISC, "",
-				AbstractAttribute.ROOT);
-
-		// initAttribute(new BAttributeID(ID), AbstractAttribute.ROOT);
+		BAttributeID aID = new BAttributeID(ID);
+		aID.setGroup(AbstractAttribute.ROOT);
+		initAttribute(aID);
 
+		BAttributeMisc aMisc = new BAttributeMisc("");
+		aMisc.setGroup(AbstractAttribute.ROOT);
+		initAttribute(aMisc);
+		
 		// Init location and size attributes
-		initAttribute(AttributeConstants.ATTRIBUTE_COORDINATES, null,
-				AbstractAttribute.ROOT);
-		initAttribute(AttributeConstants.ATTRIBUTE_X, 100,
-				AttributeConstants.ATTRIBUTE_COORDINATES);
-		initAttribute(AttributeConstants.ATTRIBUTE_Y, 100,
-				AttributeConstants.ATTRIBUTE_COORDINATES);
-
-		// BAttributeCoordinates coordinatesAtr = new
-		// BAttributeCoordinates(null);
-		// initAttribute(coordinatesAtr, AbstractAttribute.ROOT);
-		// initAttribute(new BAttributeX(100), coordinatesAtr);
-		// initAttribute(new BAttributeY(100), coordinatesAtr);
-
-		initAttribute(AttributeConstants.ATTRIBUTE_SIZE, null,
-				AbstractAttribute.ROOT);
-		initAttribute(AttributeConstants.ATTRIBUTE_WIDTH, 100,
-				AttributeConstants.ATTRIBUTE_SIZE);
-		initAttribute(AttributeConstants.ATTRIBUTE_HEIGHT, 100,
-				AttributeConstants.ATTRIBUTE_SIZE);
-
-		// BAttributeSize sizeAtr = new BAttributeSize(null);
-		// initAttribute(sizeAtr, AbstractAttribute.ROOT);
-		// initAttribute(new BAttributeWidth(100), sizeAtr);
-		// initAttribute(new BAttributeHeight(100), sizeAtr);
+		BAttributeCoordinates aCoordinates = new BAttributeCoordinates(null);
+		aCoordinates.setGroup(AbstractAttribute.ROOT);
+		initAttribute(aCoordinates);
+		
+		BAttributeX aX = new BAttributeX(100);
+		aX.setGroup(aCoordinates);
+		initAttribute(aX);
+		
+		BAttributeY aY = new BAttributeY(100);
+		aY.setGroup(aCoordinates);
+		initAttribute(aY);
+		
+		BAttributeSize aSize = new BAttributeSize(null);
+		initAttribute(aSize);
+		
+		BAttributeWidth aWidth = new BAttributeWidth(100);
+		aWidth.setGroup(aSize);
+		initAttribute(aWidth);
+
+		BAttributeHeight aHeight = new BAttributeHeight(100);
+		aHeight.setGroup(aSize);
+		initAttribute(aHeight);
 
 		// Init visible and this attribute
-		initAttribute(AttributeConstants.ATTRIBUTE_VISIBLE, true,
-				AbstractAttribute.ROOT);
-		initAttribute(AttributeConstants.ATTRIBUTE_CUSTOM, "",
-				AbstractAttribute.ROOT);
+		BAttributeVisible aVisible = new BAttributeVisible(true);
+		aVisible.setGroup(AbstractAttribute.ROOT);
+		initAttribute(aVisible);
+
+		BAttributeCustom aCustom = new BAttributeCustom("");
+		aCustom.setGroup(AbstractAttribute.ROOT);
+		initAttribute(aCustom);
 
 	}
 
@@ -771,60 +783,26 @@ public abstract class BControl implements IAdaptable, Cloneable {
 
 	public abstract String getType();
 
-	protected void initAttribute(String id, Object defaultValue) {
-		initAttribute(id, defaultValue, true, true,
-				AttributeConstants.ATTRIBUTE_MISC);
-	}
-
-	protected void initAttribute(String id, Object defaultValue, String groupID) {
-		initAttribute(id, defaultValue, true, true, groupID);
-	}
-
-	protected void initAttribute(String id, Object defaultValue,
-			boolean editable, boolean show) {
-		initAttribute(id, defaultValue, editable, show,
-				AttributeConstants.ATTRIBUTE_MISC);
-	}
-
-	protected void initAttribute(String id, Object defaultValue,
-			boolean editable, boolean show, String groupID) {
+	protected void initAttribute(AbstractAttribute atr) {
 
-		AbstractAttribute atr = getAttribute(id);
+		AbstractAttribute oldAtr = getAttribute(atr.getID());
 
 		// If no attribute exists yet, create a new one and set the value
-		if (atr == null) {
-			atr = (AbstractAttribute) reflectiveGet(id);
-			if (atr != null) {
-				atr.setValue(defaultValue);
-				getAttributes().put(atr.getID(), atr);
-			} else {
-				return;
-			}
+		if (oldAtr == null) {
+			oldAtr = atr;
+			getAttributes().put(oldAtr.getID(), oldAtr);
 		}
 
-		if (!atr.isInitialized()) {
-			atr.setDefaultValue(defaultValue);
-			atr.setGroup(groupID);
-			atr.setEditable(editable);
-			atr.setShow(show);
-			atr.setInitialized(true);
-		}
+		if (!oldAtr.isInitialized()) {
 
-	}
+			oldAtr.setDefaultValue(atr.getDefaultValue());
+			oldAtr.setGroup(atr.getGroup());
+			oldAtr.setEditable(atr.isEditable());
+			oldAtr.setShow(atr.show());
+			oldAtr.setInitialized(true);
 
-	private Object reflectiveGet(String className) {
-		Object newInstance = null;
-		try {
-			Class<?> forName = Class.forName(className);
-			newInstance = forName.newInstance();
-		} catch (ClassNotFoundException e) {
-			e.printStackTrace();
-		} catch (InstantiationException e) {
-			e.printStackTrace();
-		} catch (IllegalAccessException e) {
-			e.printStackTrace();
 		}
-		return newInstance;
+
 	}
 
 	public boolean canHaveChildren() {
diff --git a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/model/BImage.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/model/BImage.java
index 4a62e449..0d626f92 100644
--- a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/model/BImage.java
+++ b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/model/BImage.java
@@ -6,7 +6,7 @@
 
 package de.bmotionstudio.gef.editor.model;
 
-import de.bmotionstudio.gef.editor.AttributeConstants;
+import de.bmotionstudio.gef.editor.attribute.BAttributeImage;
 
 /**
  * @author Lukas Ladenberger
@@ -27,7 +27,9 @@ public class BImage extends BControl {
 
 	@Override
 	protected void initAttributes() {
-		initAttribute(AttributeConstants.ATTRIBUTE_IMAGE, null);
+
+		initAttribute(new BAttributeImage(null));
+
 	}
 
 }
diff --git a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/model/BRadioButton.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/model/BRadioButton.java
index d4fb6291..ea370fbf 100644
--- a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/model/BRadioButton.java
+++ b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/model/BRadioButton.java
@@ -12,6 +12,14 @@ import org.eclipse.swt.graphics.RGB;
 
 import de.bmotionstudio.gef.editor.AttributeConstants;
 import de.bmotionstudio.gef.editor.ButtonGroupHelper;
+import de.bmotionstudio.gef.editor.attribute.BAttributeButtonGroup;
+import de.bmotionstudio.gef.editor.attribute.BAttributeChecked;
+import de.bmotionstudio.gef.editor.attribute.BAttributeEnabled;
+import de.bmotionstudio.gef.editor.attribute.BAttributeHeight;
+import de.bmotionstudio.gef.editor.attribute.BAttributeSize;
+import de.bmotionstudio.gef.editor.attribute.BAttributeText;
+import de.bmotionstudio.gef.editor.attribute.BAttributeTextColor;
+import de.bmotionstudio.gef.editor.attribute.BAttributeValue;
 
 /**
  * @author Lukas Ladenberger
@@ -39,14 +47,20 @@ public class BRadioButton extends BControl {
 
 	@Override
 	protected void initAttributes() {
-		initAttribute(AttributeConstants.ATTRIBUTE_TEXT, DEFAULT_TEXT);
-		initAttribute(AttributeConstants.ATTRIBUTE_TEXT_COLOR, new RGB(0, 0, 0));
-		initAttribute(AttributeConstants.ATTRIBUTE_CHECKED, true);
-		initAttribute(AttributeConstants.ATTRIBUTE_ENABLED, true);
-		initAttribute(AttributeConstants.ATTRIBUTE_VALUE, "");
-		initAttribute(AttributeConstants.ATTRIBUTE_BUTTONGROUP, "");
-		initAttribute(AttributeConstants.ATTRIBUTE_HEIGHT, 21, false, false,
-				AttributeConstants.ATTRIBUTE_SIZE);
+
+		initAttribute(new BAttributeText(DEFAULT_TEXT));
+		initAttribute(new BAttributeTextColor(new RGB(0, 0, 0)));
+		initAttribute(new BAttributeEnabled(true));
+		initAttribute(new BAttributeChecked(true));
+		initAttribute(new BAttributeValue(""));
+		initAttribute(new BAttributeButtonGroup(""));
+
+		BAttributeHeight aHeight = new BAttributeHeight(21);
+		aHeight.setGroup(BAttributeSize.ID);
+		aHeight.setShow(false);
+		aHeight.setEditable(false);
+		initAttribute(aHeight);
+
 	}
 
 	@Override
diff --git a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/model/BShape.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/model/BShape.java
index 91d91228..3e2bdb23 100644
--- a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/model/BShape.java
+++ b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/model/BShape.java
@@ -11,9 +11,14 @@ import org.eclipse.swt.graphics.RGB;
 
 import de.bmotionstudio.gef.editor.AttributeConstants;
 import de.bmotionstudio.gef.editor.BMotionStudioImage;
+import de.bmotionstudio.gef.editor.attribute.BAttributeAlpha;
+import de.bmotionstudio.gef.editor.attribute.BAttributeBackgroundColor;
 import de.bmotionstudio.gef.editor.attribute.BAttributeDirection;
 import de.bmotionstudio.gef.editor.attribute.BAttributeFillType;
+import de.bmotionstudio.gef.editor.attribute.BAttributeForegroundColor;
+import de.bmotionstudio.gef.editor.attribute.BAttributeImage;
 import de.bmotionstudio.gef.editor.attribute.BAttributeOrientation;
+import de.bmotionstudio.gef.editor.attribute.BAttributeOutlineAlpha;
 import de.bmotionstudio.gef.editor.attribute.BAttributeShape;
 
 /**
@@ -40,21 +45,18 @@ public class BShape extends BControl {
 
 	@Override
 	protected void initAttributes() {
-		initAttribute(AttributeConstants.ATTRIBUTE_BACKGROUND_COLOR, new RGB(
-				255, 0, 0));
-		initAttribute(AttributeConstants.ATTRIBUTE_FOREGROUND_COLOR, new RGB(0,
-				0, 0));
-		initAttribute(AttributeConstants.ATTRIBUTE_IMAGE, null);
-		initAttribute(AttributeConstants.ATTRIBUTE_ALPHA, 255);
-		initAttribute(AttributeConstants.ATTRIBUTE_OUTLINEALPHA, 0);
-		initAttribute(AttributeConstants.ATTRIBUTE_SHAPE,
-				BAttributeShape.SHAPE_RECTANGLE);
-		initAttribute(AttributeConstants.ATTRIBUTE_ORIENTATION,
-				BAttributeOrientation.HORIZONTAL);
-		initAttribute(AttributeConstants.ATTRIBUTE_DIRECTION,
-				BAttributeDirection.NORTH);
-		initAttribute(AttributeConstants.ATTRIBUTE_FILLTYPE,
-				BAttributeFillType.FILLED);
+
+		initAttribute(new BAttributeBackgroundColor(new RGB(255, 0, 0)));
+		initAttribute(new BAttributeForegroundColor(new RGB(0, 0, 0)));
+		initAttribute(new BAttributeImage(null));
+		initAttribute(new BAttributeAlpha(255));
+		initAttribute(new BAttributeOutlineAlpha(0));
+		initAttribute(new BAttributeShape(BAttributeShape.SHAPE_RECTANGLE));
+		initAttribute(new BAttributeOrientation(
+				BAttributeOrientation.HORIZONTAL));
+		initAttribute(new BAttributeDirection(BAttributeDirection.NORTH));
+		initAttribute(new BAttributeFillType(BAttributeFillType.FILLED));
+
 	}
 
 	@Override
diff --git a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/model/BTable.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/model/BTable.java
index c896d09d..3d455a43 100644
--- a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/model/BTable.java
+++ b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/model/BTable.java
@@ -9,8 +9,13 @@ package de.bmotionstudio.gef.editor.model;
 import org.eclipse.draw2d.ColorConstants;
 import org.eclipse.draw2d.geometry.Rectangle;
 
-import de.bmotionstudio.gef.editor.AttributeConstants;
 import de.bmotionstudio.gef.editor.attribute.AbstractAttribute;
+import de.bmotionstudio.gef.editor.attribute.BAttributeColumns;
+import de.bmotionstudio.gef.editor.attribute.BAttributeForegroundColor;
+import de.bmotionstudio.gef.editor.attribute.BAttributeHeight;
+import de.bmotionstudio.gef.editor.attribute.BAttributeRows;
+import de.bmotionstudio.gef.editor.attribute.BAttributeSize;
+import de.bmotionstudio.gef.editor.attribute.BAttributeWidth;
 import de.bmotionstudio.gef.editor.command.CreateCommand;
 
 public class BTable extends BControl {
@@ -47,16 +52,30 @@ public class BTable extends BControl {
 
 	@Override
 	protected void initAttributes() {
-		initAttribute(AttributeConstants.ATTRIBUTE_SIZE, null, false, false,
-				AbstractAttribute.ROOT);
-		initAttribute(AttributeConstants.ATTRIBUTE_WIDTH, 0, false, false,
-				AttributeConstants.ATTRIBUTE_SIZE);
-		initAttribute(AttributeConstants.ATTRIBUTE_HEIGHT, 0, false, false,
-				AttributeConstants.ATTRIBUTE_SIZE);
-		initAttribute(AttributeConstants.ATTRIBUTE_FOREGROUND_COLOR,
-				ColorConstants.black.getRGB());
-		initAttribute(AttributeConstants.ATTRIBUTE_COLUMNS, 1);
-		initAttribute(AttributeConstants.ATTRIBUTE_ROWS, 1);
+
+		BAttributeSize aSize = new BAttributeSize(null);
+		aSize.setGroup(AbstractAttribute.ROOT);
+		aSize.setShow(false);
+		aSize.setEditable(false);
+		initAttribute(aSize);
+
+		BAttributeHeight aHeight = new BAttributeHeight(0);
+		aHeight.setGroup(BAttributeSize.ID);
+		aHeight.setShow(false);
+		aHeight.setEditable(false);
+		initAttribute(aHeight);
+
+		BAttributeWidth aWidth = new BAttributeWidth(0);
+		aWidth.setGroup(BAttributeSize.ID);
+		aWidth.setShow(false);
+		aWidth.setEditable(false);
+		initAttribute(aWidth);
+
+		initAttribute(new BAttributeForegroundColor(
+				ColorConstants.black.getRGB()));
+		initAttribute(new BAttributeColumns(1));
+		initAttribute(new BAttributeRows(1));
+
 	}
 
 	@Override
diff --git a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/model/BTableCell.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/model/BTableCell.java
index 631f54b4..3a735ce2 100644
--- a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/model/BTableCell.java
+++ b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/model/BTableCell.java
@@ -8,7 +8,12 @@ package de.bmotionstudio.gef.editor.model;
 
 import org.eclipse.draw2d.ColorConstants;
 
-import de.bmotionstudio.gef.editor.AttributeConstants;
+import de.bmotionstudio.gef.editor.attribute.BAttributeBackgroundColor;
+import de.bmotionstudio.gef.editor.attribute.BAttributeForegroundColor;
+import de.bmotionstudio.gef.editor.attribute.BAttributeHeight;
+import de.bmotionstudio.gef.editor.attribute.BAttributeSize;
+import de.bmotionstudio.gef.editor.attribute.BAttributeText;
+import de.bmotionstudio.gef.editor.attribute.BAttributeTextColor;
 
 public class BTableCell extends BControl {
 
@@ -20,15 +25,25 @@ public class BTableCell extends BControl {
 
 	@Override
 	protected void initAttributes() {
-		initAttribute(AttributeConstants.ATTRIBUTE_BACKGROUND_COLOR,
-				ColorConstants.white.getRGB());
-		initAttribute(AttributeConstants.ATTRIBUTE_FOREGROUND_COLOR,
-				ColorConstants.black.getRGB(), true, false);
-		initAttribute(AttributeConstants.ATTRIBUTE_TEXT_COLOR,
+
+		initAttribute(new BAttributeBackgroundColor(
+				ColorConstants.white.getRGB()));
+
+		BAttributeForegroundColor aForegroundColor = new BAttributeForegroundColor(
 				ColorConstants.black.getRGB());
-		initAttribute(AttributeConstants.ATTRIBUTE_TEXT, "");
-		initAttribute(AttributeConstants.ATTRIBUTE_HEIGHT, 20, false, false,
-				AttributeConstants.ATTRIBUTE_SIZE);
+		aForegroundColor.setEditable(true);
+		aForegroundColor.setShow(false);
+		initAttribute(aForegroundColor);
+
+		initAttribute(new BAttributeTextColor(ColorConstants.black.getRGB()));
+		initAttribute(new BAttributeText(""));
+
+		BAttributeHeight aHeight = new BAttributeHeight(20);
+		aHeight.setGroup(BAttributeSize.ID);
+		aHeight.setShow(false);
+		aHeight.setEditable(false);
+		initAttribute(aHeight);
+
 	}
 
 	@Override
diff --git a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/model/BTableColumn.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/model/BTableColumn.java
index 2b10c3b1..8fd52676 100644
--- a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/model/BTableColumn.java
+++ b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/model/BTableColumn.java
@@ -8,7 +8,9 @@ package de.bmotionstudio.gef.editor.model;
 
 import org.eclipse.draw2d.ColorConstants;
 
-import de.bmotionstudio.gef.editor.AttributeConstants;
+import de.bmotionstudio.gef.editor.attribute.BAttributeForegroundColor;
+import de.bmotionstudio.gef.editor.attribute.BAttributeHeight;
+import de.bmotionstudio.gef.editor.attribute.BAttributeSize;
 
 public class BTableColumn extends BControl {
 
@@ -20,10 +22,19 @@ public class BTableColumn extends BControl {
 
 	@Override
 	protected void initAttributes() {
-		initAttribute(AttributeConstants.ATTRIBUTE_FOREGROUND_COLOR,
-				ColorConstants.black.getRGB(), true, false);
-		initAttribute(AttributeConstants.ATTRIBUTE_HEIGHT, 0, false, false,
-				AttributeConstants.ATTRIBUTE_SIZE);
+
+		BAttributeForegroundColor aForegroundColor = new BAttributeForegroundColor(
+				ColorConstants.black.getRGB());
+		aForegroundColor.setEditable(true);
+		aForegroundColor.setShow(false);
+		initAttribute(aForegroundColor);
+
+		BAttributeHeight aHeight = new BAttributeHeight(0);
+		aHeight.setGroup(BAttributeSize.ID);
+		aHeight.setShow(false);
+		aHeight.setEditable(false);
+		initAttribute(aHeight);
+
 	}
 
 	@Override
diff --git a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/model/BText.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/model/BText.java
index bbaa742f..6a2ad36c 100644
--- a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/model/BText.java
+++ b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/model/BText.java
@@ -8,7 +8,11 @@ package de.bmotionstudio.gef.editor.model;
 
 import org.eclipse.draw2d.ColorConstants;
 
-import de.bmotionstudio.gef.editor.AttributeConstants;
+import de.bmotionstudio.gef.editor.attribute.BAttributeBackgroundColor;
+import de.bmotionstudio.gef.editor.attribute.BAttributeBackgroundVisible;
+import de.bmotionstudio.gef.editor.attribute.BAttributeFont;
+import de.bmotionstudio.gef.editor.attribute.BAttributeText;
+import de.bmotionstudio.gef.editor.attribute.BAttributeTextColor;
 
 /**
  * @author Lukas Ladenberger
@@ -31,14 +35,15 @@ public class BText extends BControl {
 
 	@Override
 	protected void initAttributes() {
-		initAttribute(AttributeConstants.ATTRIBUTE_TEXT, DEFAULT_TEXT);
-		initAttribute(AttributeConstants.ATTRIBUTE_BACKGROUND_COLOR,
-				ColorConstants.white.getRGB());
-		initAttribute(AttributeConstants.ATTRIBUTE_TEXT_COLOR,
-				ColorConstants.black.getRGB());
-		initAttribute(AttributeConstants.ATTRIBUTE_BACKGROUND_VISIBLE, true);
-		initAttribute(AttributeConstants.ATTRIBUTE_FONT,
-				"1||9.75|0|WINDOWS|1|-13|0|0|0|400|0|0|0|0|0|0|0|0|");
+
+		initAttribute(new BAttributeText(DEFAULT_TEXT));
+		initAttribute(new BAttributeTextColor(ColorConstants.black.getRGB()));
+		initAttribute(new BAttributeBackgroundColor(
+				ColorConstants.white.getRGB()));
+		initAttribute(new BAttributeBackgroundVisible(true));
+		initAttribute(new BAttributeFont(
+				"1||9.75|0|WINDOWS|1|-13|0|0|0|400|0|0|0|0|0|0|0|0|"));
+
 	}
 
 }
diff --git a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/model/BTextfield.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/model/BTextfield.java
index d832ef10..aafd035e 100644
--- a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/model/BTextfield.java
+++ b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/model/BTextfield.java
@@ -7,6 +7,9 @@
 package de.bmotionstudio.gef.editor.model;
 
 import de.bmotionstudio.gef.editor.AttributeConstants;
+import de.bmotionstudio.gef.editor.attribute.BAttributeHeight;
+import de.bmotionstudio.gef.editor.attribute.BAttributeSize;
+import de.bmotionstudio.gef.editor.attribute.BAttributeText;
 
 /**
  * @author Lukas Ladenberger
@@ -29,9 +32,15 @@ public class BTextfield extends BControl {
 
 	@Override
 	protected void initAttributes() {
-		initAttribute(AttributeConstants.ATTRIBUTE_TEXT, DEFAULT_TEXT);
-		initAttribute(AttributeConstants.ATTRIBUTE_HEIGHT, 21,
-				AttributeConstants.ATTRIBUTE_SIZE);
+
+		initAttribute(new BAttributeText(DEFAULT_TEXT));
+
+		BAttributeHeight aHeight = new BAttributeHeight(21);
+		aHeight.setGroup(BAttributeSize.ID);
+		aHeight.setShow(false);
+		aHeight.setEditable(false);
+		initAttribute(aHeight);
+
 	}
 
 	@Override
diff --git a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/model/Light.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/model/Light.java
index e3257455..89ef5f39 100644
--- a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/model/Light.java
+++ b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/model/Light.java
@@ -7,8 +7,12 @@ package de.bmotionstudio.gef.editor.model;
 
 import org.eclipse.draw2d.ColorConstants;
 
-import de.bmotionstudio.gef.editor.AttributeConstants;
 import de.bmotionstudio.gef.editor.attribute.AbstractAttribute;
+import de.bmotionstudio.gef.editor.attribute.BAttributeBackgroundColor;
+import de.bmotionstudio.gef.editor.attribute.BAttributeCoordinates;
+import de.bmotionstudio.gef.editor.attribute.BAttributeHeight;
+import de.bmotionstudio.gef.editor.attribute.BAttributeSize;
+import de.bmotionstudio.gef.editor.attribute.BAttributeWidth;
 
 public class Light extends BControl {
 
@@ -21,16 +25,32 @@ public class Light extends BControl {
 	@Override
 	protected void initAttributes() {
 
-		initAttribute(AttributeConstants.ATTRIBUTE_SIZE, null, false, false,
-				AbstractAttribute.ROOT);
-		initAttribute(AttributeConstants.ATTRIBUTE_COORDINATES, null, false,
-				false, AbstractAttribute.ROOT);
-		initAttribute(AttributeConstants.ATTRIBUTE_WIDTH, 12, false, false,
-				AttributeConstants.ATTRIBUTE_SIZE);
-		initAttribute(AttributeConstants.ATTRIBUTE_HEIGHT, 12, false, false,
-				AttributeConstants.ATTRIBUTE_SIZE);
-		initAttribute(AttributeConstants.ATTRIBUTE_BACKGROUND_COLOR,
-				ColorConstants.lightGray.getRGB());
+		BAttributeCoordinates aCoordinates = new BAttributeCoordinates(null);
+		aCoordinates.setGroup(AbstractAttribute.ROOT);
+		aCoordinates.setShow(false);
+		aCoordinates.setEditable(false);
+		initAttribute(aCoordinates);
+
+		BAttributeSize aSize = new BAttributeSize(null);
+		aSize.setGroup(AbstractAttribute.ROOT);
+		aSize.setShow(false);
+		aSize.setEditable(false);
+		initAttribute(aSize);
+
+		BAttributeHeight aHeight = new BAttributeHeight(12);
+		aHeight.setGroup(BAttributeSize.ID);
+		aHeight.setShow(false);
+		aHeight.setEditable(false);
+		initAttribute(aHeight);
+
+		BAttributeWidth aWidth = new BAttributeWidth(12);
+		aWidth.setGroup(BAttributeSize.ID);
+		aWidth.setShow(false);
+		aWidth.setEditable(false);
+		initAttribute(aWidth);
+
+		initAttribute(new BAttributeBackgroundColor(
+				ColorConstants.lightGray.getRGB()));
 
 	}
 
diff --git a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/model/Signal.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/model/Signal.java
index d9e62ef1..5065cca3 100644
--- a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/model/Signal.java
+++ b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/model/Signal.java
@@ -7,8 +7,10 @@ package de.bmotionstudio.gef.editor.model;
 
 import org.eclipse.draw2d.geometry.Rectangle;
 
-import de.bmotionstudio.gef.editor.AttributeConstants;
+import de.bmotionstudio.gef.editor.attribute.AttributeLights;
 import de.bmotionstudio.gef.editor.attribute.AttributeTrackDirection;
+import de.bmotionstudio.gef.editor.attribute.BAttributeHeight;
+import de.bmotionstudio.gef.editor.attribute.BAttributeSize;
 import de.bmotionstudio.gef.editor.command.CreateCommand;
 
 /**
@@ -42,11 +44,16 @@ public class Signal extends BControl {
 
 	@Override
 	protected void initAttributes() {
-		initAttribute(AttributeConstants.ATTRIBUTE_TRACK_DIRECTION,
-				AttributeTrackDirection.RIGHT);
-		initAttribute(AttributeConstants.ATTRIBUTE_HEIGHT, 48, false, false,
-				AttributeConstants.ATTRIBUTE_SIZE);
-		initAttribute(AttributeConstants.ATTRIBUTE_LIGHTS, 2);
+
+		BAttributeHeight aHeight = new BAttributeHeight(48);
+		aHeight.setGroup(BAttributeSize.ID);
+		aHeight.setShow(false);
+		aHeight.setEditable(false);
+		initAttribute(aHeight);
+
+		initAttribute(new AttributeTrackDirection(AttributeTrackDirection.RIGHT));
+		initAttribute(new AttributeLights(2));
+
 	}
 
 	@Override
diff --git a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/model/Switch.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/model/Switch.java
index bd5fd4fb..918b7823 100644
--- a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/model/Switch.java
+++ b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/model/Switch.java
@@ -15,6 +15,9 @@ import de.bmotionstudio.gef.editor.AttributeConstants;
 import de.bmotionstudio.gef.editor.attribute.AbstractAttribute;
 import de.bmotionstudio.gef.editor.attribute.AttributeSwitchDirection;
 import de.bmotionstudio.gef.editor.attribute.AttributeSwitchPosition;
+import de.bmotionstudio.gef.editor.attribute.BAttributeHeight;
+import de.bmotionstudio.gef.editor.attribute.BAttributeSize;
+import de.bmotionstudio.gef.editor.attribute.BAttributeWidth;
 import de.bmotionstudio.gef.editor.command.CreateCommand;
 import de.bmotionstudio.gef.editor.command.TrackCreateCommand;
 
@@ -101,15 +104,18 @@ public class Switch extends BControl {
 	@Override
 	protected void initAttributes() {
 
-		initAttribute(AttributeConstants.ATTRIBUTE_WIDTH, 100,
-				AttributeConstants.ATTRIBUTE_SIZE);
-		initAttribute(AttributeConstants.ATTRIBUTE_HEIGHT, 50,
-				AttributeConstants.ATTRIBUTE_SIZE);
+		BAttributeHeight aHeight = new BAttributeHeight(50);
+		aHeight.setGroup(BAttributeSize.ID);
+		initAttribute(aHeight);
 
-		initAttribute(AttributeConstants.ATTRIBUTE_SWITCH_DIRECTION,
-				AttributeSwitchDirection.RIGHT_SOUTH);
-		initAttribute(AttributeConstants.ATTRIBUTE_SWITCH_POSITION,
-				AttributeSwitchPosition.UNKNOWN);
+		BAttributeWidth aWidth = new BAttributeWidth(100);
+		aWidth.setGroup(BAttributeSize.ID);
+		initAttribute(aWidth);
+
+		initAttribute(new AttributeSwitchDirection(
+				AttributeSwitchDirection.RIGHT_SOUTH));
+		initAttribute(new AttributeSwitchPosition(
+				AttributeSwitchPosition.UNKNOWN));
 
 	}
 
diff --git a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/model/Tank.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/model/Tank.java
index ffb63370..3b6215e9 100644
--- a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/model/Tank.java
+++ b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/model/Tank.java
@@ -6,9 +6,15 @@
 
 package de.bmotionstudio.gef.editor.model;
 
-import org.eclipse.swt.graphics.RGB;
+import org.eclipse.draw2d.ColorConstants;
 
-import de.bmotionstudio.gef.editor.AttributeConstants;
+import de.bmotionstudio.gef.editor.attribute.AttributeFillColor;
+import de.bmotionstudio.gef.editor.attribute.AttributeFillHeight;
+import de.bmotionstudio.gef.editor.attribute.AttributeMeasureInterval;
+import de.bmotionstudio.gef.editor.attribute.AttributeMeasureMaxPos;
+import de.bmotionstudio.gef.editor.attribute.AttributeShowMeasure;
+import de.bmotionstudio.gef.editor.attribute.BAttributeAlpha;
+import de.bmotionstudio.gef.editor.attribute.BAttributeBackgroundColor;
 
 public class Tank extends BControl {
 
@@ -26,15 +32,14 @@ public class Tank extends BControl {
 	@Override
 	protected void initAttributes() {
 
-		initAttribute(AttributeConstants.ATTRIBUTE_SHOWS_MEASURE, true);
-		initAttribute(AttributeConstants.ATTRIBUTE_MEASURE_INTERVAL, 25);
-		initAttribute(AttributeConstants.ATTRIBUTE_MEASURE_MAXPOS, 100);
-		initAttribute(AttributeConstants.ATTRIBUTE_FILL_COLOR,
-				new RGB(0, 0, 255));
-		initAttribute(AttributeConstants.ATTRIBUTE_FILL_HEIGHT, 75);
-		initAttribute(AttributeConstants.ATTRIBUTE_BACKGROUND_COLOR, new RGB(
-				255, 255, 255));
-		initAttribute(AttributeConstants.ATTRIBUTE_ALPHA, 0);
+		initAttribute(new BAttributeBackgroundColor(
+				ColorConstants.black.getRGB()));
+		initAttribute(new AttributeShowMeasure(true));
+		initAttribute(new AttributeMeasureInterval(25));
+		initAttribute(new AttributeMeasureMaxPos(100));
+		initAttribute(new AttributeFillColor(ColorConstants.blue.getRGB()));
+		initAttribute(new AttributeFillHeight(75));
+		initAttribute(new BAttributeAlpha(0));
 
 	}
 
diff --git a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/model/Track.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/model/Track.java
index 2d335f6b..efc34288 100644
--- a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/model/Track.java
+++ b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/model/Track.java
@@ -6,11 +6,15 @@
 
 package de.bmotionstudio.gef.editor.model;
 
-import org.eclipse.draw2d.ColorConstants;
+import org.eclipse.swt.graphics.RGB;
 
-import de.bmotionstudio.gef.editor.AttributeConstants;
+import de.bmotionstudio.gef.editor.attribute.BAttributeConnection;
 import de.bmotionstudio.gef.editor.attribute.BAttributeConnectionSourceDecoration;
+import de.bmotionstudio.gef.editor.attribute.BAttributeConnectionTargetDecoration;
+import de.bmotionstudio.gef.editor.attribute.BAttributeForegroundColor;
+import de.bmotionstudio.gef.editor.attribute.BAttributeLabel;
 import de.bmotionstudio.gef.editor.attribute.BAttributeLineStyle;
+import de.bmotionstudio.gef.editor.attribute.BAttributeLineWidth;
 
 /**
  * @author Lukas Ladenberger
@@ -39,18 +43,36 @@ public class Track extends BControl {
 	@Override
 	protected void initAttributes() {
 
-		initAttribute(AttributeConstants.ATTRIBUTE_LINEWIDTH, 1);
-		initAttribute(AttributeConstants.ATTRIBUTE_LINESTYLE,
+		BAttributeConnection aConnection = new BAttributeConnection(null);
+		initAttribute(aConnection);
+
+		BAttributeLineWidth aLineWidth = new BAttributeLineWidth(1);
+		aLineWidth.setGroup(aConnection);
+		initAttribute(aLineWidth);
+
+		BAttributeLineStyle aLineStyle = new BAttributeLineStyle(
 				BAttributeLineStyle.SOLID_CONNECTION);
-		initAttribute(AttributeConstants.ATTRIBUTE_FOREGROUND_COLOR,
-				ColorConstants.black.getRGB());
-		initAttribute(
-				AttributeConstants.ATTRIBUTE_CONNECTION_SOURCE_DECORATION,
+		aLineStyle.setGroup(aConnection);
+		initAttribute(aLineStyle);
+
+		BAttributeForegroundColor aForegroundColor = new BAttributeForegroundColor(
+				new RGB(0, 0, 0));
+		aForegroundColor.setGroup(aConnection);
+		initAttribute(aForegroundColor);
+
+		BAttributeConnectionSourceDecoration aSourceDeco = new BAttributeConnectionSourceDecoration(
 				BAttributeConnectionSourceDecoration.DECORATION_NONE);
-		initAttribute(
-				AttributeConstants.ATTRIBUTE_CONNECTION_TARGET_DECORATION,
+		aSourceDeco.setGroup(aConnection);
+		initAttribute(aSourceDeco);
+
+		BAttributeConnectionTargetDecoration aTargetDeco = new BAttributeConnectionTargetDecoration(
 				BAttributeConnectionSourceDecoration.DECORATION_NONE);
-		initAttribute(AttributeConstants.ATTRIBUTE_LABEL, "Label...");
+		aTargetDeco.setGroup(aConnection);
+		initAttribute(aTargetDeco);
+
+		BAttributeLabel aLabel = new BAttributeLabel("Label ...");
+		aLabel.setGroup(aConnection);
+		initAttribute(aLabel);
 
 	}
 
diff --git a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/model/TrackNode.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/model/TrackNode.java
index d72a1166..1dc0156d 100644
--- a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/model/TrackNode.java
+++ b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/model/TrackNode.java
@@ -12,9 +12,13 @@ import java.util.List;
 import org.eclipse.draw2d.ColorConstants;
 
 import de.bmotionstudio.gef.editor.Animation;
-import de.bmotionstudio.gef.editor.AttributeConstants;
 import de.bmotionstudio.gef.editor.attribute.AbstractAttribute;
+import de.bmotionstudio.gef.editor.attribute.BAttributeForegroundColor;
+import de.bmotionstudio.gef.editor.attribute.BAttributeHeight;
 import de.bmotionstudio.gef.editor.attribute.BAttributeLineStyle;
+import de.bmotionstudio.gef.editor.attribute.BAttributeLineWidth;
+import de.bmotionstudio.gef.editor.attribute.BAttributeSize;
+import de.bmotionstudio.gef.editor.attribute.BAttributeWidth;
 
 /**
  * @author Lukas Ladenberger
@@ -41,17 +45,31 @@ public class TrackNode extends BControl {
 
 	@Override
 	protected void initAttributes() {
-		initAttribute(AttributeConstants.ATTRIBUTE_SIZE, null, false, false,
-				AbstractAttribute.ROOT);
-		initAttribute(AttributeConstants.ATTRIBUTE_WIDTH, 20, false, false,
-				AttributeConstants.ATTRIBUTE_SIZE);
-		initAttribute(AttributeConstants.ATTRIBUTE_HEIGHT, 20, false, false,
-				AttributeConstants.ATTRIBUTE_SIZE);
-		initAttribute(AttributeConstants.ATTRIBUTE_FOREGROUND_COLOR,
-				ColorConstants.black.getRGB());
-		initAttribute(AttributeConstants.ATTRIBUTE_LINEWIDTH, 1);
-		initAttribute(AttributeConstants.ATTRIBUTE_LINESTYLE,
-				BAttributeLineStyle.SOLID_CONNECTION);
+
+		BAttributeSize aSize = new BAttributeSize(null);
+		aSize.setGroup(AbstractAttribute.ROOT);
+		aSize.setShow(false);
+		aSize.setEditable(false);
+		initAttribute(aSize);
+
+		BAttributeHeight aHeight = new BAttributeHeight(20);
+		aHeight.setGroup(BAttributeSize.ID);
+		aHeight.setShow(false);
+		aHeight.setEditable(false);
+		initAttribute(aHeight);
+
+		BAttributeWidth aWidth = new BAttributeWidth(20);
+		aWidth.setGroup(BAttributeSize.ID);
+		aWidth.setShow(false);
+		aWidth.setEditable(false);
+		initAttribute(aWidth);
+
+		initAttribute(new BAttributeForegroundColor(
+				ColorConstants.black.getRGB()));
+		initAttribute(new BAttributeLineStyle(
+				BAttributeLineStyle.SOLID_CONNECTION));
+		initAttribute(new BAttributeLineWidth(1));
+
 	}
 
 	public List<Track> getSourceTracks() {
-- 
GitLab