added ShaderProgram class