Re-architected api to handle message types through inheritance; added Tweet support