diff --git a/interface/src/Application.cpp b/interface/src/Application.cpp
index 7eb19557e5..c6669303a8 100644
--- a/interface/src/Application.cpp
+++ b/interface/src/Application.cpp
@@ -2893,14 +2893,7 @@ void Application::saveSettings() {
 bool Application::importEntities(const QString& urlOrFilename) {
     _entityClipboard->eraseAllOctreeElements();
 
-    QUrl url(urlOrFilename);
-
-    // if the URL appears to be invalid or relative, then it is probably a local file
-    if (!url.isValid() || url.isRelative()) {
-        url = QUrl::fromLocalFile(urlOrFilename);
-    }
-
-    bool success = _entityClipboard->readFromURL(url.toString());
+    bool success = _entityClipboard->readFromURL(urlOrFilename);
     if (success) {
         _entityClipboard->remapIDs();
         _entityClipboard->reaverageOctreeElements();
diff --git a/libraries/octree/src/Octree.cpp b/libraries/octree/src/Octree.cpp
index 4d89464460..ffbc2e6709 100644
--- a/libraries/octree/src/Octree.cpp
+++ b/libraries/octree/src/Octree.cpp
@@ -37,6 +37,7 @@
 #include <NetworkAccessManager.h>
 #include <OctalCode.h>
 #include <udt/PacketHeaders.h>
+#include <ResourceManager.h>
 #include <SharedUtil.h>
 #include <PathUtils.h>
 #include <Gzip.h>
@@ -1674,35 +1675,24 @@ bool Octree::readJSONFromGzippedFile(QString qFileName) {
 }
 
 bool Octree::readFromURL(const QString& urlString) {
-    bool readOk = false;
+    auto request = std::unique_ptr<ResourceRequest>(ResourceManager::createResourceRequest(this, urlString));
 
-    // determine if this is a local file or a network resource
-    QUrl url(urlString);
-
-    if (url.isLocalFile()) {
-        readOk = readFromFile(qPrintable(url.toLocalFile()));
-    } else {
-        QNetworkRequest request;
-        request.setHeader(QNetworkRequest::UserAgentHeader, HIGH_FIDELITY_USER_AGENT);
-        request.setUrl(url);
-
-        QNetworkAccessManager& networkAccessManager = NetworkAccessManager::getInstance();
-        QNetworkReply* reply = networkAccessManager.get(request);
-
-        qCDebug(octree) << "Downloading svo at" << qPrintable(urlString);
-
-        QEventLoop loop;
-        QObject::connect(reply, SIGNAL(finished()), &loop, SLOT(quit()));
-        loop.exec();
-
-        if (reply->error() == QNetworkReply::NoError) {
-            int resourceSize = reply->bytesAvailable();
-            QDataStream inputStream(reply);
-            readOk = readFromStream(resourceSize, inputStream);
-        }
-        delete reply;
+    if (!request) {
+        return false;
     }
-    return readOk;
+
+    QEventLoop loop;
+    connect(request.get(), &ResourceRequest::finished, &loop, &QEventLoop::quit);
+    request->send();
+    loop.exec();
+
+    if (request->getResult() != ResourceRequest::Success) {
+        return false;
+    }
+
+    auto data = request->getData();
+    QDataStream inputStream(data);
+    return readFromStream(data.size(), inputStream);
 }