Implemented problems 4, 5, and 6