Practical Object-Oriented Design: An Agile Primer Using Ruby 2nd Edition