Reworking to use new Sprue::Entity base class, reorganize the serialization logic