ADDED:
+ wrapped up shader programs into ShaderProgram::