I'm thinking we should make more of a QueryBuilder interface, and not have the evaluate method here