   res.found = {}
 
   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
 
   # special cases for instantill/shareyourpaper/other demos - dev and live demo accounts that always return a fixed answer
   if (options.plugin is 'instantill' or options.plugin is 'shareyourpaper') and (metadata.doi is '10.1234/567890' or (metadata.doi? and metadata.doi.indexOf('10.1234/oab-syp-') is 0) or metadata.title is 'Engineering a Powerfully Simple Interlibrary Loan Experience with InstantILL') and options.from in ['qZooaHWRz9NLFNcgR','eZwJ83xp3oZDaec86'] 

    delete metadata.author if typeof metadata.author is 'string'
    delete metadata.author if _.isArray metadata.author and metadata.author.length > 0 and typeof metadata.author[0] is 'string'

  metadata.url = catalogued.metadata.url if catalogued?.metadata?.url?
  metadata.url = [metadata.url] if typeof metadata.url is 'string'
  if options.url?
    metadata.url ?= []
    metadata.url.push(options.url) if options.url not in metadata.url
  if res.url
    metadata.url ?= []
    metadata.url.push(res.url) if res.url not in metadata.url
  res.permissions ?= API.service.oab.permissions(metadata) if options.permissions and not _.isEmpty(metadata)
  res.test = true if JSON.stringify(metadata).toLowerCase().replace(/'/g,' ').replace(/"/g,' ').indexOf(' test ') isnt -1 #or (options.embedded? and options.embedded.indexOf('openaccessbutton.org') isnt -1)
  res.metadata = metadata

          _get metadata, catalogued.metadata
          res.cached = true if _got() # no need for further finding if we have the url and all necessary metadata
          res.url = catalogued.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 if _got() # and cause an immediate return, we don't bother looking for everything again if we already couldn't find it 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 not res.cached
