added Custom Serialization/Deserialization via Attributes