As long as we're throwing around options... > define_method(:initialize) do |*values| > @value = values.shift > unless @value.length == 0 > raise ArgumentError, "wrong number of arguments (#{values.size} for > 0)" > end > end > define_method(:initialize) do |*values| raise ArgumentError, "wrong number of arguments (#{values.size} for 0)" if values.length > 1 @value = values.first end Cheers! Patrick