cover all of rules.py