diff --git a/src/link/C/Makefile b/src/link/C/Makefile
index 10e306be3a89804e80565460e722c03e8dddbeb4..ccefb00d6ef255cd85a8ba0059d62aad18394370 100644
--- a/src/link/C/Makefile
+++ b/src/link/C/Makefile
@@ -16,9 +16,9 @@ all: $(LINKSRCS) $(LINKLIB) $(AGENTS)
 $(LINKLIB): $(LINKOBJS)
 	$(AR) rcs $(LINKLIB) $(LINKOBJS)
 	
-$(AGENTS): $(AGENTSRCS) 
-	@echo Building $<
-	$(CC) $(CFLAGS) $(LDFLAGS) $< -o $@
+$(AGENTS): $(AGENTSRCS) $(LINKLIB)
+	@echo Building $@
+	$(CC) $(CFLAGS) $(LDFLAGS) $@.c -o $@
 
 .c.o: c_link.h
 	$(CC) -c $(CFLAGS) $< -o $@
diff --git a/src/link/C/__init__.py b/src/link/C/__init__.py
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/src/link/C/agents/c-frechie.c b/src/link/C/agents-broken/c_frenchie.c
similarity index 93%
rename from src/link/C/agents/c-frechie.c
rename to src/link/C/agents-broken/c_frenchie.c
index ed2ba095a5a24a44d54bd94bb5e3d7aa9117a83b..78866a62919c2f2442e4bdfb2e5c820cb301def2 100644
--- a/src/link/C/agents/c-frechie.c
+++ b/src/link/C/agents-broken/c_frenchie.c
@@ -1,5 +1,5 @@
 /*
- *  c-frechie.c
+ *  c_frechie.c
  *  c-link-lib
  *
  *  Created by Daniel Axtens on 22/04/10.
@@ -30,8 +30,8 @@
 #define NUMBEROFAGENTSGUESS 100
 
 /* The name of the n-th foe we've seen, as well as a 0/1 have we lost to them */
-char foesNames[][MAXFOENAMELEN] = NULL;
-int haveLostToFoe[] = NULL;
+char foesNames[][MAXFOENAMELEN];
+int haveLostToFoe[];
 
 /* The length of the array, and how far we are along it */
 size_t foesLen = 0;
@@ -46,13 +46,13 @@ ATTACKTYPE Attack( char * foe_name ) {
 	/* Here we choose the thing that will hurt them if they go for the kill */
 	switch (attack.realAttack) {
 		case rock:
-			result.promisedAttack = paper;
+			attack.promisedAttack = paper;
 			break;
 		case paper:
-			result.promisedAttack = scissors;
+			attack.promisedAttack = scissors;
 			break;
 		default: /* attack = scissors */
-			result.promisedAttack = rock;
+			attack.promisedAttack = rock;
 			break;
 	}
 	return attack;
@@ -72,6 +72,7 @@ ITEMTYPE Defend( char * foeName, ITEMTYPE foePromisedAttack ) {
 			defence = paper;
 			break;
 	}
+    return defence;
 }
 
 /* This is so much less fun in C */
diff --git a/src/link/C/agents/c-angel.c b/src/link/C/agents/c_angel.c
similarity index 98%
rename from src/link/C/agents/c-angel.c
rename to src/link/C/agents/c_angel.c
index c6c8687e3188486549ac188c3729bf17909b0557..17d5b65ce76b26394ce971cd56b75451cf02094d 100644
--- a/src/link/C/agents/c-angel.c
+++ b/src/link/C/agents/c_angel.c
@@ -1,5 +1,5 @@
 /*
- *  c-angel.c
+ *  c_angel.c
  *  c-link-lib
  *
  *  Created by Daniel Axtens on 20/04/10.
diff --git a/src/link/C/agents/c-lucifer.c b/src/link/C/agents/c_lucifer.c
similarity index 86%
rename from src/link/C/agents/c-lucifer.c
rename to src/link/C/agents/c_lucifer.c
index 1dabc3424374d1d1357124371a9988b788667c5c..204e1ddef79d442e9db6411124b2d7e653e62d67 100644
--- a/src/link/C/agents/c-lucifer.c
+++ b/src/link/C/agents/c_lucifer.c
@@ -1,5 +1,5 @@
 /*
- *  c-lucifer.c
+ *  c_lucifer.c
  *  c-link-lib
  *
  *  Created by Daniel Axtens on 20/04/10.
@@ -21,16 +21,16 @@ ATTACKTYPE Attack( char * foe_name ) {
 	/* Here we choose the thing that will hurt them if they go for a tie */
 	switch (attack.realAttack) {
 		case rock:
-			result.promisedAttack = scissors;
+			attack.promisedAttack = scissors;
 			break;
 		case paper:
-			result.promisedAttack = rock;
+			attack.promisedAttack = rock;
 			break;
 		default: /* attack = scissors */
-			result.promisedAttack = paper;
+			attack.promisedAttack = paper;
 			break;
 	}
-	attack.promisedAttack = result.realAttack;	/* Tells the truth for its bluff */
+	attack.promisedAttack = attack.realAttack;	/* Tells the truth for its bluff */
 	
 	return attack;
 }
@@ -49,6 +49,7 @@ ITEMTYPE Defend( char * foeName, ITEMTYPE foePromisedAttack ) {
 			defence = rock;
 			break;
 	}
+    return defence;
 }
 
 /* You need to define a results function, even if it isn't used
diff --git a/src/link/C/agents/c-streetfighter.c b/src/link/C/agents/c_streetfighter.c
similarity index 89%
rename from src/link/C/agents/c-streetfighter.c
rename to src/link/C/agents/c_streetfighter.c
index c63939d1267de91274731dfde78955fe56a106b6..0516c26412972f55356a6002262ce0ff0bb1206e 100644
--- a/src/link/C/agents/c-streetfighter.c
+++ b/src/link/C/agents/c_streetfighter.c
@@ -1,5 +1,5 @@
 /*
- *  c-streetfighter.c
+ *  c_streetfighter.c
  *  c-link-lib
  *
  *  Created by Daniel Axtens on 20/04/10.
@@ -20,13 +20,13 @@ ATTACKTYPE Attack( char * foe_name ) {
 	/* Here we choose the thing that will hurt them if they go for the kill */
 	switch (attack.realAttack) {
 		case rock:
-			result.promisedAttack = paper;
+			attack.promisedAttack = paper;
 			break;
 		case paper:
-			result.promisedAttack = scissors;
+			attack.promisedAttack = scissors;
 			break;
 		default: /* attack = scissors */
-			result.promisedAttack = rock;
+			attack.promisedAttack = rock;
 			break;
 	}
 	return attack;
@@ -46,6 +46,7 @@ ITEMTYPE Defend( char * foeName, ITEMTYPE foePromisedAttack ) {
 			defence = paper;
 			break;
 	}
+    return defence;
 }
 
 /* You need to define a results function, even if it isn't used
diff --git a/src/link/C/c-link-lib.xcodeproj/project.pbxproj b/src/link/C/c-link-lib.xcodeproj/project.pbxproj
index b01730e18685656a8799b527bf6685a7a0797d24..c2f58fd9cb5618fcf04d13cd51aa8c4c47a39a32 100644
Binary files a/src/link/C/c-link-lib.xcodeproj/project.pbxproj and b/src/link/C/c-link-lib.xcodeproj/project.pbxproj differ
diff --git a/src/link/C/c_agents.py b/src/link/C/c_agents.py
new file mode 100644
index 0000000000000000000000000000000000000000..ae6441045f7068abb99be068eb59634f17c75b49
--- /dev/null
+++ b/src/link/C/c_agents.py
@@ -0,0 +1,20 @@
+# add your agents to this file by copying the definition and adjusting
+# you then need to modify simulate.py
+
+from link.externAgent import externAgent
+
+class c_angel (externAgent):
+	def __init__ (self):
+		externAgent.__init__(self, "./link/C/agents/c_angel")
+
+class c_lucifer (externAgent):
+	def __init__ (self):
+		externAgent.__init__(self, "./link/C/agents/c_lucifer")
+
+class c_streetfighter (externAgent):
+	def __init__ (self):
+		externAgent.__init__(self, "./link/C/agents/c_streetfighter")
+
+class c_frenchie (externAgent):
+	def __init__ (self):
+		externAgent.__init__(self, "./link/C/agents/c_frenchie")
diff --git a/src/link/cangel.py b/src/link/cangel.py
deleted file mode 100644
index 45a64d19df3aa37db87bf9322a15deff510de50b..0000000000000000000000000000000000000000
--- a/src/link/cangel.py
+++ /dev/null
@@ -1,8 +0,0 @@
-from uccProgComp import BaseAgent, LearningAgent, RandomAttack
-from externAgent import externAgent
-from rpsconst import *
-
-class CAngel (externAgent):
-	def __init__ (self):
-		externAgent.__init__(self, "./link/C/c-link-lib/agents/c-angel")
-		
diff --git a/src/simulate.py b/src/simulate.py
index 643dad0a58a25de36d2d2de9fa0599d5c6787577..7fa1bf2a4f52c13798bc5a565990667da77e11df 100755
--- a/src/simulate.py
+++ b/src/simulate.py
@@ -6,10 +6,10 @@ Licensed under an MIT-style license: see the LICENSE file for details.
 '''
 
 # Import and add your agents here:
-from link.cangel import CAngel
+from link.C.c_agents import c_angel, c_lucifer, c_streetfighter, c_frenchie
 
 from SampleAgents import Angel, Lucifer, Dummy, Frenchie, Streetfighter
-Agents = [Lucifer, Frenchie, Streetfighter, CAngel]
+Agents = [c_lucifer, Frenchie, c_streetfighter, c_angel]
 
 ####################################
 # Developers only past this point! #