Refactoring GLProgram and Texture2D classes