         goalLabel.text = "Step Goal: \(goalNumber!)"
 
     }
+    
+    // MARK: Raw Motion Functions
+    func startMotionUpdates(){
+        // some internal inconsistency here: we need to ask the device manager for device
+        
+        // TODO: should we be doing this from the MAIN queue? You will need to fix that!!!....
+        if self.motion.isDeviceMotionAvailable{
+            self.motion.startDeviceMotionUpdates(to: OperationQueue.main, withHandler: self.handleMotion as! CMDeviceMotionHandler)
+        }
+    }
+    
+    func handleMotion(motionData:CMDeviceMotion?, error:NSError?){
+        if let gravity = motionData?.gravity {
+            let rotation = atan2(gravity.x, gravity.y) - M_PI
+            //UI element update
+            //self.isWalking.transform = CGAffineTransformMakeRotation(CGFloat(rotation))
+        }
+    }
+    
+    // MARK: Activity Functions
+    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)
+        }
+        
+    }
+    
+    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)")
+        }
+    }
+    
+    // MARK: Pedometer Functions
+    func startPedometerMonitoring(){
+        //separate out the handler for better readability
+        if CMPedometer.isStepCountingAvailable(){
+            pedometer.startUpdates(from: NSDate() as Date, withHandler: self.handlePedometer as! CMPedometerHandler)
+            //(NSDate() as Date, withHandler: self.handlePedometer)
+        }
+    }
+    
+    //ped handler
+    func handlePedometer(pedData:CMPedometerData?, error:NSError?){
+        if let steps = pedData?.numberOfSteps {
+            self.totalSteps = steps.floatValue
+        }
+    }
 
 }
 

//

import UIKit

class ViewController: UIViewController, UITextFieldDelegate {

    @IBOutlet weak var goalLabel: UILabel!
    @IBOutlet weak var newGoalField: UITextField!
    
    let numberToolbar: UIToolbar = UIToolbar()
    
    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view, typically from a nib.
        
        if UserDefaults.standard.object(forKey: "stepGoal") == nil {
            UserDefaults.standard.set(100, forKey: "stepGoal")

    
    override func viewDidAppear(_ animated: Bool) {
        super.viewDidAppear(animated)
    }

    @IBAction func setGoal(_ sender: AnyObject) {
