More classes and renderer is abstract