abstracted rendering away from the rest of the component