more stuff on deriving typeclasses in haskell