def add_event_listener(self, event, function):
        """
        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.
        """

        if event not in self.listeners:
            self.listeners[event] = []

        self.listeners[event].append(function)