anchor.diff:      _draggable = new Draggable(_swiperElement,
           handle: handle,
           cancel: cancel,
  -        draggingClass: draggingClass, 
  +        draggingClass: draggingClass,
           draggingClassBody: draggingClassBody,
           horizontalOnly: true); // Swiping is only done horizontally.
  -    
  +
       // Listen for drag events.
       _subs.add(_draggable.onDragStart.listen(_handleDragStart));
       _subs.add(_draggable.onDrag.listen(_handleDrag));
       _subs.add(_draggable.onDragEnd.listen(_handleDragEnd));
  -    
  +
       // Install transitionEnd listener.
       _subs.add(_containerElement.onTransitionEnd.listen((_) {
         // Remove css animation transition style.
         _removeCssTransition();
  -      
  +
         if (_fireNextPageTransitionEnd) {
           _firePageTransitionEndEvent();
         }
       }));
  -    
  +
       if (_autoWidth) {
  -      // Install browser resize listener. This is done asynchronously after the 
  +      // Install browser resize listener. This is done asynchronously after the
         // visibility has been applied, because setting visibility would somethimes
         // trigger a resize event.
         new Future(() {
  
positive.code:     _draggable.destroy();
      _draggable = null;
    }
    
    /**
     * Handles drag start.
     */
    void _handleDragStart(DraggableEvent dragEvent) {
      // Start the stopwatch.
      _dragStopwatch = new Stopwatch()..start();
      
      // Ensure there is no transition animation style during the drag operation.
      _removeCssTransition();
    }
    
    /**
     * Handles drag.
     */
    void _handleDrag(DraggableEvent dragEvent) {
      int deltaX = _calcDragDelta(dragEvent.startPosition.x, dragEvent.position.x);
      
      _log.finest('Drag: deltaX=$deltaX');
  
      // Increases resistance if necessary.
      deltaX = _addResistance(deltaX);
      
      // Translate to new x-position.
      _moveToOffset(deltaX);
    }
    
    /**
     * Handles drag end.
     */
    void _handleDragEnd(DraggableEvent dragEvent) {
      // Stop the stopwatch.
      _dragStopwatch.stop();
      
      int index = _currentIndex;
      int dragDelta = _calcDragDelta(dragEvent.startPosition.x, dragEvent.position.x);
          
      // Determine if the drag leads to a new index. If the event was cancelled
      // we go back to last index. Otherwise, we check if thresholds for new 
      // index were met.
      if (!dragEvent.cancelled) {
        _log.finest('DragEnd: dragDelta=$dragDelta');
        
        // Determine if we are past the thresholds.
        if (dragDelta.abs() > _distanceThreshold ||
            _dragStopwatch.elapsedMilliseconds < _durationThreshold) {
          
          // Direction of swipe. Dragging left means revealing page on the right!
          bool dragLeft = dragDelta < 0;
          
          if (dragLeft && hasNext()) {
            index++;
          } else if (!dragLeft && hasPrev()){
            index--;
          }
        }      
      }
      
      // Adjust the speed to the distance left for the move animation.
      int animDistance;
      if (index !=  _currentIndex) {
  
negative.code:       moveToIndex(currentIndex + 1, speed: speed);
      }
    }
  
    /**
     * Moves to the previous page.
     */
  