Refactor over FilterBuilder to allow client customization