ood practice object oriented design in ruby reference : Practical object oriented design in Ruby by Sandi Metz