diff --git a/gui/page/spkpageappdetails.cpp b/gui/page/spkpageappdetails.cpp
index 55f7bbc..a613436 100644
--- a/gui/page/spkpageappdetails.cpp
+++ b/gui/page/spkpageappdetails.cpp
@@ -148,6 +148,7 @@ namespace SpkUi
   void SpkPageAppDetails::ResourceAcquisitionFinished(int id, ResourceResult result)
   {
     QPixmap icon;
+//    qDebug() << "PageAppDetails: Resource" << id << "acquired";
     if(!id)
     {
       // id == 0, icon
diff --git a/gui/page/spkpageapplist.cpp b/gui/page/spkpageapplist.cpp
index 7b22297..17045d5 100644
--- a/gui/page/spkpageapplist.cpp
+++ b/gui/page/spkpageapplist.cpp
@@ -97,6 +97,7 @@ namespace SpkUi
   void SpkPageAppList::ResourceAcquisitionFinished(int id, ResourceResult result)
   {
     QPixmap icon;
+//    qDebug() << "PageAppList: Resource" << id << "acquired";
     auto item = mAppItemList[id];
     if(result.status == SpkResource::ResourceStatus::Ready)
     {
diff --git a/src/spkresource.cpp b/src/spkresource.cpp
index 22ecccc..43f62bc 100644
--- a/src/spkresource.cpp
+++ b/src/spkresource.cpp
@@ -74,7 +74,7 @@ void SpkResource::ResourceDownloaded()
     if(!QDir().mkpath(path))
     {
       sWarn(tr("Cache directory \"%1\" cannot be created.").arg(path));
-      return;
+      goto ContinueNext;
     }
   }
   if(writeCache.open(QFile::WriteOnly))
@@ -85,32 +85,41 @@ void SpkResource::ResourceDownloaded()
   else
     sWarn("Save cache to \"" + cacheFile + "\" failed! Msg: " + writeCache.errorString());
 
+  qInfo() << "Resource " << reply->property("dest_file").toString() << " downloaded";
+
   // Tell ResourceContext
-  AcquisitionFinish(id, ret);
+  if(!reply->property("outdated").toBool())
+    AcquisitionFinish(id, ret);
+
+ContinueNext:
   // Start next possible mission
   TryBeginAwaitingTasks();
 }
 
 void SpkResource::Acquire(SpkPageBase *dest, bool stopOngoing, bool clearQueue)
 {
+  for(auto &i : mWorkingRequests.keys())
+  {
+    // Don't let an outdated task falsely report a finish signal.
+    // This is the designed way of stopping it from emitting a finish signal
+    i->setProperty("outdated", true);
+    // And abort as requested.
+    if(stopOngoing)
+      i->abort();
+    delete i;
+  }
+
   if(stopOngoing)
   {
-    for(auto &i : mWorkingRequests.keys())
-    {
-      // Don't let forced abort falsely report a finish signal. Disconnect them first.
-      i->disconnect(i, &QNetworkReply::finished, this, &SpkResource::ResourceDownloaded);
-      i->abort();
-      delete i;
-    }
     mWorkingRequests.clear();
-
     mRequestSemaphore->release(mMaximumConcurrent); // Release all semaphore users
   }
 
   if(clearQueue)
     mAwaitingRequests.clear();
 
-  disconnect(this, SLOT(AcquisitionFinish(int, ResourceResult)));
+  auto discResult = disconnect(this, SIGNAL(AcquisitionFinish(int, ResourceResult)), nullptr, nullptr);
+//  qDebug() << "SpkResource: Acquisition disconnection" << (discResult ? "success" : "failure");
 
   connect(this, &SpkResource::AcquisitionFinish,
           dest, &SpkPageBase::ResourceAcquisitionFinished,