actually generate the whole page