With this setup both the sender and receiver get a separate copy of the message, and a boolean flag tells them if they sent or received it. I'm not sure if it would be better if messages belonged to a contact or conversation class, or how to best integrate them with a contact list.