refactored RuleEngine
added whiteList and blackList
added a few tests