Anton Petrunich solution

All features implemented.
No test coverage for new features
Development time: 6 hours