This doesn't seem right to me: irb(main):001:0> module X irb(main):002:1> module A; end irb(main):003:1> end => nil irb(main):004:0> class Q irb(main):005:1> include X irb(main):006:1> p A irb(main):007:1> class Y irb(main):008:2> class Z < A irb(main):009:3> end irb(main):010:2> end irb(main):011:1> end X::A NameError: uninitialized constant Q::Y::A from (irb):8 If I recall correctly, 1.9 has some changes to constant lookup rules. Is the above fixed in 1.9? Thanks, T.