Moving types around to organize it
Further reorganization for ease of serialization
Adding the first version of the serializer
Adding new file serialization