exercise 5 from Design for Interactive 2