     options.url = options.q
     delete options.q
   if options.id
-    options.url ?= options.id
+    options.url = options.id
     delete options.id
-  if options.url # which would now also include anything passed in as "id" or "q"
+  if options.url
     if options.url.indexOf('/10.') isnt -1
       # we don't use a regex to try to pattern match a DOI because people often make mistakes typing them, so instead try to find one
       # in ways that may still match even with different expressions (as long as the DOI portion itself is still correct after extraction we can match it)

  finder = ''
  for tid in ['doi','pmid','pmcid','url','title']
    if typeof metadata[tid] is 'string' or typeof metadata[tid] is 'number' or _.isArray metadata[tid]
      mt = metadata[tid][0] if _.isArray metadata[tid]
      finder += ' OR ' if finder isnt ''
      if tid is 'title'
        finder += 'ftitle:' + _ftitle(metadata.title) + '~ OR '
      finder += 'metadata.' + tid + (if tid is 'url' or tid is 'title' then '' else '.exact') + ':"' + mt + '"'
  return finder

oab_catalogue.finder = (metadata) ->

  options.url = options.url[0] if _.isArray options.url
  res.checked = []

  metadata.doi ?= options.doi.replace('doi:','').replace('doi.org/','').trim() if typeof options.doi is 'string'
  metadata.title ?= options.title.trim() if typeof options.title is 'string'
  metadata.pmid ?= options.pmid if options.pmid
  metadata.pmcid ?= options.pmcid if options.pmcid
