first pass on serialization support