refined type rules