Following http://www.opengl-tutorial.org more or less