some refactoring and added pre-fetch product images, still problematic on start