nasty things possible with generalized newtype deriving