diff --git a/BluntDx/BluntDx.vcproj.ODD-SOCKS.chrisf.user b/BluntDx/BluntDx.vcproj.ODD-SOCKS.chrisf.user
new file mode 100644
index 0000000000..4285de7e4d
--- /dev/null
+++ b/BluntDx/BluntDx.vcproj.ODD-SOCKS.chrisf.user
@@ -0,0 +1,65 @@
+
+
+
+
+
+
+
+
+
+
+
diff --git a/OpenRa.FileFormats/OpenRa.FileFormats.csproj b/OpenRa.FileFormats/OpenRa.FileFormats.csproj
index 1ff218791b..d3b973391c 100644
--- a/OpenRa.FileFormats/OpenRa.FileFormats.csproj
+++ b/OpenRa.FileFormats/OpenRa.FileFormats.csproj
@@ -54,6 +54,7 @@
+
diff --git a/OpenRa.FileFormats/Tuple.cs b/OpenRa.FileFormats/Tuple.cs
new file mode 100644
index 0000000000..f20cd086bd
--- /dev/null
+++ b/OpenRa.FileFormats/Tuple.cs
@@ -0,0 +1,40 @@
+using System;
+using System.Collections.Generic;
+using System.Text;
+
+namespace OpenRa.FileFormats
+{
+ public class Tuple
+ {
+ public A a;
+
+ public Tuple(A a) { this.a = a; }
+ }
+
+ public class Tuple
+ {
+ public A a;
+ public B b;
+
+ public Tuple(A a, B b) { this.a = a; this.b = b; }
+ }
+
+ public class Tuple
+ {
+ public A a;
+ public B b;
+ public C c;
+
+ public Tuple(A a, B b, C c) { this.a = a; this.b = b; this.c = c; }
+ }
+
+ public class Tuple
+ {
+ public A a;
+ public B b;
+ public C c;
+ public D d;
+
+ public Tuple(A a, B b, C c, D d) { this.a = a; this.b = b; this.c = c; this.d = d; }
+ }
+}