       reusableViews.filter { $0 != reusableViews[Int(currentScrollViewPage)]}.forEach {$0.prepareForReuse()}
       previousPage = currentIndex
     }
+
+    recenter()
   }
 
   func scrollViewDidEndDragging(scrollView: UIScrollView, willDecelerate decelerate: Bool) {

      subview.frame.origin.x = bounds.width * CGFloat(index)
      subview.frame.size = bounds.size
    }
  }
}


    let distanceFromCenter = contentOffset.x - centerOffsetX

    if fabs(distanceFromCenter) > (contentWidth / 3) {
      recenter()
    }
  }

  func recenter() {
    let contentWidth = contentSize.width
    let centerOffsetX = (contentWidth - bounds.size.width) / 2
    let distanceFromCenter = contentOffset.x - centerOffsetX

    if distanceFromCenter > 0 {
      reusableViews.shift(1)
      accumulator++
      reusableViews[2].prepareForReuse()
      viewDelegate?.viewRequiresUpdate(reusableViews[2], viewBefore: reusableViews[1])
    } else {
      reusableViews.shift(-1)
      accumulator--
      reusableViews[0].prepareForReuse()
      viewDelegate?.viewRequiresUpdate(reusableViews[0], viewAfter: reusableViews[1])
    }
    contentOffset = CGPoint(x: centerOffsetX, y: contentOffset.y)
  }

  func realignViews() {
