turbocharge type class derivation: now with coproducts!
rename derive to apply and provide automatic derivation