abstracted rendering