diff --git a/Advanced Software Engineering/Advanced Software Engineering/Advanced Software Engineering.csproj b/Advanced Software Engineering/Advanced Software Engineering/Advanced Software Engineering.csproj
index 9a9ec55..056b403 100644
--- a/Advanced Software Engineering/Advanced Software Engineering/Advanced Software Engineering.csproj
+++ b/Advanced Software Engineering/Advanced Software Engineering/Advanced Software Engineering.csproj
@@ -89,6 +89,7 @@
+
@@ -97,7 +98,7 @@
-
+
diff --git a/Advanced Software Engineering/Advanced Software Engineering/Verbs/Value/ValueObjects/ColorValue.cs b/Advanced Software Engineering/Advanced Software Engineering/Verbs/Value/ValueObjects/ColorValue.cs
new file mode 100644
index 0000000..6ddd3c8
--- /dev/null
+++ b/Advanced Software Engineering/Advanced Software Engineering/Verbs/Value/ValueObjects/ColorValue.cs
@@ -0,0 +1,67 @@
+using Advanced_Software_Engineering.Verbs.Value.ValueTypes;
+using System;
+using System.Drawing;
+
+namespace Advanced_Software_Engineering.Verbs.Value.ValueObjects {
+
+ internal class ColorValue : IValue {
+ private IValue r;
+ private IValue g;
+ private IValue b;
+
+ bool hasAlpha;
+ private IValue a;
+
+ public ColorValue(Color value) {
+ r = new IntValue(value.R);
+ g = new IntValue(value.G);
+ b = new IntValue(value.B);
+ a = new IntValue(value.A);
+ hasAlpha = true;
+ }
+
+ public ColorValue(IValue r, IValue g, IValue b, IValue a) {
+ this.r = r;
+ this.g = g;
+ this.b = b;
+ this.a = a;
+ hasAlpha = true;
+ }
+
+ public ColorValue(IValue r, IValue g, IValue b) {
+ this.r = r;
+ this.g = g;
+ this.b = b;
+ hasAlpha = false;
+ }
+
+ public string GetDescription() {
+ return "A color value";
+ }
+
+ public string GetOriginalType() {
+ return "color";
+ }
+
+ public bool ToBool() {
+ return ToColor().GetBrightness() > 0.5;
+ }
+
+ public Color ToColor() {
+ if (hasAlpha) return Color.FromArgb(a.ToInt(), r.ToInt(), g.ToInt(), b.ToInt());
+ else return Color.FromArgb(r.ToInt(), g.ToInt(), b.ToInt());
+ }
+
+ public double ToDouble() {
+ return ToColor().GetBrightness();
+ }
+
+ public int ToInt() {
+ return ToColor().ToArgb();
+ }
+
+ public bool isInitialised() {
+ return true;
+ }
+ }
+}
\ No newline at end of file
diff --git a/Advanced Software Engineering/Advanced Software Engineering/Verbs/Value/ValueTypes/ColorValue.cs b/Advanced Software Engineering/Advanced Software Engineering/Verbs/Value/ValueTypes/ColorValue.cs
deleted file mode 100644
index 8a8bf26..0000000
--- a/Advanced Software Engineering/Advanced Software Engineering/Verbs/Value/ValueTypes/ColorValue.cs
+++ /dev/null
@@ -1,50 +0,0 @@
-using System;
-using System.Drawing;
-
-namespace Advanced_Software_Engineering.Verbs.Value.ValueTypes {
-
- internal class ColorValue : IValue {
- private bool initialised = false;
-
- private Color value;
- private Type type = typeof(Color);
-
- public ColorValue(Color value) {
- this.value = value;
- initialised = true;
- }
-
- public ColorValue() {
- }
-
- public string GetDescription() {
- if (initialised) return "A color with description " + value.ToString();
- else return "An uninitialised color";
- }
-
- public string GetOriginalType() {
- return "color";
- }
-
- public bool ToBool() {
- return ToColor().GetBrightness() > 0.5;
- }
-
- public Color ToColor() {
- if (initialised) return value;
- else throw new Exception("Color value not set");
- }
-
- public double ToDouble() {
- return ToColor().GetBrightness();
- }
-
- public int ToInt() {
- return ToColor().ToArgb();
- }
-
- public bool isInitialised() {
- return initialised;
- }
- }
-}
\ No newline at end of file