add event expressions support
improve 'fire' method