decoupling  gl stuff from objects