So we can do ``` haskell data T = A | B | C deriving (Eq, Ord, Show) $(makeClosedAlpha ''T) ``` but we could also want ``` haskell data T a where A :: Int -> T Int B :: Bool -> T Bool C :: Char -> T Char deriving instance Eq (T a) deriving instance Ord (T a) deriving instance Show (T a) $(makeClosedAlpha ''T) ``` which doesn't work right now because it makes the following instance declaration ``` haskell instance Alpha T ``` instead of the kind-correct ``` haskell instance Alpha (T a) ```