anchor.diff:        [Matrix4 overrideMvMatrix]) {
       if (!hasEnabledObjects()) return;
   
  -    if (debug) print("[${name} setting attributes");
  -    gl.useProgram(program);
  -    for (String a in _attributeLocations.keys) {
  -      if (debug) print("[${name}] $a");
  -      final index = _attributeLocations[a];
  -      gl.enableVertexAttribArray(index);
  -      if (a.startsWith("ia")) {
  -        _extInstancedArrays.vertexAttribDivisorAngle(index, 1);
  -      }
  -    }
  -    
  -    if (debug) print("[${name} setting unuiforms");
  -    camera.getMVMatrix(mvMatrix, false);
  +    _program.Begin(_gl, debug);
  +
  +    if (debug) print("[setting ununiforms");
       inputs.SetUniformVal(uCameraNear, dynpar.near);
       inputs.SetUniformVal(uCameraFar, dynpar.far);
       inputs.SetUniformVal(uCanvasSize, new Vector2(dynpar.width, dynpar.height));
       inputs.SetUniformVal(uPerspectiveMatrix, pMatrix);
  -    inputs.SetUniformVal(uPointLightLocation, lightpar.pointLightLocation);
  -
  +    if (lightpar != null) {
  +      inputs.SetUniformVal(uPointLightLocation, lightpar.pointLightLocation);
  +    }
       // TODO: make the WHEN gets WHAT updated more rigorous
       // Only do a subset here
       for (String u in [
  
positive.code:   uPointSize: new ShaderVarDesc("float", ""),
    uCanvasSize: new ShaderVarDesc("vec2", ""),
    uColor: new ShaderVarDesc("vec3", ""),
  };
  
  void IntroduceNewShaderVar(String name, ShaderVarDesc desc) {
  
negative.code:   uTransformationMatrix: new ShaderVarDesc("mat4", ""),
    uModelViewMatrix: new ShaderVarDesc("mat4", ""),
    uViewMatrix: new ShaderVarDesc("mat4", ""),
    uNormalMatrix: new ShaderVarDesc("mat3", ""),
    uPerspectiveMatrix: new ShaderVarDesc("mat4", ""),
    uTextureSampler: new ShaderVarDesc("sampler2D", ""),
    uTexture2Sampler: new ShaderVarDesc("sampler2D", ""),
    uTexture3Sampler: new ShaderVarDesc("sampler2D", ""),
    uTexture4Sampler: new ShaderVarDesc("sampler2D", ""),
    uTextureCubeSampler: new ShaderVarDesc("samplerCube", ""),
    uPointLightLocation: new ShaderVarDesc("vec3", ""),
    uTime: new ShaderVarDesc("float", "time since program start in sec"),
  