             case presentation(cardHeight: CardHeight = .intrinsicHeight, position: Position = .bottom)
         }
 
-        public init(kind: Kind, animationDuration: TimeInterval = 0.6, presentationInsideSafeArea: Bool = false, backgroundColor: UIColor = UIColor.black.withAlphaComponent(0.7), shouldAnimateNewVCAlpha: Bool = true) {
+        public init(kind: Kind, animationDuration: TimeInterval = 0.6, presentationInsideSafeArea: Bool = false, backgroundColor: UIColor = UIColor.black.withAlphaComponent(0.7), shouldAnimateNewVCAlpha: Bool = true, overridenVerticalSizeClass: UIUserInterfaceSizeClass? = nil, overridenHorizontalSizeClass: UIUserInterfaceSizeClass? = nil) {
             self.kind = kind
             self.animationDuration = animationDuration
             self.presentationInsideSafeArea = presentationInsideSafeArea
             self.backgroundColor = backgroundColor
             self.shouldAnimateNewVCAlpha = shouldAnimateNewVCAlpha
+            self.overridenVerticalSizeClass = overridenVerticalSizeClass
+            self.overridenHorizontalSizeClass = overridenHorizontalSizeClass
         }
     }
 

            anchorConstraint
        ])
                
        // Store this constraint somewhere so we can get it later
        bgView.anchorConstraint = anchorConstraint
        
        toViewController.view.alpha = properties.shouldAnimateNewVCAlpha ? 0.0 : 1.0
        bgView.alpha = 0.0
        containerView.layoutIfNeeded()

        // This is the change that animates this from the bottom
        let extraPadding: CGFloat = {
            if properties.presentationInsideSafeArea {
                switch position {

        bgView.tag = Constants.BackgroundViewTag
        containerView.addSubview(bgView)

        /// Add VC's view
        containerView.addAutolayoutSubview(toViewController.view)

        /// Override size classes if required
        let newTraitCollection: UITraitCollection = {
            var overridenTraits = [UITraitCollection]()
            if let overrideHorizontalSizeClass = properties.overridenHorizontalSizeClass {
                overridenTraits.append(UITraitCollection(horizontalSizeClass: overrideHorizontalSizeClass))
            }
            
            if let overrideVerticalSizeClass = properties.overridenVerticalSizeClass {
                overridenTraits.append(UITraitCollection(verticalSizeClass: overrideVerticalSizeClass))
            }
            return UITraitCollection(traitsFrom: overridenTraits)
        }()
        toViewController.presentationController?.overrideTraitCollection = newTraitCollection
        
        /// Calculate the height of the new VC to prepare animate it
        let toVCHeight: CGFloat = {
            switch cardHeight {
            case .fixed(let height): return height
