type mapping refinement