diff --git a/asterix-examples/src/main/resources/black-cherry/cherry.tpl b/asterix-examples/src/main/resources/black-cherry/cherry.tpl
index 3826923..45193af 100755
--- a/asterix-examples/src/main/resources/black-cherry/cherry.tpl
+++ b/asterix-examples/src/main/resources/black-cherry/cherry.tpl
@@ -53,7 +53,7 @@
         }
         
         #review-handles-dropdown {
-            padding: 10px;
+            padding: 0.5em;
         }
 
     </style>
@@ -166,11 +166,10 @@
                     <span class="caret"></span>
                 </a>
                 <ul class="dropdown-menu" id="review-handles-dropdown">
+                    <div id="async-handle-controls">
+                    </div>
                 </ul>
             </div>
-            
-            <div id="query-preview-window" style="overflow: auto; width: 100%; background: white; border: 2px solid black;">
-            </div>
         </div>
         
         <!-- Map -->
diff --git a/asterix-examples/src/main/resources/black-cherry/static/js/cherry.js b/asterix-examples/src/main/resources/black-cherry/static/js/cherry.js
index 788fd1f..27a4158 100755
--- a/asterix-examples/src/main/resources/black-cherry/static/js/cherry.js
+++ b/asterix-examples/src/main/resources/black-cherry/static/js/cherry.js
@@ -255,15 +255,11 @@
 
 function buildAQLQueryFromForm(parameters) {
 
-    // GEOFIX: Longitude needs to be in negative coordinates for the adjusted dataset.
     var bounds = {
         "ne" : { "lat" : parameters["neLat"], "lng" : -1*parameters["neLng"]}, 
 		"sw" : { "lat" : parameters["swLat"], "lng" : -1*parameters["swLng"]}
     };
     
-    alert("NE: " + bounds["ne"]["lat"] + ", " + bounds["ne"]["lng"] + 
-        "\nSW: " + bounds["sw"]["lat"] + ", " + bounds["sw"]["lng"]);
-    
     var rectangle = 
         new FunctionExpression("create-rectangle",
             new FunctionExpression("create-point", bounds["sw"]["lat"], bounds["sw"]["lng"]),
@@ -325,8 +321,6 @@
 */
 function asynchronousQueryGetAPIQueryStatus (handle, handle_id) {
 
-    // FIXME query status call should disable other functions while it 
-    // loads...for simplicity, really...
     A.query_status( 
         {
             "handle" : JSON.stringify(handle)
@@ -338,7 +332,7 @@
                 asyncQueryManager[handle_id]["ready"] = true;
             
                 // Indicate success. 
-                $('#handle_' + handle_id).addClass("label-success");
+                $('#handle_' + handle_id).removeClass("btn-disabled").prop('disabled', false).addClass("btn-success");
             }
         }    
      );
@@ -360,28 +354,29 @@
     asyncQueryManager[handle_id] = {
         "handle" : handle,
         "query" : handle_query,
-        "data" : param_placeholder["payload"],
+        "data" : param_placeholder["payload"]
     };
     
-    $('#review-handles-dropdown').append('<a href="#" class="holdmenu"><span class="label" id="handle_' + handle_id + '">Handle ' + handle_id + '</span></a><br/>');
+    // Create a container for this async query handle    
+    $('<div/>')
+        .css("margin-left", "1em")
+        .css("margin-bottom", "1em")
+        .css("display", "block")
+        .attr({
+            "class" : "btn-group",
+            "id" : "async_container_" + handle_id
+        })
+        .appendTo("#async-handle-controls");
     
-    $('#handle_' + handle_id).hover(
-        function(){ 
-            $('#query-preview-window').html('');
-            $('#query-preview-window').html('<br/><br/>' + asyncQueryManager[handle_id]["query"]);
-        },
-        function() {
-            $('#query-preview-window').html('');
-        }
-    ); 
-    
+    // Adds the main button for this async handle
+    var handle_action_button = '<button class="btn btn-disabled" id="handle_' + handle_id + '">Handle ' + handle_id + '</button>';
+    $('#async_container_' + handle_id).append(handle_action_button);
+    $('#handle_' + handle_id).prop('disabled', true);
     $('#handle_' + handle_id).on('click', function (e) {
-        
+
         // make sure query is ready to be run
         if (asyncQueryManager[handle_id]["ready"]) {
         
-            // Update API Query Tracker and view to reflect this query
-            $('#query-preview-window').html('<br/><br/>' + asyncQueryManager[handle_id]["query"]);
             APIqueryTracker = {
                 "query" : asyncQueryManager[handle_id]["query"],
                 "data"  : asyncQueryManager[handle_id]["data"]
@@ -395,11 +390,17 @@
             );
         }
     });
+    
+    // Adds a removal button for this async handle
+    var handle_trash_button = '<button class="btn" id="trashhandle_' + handle_id + '"><i class="icon-trash"></i></button>';
+    $('#async_container_' + handle_id).append(handle_trash_button);
+    $('#trashhandle_' + handle_id).on('click', function(e) {
+        $('#async_container_' + handle_id).remove();
+        delete asyncQueryManager[handle_id];
+    });
 }
 
 
-/** Core Query Management and Drilldown
-
 /**
 * returns a json object with keys: weight, latSW, lngSW, latNE, lngNE
 *
@@ -736,11 +737,6 @@
     $('#rm_trashbook_' + tweetbook).on('click', function(e) {
         onDropTweetBook(tweetbook)
     });
-    
-    //FIXME Why is this commented out?
-   /*.success(onTweetbookQuerySuccessPlot, true)
-                .add_extra("on_click_marker", onClickTweetbookMapMarker)
-                .add_extra("on_clean_result", onCleanPlotTweetbook)*/
 }
 
 
