         else if let dest = segue.destination as? JenkinsInformationTableViewController, segue.identifier == Constants.Identifiers.showJenkinsSegue{
             dest.account = account
         }
-        else if let dest = segue.destination as? JobsTableViewController, segue.identifier == Constants.Identifiers.showFolderSegue,
+        else if segue.identifier == Constants.Identifiers.showFolderSegue,
                 let cell = sender as? UITableViewCell,
                 let path = tableView.indexPath(for: cell),
-                let jobResult = currentView?.jobResults[path.row],
-                case let JobListResult.folder(folder) = jobResult,
-                let account = account{
-            
-            dest.account = account
-            dest.userRequest = UserRequest.userRequestForJobList(account: account, requestUrl: folder.url)
-            dest.sections = [sections.lazy.last!]
-            dest.title = folder.name
-        }
+                let jobResult = currentView?.jobResults[path.row]{
+            
+            prepare(vc: segue.destination, for: jobResult)
+        }
+        else if segue.identifier == Constants.Identifiers.showFolderSegue, let jobResult = sender as? JobListResult{
+            prepare(vc: segue.destination, for: jobResult)
+        }
+    }
+    
+    private func prepare(vc: UIViewController, for jobListResult: JobListResult){
+        switch jobListResult {
+        case .folder(let folder):
+            prepare(vc: vc, forFolder: folder)
+        case .job(let job):
+            prepare(vc: vc, forJob: job)
+        }
+    }
+    
+    private func prepare(vc: UIViewController, forJob job: Job){
+        guard let dest = vc as? JobViewController
+            else { return }
+        
+        dest.job = job
+        dest.account = account
+    }
+    
+    private func prepare(vc: UIViewController, forFolder folder: Job){
+        guard let dest = vc as? JobsTableViewController, let account = self.account
+            else { return }
+        
+        dest.account = account
+        dest.userRequest = UserRequest.userRequestForJobList(account: account, requestUrl: folder.url)
+        dest.sections = [sections.lazy.last!]
+        dest.title = folder.name
     }
     
     //MARK: - Tableview datasource and delegate

        return jobs?.allJobsView?.jobResults.map({ (job) -> Searchable in
            return Searchable(searchString: job.name, data: job as AnyObject, action: {
                self.searchController?.dismiss(animated: true, completion: nil)
                self.performSegue(withIdentifier: Constants.Identifiers.showJobSegue, sender: job)
            })
        }) ?? []
    }

    
    override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
        
        if  segue.identifier == Constants.Identifiers.showJobSegue,
            let jobCell = sender as? UITableViewCell,
            let indexPath = tableView.indexPath(for: jobCell),
            let jobResult = currentView?.jobResults[indexPath.row]{
            
            prepare(vc: segue.destination, for: jobResult)
        }
        else if segue.identifier == Constants.Identifiers.showJobSegue, let jobResult = sender as? JobListResult{
            prepare(vc: segue.destination, for: jobResult)
        }
        else if let dest = segue.destination as? BuildQueueTableViewController, segue.identifier == Constants.Identifiers.showBuildQueueSegue{
            dest.account = account
