OO Design Patterns in the 'Scala Way'