   sourceBody = options.body || body
 
   if options.change
-    nodesToBeChanged = [].concat(getNodesMatchingChangeKeys(options.change, document.body),getTemporaryNodes(document.body))
+    nodesToBeChanged = findNodes(document.body, '[data-turbolinks-temporary]')
+    nodesToBeChanged.push(findNodesMatchingKeys(document.body, options.change)...)
     changedNodes = changeNodes(nodesToBeChanged, sourceBody)
     setAutofocusElement() if anyAutofocusElement(changedNodes)
     changedNodes
   else
     unless options.flush
-      changeNodes(getTemporaryNodes(document.body), sourceBody)
+      nodesToBeChanged = findNodes(document.body, '[data-turbolinks-temporary]')
+      changeNodes(nodesToBeChanged, sourceBody)
       persistPermanentNodes(sourceBody, document.body)
       if options.keep
         refreshAllExceptWithKeys(options.keep, sourceBody, document.body)

  pageCacheKeys = Object.keys pageCache

  cacheTimesRecentFirst = pageCacheKeys.map (url) ->
    pageCache[url].cachedAt
  .sort (a, b) -> b - a

  for key in pageCacheKeys when pageCache[key].cachedAt <= cacheTimesRecentFirst[limit]

  keepNodes(body, allNodesToKeep)
  return

findNodes = (body, selector) ->
  node for node in body.querySelectorAll(selector)

findNodesMatchingKeys = (body, keys) ->
  matchingNodes = []
  for key in keys
    matchingNodes.push(findNodes(body, '[id^="'+key+'"]')...)

  return matchingNodes

changeNodes = (allNodesToBeChanged, body) ->
