Maintainable Type Classes for Haskell