add generateHtml method