Move all case class enforcement inside the macros to avoid partial macro application triggering strange errors.
Add some _root_