move subclass tracking to a module