private void doTheDamnThing(RandomAccessFile fp) throws IOException
	{
		byte[] b = new byte[26];
		
		// Load IMPM header
		fp.read(b, 0, 4);
		if(b[0] == 'I' && b[1] == 'M' && b[2] == 'P' && b[3] == 'M')
		{
			loadDataIT(fp);
			return;
		}
		
		// Attempt to load XM
		fp.seek(0);
		if(Util.readStringNoNul(fp,b,17).equals("Extended Module: "))
		{
			fp.seek(17+20);
			if(fp.read() == 0x1A)
			{
				fp.seek(17);
				loadDataXM(fp);
				return;
			}
		}
		
		// Attempt to load ST3 module
		fp.seek(0x1C);
		if(fp.readUnsignedShort() == 0x1A10)
		{
			fp.seek(0);
			loadDataS3M(fp);
			return;
		}
		
		fp.seek(0);
		
		// Assume this is a .mod file
		if(true)
		{
			loadDataMOD(fp);
			return;
		}
		
		throw new RuntimeException("module format not supported");
	}