Sarah, here's my take on it (though these are assumptions) 1 - 1 # using send(:-) 1 -1 # using send(:-) (1) -1 # also using send(:-) -1 # using send(:-@) +1 # using send(:+@) t = Time.now Time.now() - t # using send(:-) (Time.now) - t # same: using send(:-) Time.now - t # same: using send(:-) Time.now -t # executed as (Time.now) -t or t.send(:-@) which doesn't exist # Something interesting 1.to_i -1 # uses send(:-@) but wants to pass that as an argument to Fixnum#to_i (1.to_i) -1 # uses send(:-) Which makes me think that: Time.now -t # is trying to do: Time.now(-t) # which first needs to evaluate -t first (... which is t.send(:-@) ...) So in conclusion, I don't think Fixnum is being treated any differently. It's just using a different method -- Zach Moazeni http://simplechatter.com -- Posted via http://www.ruby-forum.com/.