type rules