detailed explanation of rules