code: def add_event_listener(self, event, function):
          
  
          if event not in self.listeners:
              self.listeners[event] = []
  
          self.listeners[event].append(function)
docs: Add an event listen for a particular event. Depending on the event
          there may or may not be parameters passed to function. Most escape 
          streams also allow for an empty set of parameters (with a default
          value). Providing these default values and accepting variable arguments
          is the responsibility of function.
  
          More than one listener may be added for a single event. Each listener
          will be called.
          
          * **event** The event to listen for.
          * **function** The callable to invoke.