     func handleActivity(activity:CMMotionActivity?)->Void{
         // unwrap the activity and disp
         if let unwrappedActivity = activity {
-            //DispatchQueue.main.async(){}
-            NSLog("Walking: \(unwrappedActivity.walking)\n Still: \(unwrappedActivity.stationary)")
+            //DispatchQueue.main.async(){} // for UI update, just use main queue
+            print("Walking: \(unwrappedActivity.walking)\n Still: \(unwrappedActivity.stationary)")
         }
     }
     

    func startActivityMonitoring(){
        // is activity is available
        if CMMotionActivityManager.isActivityAvailable(){
            // update from this queue (should we use the MAIN queue here??.... )
            self.activityManager.startActivityUpdates(to: OperationQueue.main, withHandler: self.handleActivity)
        }
        
    }

    // MARK: Raw Motion Functions
    func startMotionUpdates(){
        // some internal inconsistency here: we need to ask the device manager for device
        if self.motion.isDeviceMotionAvailable{
            self.motion.startDeviceMotionUpdates(to: motionQueue, withHandler: self.handleMotion)
        }
    }
    
