Most if not all of the serialisation logic is in, need to test and begin deserialisation