Split up rendering a bit more.

Make various methods protected so it's possible to extend the
renderer.