diff --git a/ClientMain.class b/ClientMain.class
index 250637acb0fc3986e4b8af3524b3940bd8e03e7f..0718a90f548d9eaebf0d35de7656a22ea70bea63 100644
Binary files a/ClientMain.class and b/ClientMain.class differ
diff --git a/ClientMain.java b/ClientMain.java
index ec60cc538c7373d7ea8261f3a4f97a9990875e0f..8645bd682e707662cb6b3dafbffaad6d205d8f18 100644
--- a/ClientMain.java
+++ b/ClientMain.java
@@ -37,7 +37,6 @@ public class ClientMain {
 		Client client = null;
 		
 		try {
-			
 			client = new Client(cport, timeout, Logger.LoggingType.ON_FILE_AND_TERMINAL);
 		
 			try { client.connect(); } catch(IOException e) { e.printStackTrace(); return; }
@@ -74,7 +73,6 @@ public class ClientMain {
 			
 			try { list(client); } catch(IOException e) { e.printStackTrace(); }
 			*/
-			
 		} finally {
 			if (client != null)
 				try { client.disconnect(); } catch(Exception e) { e.printStackTrace(); }
diff --git a/Controller$1AcksReceived.class b/Controller$1AcksReceived.class
index 006d665a491cd54080fef1132fe21d339e435a9f..de2954fe46168c4914df9082fb7b12d7647ea5ed 100644
Binary files a/Controller$1AcksReceived.class and b/Controller$1AcksReceived.class differ
diff --git a/Controller$IndexEntry$Status.class b/Controller$IndexEntry$Status.class
new file mode 100644
index 0000000000000000000000000000000000000000..538373f672d4086f88c7da4147a9b795369b667b
Binary files /dev/null and b/Controller$IndexEntry$Status.class differ
diff --git a/Controller$IndexEntry.class b/Controller$IndexEntry.class
index 64003c3c96a02e9e921e9d6eb5a319357ddc74dc..dff648ecf50c78eda664bec5691882c2ca402a68 100644
Binary files a/Controller$IndexEntry.class and b/Controller$IndexEntry.class differ
diff --git a/Controller$RebalanceMessages.class b/Controller$RebalanceMessages.class
index 80d167489f739ee9eba94387b9449faf8167dd0c..8f171388f336657f23cacef98aa5d8958240084c 100644
Binary files a/Controller$RebalanceMessages.class and b/Controller$RebalanceMessages.class differ
diff --git a/Controller$RebalanceThread.class b/Controller$RebalanceThread.class
index 33a49d5601312bef9a9513a5464c7a61da1c5024..25e1c787e72efd4e87508bd8fff5ab539839fb1a 100644
Binary files a/Controller$RebalanceThread.class and b/Controller$RebalanceThread.class differ
diff --git a/Controller$Reloader.class b/Controller$Reloader.class
index 506b3988a3dbd4a35223a628cb012c5b5a9b92c7..fe4456dcdad54991ba96e5ef3e7972b65c43e9ab 100644
Binary files a/Controller$Reloader.class and b/Controller$Reloader.class differ
diff --git a/Controller.class b/Controller.class
index 514327fe08525b5aa27de405c9c8ade4f55b05cd..f8f4f7fba84db7c0c456b8882bec45b194ed4beb 100644
Binary files a/Controller.class and b/Controller.class differ
diff --git a/Controller.java b/Controller.java
index edcfa3892321be7d6b49d38e22f43e598e2e07b1..de3651a37cee5e217346e0e781f6def63ef82d9b 100644
--- a/Controller.java
+++ b/Controller.java
@@ -16,17 +16,24 @@ public class Controller {
 	protected int timeout; //in milliseconds
 	protected int rebalancePeriod; //How long to wait to start the next rebalance operation, in milliseconds
 	
-	protected class IndexEntry {
+	protected static class IndexEntry {
+		public static enum Status {
+			STORE_IN_PROGRESS,
+			STORE_COMPLETE,
+			REMOVE_IN_PROGRESS,
+			REMOVE_COMPLETE
+		}
+		
 		protected long filesize;
 		protected List<Integer> storedBy;
 		protected int numberToStore;
-		protected String status;
+		protected Status status;
 		
 		public IndexEntry() {
 			filesize = -1;
 			storedBy = Collections.synchronizedList(new ArrayList<Integer>());
 			numberToStore = 0;
-			status = "store in progress";
+			status = Status.STORE_IN_PROGRESS;
 		}
 		
 		public synchronized void setFilesize(long filesize) {
@@ -74,11 +81,11 @@ public class Controller {
 			numberToStore = i;
 		}
 		
-		public synchronized void setStatus(String status) {
+		public synchronized void setStatus(Status status) {
 			this.status = status;
 		}
 		
-		public synchronized String getStatus() {
+		public synchronized Status getStatus() {
 			return status;
 		}
 	}
@@ -148,7 +155,7 @@ public class Controller {
 					BufferedReader in = new BufferedReader(new InputStreamReader(client.getInputStream()));
 					String[] message = in.readLine().split(" ");
 					if(message[0].equals("JOIN")) {
-						dstores.put(Integer.parseInt(message[1]), new DstoreConnection(client));
+						dstores.put(Integer.parseInt(message[1]), new DstoreConnection(client, timeout));
 						System.out.println("Dstore at " + message[1] + " joined");
 						try {rebalanceThread.interrupt();} catch(SecurityException e) {e.printStackTrace();}
 					}
@@ -250,22 +257,33 @@ public class Controller {
 		}
 		
 		try {
-			if(index.containsKey(filename)) {
-				PrintWriter out = new PrintWriter(client.getOutputStream());
-				out.println("ERROR_FILE_ALREADY_EXISTS " + filename);
-				out.flush();
-				return;
+			//Create a new entry in the index
+			IndexEntry entry;
+			synchronized(index) {
+				if(!index.containsKey(filename)) {
+					entry = new IndexEntry();
+				}
+				else {
+					entry = index.get(filename);
+					if(entry.getStatus() == IndexEntry.Status.REMOVE_IN_PROGRESS || entry.getStatus() == IndexEntry.Status.REMOVE_COMPLETE) {
+						index.remove(filename);
+						entry = new IndexEntry();
+					}
+					else {
+						PrintWriter out = new PrintWriter(client.getOutputStream());
+						out.println("ERROR_FILE_ALREADY_EXISTS " + filename);
+						out.flush();
+						return;
+					}
+				}
+				index.put(filename, entry);
 			}
-			
-			//Update index to "store in progress"
-			IndexEntry entry = new IndexEntry();
-			index.put(filename, entry);
 			entry.setFilesize(filesize);
 			
 			//Select Dstores
 			Integer[] storesToStore = new Integer[rFactor];
 			synchronized(dstores) {
-				Iterator<Integer> it = dstores.keySet().iterator();
+				Iterator<Integer> it = reshuffle(dstores.keySet()).iterator();
 				for(int i=0; i<rFactor; i++) {
 					storesToStore[i] = it.next();
 				}
@@ -294,9 +312,9 @@ public class Controller {
 							System.out.println("Dstore " + thisStore + " should have sent STORE_ACK but Controller received " + receivedMessage[0]);
 						}
 					}
-					catch(NullPointerException e) {
+					catch(DstoreDisconnectException e) {
 						e.printStackTrace();
-						//removeDstore(thisStore);
+						removeDstore(thisStore);
 					}
 				}).start();
 			}
@@ -319,7 +337,7 @@ public class Controller {
 			}
 			
 			//Update index to "store complete"
-			entry.status = "store complete";
+			entry.status = IndexEntry.Status.STORE_COMPLETE;
 			
 			//Send STORE_COMPLETE message
 			out.println("STORE_COMPLETE");
@@ -342,7 +360,7 @@ public class Controller {
 	
 	void load(Socket client, String filename) throws Exception {
 		try {
-			if(!index.containsKey(filename)) {
+			if(!index.containsKey(filename) || index.get(filename).status != IndexEntry.Status.STORE_COMPLETE) {
 				PrintWriter out = new PrintWriter(client.getOutputStream());
 				out.println("ERROR DOES_NOT_EXIST");
 				out.flush();
@@ -391,7 +409,7 @@ public class Controller {
 	
 	void remove(Socket client, String filename) throws Exception {
 		try {
-			if(!index.containsKey(filename)) {
+			if(!index.containsKey(filename) || index.get(filename).status != IndexEntry.Status.STORE_COMPLETE) {
 				PrintWriter clientOut = new PrintWriter(client.getOutputStream());
 				clientOut.println("ERROR DOES_NOT_EXIST");
 				clientOut.flush();
@@ -400,7 +418,7 @@ public class Controller {
 			
 			//Update index to "remove in progress"
 			IndexEntry entry = index.get(filename);
-			entry.status = "remove in progress";
+			entry.status = IndexEntry.Status.REMOVE_IN_PROGRESS;
 			
 			//Send REMOVE message to all Dstores storing the file
 			for(Integer dstore : entry.getStoredBy()) {
@@ -415,9 +433,9 @@ public class Controller {
 							System.out.println("Dstore " + dstore + " should have sent REMOVE_ACK but Controller received " + message[0]);
 						}
 					}
-					catch(NullPointerException e) {
+					catch(DstoreDisconnectException e) {
 						e.printStackTrace();
-						//removeDstore(dstore);
+						removeDstore(dstore);
 					}
 				}).start();
 			}
@@ -438,8 +456,10 @@ public class Controller {
 			}
 			
 			//Update index to "remove complete"
-			entry.status = "remove complete";
-			index.remove(filename);
+			entry.status = IndexEntry.Status.REMOVE_COMPLETE;
+			synchronized(index) {
+				if(index.get(filename) == entry) index.remove(filename);
+			}
 			
 			//Send REMOVE_COMPLETE to client
 			PrintWriter clientOut = new PrintWriter(client.getOutputStream());
@@ -457,7 +477,7 @@ public class Controller {
 			//Send file list to client
 			String message = "LIST ";
 			for(String name : index.keySet()) {
-				message = message + name + " ";
+				if(index.get(name).status == IndexEntry.Status.STORE_COMPLETE) message = message + name + " ";
 			}
 			PrintWriter out = new PrintWriter(client.getOutputStream());
 			System.out.println("Sending...");
@@ -484,9 +504,9 @@ public class Controller {
 							String[] message = dstores.get(dstore).sendAndReceive("LIST").split(" ");
 							receiveDstoreList(dstore.intValue(), message);
 						}
-						catch(NullPointerException e) {
+						catch(DstoreDisconnectException e) {
 							e.printStackTrace();
-							//removeDstore(dstore);
+							removeDstore(dstore);
 						}
 					}).start();
 				}
@@ -503,7 +523,7 @@ public class Controller {
 				  //Files are evenly distributed (Dstores differ in capacity by at most 1, no 2 datastores have identical file lists)
 				List<Integer> storeOrder = reshuffle(dstoreFiles.keySet());
 				List<String> fileList = new ArrayList<String>();
-				for(Integer i : reshuffle(dstoreFiles.keySet())) {
+				for(Integer i : storeOrder) {
 					for(String s : dstoreFiles.get(i)) {
 						if(!fileList.contains(s)) {
 							fileList.add(s);
@@ -523,7 +543,7 @@ public class Controller {
 				for(String file : fileList) {
 					for(int j=0; j<rFactor; j++) {
 						if(it == null || !it.hasNext()) {
-							it = dstoreFiles.keySet().iterator();
+							it = storeOrder.iterator();
 						}
 						//If indexed dstore does not have the file, add it to its requireIndex entry
 						Integer thisStore = it.next();
@@ -534,7 +554,7 @@ public class Controller {
 					//Dstores not chosen in the above loop must have an entry added to removeIndex, if they have the file
 					for(int j=0; j<(requireIndex.size() - rFactor); j++) {
 						if(it == null || !it.hasNext()) {
-							it = dstoreFiles.keySet().iterator();
+							it = storeOrder.iterator();
 						}
 						
 						Integer thisStore = it.next();
@@ -573,6 +593,7 @@ public class Controller {
 								}
 							}
 						}
+						if(fileMessage.equals("")) continue;
 						fileMessage = file + " " + (fileMessage.trim().split(" ").length) + fileMessage;
 						sendMessages.add(fileMessage);
 					}
@@ -603,9 +624,9 @@ public class Controller {
 								}
 							}
 						}
-						catch(NullPointerException e) {
+						catch(DstoreDisconnectException e) {
 							e.printStackTrace();
-							//removeDstore(thisStore);
+							removeDstore(thisStore);
 						}
 					}).start();
 				}
@@ -666,9 +687,7 @@ public class Controller {
 			for(String file : list) {
 				if(!index.containsKey(file)) {
 					//Log error
-					//return; //Throw exception?
-					//Ignore those, there might be new resources a joining Dstore wants to contribute
-					//Then again, there might be malformed messages. Think about this.
+					return; //Throw exception?
 				}
 				toList.add(file);
 			}
@@ -692,11 +711,13 @@ public class Controller {
 		}
 	}
 	
-	List<Integer> reshuffle(Collection<Integer> col) {
-		List<Integer> list = new ArrayList<Integer>();
-		for(Integer i : col) {
-			list.add(0, i);
+	<T> List<T> reshuffle(Collection<T> col) {
+		List<T> list = new ArrayList<T>();
+		Iterator<T> it = col.iterator();
+		while(it.hasNext()) {
+			list.add(it.next());
 		}
+		Collections.shuffle(list);
 		return list;
 	}
 	
diff --git a/Dstore.class b/Dstore.class
index 5a496f658f3927ece60f8eebab9b968dd8e10c43..ff1e5b46bfd884be9e7581f53b80d4c57d1bce07 100644
Binary files a/Dstore.class and b/Dstore.class differ
diff --git a/Dstore.java b/Dstore.java
index 9332ba933872b1578e1e2333d3c72b6997170c1c..f9c67703844d390cfb9b4c8e245a6873ae7bb093 100644
--- a/Dstore.java
+++ b/Dstore.java
@@ -35,7 +35,7 @@ public class Dstore {
 		
 		fileSizes = new HashMap<String,Long>();
 		for(File file : fileFolder.listFiles()) {
-			fileSizes.put(file.getName(), Long.valueOf(file.length()));
+			if(!file.delete()) throw new Exception("Directory specified has undeletable files; please try a different directory");
 		}
 	}
 	
@@ -247,7 +247,11 @@ public class Dstore {
 			String[] filesToRemove;
 			int index;
 			
-			System.out.println("Interpreting message...");
+			String tmessage = "";
+			for(String s : message) {
+				tmessage = tmessage + " " + s;
+			}
+			System.out.println("Interpreting message:" + tmessage);
 			int numberToSend = Integer.parseInt(message[1]);
 			index = 2;
 			filesToSend = new HashMap<Integer,List<String>>();
diff --git a/DstoreConnection$ReceiveContext.class b/DstoreConnection$ReceiveContext.class
new file mode 100644
index 0000000000000000000000000000000000000000..29a6f8871a554ee11deeab64ee52990e0810f08f
Binary files /dev/null and b/DstoreConnection$ReceiveContext.class differ
diff --git a/DstoreConnection.class b/DstoreConnection.class
index 4cd5bbd5bd6e2a239616b6ab9228d2a0898566e7..78bdda2b66cc70e62e1b5a96c7af9d389228ec03 100644
Binary files a/DstoreConnection.class and b/DstoreConnection.class differ
diff --git a/DstoreConnection.java b/DstoreConnection.java
index bdd3bc17f7293521ca347c0046075dc118554799..4778e9921fcc9a78d81dfa445f046bb585380266 100644
--- a/DstoreConnection.java
+++ b/DstoreConnection.java
@@ -15,9 +15,11 @@ public class DstoreConnection {
 	protected PrintWriter writer;
 	protected boolean available;
 	protected List<String> queue;
+	protected int timeout;
 	
-	public DstoreConnection(Socket socket) {
+	public DstoreConnection(Socket socket, int timeout) {
 		this.socket = socket;
+		this.timeout = timeout;
 		try {
 			reader = new BufferedReader(new InputStreamReader(socket.getInputStream()));
 			writer = new PrintWriter(socket.getOutputStream());
@@ -34,7 +36,7 @@ public class DstoreConnection {
 		}
 	}
 	
-	public String sendAndReceive(String message, String expectedMessage) throws NullPointerException {
+	public String sendAndReceive(String message, String expectedMessage) throws DstoreDisconnectException {
 		System.out.println("Getting lock...");
 		synchronized(this) {
 			try {
@@ -48,16 +50,16 @@ public class DstoreConnection {
 			catch(NullPointerException e) {
 				System.out.println("Dstore disconnected");
 				available = false;
-				throw new NullPointerException();
+				throw new DstoreDisconnectException();
 			}
 		}
 	}
 	
-	public String sendAndReceive(String message) throws NullPointerException {
+	public String sendAndReceive(String message) throws DstoreDisconnectException {
 		return sendAndReceive(message, null);
 	}
 	
-	public String receive(String expectedMessage) throws NullPointerException {
+	public String receive(String expectedMessage) throws DstoreDisconnectException {
 		System.out.println("Getting lock...");
 		synchronized(this) {
 			System.out.println("Lock acquired");
@@ -76,19 +78,34 @@ public class DstoreConnection {
 		}
 	}
 	
-	public String receive() throws NullPointerException {
+	public String receive() throws DstoreDisconnectException {
 		return receive(null);
 	}
 	
-	protected String localReceive(String expectedMessage) throws NullPointerException {
+	protected String localReceive(String expectedMessage) throws DstoreDisconnectException {
 		try {
+			ReceiveContext rc = new ReceiveContext(expectedMessage);
+			synchronized(rc.lock) {
+				rc.start();
+				rc.lock.wait(timeout);
+				rc.end();
+			}
+			String returnMessage = rc.getReturnMessage();
+			if(returnMessage == null) throw new DstoreDisconnectException();
+			else return returnMessage;
+		}
+		catch(InterruptedException e) {
+			e.printStackTrace();
+		}
+			
+			/*
 			String returnMessage = null;
 			do {
 				returnMessage = reader.readLine();
 				if(returnMessage == null) {
 					System.out.println("Dstore disconnected");
 					available = false;
-					throw new NullPointerException();
+					throw new DstoreDisconnectException();
 				}
 				if(expectedMessage != null && !expectedMessage.equals(returnMessage.split(" ")[0])) {
 					queue.add(returnMessage);
@@ -104,5 +121,69 @@ public class DstoreConnection {
 			e.printStackTrace();
 			return "";
 		}
+		*/
+		return "";
+	}
+	
+	//Seperate class for enabling timeouts while receiving messages
+	protected class ReceiveContext {
+		protected String expectedMessage;
+		protected String returnMessage;
+		protected Thread thread;
+		public Object lock;
+		
+		public ReceiveContext(String expectedMessage) {
+			this.expectedMessage = expectedMessage;
+			returnMessage = "";
+			lock = new Object();
+		}
+		
+		public String getReturnMessage() {
+			synchronized(lock) {
+				return returnMessage;
+			}
+		}
+		
+		public void start() {
+			thread = new Thread(() -> {
+				try {
+					String message = null;
+					do {
+						message = reader.readLine();
+						if(message == null) {
+							System.out.println("Dstore disconnected");
+							available = false;
+							throw new DstoreDisconnectException();
+						}
+						if(expectedMessage != null && !expectedMessage.equals(message.split(" ")[0])) {
+							queue.add(message);
+							if(queue.size() > MAX_QUEUE_SIZE) queue.remove(0);
+							message = null;
+						}
+					}
+					while(message == null);
+					System.out.println("Controller received " + message);
+					returnMessage = message;
+				}
+				catch(IOException e) {
+					e.printStackTrace();
+					returnMessage = "";
+				}
+				catch(DstoreDisconnectException e) {
+					e.printStackTrace();
+					returnMessage = null;
+				}
+				finally {
+					synchronized(lock) {
+						lock.notify();
+					}
+				}
+			});
+			thread.start();
+		}
+		
+		public void end() {
+			if(thread.isAlive()) thread.interrupt();
+		}
 	}
 }
diff --git a/DstoreDisconnectException.class b/DstoreDisconnectException.class
new file mode 100644
index 0000000000000000000000000000000000000000..f1a70dafe9f2cfe9e9879cbf5b4fc17a31599470
Binary files /dev/null and b/DstoreDisconnectException.class differ
diff --git a/DstoreDisconnectException.java b/DstoreDisconnectException.java
new file mode 100644
index 0000000000000000000000000000000000000000..085512f94676526c5f35c1125e86d51051dcabbd
--- /dev/null
+++ b/DstoreDisconnectException.java
@@ -0,0 +1,7 @@
+import java.lang.Throwable;
+
+public class DstoreDisconnectException extends Exception {
+	public DstoreDisconnectException() {
+		super("Dstore has been disconnected");
+	}
+}
diff --git a/downloads/AllStar.txt b/downloads/AllStar.txt
deleted file mode 100644
index 26e7fef6a612a37a14b5c714eb89e0db758c453f..0000000000000000000000000000000000000000
--- a/downloads/AllStar.txt
+++ /dev/null
@@ -1,68 +0,0 @@
-Somebody once told me the world is gonna roll me
-I ain't the sharpest tool in the shed
-She was looking kind of dumb with her finger and her thumb
-In the shape of an "L" on her forehead
-
-Well, the years start coming and they don't stop coming
-Fed to the rules and I hit the ground running
-Didn't make sense not to live for fun
-Your brain gets smart but your head gets dumb
-
-So much to do, so much to see
-So what's wrong with taking the back streets?
-You'll never know if you don't go
-You'll never shine if you don't glow
-
-Hey, now, you're an all-star, get your game on, go play
-Hey, now, you're a rock star, get the show on, get paid
-And all that glitters is gold
-Only shooting stars break the mold
-
-It's a cool place and they say it gets colder
-You're bundled up now wait 'til you get older
-But the meteor men beg to differ
-Judging by the hole in the satellite picture
-
-The ice we skate is getting pretty thin
-The water's getting warm so you might as well swim
-My world's on fire. How about yours?
-That's the way I like it and I'll never get bored
-
-Hey, now, you're an all-star, get your game on, go play
-Hey, now, you're a rock star, get the show on, get paid
-And all that glitters is gold
-Only shooting stars break the mold
-
-Go for the moon
-Go for the moon
-Go for the moon
-Go for the moon
-
-Hey, now, you're an all-star, get your game on, go play
-Hey, now, you're a rock star, get the show on, get paid
-And all that glitters is gold
-Only shooting stars
-
-Somebody once asked could I spare some change for gas
-I need to get myself away from this place
-I said yep, what a concept
-I could use a little fuel myself
-And we could all use a little change
-
-Well, the years start coming and they don't stop coming
-Fed to the rules and I hit the ground running
-Didn't make sense not to live for fun
-Your brain gets smart but your head gets dumb
-
-So much to do, so much to see
-So what's wrong with taking the back streets?
-You'll never know if you don't go
-You'll never shine if you don't glow
-
-Hey, now, you're an all star, get your game on, go play
-Hey, now, you're a rock star, get the show on, get paid
-And all that glitters is gold
-Only shooting stars break the mold
-
-And all that glitters is gold
-Only shooting stars break the mold
diff --git a/downloads/Grandad.txt b/downloads/Grandad.txt
deleted file mode 100644
index 4891fefac0cf249710bf741d61da79973e52b19b..0000000000000000000000000000000000000000
--- a/downloads/Grandad.txt
+++ /dev/null
@@ -1,14 +0,0 @@
-(Yabba Dabba Doo!)
-
-Flintstones. Meet the Flintstones.
-They're the modern stone age family.
-From the town of Bedrock,
-They're a page right out of history.
-
-Let's ride with the family down the street.
-Through the courtesy of Fred's two feet.
-
-When you're with the Flintstones
-Have a yabba dabba doo time.
-A dabba doo time.
-We'll have a gay old time.
diff --git a/downloads/PumpkinHill.txt b/downloads/PumpkinHill.txt
deleted file mode 100644
index e2458051c174c0173e4758ece47fe05f97fa6425..0000000000000000000000000000000000000000
--- a/downloads/PumpkinHill.txt
+++ /dev/null
@@ -1,68 +0,0 @@
-You know me, the fighting freak Knuckles,
-And we're at Pumpkin Hill,
-You ready?
-
-I ain't gonna let it get to me, I'm just gonna creep,
-Down in Pumpkin Hill I gots to find my lost piece.
-I know that it's here, I can sense it in my feet,
-The great Emerald's power allows me to feel.
-I can't see a thing but it's around somewhere,
-I'm gonna hold my head 'cause I have no fear.
-This probably seems crazy, crazy, a graveyard theory,
-A ghost tried to approach me and got leery.
-
-Asked him a question and he vanished in a second,
-I'm walkin' through valleys cryin' pumpkin in the alley.
-Didn't seem happy but they sure tried to get me,
-Had to back 'em up with the fist, metal crack 'em.
-I'm hearing someone sayin' "You a chicken, don't be scared!"
-It had to be the wind, 'cause nobody wasn't there.
-I searched and I searched as I climbed up the wall,
-And then I started to fly, I went in deeper!
-
-Let it get to me? I'm just gonna creep,
-Down in Pumpkin Hill I gots to find my lost piece.
-I know that it's here, I sense it in my feet,
-The great Emerald's power allows me to feel.
-I can't see a thing but it's around somewhere,
-I gotta hold my head, I have no fear.
-It probably seems crazy, crazy, a graveyard theory,
-A ghost tried to approach me, he got leery.
-
-(This is Knuckles, who fears none.)
-(It's real deal when it comes to my name, kid!)
-
-I ain't gonna let it get to me, I'm just gonna creep,
-Down in Pumpkin Hill I gots to find my lost piece.
-I know that it's here, I can sense it in my feet,
-The great Emerald's power allows me to feel.
-I can't see a thing but it's around somewhere,
-I'm gonna hold my head 'cause I have no fear.
-This probably seems crazy, crazy, a graveyard theory,
-A ghost tried to approach me and got leery.
-
-Asked him a question and he vanished in a second,
-I'm walkin' through valleys cryin' pumpkin in the alley.
-Didn't seem happy but they sure tried to get me,
-Had to back 'em up with the fist, metal crack 'em.
-I'm hearing someone sayin' "You a chicken, don't be scared!"
-It had to be the wind, 'cause nobody wasn't there.
-I searched and I searched as I climbed up the wall,
-And then I started to fly, I went in deeper!
-
-Let it get to me? I'm just gonna creep,
-Down in Pumpkin Hill I gots to find my lost piece.
-I know that it's here, I sense it in my feet,
-The great Emerald's power allows me to feel.
-I can't see a thing but it's around somewhere,
-I gotta hold my head, I have no fear.
-It probably seems crazy, crazy, a graveyard theory,
-A ghost tried to approach me, he got leery.
-
-(Spooky up in here, it's crazy in here,)
-(We still gon' keep it goin', I'm Knuckles.)
-(Nobody scares me,)
-(Whoever want it, bring it!)
-(I don't care, we 'ka do this.)
-(Then come step up to the plate, and meet your match,)
-(It ain't no thang.)
diff --git a/downloads/SnowHalation.txt b/downloads/SnowHalation.txt
deleted file mode 100644
index 09add47583fb1f43d001d762e3e5240b05dfd2f9..0000000000000000000000000000000000000000
--- a/downloads/SnowHalation.txt
+++ /dev/null
@@ -1,36 +0,0 @@
-Fushigi da ne ima no kimochi
-Sora kara futte kita mitai
-Tokubetsu na kisetsu no iro ga tokimeki o miseru yo
-
-Hajimete deatta toki kara
-Yokan ni sawagu kokoro no Melody
-Tomerarenai tomaranai na・ze
-
-Todokete
-Setsunasa ni wa namae o tsukeyou ka "Snow halation"
-Omoi ga kasanaru made matezu ni
-Kuyashii kedo suki tte junjou
-Binetsu no naka tameratte mo dame da ne
-Tobikomu yuuki ni sansei mamonaku Start!!
-
-Oto mo naku kehai mo naku
-Shizuka ni unmei wa kawaru
-Korekara no mirai ni mune no kodou ga hayaku naru
-
-Tatoeba komatta toki ni wa
-Sugu kaketsukete dakishimetakute
-Doko ni ite mo dokodemo Fly high
-
-Isoide
-Itsu no ma ni ka ookiku nari sugita "True emotion"
-Yume dake miteru you ja tsurai yo
-Koibito wa kimi tte iitai
-Yasashii me ga tomadotteru iya da yo
-Kono mama ikki ni aijou azukete Please!!
-
-Todokete
-Setsunasa ni wa namae o tsukeyou ka "Snow halation"
-Omoi ga kasanaru made matezu ni
-Kuyashii kedo suki tte junjou
-Binetsu no naka tameratte mo dame da ne
-Tobikomu yuuki ni sansei mamonaku Start!! 
diff --git a/downloads/Unknown.txt b/downloads/Unknown.txt
deleted file mode 100644
index bc6fa8e0659ed9ceac67a549318061a700ef5180..0000000000000000000000000000000000000000
--- a/downloads/Unknown.txt
+++ /dev/null
@@ -1,74 +0,0 @@
-Here I come, rougher than the rest of them
-The best of them, tougher than leather
-You can call me Knuckles, unlike Sonic I don't chuckle
-I'd rather flex my muscles
-
-I'm hard as nails, it ain't hard to tell
-I break 'em down whether they're solid or frail
-Unlike the rest I'm independent since my first breath
-First test, feel the right, than the worst's left
-
-Born on an island in the heavens
-The blood of my ancestors flows inside me
-My duty is to save the flower
-From evil deterioration
-
-I will be the one to set your heart free, true
-Cleanse yourself of them evil spirits that's in you
-
-Streaking lights, loud sounds, and instincts
-Are the elements that keep me going
-I am fighting my own mission
-Nothing's gonna stand in my way
-
-I will be the one to set your heart free, true
-Cleanse yourself of them evil spirits that's in you
-
-Won't be frightened, I'll stand up to all the pain and turmoil
-Just believe in myself, won't rely on others
-Get this power to wipe out the havoc and anarchy
-This is my planet, gonna fight for my destiny
-
-Here I come, rougher than the rest of them
-The best of them, tougher than leather
-You can call me Knuckles, unlike Sonic I don't chuckle
-I'd rather flex my muscles
-
-I'm hard as nails, it ain't hard to tell
-I break 'em down whether they're solid or frail
-Unlike the rest I'm independent since my first breath
-First test, feel the right, than the worst's left
-
-I have no such things as weak spots
-Don't approve of him but gotta trust him
-This alliance has a purpose
-This partnership is only temporary
-
-I will be the one to set your heart free, true
-Cleanse yourself of evil spirits that got in you
-
-Won't be frightened, I'll stand up to all the pain and turmoil
-Just believe in myself, won't rely on others
-Freedom will be waiting when serenity is restored
-This is my planet, I shall not surrender
-
-Won't be frightened, I'll stand up to all the pain and turmoil
-Just believe in myself, won't rely on others
-Get this power to wipe out the havoc and anarchy
-This is my planet, gonna fight
-
-Won't be frightened, I'll stand up to all the pain and turmoil
-Just believe in myself, won't rely on others
-Freedom will be waiting when serenity is restored
-This is my planet, I shall not surrender
-
-The new porcupine on the block with the buff chest
-In the wilderness with the ruggedness
-Knock, knock, it's Knuckles, the bloat thrower
-Independent flower, Magical Emerald holder
-I'll give you the coldest shoulder
-My spikes go through boulders, that's why I stay a loner
-I was born by myself, I don't need a posse
-I get it on by myself, adversaries get shelved
-
-Right on!