data contracts
refactoring
sending and receiving serialized messages