ported to html (for own hosting)