         if segue.identifier == "info" {
             if let vc = segue.destinationViewController as? DeviceInfoViewController {
                 vc.device = self.selectedDevice
-                
-                Mixpanel.sharedInstance().track("Tinker: Info", properties: ["device":deviceTypeStr])
+                vc.deviceListViewController = self
+                
+                Mixpanel.sharedInstance().track("Tinker: Info", properties: ["device":deviceInfo.deviceName])
                 
             }
         }

        self.lastTappedNonTinkerDevice = nil
        
        
        var deviceTypeStr = "";
        
        switch self.selectedDevice!.type
        {
        case .Photon:
            deviceTypeStr = "Photon";
            
        case .Electron:
            deviceTypeStr = "Electron";
            
        case .Core:
            deviceTypeStr = "Core";
            
        default:
            deviceTypeStr = "Other";
            
        }
        
        if segue.identifier == "tinker" {
            if let vc = segue.destinationViewController as? SPKTinkerViewController {
                vc.device = self.selectedDevice
                
                Mixpanel.sharedInstance().track("Tinker: Start Tinkering", properties: ["device":deviceTypeStr, "running_tinker":vc.device.isRunningTinker()])
                
            }
        }

        return self.devices.count
    }
    
    
    
    func getDeviceNameAndImage(device : SparkDevice?) -> (deviceName: String, deviceImage: UIImage) {
        
        var image : UIImage?
        var text : String?
        
        switch (device!.type)
        {
        case .Core:
            image = UIImage(named: "imgDeviceCore")
            text = "Core"
            
        case .Electron:
            image = UIImage(named: "imgDeviceElectron")
            text = "Electron"
            
        case .Photon:
            image = UIImage(named: "imgDevicePhoton")
            text = "Photon/P0"
            
        case .P1:
            image = UIImage(named: "imgDeviceP1")
            text = "P1"
            
        case .RedBearDuo:
            image = UIImage(named: "imgDeviceRedBearDuo")
            text = "RedBear Duo"
            
        case .Bluz:
            image = UIImage(named: "imgDeviceBluz")
            text = "Bluz"
            
        case .DigistumpOak:
            image = UIImage(named: "imgDeviceDigistumpOak")
            text = "Digistump Oak"
            
        default:
            image = UIImage(named: "imgDeviceUnknown")
            text = "Unknown"
            
        }
        
        
        return (text!, image!)
        
    }
    
    
    func getDeviceStateDescAndImage(device : SparkDevice?) -> (deviceStateText : String, deviceStateImage : UIImage) {
        let online = device?.connected
        var text : String?
        var image : UIImage?
        
        switch online!
        {
        case true :
            switch device!.isRunningTinker()
            {
            case true :
                text = "Online"
                image = UIImage(named: "imgGreenCircle") // TODO: breathing cyan
            default :
                text = "Online, non-Tinker"
                image = UIImage(named: "imgYellowCircle")
            }
            
            
        default :
            text = "Offline"
            image = UIImage(named: "imgRedCircle") // gray circle
            
        }
        
        return (text!,image!)
    
    }

    
    func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
        
        var masterCell : UITableViewCell?
