implement elements as subclasses of Ordered[A]