 # Returns deferred object
 fetchFacts = (siteUrl) ->
   FactlinkJailRoot.perf.add_timing_event 'fetchFacts:start'
-
   $.ajax
-    # The URL to the FactlinkJailRoot backend
+  # The URL to the FactlinkJailRoot backend
     url: FactlinkConfig.api + "/site?url=" + encodeURIComponent(siteUrl)
     dataType: "jsonp"
     crossDomain: true
     type: "GET"
     jsonp: "callback"
-    success: highlightFacts
+    success: -> FactlinkJailRoot.perf.add_timing_event 'fetchFacts:done'
+
+facts_promise = null
+
+FactlinkJailRoot.initializers.push( -> facts_promise = fetchFacts FactlinkJailRoot.siteUrl())
 
 highlighting = false
 FactlinkJailRoot.startHighlighting = ->

      console.error "Could not highlight, empty factlink or complete overlap? Text: <#{text}>"

highlightFacts = (facts_data) ->
  FactlinkJailRoot.perf.add_timing_event 'fetchFacts:done'

  # If there are multiple matches on the page, loop through them all
  for fact_data in facts_data

  FactlinkJailRoot.initializeFactlinkButton()

  console.info "FactlinkJailRoot:", "startHighlighting"
  facts_promise.done(highlightFacts)

# Don't check for highlighting here, as this is a
# special hacky-patchy method for in the blog
FactlinkJailRoot.highlightAdditionalFactlinks = (siteUrl) ->
  console.info "FactlinkJailRoot:", "highlightAdditionalFactlinks"
  fetchFacts(siteUrl).done(highlightFacts)
