     
     var dayIntensity = 0.0
     
-    var southAndNorthLatitude = Cartesian2()
-    
-    var southMercatorYLowAndHighAndOneOverHeight = Cartesian3()
+    var southAndNorthLatitude: float2 {
+        get {
+            return _uniformStruct.southAndNorthLatitude
+        }
+        set {
+            _uniformStruct.southAndNorthLatitude = newValue
+        }
+    }
+    
+    var southMercatorYAndOneOverHeight: float2 {
+        get {
+            return _uniformStruct.southMercatorYAndOneOverHeight
+        }
+        set {
+            _uniformStruct.southMercatorYAndOneOverHeight = newValue
+        }
+    }
     
     var waterMask: Texture? = nil
     
-    var waterMaskTranslationAndScale = Cartesian4()
+    var waterMaskTranslationAndScale: float4 {
+        get {
+            return _uniformStruct.waterMaskTranslationAndScale
+        }
+        set {
+            _uniformStruct.waterMaskTranslationAndScale = newValue
+        }
+    }
     
     private var _uniformStruct = TileUniformStruct()
     
-    let uniforms: [String: UniformFunc] = [
-        
+    let uniforms: [String: UniformFunc] = [:
+            /*
+    
         "u_initialColor": { (map: UniformMap, buffer: UnsafeMutablePointer<Void>) in
             let simd = (map as! TileUniformMap).initialColor.floatRepresentation
             memcpy(buffer, [simd], strideofValue(simd))

var floatTuple: FloatTuple = {
    (0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0)
}()

struct TileUniformStruct: MetalUniformStruct {
    // Honestly...

            let simd = (map as! TileUniformMap).waterMaskTranslationAndScale.floatRepresentation
            memcpy(buffer, [simd], sizeof(float4))
        }
    */
    ]
    
    init(maxTextureCount: Int) {
        self.maxTextureCount = maxTextureCount
        dayTextures = [Texture]()
        dayTextures.reserveCapacity(maxTextureCount)
        //dayTextureTranslationAndScale = [Cartesian4]()
        //dayTextureTexCoordsRectangle = [Cartesian4]()
        dayTextureAlpha = [Float]()
        dayTextureBrightness = [Float]()
        dayTextureContrast = [Float]()
        dayTextureHue = [Float]()
        dayTextureSaturation = [Float]()
        dayTextureOneOverGamma = [Float]()
        
         metalUniformUpdateBlock = { buffer in
            memcpy(buffer.data, &self._uniformStruct, sizeof(TileUniformStruct))
            var textures = self.dayTextures
            if let waterMask = self.waterMask {
                textures.append(waterMask)
            }
            if let oceanNormalMap = self.oceanNormalMap {
                textures.append(oceanNormalMap)
            }
            return textures
        }

    }
    
    var metalUniformUpdateBlock: ((buffer: Buffer) -> ([Texture]))!
    
    
    func textureForUniform (uniform: UniformSampler) -> Texture? {
        let dayTextureCount = dayTextures.count
