Refactor OpenGLProgram