task 3 initial implementation