     cube.touchStarted = true
     e.currentTarget.classList.add 'no-tween'
     if e.type is 'mousedown'
-      cube.y1 = e.pageY
-    else
-      cube.y1 = e.touches[0].pageY
+      cube.start = e[@eProp]
+    else
+      cube.start = e.touches[0][@eProp]
 
 
   _onTouchMove: (e, cube) ->
     return unless cube.touchStarted
     e.preventDefault()
-    cube.diff = (e.pageY - cube.y1) * @touchSensitivity
-    cube.yDelta = cube.yLast - cube.diff
+    cube.diff = (e[@eProp] - cube.start) * @touchSensitivity
+    cube.delta = cube.last - cube.diff
     @_setSides cube
 
 
   _onTouchEnd: (e, cube) ->
     cube.touchStarted = false
-    mod = cube.yDelta % 90
+    mod = cube.delta % 90
     if mod < 45
-      cube.yLast = cube.yDelta + mod
-    else
-      if cube.yDelta > 0
-        cube.yLast = cube.yDelta + mod
+      cube.last = cube.delta + mod
+    else
+      if cube.delta > 0
+        cube.last = cube.delta + mod
       else
-        cube.yLast = cube.yDelta - (90 - mod)
-
-    if cube.yLast % 90 isnt 0
-      cube.yLast -= cube.yLast % 90
+        cube.last = cube.delta - (90 - mod)
+
+    if cube.last % 90 isnt 0
+      cube.last -= cube.last % 90
 
     cube.el.classList.remove 'no-tween'
-    cube.el.style[css.transform] = @_getTransform cube.yLast
+    cube.el.style[css.transform] = @_getTransform cube.last
 
 
   _onTouchLeave: (e, cube) ->

  fontSize: 132
  perspective: 1000
  touchSensitivity: 1

cssClass = baseName.toLowerCase()
faceNames = ['front', 'bottom', 'back', 'top', 'left', 'right']

      value = value.toString()
      cube = @cubes[key]
      index = @sets[key].indexOf value
      cube.delta = cube.last = 90 * index
      @_setSides cube
      @_setContent cube[faceSequence[index % 4]], value

