add FilterFailed exception, and __invoke() to use filter as a callable