up to problem 23