         }
         let element:SCNGeometryElement = SCNGeometryElement(indices: geometryData, primitiveType: .Triangles)
         
-        //Create final SCNGeometry
+        //Create SCNGeometry
         let geometry:SCNGeometry = SCNGeometry(sources: geometrySources, elements: [element])
         
         //Add some color
         let colorMaterial = SCNMaterial()
         colorMaterial.diffuse.contents = UIColor.greenColor()
+        colorMaterial.doubleSided = true
         geometry.materials = [colorMaterial]
 
         return geometry
     }
     
-    
-    func generateObserverNode(altitude: Int) -> SCNNode {
-        let observerCapsule = SCNCapsule(capRadius: 0.5, height: 2.0)
+    func generateObserverNode(altitude: Double) -> SCNNode {
+        let observerCapsule = SCNCapsule(capRadius: 0.125, height: 0.5)
+        let capsuleSizeFactor:Float = 0.25
         let observerNode = SCNNode(geometry: observerCapsule)
         
         let incrementXFactor: Int = elevation[0].count / 2
         let incrementYFactor: Int = elevation.count / 2
+        //TODO: Location of observer is inaccurate
         let observerX = Float(upperLeftCoordinate.longitude) + Float(incrementXFactor)
         let observerY = Float(upperLeftCoordinate.latitude) - Float(incrementYFactor)
-        //TODO: Verify elevation location of observer is accurate
-        let observerZ: Float = Float(elevation[incrementXFactor][incrementYFactor] + altitude)
+        let boundedElevation:Float = boundElevation(elevation[incrementXFactor][incrementYFactor], altitude: Float(altitude))
+        let observerZ: Float = Float(boundedElevation) + capsuleSizeFactor
         observerNode.position = SCNVector3Make(observerX, observerY, observerZ)
         observerNode.eulerAngles = SCNVector3Make(Float(M_PI_2), 0, 0)
         return observerNode

    }
    
    func addObserver(altitude: Double) {
        self.addChildNode(generateObserverNode(Int(altitude)))
    }
    
    func getCameraElevation() -> Int {
        let cameraFactor = 20
        return maxElevation + cameraFactor
    }
    
    // MARK: Private Functions

                textures.append((x:Float(column + 1), y:Float(row)))
                textures.append((x:Float(column), y:Float(row + 1)))
                textures.append((x:Float(column + 1), y:Float(row + 1)))
            }
        }
        
