much cleaner OpenGL