I'm curious why you didn't implement this using this approach? class Object def if self ? yield : self end def unless self ? self : yield end end Ruby will automatically raise if you use yield without a block. I don't see any need to modify false and nil, since Ruby can already test them using "self". Am I missing something else here? -- Posted via http://www.ruby-forum.com/.