Object-Oriented Design and Refactoring Patterns in Ruby