implement single page app for most routes, excluding editing and deleting