                 })
                 
                 UIView.addKeyframe(withRelativeStartTime: 0.0, relativeDuration: 1.0, animations: {
-                    appIconImageView.frame = finalFrame
+                    appIconContainerView.frame = finalFrame
                     appCollectionSnapshotView.alpha = 0
                     appCollectionSnapshotView.transform = CGAffineTransform(scaleX: self.otherAppZoomScale, y: self.otherAppZoomScale)
                     wallpaperSnapshotView.transform = CGAffineTransform(scaleX: self.wallpaperZoomScale, y: self.wallpaperZoomScale)
                 })
                 }, completion: { _ in
                     toView.isHidden = false
+                    appIconContainerView.removeFromSuperview()
                     appInitialViewSnapshot.removeFromSuperview()
                     appIconImageView.removeFromSuperview()
                     appCollectionSnapshotView.removeFromSuperview()

        }
        toView.isHidden = true
        
        let appIconImageView = UIImageView(image: appInfo.image)
        containerView.addSubview(appIconImageView)
        appIconImageView.frame = appIconFrame
        
        
        
        appInitialViewSnapshot.layer.masksToBounds = true
        appIconImageView.addSubview(appInitialViewSnapshot)
        // TODO: why don't these autolayout constraints work?
//        appInitialViewSnapshot.translatesAutoresizingMaskIntoConstraints = false
//        appInitialViewSnapshot.anchorConstraintsToFitSuperview()
        appInitialViewSnapshot.frame = CGRect(origin: .zero, size: appIconImageView.bounds.size)
        appInitialViewSnapshot.autoresizingMask = [.flexibleHeight, .flexibleWidth]
        appInitialViewSnapshot.alpha = 0
        

        // directly by using UIView animation mechanisms
        let startRadius = reversed ? 0 : startingCornerRadius
        let endRadius = reversed ? startingCornerRadius : 0
        appIconContainerView.layer.cornerRadius = endRadius
        appIconContainerView.clipsToBounds = true
        let animation = CABasicAnimation(keyPath: #keyPath(CALayer.cornerRadius))
        animation.timingFunction = CAMediaTimingFunction(name: kCAMediaTimingFunctionEaseIn)
        animation.fromValue = startRadius
        animation.toValue = appIconContainerView.layer.cornerRadius
        animation.duration = duration
        appIconContainerView.layer.add(animation, forKey: "cornerRadius")
    }
    
    func snapshotImageForZoomingAppIcons(from viewController: SpringBoardViewController) -> UIImage {
