           and lastTarget.height is newTarget.height \
           and lastTarget.left is newTarget.left \
           and lastTarget.top is newTarget.top \
-          and lastTarget.opacity is newOpacity
+          and lastTarget.opacity is newTarget.opacity
 
         item.object.data "lastTarget", newTarget
 
-        item.object.removeClass('rondellItemNew rondellItemFocused').stop(true)
+        item.object.removeClass("rondellItemNew rondellItemFocused").stop(true)
         .css
           zIndex: newZ
           display: "block"
         .animate newTarget, fadeTime, @funcEase, =>
-          if item.object.css('opacity') < @opacityMin then item.object.hide() else item.object.show()
+          if newTarget.opacity < @opacityMin
+            item.hidden = true
+            item.object.css "display", "none"
+          else
+            item.hidden = false
+            item.object.css "display", "block"
         
         item.hidden = false
         unless item.small
           item.small = true
           if item.icon and not item.resizeable
             margin = (@itemProperties.size.height - item.icon.height()) / 2
-            item.icon.stop(true).animate(
+            item.icon.stop(true).animate
                 marginTop: margin
                 marginBottom: margin
               , fadeTime
-            )
       else if item.hidden
         # Update position even if out of view to fix animation when reappearing
-        item.object.css(
-          left: newX
-          top: newY
-          'z-index': newZ
-        )
+        item.object.css newTarget
       else
         # Hide items which are moved out of view
         item.hidden = true
+
         item.object.stop(true)
         .css('z-index', newZ)
-        .animate(
-            opacity: 0
-          , fadeTime / 2, @funcEase, =>
-          @hideCaption(layerNum)
-        )
+        .animate newTarget, fadeTime / 2, @funcEase, =>
+          @hideCaption layerNum
 
     shiftTo: (layerNum) =>
       if @repeating 

        next: 'next'
      mousewheel:
        enabled: true
        threshold: 5
        minTimeBetweenShifts: 300
      touch:
        enabled: true
        preventDefaults: true   # Will call event.preventDefault() on touch events

    _autoShift: =>
      # Kill timer id and shift if rondell is active
      @autoRotation._timer = -1
      if @isActive() and @isFocused() and not @autoRotation.paused
        console.log "Autoshifting"
        if @autoRotation.direction then @shiftRight() else @shiftLeft()
      else
        # Try to autoshift again after a while
        @_autoShiftInit()
        
    isActive: ->
      true
