rewrite preload logic, now images are load one by one