         var constraints = [imageCarousel.topAnchor.constraint(equalTo: view.topAnchor),
                            imageCarousel.leadingAnchor.constraint(equalTo: view.leadingAnchor),
                            imageCarousel.trailingAnchor.constraint(equalTo: view.trailingAnchor),
-                           imageCarousel.heightAnchor.constraint(equalToConstant: 240)]
+                           imageCarousel.heightAnchor.constraint(equalToConstant: imageCarouselHeightConstant)]
 
         view.addSubview(currentCardViewController.cardView)
         currentCardViewCenterXConstraint = currentCardViewController.cardView.centerXAnchor.constraint(equalTo: view.centerXAnchor)
-        constraints += [currentCardViewController.cardView.topAnchor.constraint(equalTo: view.topAnchor, constant: 204),
-                        currentCardViewController.cardView.widthAnchor.constraint(equalToConstant: 343),
+        constraints += [currentCardViewController.cardView.topAnchor.constraint(equalTo: view.topAnchor, constant: cardViewTopAnchorConstant),
+                        currentCardViewController.cardView.widthAnchor.constraint(equalToConstant: cardViewWidthConstant),
                         currentCardViewCenterXConstraint!]
         self.addChildViewController(currentCardViewController)
 

            self.view.addSubview(newPreviousCardViewController!.cardView)
            self.addChildViewController(newPreviousCardViewController!)
            self.previousCardViewTrailingConstraint = newPreviousCardViewController!.cardView.trailingAnchor.constraint(equalTo: previousCardViewController.cardView.leadingAnchor, constant: -6)
            constraintsToActivate += [self.previousCardViewTrailingConstraint!]
        } else {
            previousCardViewTrailingConstraint = nil
        }

        NSLayoutConstraint.deactivate(constraintsToDeactivate)
        NSLayoutConstraint.activate(constraintsToActivate, translatesAutoresizingMaskIntoConstraints: false)


        UIView.animate(withDuration: animationDuration, delay: 0.0, usingSpringWithDamping: 0.8, initialSpringVelocity: 0.0, options: .curveEaseOut, animations: {
            self.imageCarousel.alpha = 0
            previousCardImageCarousel.alpha = 1
            self.view.layoutIfNeeded()

        // if so, remove currentCardViewController centerX constraint
        // add center x constraint to previousCardViewController
        var newPreviousCardViewController: PlaceDetailsCardViewController? = nil
        var springDamping: CGFloat = 1.0

        var constraintsToActivate = [NSLayoutConstraint]()
        var constraintsToDeactivate = [NSLayoutConstraint]()

        // add the image carousel for the previous place card underneath the existing carousel
        // we need to ensure these constraints are applied and rendered before we animate the rest, otherwise we end
        // up with a very odd looking fade transition
        let previousCardImageCarousel = previousCardViewController.imageCarousel
        view.insertSubview(previousCardImageCarousel, belowSubview: imageCarousel)
        constraintsToActivate += [previousCardImageCarousel.topAnchor.constraint(equalTo: view.topAnchor),
                                     previousCardImageCarousel.leadingAnchor.constraint(equalTo: view.leadingAnchor),
                                     previousCardImageCarousel.trailingAnchor.constraint(equalTo: view.trailingAnchor),
                                     previousCardImageCarousel.heightAnchor.constraint(equalToConstant: imageCarouselHeightConstant)]

        // create new previous view controller trailing constraint
        if let previousCardViewTrailingConstraint = previousCardViewTrailingConstraint {
            constraintsToDeactivate += [previousCardViewTrailingConstraint]
