You could overload the methods you require. For instance if you want to be able to add two Money objects togeter and get a Money object as the result using the expression 'money1 + money2' you could do >> class Money >> attr_accessor :value >> def+(other) >> Money.new(@value + other.value) >> end >> def initialize(value) >> @value = value >> end >> end => nil >> m1 = Money.new(5) => #<Money:0x2dbb018 @value=5> >> m2 = Money.new(10) => #<Money:0x2db9098 @value=10> >> m1 + m2 => #<Money:0x2db17d8 @value=15> Farrel