 
   _onTouchStart: (e, cube) ->
     e.preventDefault()
-    @_touchStarted = true
+    cube.touchStarted = true
     e.currentTarget.classList.add 'no-tween'
     if e.type is 'mousedown'
       cube.y1 = e.pageY



  _onTouchEnd: (e, cube) ->
    @_touchStarted = false
    mod = cube.yDelta % 90
    if mod < 45
      cube.yLast = cube.yDelta + mod

      cube.el.appendChild cube[side]

    eventPairs = [['TouchStart', 'MouseDown'], ['TouchMove', 'MouseMove'],
      ['TouchEnd', 'MouseUp'], ['TouchLeave', 'MouseLeave']]
    mouseLeaveSupport = 'onmouseleave' of window

    for eventPair in eventPairs
      for eString in eventPair then do (fn = '_on' + eventPair[0], cube) =>
        unless (eString is 'TouchLeave' or eString is 'MouseLeave') and !mouseLeaveSupport
          cube.el.addEventListener eString.toLowerCase(), ((e) => @[fn] e, cube), true
        else
          cube.el.addEventListener 'mouseout', ((e) => @_onMouseOut e, cube), true

    @_setSides cube
    cube
