     if animationInProcess {
       delay = duration / 3.5
       if let layer = self.newRightSideLayer {
-        layer.position = CGPoint(x: cellFrame.maxX + space, y: cellFrame.minY)
-        animate(layer, newValue: oldRightSideNewValue, item: AnimationItem.newRightSide, duration: duration, delay: 0, index: expandedItemIndex)
+        layer.position = layer.presentation()?.position ?? CGPoint(x: cellFrame.maxX + space, y: cellFrame.minY)
+        animate(layer, newValue: oldRightSideNewValue, item: AnimationItem.newRightSide, duration: duration * 1.5, delay: 0, index: expandedItemIndex)
         
         let id = "newCellWrapper,\(expandedItemIndex)"
         if let anilayer = animationLayersDictionary[id] {

        gesture.setTranslation(.zero, in: self)
      } else {
        guard gestureTranslation == 0 else { break }
        if range > 100 || abs(velocity.y) > 200 {
          up ? self.expandPrevious() : self.expandNext()
          gesture.isEnabled = false
          gesture.isEnabled = true

    newRightSideLayer.position = CGPoint(x: bounds.width, y: cellFrame.minY)
    let newRightSideNewValue = AnimationValue.position(position)
    let newRightSideDelay = duration + newCellAnimationDelay
    animate(newRightSideLayer, newValue: newRightSideNewValue, item: .newRightSide, duration: config.animationDuration, delay: newRightSideDelay * 1.5, index: index)
    self.newRightSideLayer = newRightSideLayer
    
    animationInProcess = true
