     let vao    = Vao()
     let vbo    = Vbo()
     let ibo    = Vbo()
-    var matrix = Mat4.identity()
+    var modelview  = Mat4.identity()
+    var projection = Mat4.identity()
     
     init() {
         // Load the Shader files
-        shader.load("DemoShader1.vsh", fragmentFile: "DemoShader1.fsh")
+        shader.load("DemoShader1.vsh", fragmentFile: "DemoShader1.fsh") {
+            program in
+            // Here we will bind the attibute names to the correct position
+            // Doing this will allow us to use the VBO/VAO with more than one shader, ensuring that the right
+            // values get passed in to the correct shader variables
+            glBindAttribLocation(program, 0, "position")
+            glBindAttribLocation(program, 1, "color")
+        }
         
         // Bind the vertices into the Vertex Buffer Object (VBO)
         vbo.bind([

    }
    
    func resize(#width: CFloat, height: CFloat) {
        
    }
}

        shader.bind()
        
        // Bind the updated matrix
        shader.bind(uniform: "matrix", m: projection * Mat4.translate(x: 0, y: 0, z: -5) * modelview)
        
        // Bind the VAO we plan to use
        vao.bind()
