Proper instances of `Show`, `Eq` and `Ord`