SZMURLO MAURICE wrote: >1. Worker.new(...).work #-> OK >2. Secretary.new(...).work #-> Error: abstract mathod "work" not implemented >3. Employee.new(...) #-> Error: cannot instatiate abstract class > >I know that "work" could be implemented in Employee with an exception >thrown. >This would solve case 2, but still an Employee could be instantiated (3.), >which >conceptually is not a good thing. The private_class_method method (in Module) can be used to disable new for the base class. I had this working well in one of my classes, but have since reorganized my hierarchy so I removed it. You would say something like: class Worker private_class_method :new ... end This would prevent anyone from calling Worker.new. Kevin