Refactoring of GLProgram class.