refacto renderers to separate concerns