html generation should really be a commit hook or something