non-intrusive serialization