Simplify stuff. More functional approach.
Add some tests for lazy rules evaluation