address Andrew’s comment:
- split to two different algebras. 
- refactor rules to logical groups of rules