 
   if metadata.url
     options.url ?= metadata.url
+    delete metadata.url
   if metadata.id
     options.id = metadata.id
     delete metadata.id
   options.url = options.url[0] if _.isArray options.url
-
-  for src of sources
-    try _get_formatted_crossref(sources[src]) if src is 'crossref'
-    try _get_formatted_europepmc(sources[src]) if src is 'europepmc'
 
   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'

    if (not _got() or (res.find and not res.url)) and 'epmc' in res.sources and (metadata.doi or metadata.pmid or metadata.pmcid or metadata.title or cr?)      
      res.checked.push('epmc') if 'epmc' not in res.checked
      metadata = API.use.europepmc.format cr, metadata
      if metadata.url or metadata.open
        res.url = metadata.url ? metadata.open
        res.found.epmc = res.url

  if typeof options is 'string'

    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
