diff --git a/asterix-examples/src/main/resources/old/css/bootstrap-responsive.css b/asterix-examples/src/main/resources/cherry/css/bootstrap-responsive.css
similarity index 100%
rename from asterix-examples/src/main/resources/old/css/bootstrap-responsive.css
rename to asterix-examples/src/main/resources/cherry/css/bootstrap-responsive.css
diff --git a/asterix-examples/src/main/resources/old/css/bootstrap-responsive.min.css b/asterix-examples/src/main/resources/cherry/css/bootstrap-responsive.min.css
similarity index 100%
rename from asterix-examples/src/main/resources/old/css/bootstrap-responsive.min.css
rename to asterix-examples/src/main/resources/cherry/css/bootstrap-responsive.min.css
diff --git a/asterix-examples/src/main/resources/old/css/bootstrap.css b/asterix-examples/src/main/resources/cherry/css/bootstrap.css
similarity index 100%
rename from asterix-examples/src/main/resources/old/css/bootstrap.css
rename to asterix-examples/src/main/resources/cherry/css/bootstrap.css
diff --git a/asterix-examples/src/main/resources/old/css/bootstrap.min.css b/asterix-examples/src/main/resources/cherry/css/bootstrap.min.css
similarity index 100%
rename from asterix-examples/src/main/resources/old/css/bootstrap.min.css
rename to asterix-examples/src/main/resources/cherry/css/bootstrap.min.css
diff --git a/asterix-examples/src/main/resources/old/css/jquery.dataTables.css b/asterix-examples/src/main/resources/cherry/css/jquery.dataTables.css
similarity index 100%
rename from asterix-examples/src/main/resources/old/css/jquery.dataTables.css
rename to asterix-examples/src/main/resources/cherry/css/jquery.dataTables.css
diff --git a/asterix-examples/src/main/resources/old/examples/cherry.html b/asterix-examples/src/main/resources/cherry/examples/cherry.html
similarity index 100%
rename from asterix-examples/src/main/resources/old/examples/cherry.html
rename to asterix-examples/src/main/resources/cherry/examples/cherry.html
diff --git a/asterix-examples/src/main/resources/old/img/asterixlogo.png b/asterix-examples/src/main/resources/cherry/img/asterixlogo.png
similarity index 100%
rename from asterix-examples/src/main/resources/old/img/asterixlogo.png
rename to asterix-examples/src/main/resources/cherry/img/asterixlogo.png
Binary files differ
diff --git a/asterix-examples/src/main/resources/old/img/glyphicons-halflings-white.png b/asterix-examples/src/main/resources/cherry/img/glyphicons-halflings-white.png
similarity index 100%
rename from asterix-examples/src/main/resources/old/img/glyphicons-halflings-white.png
rename to asterix-examples/src/main/resources/cherry/img/glyphicons-halflings-white.png
Binary files differ
diff --git a/asterix-examples/src/main/resources/old/img/glyphicons-halflings.png b/asterix-examples/src/main/resources/cherry/img/glyphicons-halflings.png
similarity index 100%
rename from asterix-examples/src/main/resources/old/img/glyphicons-halflings.png
rename to asterix-examples/src/main/resources/cherry/img/glyphicons-halflings.png
Binary files differ
diff --git a/asterix-examples/src/main/resources/old/img/markers.png b/asterix-examples/src/main/resources/cherry/img/markers.png
similarity index 100%
rename from asterix-examples/src/main/resources/old/img/markers.png
rename to asterix-examples/src/main/resources/cherry/img/markers.png
Binary files differ
diff --git a/asterix-examples/src/main/resources/old/img/mobile.png b/asterix-examples/src/main/resources/cherry/img/mobile.png
similarity index 100%
rename from asterix-examples/src/main/resources/old/img/mobile.png
rename to asterix-examples/src/main/resources/cherry/img/mobile.png
Binary files differ
diff --git a/asterix-examples/src/main/resources/old/img/mobile2.png b/asterix-examples/src/main/resources/cherry/img/mobile2.png
similarity index 100%
rename from asterix-examples/src/main/resources/old/img/mobile2.png
rename to asterix-examples/src/main/resources/cherry/img/mobile2.png
Binary files differ
diff --git a/asterix-examples/src/main/resources/old/img/mobile_green.png b/asterix-examples/src/main/resources/cherry/img/mobile_green.png
similarity index 100%
rename from asterix-examples/src/main/resources/old/img/mobile_green.png
rename to asterix-examples/src/main/resources/cherry/img/mobile_green.png
Binary files differ
diff --git a/asterix-examples/src/main/resources/old/img/mobile_green2.png b/asterix-examples/src/main/resources/cherry/img/mobile_green2.png
similarity index 100%
rename from asterix-examples/src/main/resources/old/img/mobile_green2.png
rename to asterix-examples/src/main/resources/cherry/img/mobile_green2.png
Binary files differ
diff --git a/asterix-examples/src/main/resources/old/js/asterix-api-core.js b/asterix-examples/src/main/resources/cherry/js/asterix-api-core.js
similarity index 96%
rename from asterix-examples/src/main/resources/old/js/asterix-api-core.js
rename to asterix-examples/src/main/resources/cherry/js/asterix-api-core.js
index 00a6fbb..13c32b3 100755
--- a/asterix-examples/src/main/resources/old/js/asterix-api-core.js
+++ b/asterix-examples/src/main/resources/cherry/js/asterix-api-core.js
@@ -150,7 +150,7 @@
 AsterixCoreAPI.prototype.aql_for = function(for_object) {
     var for_statement = "for $"; 
     for (var key in for_object) {
-        for_statement += key + " in dataset('" + for_object[key] + "')";
+        for_statement += key + " in dataset " + for_object[key];
     }
     
     this.parameters["statements"].push(for_statement);
@@ -243,7 +243,7 @@
         "query" : use_dataverse + api.parameters["statements"].join("\n"),
         "mode" : api.parameters["mode"]
     };
-    
+
     api.api_helper_proxy_handler(json, callbacks, api.extra);
 }
 
@@ -330,7 +330,7 @@
         data: json,
         dataType: "json",
         success: function(data) {
-            
+
             // Update API special case
             if (data == "") {
                 api.ui_callback_on_success(api.extra);
@@ -451,6 +451,16 @@
 *
 * TODO this is kind of hacky :/
 */
+AsterixCoreAPI.prototype.rectangle = function(bounds) {
+   var lower_left = 'create-point(' + bounds["sw"]["lat"] + ',' + bounds["sw"]["lng"] + ')';
+   var upper_right = 'create-point(' + bounds["ne"]["lat"] + ',' + bounds["ne"]["lng"] + ')';
+
+   var rectangle_statement = 'create-rectangle(' + lower_left + ', ' + upper_right + ')';
+   this.parameters["statements"].push(rectangle_statement);
+    
+   return this;
+}
+
 AsterixCoreAPI.prototype.api_helper_polygon_to_statement = function(bounds) {
     var polygon = [];
     polygon.push([bounds["ne"]["lat"] + "," + bounds["sw"]["lng"]]);
diff --git a/asterix-examples/src/main/resources/old/js/bootstrap-dropdown.js b/asterix-examples/src/main/resources/cherry/js/bootstrap-dropdown.js
similarity index 100%
rename from asterix-examples/src/main/resources/old/js/bootstrap-dropdown.js
rename to asterix-examples/src/main/resources/cherry/js/bootstrap-dropdown.js
diff --git a/asterix-examples/src/main/resources/old/js/bootstrap.js b/asterix-examples/src/main/resources/cherry/js/bootstrap.js
similarity index 100%
rename from asterix-examples/src/main/resources/old/js/bootstrap.js
rename to asterix-examples/src/main/resources/cherry/js/bootstrap.js
diff --git a/asterix-examples/src/main/resources/old/js/bootstrap.min.js b/asterix-examples/src/main/resources/cherry/js/bootstrap.min.js
similarity index 100%
rename from asterix-examples/src/main/resources/old/js/bootstrap.min.js
rename to asterix-examples/src/main/resources/cherry/js/bootstrap.min.js
diff --git a/asterix-examples/src/main/resources/old/js/cherry.js b/asterix-examples/src/main/resources/cherry/js/cherry.js
similarity index 93%
rename from asterix-examples/src/main/resources/old/js/cherry.js
rename to asterix-examples/src/main/resources/cherry/js/cherry.js
index defc807..97625c5 100755
--- a/asterix-examples/src/main/resources/old/js/cherry.js
+++ b/asterix-examples/src/main/resources/cherry/js/cherry.js
@@ -92,9 +92,9 @@
     // setup map
     onOpenExploreMap();
     var mapOptions = {
-        center: new google.maps.LatLng(38.89, -77.03),
+        center: new google.maps.LatLng(38.89, 77.03),
         zoom: 4,
-        mapTypeId: google.maps.MapTypeId.ROADMAP,
+        mapTypeId: google.maps.MapTypeId.ROADMAP, // SATELLITE
         streetViewControl: false,
         draggable : false
     };
@@ -136,7 +136,7 @@
         }
     });
     
-    triggerUIUpdateOnNewTweetBook({"title" : "Party"});
+    //triggerUIUpdateOnNewTweetBook({"title" : "Party"});
 
     google.maps.event.addListener(map, 'mousemove', drawRect);
     function drawRect (event) {
@@ -231,22 +231,23 @@
 		// then be passed into another API call or stored 
 		// for a different application purpose. 
 		var buildCherryQuery = new AsterixCoreAPI()
-		    .aql_for({ "t" : "TwitterData"})
+		    .aql_for({ "t" : "TweetMessages"})
 		    .aql_let({
 		        "keyword"   : '"' + formData["keyword"] + '"',
 		        "region"    : new AsterixCoreAPI()
-		                        .api_helper_polygon_to_statement({
+		                        .rectangle({
 		                            "ne" : { "lat" : formData["neLat"], "lng" : formData["neLng"]}, 
-		                            "sw" : { "lat" : formData["swLat"], "lng" : formData["swLng"]}  })    
+		                            "sw" : { "lat" : formData["swLat"], "lng" : formData["swLng"]}
+                                }).parameters["statements"]    
 		                        })
 		    .aql_where([
-		        'spatial-intersect($t.loc, $region)',
-		        '$t.time > datetime("' + formData["startdt"] + '")',
-		        '$t.time < datetime("' + formData["enddt"] + '")',
-		        'contains($t.text, $keyword)'
+		        'spatial-intersect($t.sender-location, $region)',
+		        '$t.send-time > datetime("' + formData["startdt"] + '")',
+		        '$t.send-time < datetime("' + formData["enddt"] + '")',
+		        'contains($t.message-text, $keyword)'
 		    ])
 		    .aql_groupby({
-		        "groupby" : "$c := spatial-cell($t.loc, create-point(24.5,-125.5), " + formData["gridlat"].toFixed(1) + ", " + formData["gridlng"].toFixed(1) + ")", 
+		        "groupby" : "$c := spatial-cell($t.sender-location, create-point(24.5,-125.5), " + formData["gridlat"].toFixed(1) + ", " + formData["gridlng"].toFixed(1) + ")", 
 		        "with" : "$t"
 		    })
 		    .aql_return({ "cell" : "$c", "count" : "count($t)" });
@@ -393,38 +394,43 @@
 /** Core Query Management and Drilldown
 
 /**
+* Utility Method for parsing a record of this form:
+* { "cell": rectangle("22.5,64.5 24.5,66.5"), "count": 5 }
+* returns a json object with keys: weight, latSW, lngSW, latNE, lngNE
+*/
+function getRecord(cell_count_record) {
+    var record_representation = {};
+    
+    var rectangle = cell_count_record.split('")')[0].split('("')[1];
+    record_representation["latSW"] = parseFloat(rectangle.split(" ")[0].split(',')[0]);
+    record_representation["lngSW"] = parseFloat(rectangle.split(" ")[0].split(',')[1]);
+    record_representation["latNE"] = parseFloat(rectangle.split(" ")[1].split(',')[0]);
+    record_representation["lngNE"] = parseFloat(rectangle.split(" ")[1].split(',')[1]);
+    record_representation["weight"] = parseInt(cell_count_record.split('count": ')[1].split(" ")[0]);
+    
+    return record_representation;
+}
+
+/**
 * A spatial data cleaning and mapping call
 * @param    {Object}    res, a result object from a cherry geospatial query
 * @param    {Object}    extra, extra data passed from the API call - legacy stuff
 */
 function cherryQuerySyncCallback(res, extra) {
-    
-    var response = $.parseJSON(res[0])
+    var response = $.parseJSON(res[0]);
     records = response["results"];
-                
+
     var coordinates = [];
-    var coordinate = [];
     var weights = [];
                 
-    for (var subr = 0; subr < records.length; subr++) {
-        for (var record in records[subr]) {
-                    
-            var cell = records[subr][record].split(")")[0].split("(")[1];
-            var count = records[subr][record].split("count")[1].split(":")[1].split(' ')[1];
-            coordinate = {
-                "weight" : parseInt(count),
-                        
-                 // x is actually up-down, y is left-right
-                 "latSW" : parseFloat(cell.split("|")[0].split(",")[0].split('"')[1]),
-                 "lngSW" : -1*parseFloat(cell.split("|")[0].split(",")[1]),
-                 "latNE" : parseFloat(cell.split("|")[1].split(",")[0]),
-                 "lngNE" : -1*parseFloat(cell.split("|")[1].split(",")[1].split('"')[0]), 
-            };
-            weights.push(parseInt(count));
+    for (var subrecord in records) {
+        for (var record in records[subrecord]) {
+            
+            var coordinate = getRecord(records[subrecord][record]);
+            weights.push(coordinate["weight"]);
             coordinates.push(coordinate);
         }
     }
-    
     triggerUIUpdate(coordinates, extra["payload"], weights);
 }
 
@@ -451,7 +457,7 @@
             var mapColor = mapWidgetLegendGetHeatValue(mapPlotData[m].weight, dataBreakpoints);
             var markerRadius = mapWidgetComputeCircleRadius(mapPlotData[m], dataBreakpoints);
             var point_opacity = 1.0; // TODO
-            
+           
             var point_center = new google.maps.LatLng(
                 (mapPlotData[m].latSW + mapPlotData[m].latNE)/2.0, 
                 (mapPlotData[m].lngSW + mapPlotData[m].lngNE)/2.0);
@@ -509,17 +515,17 @@
     map.fitBounds(customBounds);
     
     var drilldown_string = ["use dataverse " + "twitter" + ";",
-        "for $t in dataset('" + "TwitterData" + "')",
+        "for $t in dataset('" + "TweetMessages" + "')",
         "let $keyword := \"" +zoneData["keyword"] + "\"",
         "let $region := polygon(\"", 
            zoneData["neLat"] + "," + zoneData["swLng"] + " ",
            zoneData["swLat"] + "," + zoneData["swLng"] + " ",
            zoneData["swLat"] + "," + zoneData["neLng"] + " ",
            zoneData["neLat"] + "," + zoneData["neLng"] + "\")",
-           "where spatial-intersect($t.loc, $region) and",
-           "$t.time > datetime(\"" + zoneData["startdt"] + "\") and $t.time < datetime(\"" + zoneData["enddt"] + "\") and",
-           "contains($t.text, $keyword)",
-           "return { \"tweetId\": $t.tweetid, \"tweetText\": $t.text, \"tweetLoc\": $t.loc}"];
+           "where spatial-intersect($t.sender-location, $region) and",
+           "$t.send-time > datetime(\"" + zoneData["startdt"] + "\") and $t.send-time < datetime(\"" + zoneData["enddt"] + "\") and",
+           "contains($t.message-text, $keyword)",
+           "return { \"tweetId\": $t.tweetid, \"tweetText\": $t.message-text, \"tweetLoc\": $t.sender-location}"];
     
     var zQ = new AsterixCoreAPI()
         .dataverse("twitter")
diff --git a/asterix-examples/src/main/resources/old/js/geostats.js b/asterix-examples/src/main/resources/cherry/js/geostats.js
similarity index 100%
rename from asterix-examples/src/main/resources/old/js/geostats.js
rename to asterix-examples/src/main/resources/cherry/js/geostats.js
diff --git a/asterix-examples/src/main/resources/old/js/jquery.dataTables.min.js b/asterix-examples/src/main/resources/cherry/js/jquery.dataTables.min.js
similarity index 100%
rename from asterix-examples/src/main/resources/old/js/jquery.dataTables.min.js
rename to asterix-examples/src/main/resources/cherry/js/jquery.dataTables.min.js
