     # switch exlibris URLs for titles, which the scraper knows how to extract, because the exlibris url would always be the same
     delete options.url
     res.exlibris = true
-    _.extend metadata, API.service.oab.scrape undefined, content
+    _get metadata, API.service.oab.scrape undefined, content
 
   API.log msg: 'OAB finding academic content', level: 'debug', metadata: JSON.stringify metadata
   try metadata[w] ?= options[w] for w in options.metadata # get whatever other metadata we may have been given to begin with, just in case
-
+  
   # check for an entry in our catalogue already
   used = _.keys metadata
   catalogued = undefined
   _findoab = () ->
-    finder = _finder metadata
-    if finder isnt ''
-      catalogued = oab_catalogue.find finder, true
-      # if user wants a total refresh, don't use any of it (we still search for it though, because will overwrite later with the fresh stuff)
-      if catalogued? and res.refresh isnt 0
-        res.permissions ?= catalogued.permissions
-        if 'oabutton' in res.sources
-          res.checked.push('oabutton') if 'oabutton' not in res.checked
-          if catalogued.url? # within or without refresh time, if we have already found it, re-use it
-            _.extend metadata, catalogued.metadata
-            res.cached = true
-            res.url = catalogued.url
-            res.found.oabutton = res.url
-          else if catalogued.createdAt > Date.now() - res.refresh*86400000
-            _.extend metadata, catalogued.metadata # it is in the catalogue but we don't have a link for it, and it is within refresh days old, so re-use the metadata from it
-            res.cached = true # and cause an immediate return, we don't bother looking for everything again within a given refresh window
+    catalogued = oab_catalogue.finder metadata
+    # if user wants a total refresh, don't use any of it (we still search for it though, because will overwrite later with the fresh stuff)
+    if catalogued? and res.refresh isnt 0
+      res.permissions ?= catalogued.permissions if catalogued.metadata?.journal? or catalogued.metadata?.issn?
+      if 'oabutton' in res.sources
+        res.checked.push('oabutton') if 'oabutton' not in res.checked
+        if catalogued.url? # within or without refresh time, if we have already found it, re-use it
+          _get metadata, catalogued.metadata
+          res.cached = true
+          res.url = catalogued.url
+          res.found.oabutton = res.url
+        else if catalogued.createdAt > Date.now() - res.refresh*86400000
+          _get metadata, catalogued.metadata # it is in the catalogue but we don't have a link for it, and it is within refresh days old, so re-use the metadata from it
+          res.cached = true # and cause an immediate return, we don't bother looking for everything again within a given refresh window
   _findoab()
   
   # TODO update requests so successful ones write the source to the catalogue - but updating requests is not priority yet, so not doing right now

    # if we have a url or content but no doi or title yet, try scraping the url/content
    if (not _got() or (res.find and not res.url)) and not metadata.doi and not metadata.title and ((options.url and 'scrape' in res.sources) or content)
      res.checked.push 'scrape' if not content? # scrape the page if we have to - this is slow, so we hope not to do this much
      _.extend metadata, API.service.oab.scrape options.url, content
       # try crossref if did not already try and scrape found title but not a doi
      _get_reversed_crossref() if 'reverse' in res.sources and 'reverse' not in res.checked and not _got() and not metadata.doi? and metadata.title? and metadata.title.length > 8 and metadata.title.split(' ').length > 2 and not options.reversed?
  


  # update or create a catalogue record
  if JSON.stringify(metadata) isnt '{}' and res.test isnt true
    if catalogued?
      upd = {}
      upd.url = res.url if res.url? and res.url isnt catalogued.url
      upd.metadata = metadata if not _.isEqual metadata, catalogued.metadata
      upd.sources = _.union(res.sources, catalogued.sources) if JSON.stringify(res.sources.sort()) isnt JSON.stringify catalogued.sources.sort()
      uc = _.union res.checked, catalogued.checked
      upd.checked = uc if JSON.stringify(uc.sort()) isnt JSON.stringify catalogued.checked.sort()
      uf = _.extend(res.found, catalogued.found)
      upd.found = uf if not _.isEqual uf, catalogued.found
      upd.permissions = res.permissions if not _.isEqual res.permissions, catalogued.permissions
      upd.usermetadata = res.usermetadata if res.usermetadata?
      if typeof metadata.title is 'string'
        ftm = _ftitle(metadata.title)
        upd.ftitle = ftm if ftm isnt catalogued.ftitle
      oab_catalogue.update(catalogued._id, upd) if not _.isEmpty upd
      res.catalogue = catalogued._id
    else
      fl = 
        url: res.url
        metadata: metadata
        sources: res.sources
        checked: res.checked
        found: res.found
        permissions: res.permissions
      fl.ftitle = _ftitle(metadata.title) if typeof metadata.title is 'string'
      fl.usermetadata = res.usermetadata if res.usermetadata?
      res.catalogue = oab_catalogue.insert fl

  # get ill info for instantill widget
  if res.from? and res.plugin is 'instantill'
