add orderedBy feature, which implements Comparable<O>