Version with deriving (Ord)