make sure classes are serializable
add DataContract/DataMember Attributes to classes
refactor Main()