diff --git a/agents/basic_java/Makefile b/agents/basic_java/Makefile
index b058cdfedc39cf058bfe1d8e4788ad8c88d77278..a904ebd065e3f16508c97d4a52d8a7c7dd4a4fab 100644
--- a/agents/basic_java/Makefile
+++ b/agents/basic_java/Makefile
@@ -2,12 +2,15 @@
 # Sample C++ Stratego AI
 # UCC Programming Competition 2012 
 
-BasicAI.class : basic.java Reader.java piece.java
-	javac Reader.java
-	javac piece.java
-	javac basic.java
+BasicAI : basic.java Reader.java piece.java
+	gcj -o BasicAI --main=BasicAI basic.java Reader.java piece.java
+
+#BasicAI.class : basic.java Reader.java piece.java
+#	javac Reader.java
+#	javac piece.java
+#	javac basic.java
 
 clean : 
-	rm *.class
+	rm BasicAI
 
 
diff --git a/agents/basic_java/basic.java b/agents/basic_java/basic.java
index 242e6cb4164025e54ddfd970e07ab35fa83bd14a..72b2b9099a5c19eb76a5a308236a77e96f89df40 100644
--- a/agents/basic_java/basic.java
+++ b/agents/basic_java/basic.java
@@ -256,18 +256,29 @@ class BasicAI
 	 */
 	private void KillUnit(Piece kill) throws Exception
 	{
+		Vector<Piece> removeFrom = null;
 		if (kill.colour.compareTo(colour) == 0)
 		{
 			totalAllies[Piece.Index(kill.rank)] -= 1;
-			if (units.remove(kill) == false)
-				throw new Exception("BasicAI.KillUnit - Couldn't remove allied Piece from units Vector!");
+			removeFrom = units;
 		}
 		else if (kill.colour.compareTo(OppositeColour(colour)) == 0)
 		{
 			totalEnemies[Piece.Index(kill.rank)] -= 1;
-			if (enemyUnits.remove(kill) == false)
-				throw new Exception("BasicAI.KillUnit - Couldn't remove enemy Piece from enemyUnits Vector!");
+			removeFrom = enemyUnits;
 		}
+		if (removeFrom == null)
+			throw new Exception("BasicAI.KillUnit - Can't identify unit with colour " + kill.colour + "!");
+
+		for (int ii=0; ii < removeFrom.size(); ++ii)
+		{
+			if (removeFrom.elementAt(ii) == kill)
+			{
+				removeFrom.remove(ii);
+				return;
+			}				
+		}
+		throw new Exception("BasicAI.KillUnit - Couldn't find unit in unit list.");
 	}
 
 	/**