refactoring of laziness