Cleaned up code

- now uses NBTTagCompound to transfer data, rather than clunky and
redundant read / write to stream methods