refactoring + add Lazy objects