     
     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 oceanNormalMap: Texture? = nil
    
    var lightingFadeDistance: Cartesian2 {
        get {
            return Cartesian2(fromSIMD: vector_double(_uniformStruct.lightingFadeDistance))
        }
        set {
            _uniformStruct.lightingFadeDistance = newValue.floatRepresentation
        }
    }
    
    var center3D: Cartesian3 {
        get {
            return Cartesian3(fromSIMD: vector_double(_uniformStruct.center3D))
        }
        set {
            _uniformStruct.center3D = newValue.floatRepresentation
        }
    }
    
    var modifiedModelView: Matrix4 {
        get {
            let mmv = _uniformStruct.modifiedModelView
            return Matrix4(fromSIMD: double4x4([
                vector_double(mmv[0]),
                vector_double(mmv[1]),
                vector_double(mmv[2]),
                vector_double(mmv[3])
            ]))
        }
        set {
            _uniformStruct.modifiedModelView = newValue.floatRepresentation
        }
    }
    
    var tileRectangle: Cartesian4 {
        get {
            return Cartesian4(fromSIMD: vector_double(_uniformStruct.tileRectangle))
        }
        set {
            _uniformStruct.tileRectangle = newValue.floatRepresentation
        }
    }
    
    var dayTextures: [Texture]
    
    var dayTextureTranslationAndScale: [Cartesian4] 
    var dayTextureTexCoordsRectangle: [Cartesian4]
    var dayTextureAlpha: [Float]
    var dayTextureBrightness: [Float]
    var dayTextureContrast: [Float]

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)
}()

private let MaximumMetalTextureCount = 31

struct TileUniformStruct: MetalUniformStruct {
    // Honestly...
