             title: NSLocalizedString("Done", comment: "Settings"),
             style: UIBarButtonItemStyle.Done,
             target: navigationController, action: "SELdone")
+
+        // To allow re-ordering the list of search engines at all times.
+        tableView.editing = true
+        // So that we push the default search engine controller on selection.
+        tableView.allowsSelectionDuringEditing = true
     }
 
     override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
         var cell: UITableViewCell
         var engine: OpenSearchEngine
 
-        engine = model.defaultEngine
-        cell = UITableViewCell(style: UITableViewCellStyle.Default, reuseIdentifier: nil)
-        cell.accessoryType = UITableViewCellAccessoryType.DisclosureIndicator
+        if indexPath.section == SectionDefault {
+            engine = model.defaultEngine
+            cell = UITableViewCell(style: UITableViewCellStyle.Default, reuseIdentifier: nil)
+            cell.editingAccessoryType = UITableViewCellAccessoryType.DisclosureIndicator
+        } else {
+            engine = model.orderedEngines[indexPath.item]
+            cell = UITableViewCell(style: UITableViewCellStyle.Default, reuseIdentifier: nil)
+            cell.showsReorderControl = true
+        }
+
+        // So that the seperator line goes all the way to the left edge.
+        cell.separatorInset = UIEdgeInsetsZero
 
         cell.textLabel?.text = engine.shortName
         cell.imageView?.image = engine.image

            navigationController?.pushViewController(searchEnginePicker, animated: true)
        }
        return nil
    }

    func SELcancel() {


class SearchSettingsTableViewController: UITableViewController {
    private let SectionDefault = 0
    private let SectionOrder = 1

    var model: SearchEngines!

