refactor view with partials