refactor form with partials