Chopped into separate files, added explanations to some rules