> [Jason:] > > But anyway, the question is, what happens to methods defined at the > top-level like that? Are they just added to Object? And if that's the > case, why do we even have Kernel? Top-level methods become private methods of Object, so I'm told. That should make them invisible to subclasses. Ho hum. Anyway, we have Kernel so that lots of methods can be gathered together and made available (via inclusion in Object). It is my opinion that Kernel should only contain genuine kernel-type methods (i.e. those that only the Ruby interpreter can provide, like at_exit, autoload, caller, local_variables, ...). About half of Kernel is simply convenience methods (sprintf, Array, loop, ...) which could easily be implemented in Ruby. These should be in a "Convenience" module, which is also included in Object. Not that it's a big deal, of course. You should never feel the need to add anything to Kernel. Gavin