Working through Practical Object-Oriented Design in Ruby