it must be public for custom serialization handler.