use TestingIO
rewrite RuleController to get rid of some legacy code
API changes following the rewrite of RuleController