add start method, and refactor to use rule-set