Of course, I meand 'deriving', not 'defining'/me embarsed
Perhaps what you are looking for is a more powerful "defining" semantics? newtype MyFoo = Foo defining (Foo(..)) -- all class instances that Foo has are delegated through from MyFoo