diff --git a/lib/util/purl.js b/lib/util/purl.js
index f3f3805f9069fbf190da5b4a2b21d73f5f7fd674..08b4d57d0e7971cceadd05cffb31684d139c65a7 100644
--- a/lib/util/purl.js
+++ b/lib/util/purl.js
@@ -25,14 +25,14 @@ function parse(input) {
     [remaining, purl.version] = parts;
   }
   parts = remaining.split('/');
-  [purl.datasource, ...remaining] = parts;
+  [purl.type, ...remaining] = parts;
   if (remaining.length === 1) {
     [purl.name] = remaining;
-    purl.lookupName = purl.name;
+    purl.fullname = purl.name;
   } else {
     purl.name = remaining.pop();
     purl.namespace = remaining.join('/').replace('%40', '@');
-    purl.lookupName = purl.namespace + '/' + purl.name;
+    purl.fullname = purl.namespace + '/' + purl.name;
   }
   if (purl.qualifiers) {
     const allQualifiers = purl.qualifiers.split('&');
@@ -41,19 +41,18 @@ function parse(input) {
       const [key, val] = qualifier.split('=');
       purl.qualifiers[key] = val;
     });
-    if (purl.qualifiers.repository_url) {
-      purl.registryUrls = purl.qualifiers.repository_url.split(',');
-      delete purl.qualifiers.repository_url;
-    }
   } else {
     purl.qualifiers = {};
   }
+  const res = {
+    datasource: purl.type,
+    lookupName: purl.fullname,
+  };
+  if (purl.qualifiers.repository_url) {
+    res.registryUrls = purl.qualifiers.repository_url.split(',');
+  }
   if (purl.subpath) {
-    purl.lookupType = purl.subpath;
-    delete purl.subpath;
+    res.lookupType = purl.subpath;
   }
-  delete purl.namespace;
-  delete purl.name;
-  delete purl.version; // we don't use it
-  return purl;
+  return res;
 }
diff --git a/test/util/__snapshots__/purl.spec.js.snap b/test/util/__snapshots__/purl.spec.js.snap
index fed348fa3a64c7f9c0bb8d521f7f71812dd5c03b..4bfeba0066209d5daf14b22d30eb51757a17febb 100644
--- a/test/util/__snapshots__/purl.spec.js.snap
+++ b/test/util/__snapshots__/purl.spec.js.snap
@@ -5,7 +5,6 @@ Object {
   "datasource": "github",
   "lookupName": "abc/def",
   "lookupType": "releases",
-  "qualifiers": Object {},
 }
 `;
 
@@ -13,7 +12,6 @@ exports[`util/purl parse() parses namespaced npm 1`] = `
 Object {
   "datasource": "npm",
   "lookupName": "@foo/bar",
-  "qualifiers": Object {},
 }
 `;
 
@@ -21,7 +19,6 @@ exports[`util/purl parse() parses namespaced npm with version 1`] = `
 Object {
   "datasource": "npm",
   "lookupName": "@foo/bar",
-  "qualifiers": Object {},
 }
 `;
 
@@ -29,9 +26,6 @@ exports[`util/purl parse() parses npm with version and 1 qualifier 1`] = `
 Object {
   "datasource": "npm",
   "lookupName": "foo",
-  "qualifiers": Object {
-    "a": "b",
-  },
 }
 `;
 
@@ -39,10 +33,6 @@ exports[`util/purl parse() parses npm with version and 2 qualifiers 1`] = `
 Object {
   "datasource": "npm",
   "lookupName": "foo",
-  "qualifiers": Object {
-    "a": "b",
-    "c": "d",
-  },
 }
 `;
 
@@ -50,7 +40,6 @@ exports[`util/purl parse() parses repository_url qualifier 1`] = `
 Object {
   "datasource": "maven",
   "lookupName": "org.apache.xmlgraphics/batik-anim",
-  "qualifiers": Object {},
   "registryUrls": Array [
     "repo.spring.io/release",
   ],
@@ -61,6 +50,5 @@ exports[`util/purl parse() parses simple npm 1`] = `
 Object {
   "datasource": "npm",
   "lookupName": "foo",
-  "qualifiers": Object {},
 }
 `;