Lots of refactoring, working on proper definition of lazy evaluation.