public static Level Load(String filename) throws IOException, ClassNotFoundException {
		Level l = null;
		if (filename.endsWith(".dat"))
			l = Convert(filename);
		else {
			FileInputStream fis = new FileInputStream(filename);
			GZIPInputStream gis = new GZIPInputStream(fis);
			ObjectInputStream obj = new ObjectInputStream(gis);
			long version = obj.readLong();
			if (version == serialVersionUID){
				l = (Level)obj.readObject();
			}else{
				obj.close();
				throw new IOException("The level version does not match the current");
			}
			l.ticks = new ArrayList<Tick>();
			l.physics = l.new Ticker();
			l.name = new File(filename).getName().split("\\.")[0];
			l.run = true;
			l.physics.start();
			obj.close();
			gis.close();
			fis.close();
		}
		return l;
	}