Used to dispatch events.

def drive(self, event, *args):
        """
        Used to dispatch events.
        """

        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)