initial version with problem 1 and 2