created most of the classes required for the backend (hopefully), added
some descriptions and TODOs. the way to proceed would be to complete
TODO-s one by one, starting with method implementations