         _textureCache = _unmanagedTextureCache!.takeUnretainedValue()
         
         // set up the full screen quads
-        let dataPassthrough:[Float] =
-        [ -1.0,  -1.0,  0.0, 1.0,
+        let data:[Float] =
+        [   // landscape right & passthrough
+            -1.0,  -1.0,  0.0, 1.0,
             1.0,  -1.0,  1.0, 1.0,
             -1.0,   1.0,  0.0, 0.0,
             1.0,  -1.0,  1.0, 1.0,
             -1.0,   1.0,  0.0, 0.0,
-            1.0,   1.0,  1.0, 0.0]
-        
-        // set up vertex buffer
-        var dataSize = dataPassthrough.count * sizeofValue(dataPassthrough[0]) // 1
-        _passthroughBuffer = (_device.newBufferWithBytes(dataPassthrough, length: dataSize, options: nil),0)
-        _vertexBuffers[.LandscapeRight] = _passthroughBuffer
-        
-        let dataLandscapeLeft:[Float] =
-        [ -1.0,  -1.0,  1.0, 0.0,
+            1.0,   1.0,  1.0, 0.0,
+            // landscape left
+            -1.0,  -1.0,  1.0, 0.0,
             1.0,  -1.0,  0.0, 0.0,
             -1.0,   1.0,  1.0, 1.0,
             1.0,  -1.0,  0.0, 0.0,
             -1.0,   1.0,  1.0, 1.0,
-            1.0,   1.0,  0.0, 1.0]
-        
-        // set up vertex buffer
-        dataSize = dataLandscapeLeft.count * sizeofValue(dataLandscapeLeft[0]) // 1
-        _vertexBuffers[.LandscapeLeft] = (_device.newBufferWithBytes(dataLandscapeLeft, length: dataSize, options: nil),0)
-        
-        let dataPortrait:[Float] =
-        [ -1.0,  -1.0,  1.0, 1.0,
+            1.0,   1.0,  0.0, 1.0,
+            // portrait
+            -1.0,  -1.0,  1.0, 1.0,
             1.0,  -1.0,  1.0, 0.0,
             -1.0,   1.0,  0.0, 1.0,
             1.0,  -1.0,  1.0, 0.0,
             -1.0,   1.0,  0.0, 1.0,
-            1.0,   1.0,  0.0, 0.0]
-        
-        // set up vertex buffer
-        dataSize = dataPortrait.count * sizeofValue(dataPortrait[0]) // 1
-        _vertexBuffers[.Portrait] = (_device.newBufferWithBytes(dataPortrait, length: dataSize, options: nil),0)
-        
-        let dataPortraitUpsideDown:[Float] =
-        [ -1.0,  -1.0,  0.0, 0.0,
+            1.0,   1.0,  0.0, 0.0,
+            // portrait upside down
+            -1.0,  -1.0,  0.0, 0.0,
             1.0,  -1.0,  0.0, 1.0,
             -1.0,   1.0,  1.0, 0.0,
             1.0,  -1.0,  0.0, 1.0,

    private var _controller:UIViewController! = nil
    
    lazy private var _device = MTLCreateSystemDefaultDevice()
    private var _vertexBuffers = [UIInterfaceOrientation : (MTLBuffer,Int)]()

    private var _passthroughBuffer:(MTLBuffer,Int)! = nil
    private var _filterArgs:MetalBufferArray<FilterBuffer>! = nil
    private var _colorArgs:MetalBufferArray<ColorBuffer>! = nil
    private var _blurArgs:MetalBufferArray<BlurBuffer>? = nil

                
                createRenderPass(commandBuffer,
                    pipeline:  _blurPipelineStates[1],
                    vertexIndex: 0,
                    fragmentBuffers: parameters,
                    sourceTextures: [_intermediateTextures[0]],
                    descriptor: _blurDescriptor,
