refactor
update comments
autogenerate serialization code
refactor
refactor