breakout into templates to make more readable