exercises from Programming Ruby 1.9 & 2.0, Dave Thomas