everything should be a subclass of mop::object