implementing task 1.1, 1.2 untested