             let nearbyObjects = results as! [BRCDataObject]
             let options = BRCDataSorterOptions()
             BRCDataSorter.sortDataObjects(nearbyObjects, options: options, completionQueue: dispatch_get_main_queue(), callbackBlock: { (events, art, camps) -> (Void) in
-                self.nearbyArt = art
-                self.nearbyEvents = events
-                self.nearbyCamps = camps
+                var sections: [TableViewSection] = []
+                if events.count > 0 {
+                    let eventsSection = TableViewSection(objects: events, sectionTitle: ObjectType.Events)
+                    sections.append(eventsSection)
+                }
+                if art.count > 0 {
+                    let artSection = TableViewSection(objects: art, sectionTitle: ObjectType.Art)
+                    sections.append(artSection)
+                }
+                if camps.count > 0 {
+                    let campsSection = TableViewSection(objects: camps, sectionTitle: ObjectType.Camps)
+                    sections.append(campsSection)
+                }
+                self.sections = sections
                 if BRCDatabaseManager.sharedInstance().rTreeIndex != nil {
                     self.emptyListText = EmptyListLabelText.Nothing
                 }

import UIKit
import MapKit

private enum TableSection: Int {
    case Events = 0,
    Camps,
    Art
}

private enum EmptyListLabelText: String {
    case Loading = "Loading...",
    Nothing = "Nothing Nearby"
}

class BRCNearbyViewController: UITableViewController {

    var nearbyEvents: [BRCEventObject] = []
    var nearbyCamps: [BRCCampObject] = []
    var nearbyArt: [BRCArtObject] = []
    
    private var emptyListText = EmptyListLabelText.Loading
    

        if !hasNearbyObjects() {
            return 1
        }
        return sections.count
    }

    override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        if !hasNearbyObjects() {
            return 1
        }
        return sections[section].objects.count
    }
    
    override func tableView(tableView: UITableView, titleForHeaderInSection section: Int) -> String? {
        if !hasNearbyObjects() {
            return nil
        }
        return sections[section].sectionTitle.rawValue
    }
    
    override func tableView(tableView: UITableView, heightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat {
