Refactor and added LazyList