expose serialization
make things virtual and public
expose constructor parameter
bump version