     func springBoardAppCollectionViewController(_ viewController: SpringBoardAppCollectionViewController, didSelectAppInfo appInfo: SpringBoardAppInfo, selectedAppIconButton: UIButton) {
         selectedAppButton = selectedAppIconButton
         
-        // TODO: finish this
         let viewController = SpringBoardLaunchedAppViewController()
         viewController.modalPresentationStyle = .custom
         viewController.transitioningDelegate = self


public class SpringBoardViewController: UIViewController {
    
    // TODO: clean this up
    var selectedAppButton: UIButton?
    
    var appIconLayoutInfoItems = [

    }
    
    public func presentationIndex(for pageViewController: UIPageViewController) -> Int {
        guard let subView = pageViewController.viewControllers?.first else {
            return 0
        }
        
        return pageViewSubViewControllers.index(of: subView)!
    }
}

extension SpringBoardViewController: UIViewControllerTransitioningDelegate {

    public func animationController(forPresented presented: UIViewController, presenting: UIViewController, source: UIViewController) -> UIViewControllerAnimatedTransitioning? {
        return SpringBoardAppLaunchTransitionAnimator(appIconButton: selectedAppButton!, springBoardViewController: self, isPresenting: true)
    }
    
    public func animationController(forDismissed dismissed: UIViewController) -> UIViewControllerAnimatedTransitioning? {
        return SpringBoardAppLaunchTransitionAnimator(appIconButton: selectedAppButton!, springBoardViewController: self, isPresenting: false)
    }
}
