[Haskell-cafe] Refactoring type-class madness