solid architecture after introducing dependency injection, relayCommands and further refactoring #midnight