Move rendering to listeners