thanks a lot everybody, you have helped me simplify my library 
interface.
mauricio you solved it. i knew about the extend callback and am already 
in fact using it in the project from whence the very point-full exercise 
was distilled, but i hadn't thought of your solution, so thanks. unknown 
(ara?) you're right my definition of 'not modify' was not clear, i just 
meant do not modify my code listing, while modifying class in memory was 
fine. i'll be releasing my project as a gem and will announce it on list 
when i do so mauricio you'll see your answer in action.

to illustrate my point, now the user of my lib can go

class X
  extend M
end

instead of

class X
  extend M
  def initialize
    init_lib
  end
end

it's not really a huge deal, but hey it's one less thing for the user to 
need to know/worry about. and i've always wondered if it was possible.

-- 
Posted via http://www.ruby-forum.com/.