allow empty fields; add viewer.html