some refactoring + lazy image loading