     var welcomePageType:WMFWelcomePageType = .intro
     fileprivate var hasAlreadyAnimated = false
     
-    func getAnimationView() -> WMFWelcomeAnimationView? {
-        assertionFailure("Should not be called directly. Expected to be overriden by subclass")
-        return nil
-    }
+    private(set) var animationView: WMFWelcomeAnimationView? = nil
     
     override func viewDidLoad() {
         super.viewDidLoad()
-        guard let animationView = getAnimationView() else {
+        guard let animationView = animationView else {
             return
         }
         view.wmf_addSubviewWithConstraintsToEdges(animationView)

    override func viewDidAppear(_ animated: Bool) {
        super.viewDidAppear(animated)
        if (!hasAlreadyAnimated) {
            guard let animationView = getAnimationView() else {
                return
            }
            animationView.beginAnimations()

}

class WMFWelcomeAnimationForgroundViewController: WMFWelcomeAnimationViewController {
    override var animationView: WMFWelcomeAnimationView? {
        return animationViewForWelcomePageType
    }
    private lazy var animationViewForWelcomePageType: WMFWelcomeAnimationView? = {
        switch welcomePageType {
        case .intro:
            return WMFWelcomeIntroductionAnimationView()
