Fix the signature of filter
Continue to implement widen