[refactor] remove Predicate class
use an interface to designate the order-by direction, instead of exposing a public method