edit filter design pattern