refactor a few classes, add documentation, add Message service class