Your data type GridWidget doesn't have a parameter, yet you use it like it has one. > data GridWidget = forall widget. (WidgetClass widget) => GridWidget > widget ^ | NB:-------------+ > liftGW :: (GridWidget widget) -> (widget -> t) -> t