This talk is about things we can do with ConstraintKinds. First, we will have a look at the constraints library : how it uses (Dict :: Constraint -> *) to move around instances of type classes. Then, we will follow an amazing reflection  tutorial by Austin Seipp  explaining how to dynamically construct type-class instances. Finally, I will present my experimental GHC plugin that turns a manually-constructed Dict into a vanilla type-class instance. Also I will try to justify why I need such a weird trickery by means of an intersting example: implementing a type-class instance for a closed type family.