Refined the rules for typing This