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