I suppose this is a tangent, but a lot of this refactoring strikes me as obfuscation. Defining methods named `multiple_of_3` and `multiple_of_5` just to encapsulate a mod? I'd rather just read `x % 3 == 0` and `x % 5 == 0` than look up a method definition.<p>And then he makes it worse by throwing those out, defining `multiple_of`, and using method_missing to make `multiple_of_{3,5}` still work. A big part of reading unfamiliar code is looking up the implementation of things, and this is just making it more laborious and confusing.