Refactoring and more lazy eval.