functionality is given, do refactoring next