Index: src/engine/Main.cpp
===================================================================
--- a/src/engine/Main.cpp
+++ b/src/engine/Main.cpp
@@ -114,13 +114,43 @@
         std::string url;
         request >> url;
 
+        AdblockPlus::JsValuePtr valuePtr = filterEngine->GetPref("subscriptions_exceptionsurl");
+        std::string aaUrl = "";
+        if (valuePtr->IsString())
+        {
+          aaUrl = valuePtr->AsString();
+        }
         std::vector<AdblockPlus::SubscriptionPtr> subscriptions = filterEngine->GetListedSubscriptions();
+
+        // Remove all subscriptions, besides the Acceptable Ads
         for (size_t i = 0, count = subscriptions.size(); i < count; i++)
-          subscriptions[i]->RemoveFromList();
+        {
+          if (subscriptions[i].get()->GetProperty("url")->AsString() != aaUrl)
+          {
+            subscriptions[i]->RemoveFromList();
+          }
+        }
+
+        // Add new subscription
+        filterEngine->GetSubscription(url)->AddToList();
+        break;
+      }
+      case Communication::PROC_ADD_SUBSCRIPTION:
+      {
+        std::string url;
+        request >> url;
 
         filterEngine->GetSubscription(url)->AddToList();
         break;
       }
+      case Communication::PROC_REMOVE_SUBSCRIPTION:
+      {
+        std::string url;
+        request >> url;
+
+        filterEngine->GetSubscription(url)->RemoveFromList();
+        break;
+      }
       case Communication::PROC_UPDATE_ALL_SUBSCRIPTIONS:
       {
         std::vector<AdblockPlus::SubscriptionPtr> subscriptions = filterEngine->GetListedSubscriptions();
