def derive(self, modifier):
        """
        Returns a new :class:`Event` instance that will fire
        when this event fires. The value passed to the callbacks
        to the new event is the return value of the given
        `modifier` function which is passed the original value.
        """
        def forward(value):
            changed_value = modifier(value)
            derived.fire(changed_value)
        
        derived = Event()
        self.add_callback(forward)
        return derived