refactoring: separated renderers