lazy load images with placeholder (closes #2)