initial renderer abstraction