code: def drive(self, event, *args):
          
  
          maps = self.base.get(event, self.step)
          for handle, data in maps[:]:
              params = args + data
              try:
                  handle(self, *params)
              except Stop:
                  break
              except StopIteration:
                  pass
              except Kill as Root:
                  raise
              except Erase:
                  maps.remove((handle, data))
              except Exception as e:
                  debug(event, params)
  
          for handle in self.pool:
              handle(self, event, args)
docs: Used to dispatch events.