add generateThumbnail func