> That is not entirely true. For one the array has each_with_index but I > could not find collect_with_index. Then you should have written Array#collect_my_foo_objects_with_index, to avoid a collision. Monkey patching is not for adding our own convenience methods, it is for changing library code's internal behavior. When someone else writes a library module that calls each_with_index, you might find it convenient to get inside each_with_index and twiddle with its behavior. This is not evil, it just /is/, and like all powerful abilities, we need to understand it and build good guidelines for its fair use.