exercise 3 from Design for Interactive 2