OpenGL boilerplating part I