Add functionality, factor stuff out into partial …

templates, add some JS, improve styling, improve basically everything.