public void recheckOwnedFiles() {
		InetAddress owner;
		String fileName;
		
		// For each owned, files check if the current node is still the owner
		// If not, send the file to the new owner
		for (Iterator<FileRecord> iterator = ownedFiles.iterator(); iterator.hasNext();) {
			FileRecord record = (FileRecord) iterator.next();
			try {
				fileName = record.getFileName();
				owner = nameServer.getFilelocation(fileName);
				
				System.out.println("*** Rechecking file:" + fileName);
				
				File file = Paths.get(OWNED_FILE_PATH + fileName).toFile();
				if (!this.getAddress().equals(owner)) {
					System.out.println("*** New owner, sending file to :" + owner.getHostAddress());
					try {
						tcp.sendFile(owner, file, true);
						
						// Pass the previously available locations to the new owner
						for (Integer nodeHash : record.getNodeHashes()) {
							udp.sendMessage(owner, Client.UDP_CLIENT_PORT, Protocol.FILE_LOCATION_AVAILABLE, nodeHash + " " + fileName);
						}
					} catch (IOException e) {
						e.printStackTrace();
						removeFailedNode(nameServer.reverseLookupNode(owner.getHostAddress()));
					}
					
					iterator.remove();

					// Add file to local files
					file.renameTo(new File(LOCAL_FILE_PATH + fileName));
					localFiles.add(fileName);
				}
				// If this node is the file owner but the filed hasn't been cloned to it's previous neighbour yet, send it to them
				else if (record.getNodeHashes().isEmpty() && this.hash != previousNodeHash) {
					InetAddress previousNode = nameServer.lookupNode(previousNodeHash);
					System.out.println("*** List empty and diff prev node hash, copying to " + previousNode.getHostAddress());
					try {
						tcp.sendFile(previousNode, file, false);
					} catch (IOException e) {
						e.printStackTrace();
						// Remote node could not be reached and should be removed
						removeFailedNode(previousNodeHash);
					}
					record.addNode(previousNodeHash);
				}
			} catch (RemoteException e) {
				System.err.println("Unable to contact nameServer");
				e.printStackTrace();
			}
		}

	}