MultiParamTypeClasses und TypeFamilies

Both syntax is rather guessed from the examples and the definitions in
ghc