    * Catbus init!
   ###
   init = ->
-    transitionEnd = 'webkitTransitionEnd otransitionend msTransitionEnd transitionend'
+    $(doc).ready ->
+      transitionEnd = 'webkitTransitionEnd otransitionend msTransitionEnd transitionend'
 
-    $clickables.on 'click', toggleCatbus
-    $catbusTail.on transitionEnd, toggleTail
+      $body       = $('body')
+      $catbus     = $('[js-catbus]')
+      $catbusTail = $('[js-catbus-tail]')
+      $clickables = $catbusTail.add('[js-catbus-button]')
 
-    if catbusPinned() then openCatbus() else closeCatbus()
-    return
+      catbusOpen = $body.hasClass 'catbus-open'
 
-  do init
+      $clickables.on 'click', toggleCatbus
+      $catbusTail.on transitionEnd, toggleTail
+
+      if catbusPinned() then openCatbus() else closeCatbus()
+
+  # Unless we have reason not to, initialize the catbus as soon as we
+  # get required.
+  init() unless doc.haltCatbus
 
   return {
-    openCatbus, closeCatbus
+    init, openCatbus, closeCatbus
     catbusStatus: -> catbusOpen
   }


    newStatus = false

    if typeof(force) isnt "boolean"
      force = null
      newStatus = !catbusOpen

    if force is false or force
      newStatus = force

    $body.toggleClass 'catbus-open', newStatus
    setLocalStorage newStatus


  ###*
   * You can't use CSS transitions through display states :(
  ###
  toggleTail = ->
    $catbusTail.toggleClass 'hide', !catbusOpen
