common interface: Comparable & Clonable