flesh out serialization and IO section