moved page content generation out of server script, for easier admin implem