what broke if you used base? it should return the correct object...e.g. when you do Host::Base.find(id of a managed Host)) you should get a managed host class.