finish problem 18