   ->
     id++
 
-extend = (out={}) ->
-  args = []
-  Array::push.apply(args, arguments)
-
-  for obj in args[1..] when obj
-    for own key, val of obj
-      out[key] = val
-
-  out
-
 createFromHTML = (html) ->
   el = document.createElement('div')
   el.innerHTML = html
   el.children[0]
 
-removeClass = (el, name) ->
-  el.className = el.className.replace new RegExp("(^| )#{ name.split(' ').join('|') }( |$)", 'gi'), ' '
-
-addClass = (el, name) ->
-  removeClass el, name
-  el.className += " #{ name }"
-
-addEventListener = (el, event, handler) ->
-  if el.addEventListener?
-    el.addEventListener event, handler, false
-  else
-    el.attachEvent "on#{ event }", handler
-
-removeEventListener = (el, event, handler) ->
-  if el.removeEventListener?
-    el.removeEventListener event, handler, false
-  else
-    el.detachEvent "on#{ event }", handler
-
 matchesSelector = (el, sel) ->
   matches = el.matches ? el.matchesSelector ? el.webkitMatchesSelector ? el.mozMatchesSelector ? el.oMatchesSelector
-  if matches?
-    return matches.call(el, sel)
-  else
-    # IE 8
-    list = document.querySelectorAll(sel)
-    for element in list when element is el
-      return true
-
-    return false
+  return matches.call(el, sel)
 
 parseShorthand = (obj, props) ->
   if not obj?

  cancel: =>
    @currentStep?.cancel()

  hide: =>
    @currentStep?.hide()

  show: (key=0) ->
    if @currentStep

  next: =>
    index = @steps.indexOf(@currentStep)

    if index is @steps.length - 1
      @trigger 'complete'
    else
      @show(index + 1)

  back: =>
    index = @steps.indexOf(@currentStep)
