             apply(theme: theme)
             return
         }
-        addChild(WelcomeAnimationViewController(position: .foreground, animationView: dataSource.foregroundAnimationView), to: topForegroundContainerView)
-        if let backgroundAnimationView = dataSource.backgroundAnimationView {
-            addChild(WelcomeAnimationViewController(position: .background, animationView: backgroundAnimationView), to: topBackgroundContainerView)
-        } else {
-            topBackgroundContainerView.isHidden = true
-        }
+        addChild(WelcomeAnimationViewController(animationView: dataSource.animationView, shouldAnimateWhenViewAppears: !dataSource.isFirst), to: topContainerView)
         addChild(dataSource.panelViewController, to: bottomContainerView)
         apply(theme: theme)
     }

import UIKit

protocol WelcomeContainerViewControllerDataSource: AnyObject {
    var foregroundAnimationView: WelcomeAnimationView { get }
    var backgroundAnimationView: WelcomeAnimationView? { get }
    var panelViewController: WelcomePanelViewController { get }
}

class WelcomeContainerViewController: UIViewController {
    weak var dataSource: WelcomeContainerViewControllerDataSource?
    
    @IBOutlet private weak var topForegroundContainerView: UIView!
    @IBOutlet private weak var topBackgroundContainerView: UIView!
    @IBOutlet private weak var bottomContainerView: UIView!

    private var theme = Theme.standard

            return
        }
        children.forEach { ($0 as? Themeable)?.apply(theme: theme) }
        topContainerView.backgroundColor = theme.colors.midBackground
        bottomContainerView.backgroundColor = theme.colors.midBackground
    }
}

extension WelcomeContainerViewController: PageViewControllerViewLifecycleDelegate {
    func pageViewControllerDidAppear(_ pageViewController: UIPageViewController) {
        dataSource?.animationView.animate()
    }
}
