code: def register(self, obj, autogenerate=False):
          
          scope = self._scope
  
          # register a module
          if type(obj).__name__ == 'module':
              for key, value in vars(obj).items():
                  # register a climethod
                  if isinstance(value, climethod):
                      value.interface = self
                      scope[key] = value
  
                  # register a function
                  elif inspect.isfunction(value) and autogenerate:
                      meth = climethod(value)
                      meth.interface = self
                      scope[key] = meth
  
          # register a climethod
          elif isinstance(obj, climethod):
              obj.interface = self
              scope[obj.__name__] = obj
  
          # register a function
          elif inspect.isfunction(obj) and autogenerate:
              meth = climethod(obj)
              meth.interface = self
              scope[meth.__name__] = meth
docs: Registers the inputted object to this scope.
          
          :param      obj | <module> || <function> || <climethod>