Weaving of typereqs through adt-def: products