public static boolean renameTo(File file1, File file2) throws IOException {
		if (!file1.exists()){
			throw new IOException(file1.getAbsolutePath()+" does not exist");}
		/// That's right, I can't just rename the file, i need to move and delete
		if (isWindows()){
			File temp = new File(file2.getAbsoluteFile() +"."+new Random().nextInt()+".backup");
			if (temp.exists()){
				temp.delete();}

			if (file2.exists()){
				file2.renameTo(temp);
				file2.delete();
			}
			if (!file1.renameTo(file2)){
				throw new IOException(temp.getAbsolutePath() +" could not be renamed to " + file2.getAbsolutePath());
			} else {
				temp.delete();
			}
		} else {
			if (!file1.renameTo(file2)){
				throw new IOException(file1.getAbsolutePath() +" could not be renamed to " + file2.getAbsolutePath());
			}
		}
		return true;
	}