refactor back to Query interface and AbstractQuery.
create CriteriaFilterProcessor to build filter builders to inject in Query