refactor: split templates into partials