add generateThumbnail()