added a withRender mixin and refactored all components to use it