         tmpMarker.layoutImportance = MAXFLOAT
         tmpMarker.selectable = false
         tmpMarker.loc = maplyLoc
+        
+        self.theViewC?.startChanges()
         self.theViewC?.addScreenMarkers([tmpMarker], desc: nil)
+        self.theViewC?.endChanges()
         return tmpMarker
     }
     
-    func update(marker:MaplyScreenMarker, location:CLLocation) {
-        //self.theViewC?.remove([marker], mode: MaplyThreadMode.current)
-        self.theViewC?.remove([marker])
-        marker.loc =  MaplyCoordinateMakeWithDegrees(Float(location.coordinate.longitude), Float(location.coordinate.latitude))
-        self.theViewC?.addScreenMarkers([marker as Any], desc: nil)
-    }
 
     
     

        //print("We got: \(satelliteList)")
        satelliteList.forEach { (dict) in
            let geoDict = dict.value
            print("\(dict.key) - \(geoDict.description())")
            
            let tmpLocation = CLLocation(latitude: geoDict.latitude, longitude: geoDict.longitude)
            if let thisMarker = self.mapMarkers[dict.key] {
                self.update(marker: thisMarker, location: tmpLocation)
                //print("Updated marker for \(dict.key) at \(tmpLocation)")
            } else { // no marker - make a new one
                let tmpMarker = self.newMarkerAt(location: tmpLocation, iamgeName: kSatelliteMarkerImage)
                self.mapMarkers[dict.key] = tmpMarker
                //print("Added marker for \(dict.key) at \(tmpLocation)")
            }
        }
    }
    
    func didRemoveObservedSatellitesNamed(_ names: [String]) {

    // MARK: WhirlyGlobe setup and delegates
    func setupWhirlyGlobe() {
        theViewC = WhirlyGlobeViewController()
        //theViewC = MaplyViewController()
        
        self.view.addSubview(theViewC!.view)
        theViewC!.view.frame = self.view.bounds
