             self.performSegueWithIdentifier("candidatesListSegue", sender: self)
             
         })
-
-    }
-    
-    @IBAction func findByPostcode(sender: UIButton) {
-        // get postcode in an alert...
-        let alertController = UIAlertController(title: "Enter Postcode", message: nil, preferredStyle: .Alert)
-        
-        // and a simple cancel button too!
-        let cancelAction = UIAlertAction(title: "Cancel", style: .Cancel) { (_) in
-            // do nothing really.
-        }
-        alertController.addAction(cancelAction)
-        
-        // we need the text field/it's behaviour set up...
-        let postcodeSearch = UIAlertAction(title: "Search", style: .Default) { (_) in
-            // get text field
-            let searchTextField = alertController.textFields![0] as UITextField
-            
-            // remove whitespace!!!!
-            let postcode:String = searchTextField.text.stringByReplacingOccurrencesOfString(" ", withString: "", options: NSStringCompareOptions.LiteralSearch, range: nil)
-            
-            
-            // start loading UI...
-            SwiftSpinner.show("Locating constituency")
-            
-            // now search...
-            YourNextMPAPIManager.getConstituencyWithPostcode(postcode, completionHandler: { (c) -> () in
-                self.loadCandidatesForConstituency(c!)
-                
-            })
-        }
-        
-        alertController.addTextFieldWithConfigurationHandler { (textField) in
-            // placeholder so the user knows what to do...
-            textField.placeholder = "Enter postcode"
-        }
-        
-        alertController.addAction(postcodeSearch)
-
-        
-        self.presentViewController(alertController, animated: true, completion: nil)
-        
-    }
-    
-    @IBAction func findByConstituencyList(sender: UIButton) {
-        // bit of loading UI...
-        SwiftSpinner.show("Loading constituencies...", animated: true)
-        
-        // load ConstituencyTableViewController (after getting constituencies!)
-        YourNextMPAPIManager.getConstituencies { (c) -> () in
-            // hide loading UI
-            SwiftSpinner.hide()
-            
-            // load it! (via constituenciesListSegue)
-            self.constituenciesList = c
-            self.performSegueWithIdentifier("constituenciesListSegue", sender: self)
-        }
+        
+    }
+
+    func reachabilityCheck() -> Bool{
+        if Reachability.reachabilityForInternetConnection().currentReachabilityStatus == Reachability.NetworkStatus.NotReachable {
+            // noo!
+            // alert the user and return false...
+            let alertController = UIAlertController(title: "No internet connection", message: "We're sorry but this app requires data from the Internet. Please check your Internet connection and try again.", preferredStyle: .Alert)
+            
+            let cancelAction = UIAlertAction(title: "Okay", style: .Default) { (action) in
+                // nothing to do really.
+            }
+            
+            alertController.addAction(cancelAction)
+            
+            self.presentViewController(alertController, animated: true, completion: nil)
+        }
+        
+        // must be reachable then...
+        return true
     }
     
     func locationManager(manager: CLLocationManager!, didUpdateLocations locations: [AnyObject]!) {

            
        })
    }
    
    func invalidConstituency() {
        // a generic 'not valid constituency' warning - ask the user to try again in an alert.

    }
    
    @IBAction func findByLocation(sender: UIButton) {
        // check connection...
        if !reachabilityCheck() {
            return
        }
        
        // okay first check we have a current location - if we don't, we can't find anything from nothing...
        if currentLocation == nil {
            // alert the user then return.
