custom principal serialization model