#5. Implemented feature with a lots of additional refactorings.