used a proto sub-domain for states to avoid the conflict with boost::serialization's operators << and >>