[WIP] Refactor renderers

This pull-request is a bit lengthy, but isn't actually too bad.