task 1 and 2 (not done yet)