add MessageFactory
expose markAsRead/myRoom as public API
Separate tests