docs: def _iter_module_subclasses(package, module_name, base_cls):
      """inspect all modules in this directory for subclasses of inherit from
      ``base_cls``. inpiration from http://stackoverflow.com/q/1796180/564709
      """
      module = importlib.import_module('.' + module_name, package)
      for name, obj in inspect.getmembers(module):
          if inspect.isclass(obj) and issubclass(obj, base_cls):
              yield obj