         case 2.0...3.0:
             thirdAnimationView.progress =  progress - 2
             secondAnimationView.progress = 3 - progress
-        case 3.0...5.0:
+        case 3.0...4.0:
             thirdAnimationView.progress = 4 - progress
-            getStartedButton.frame.origin.y = (scrollView.frame.width*4.2 - scrollView.contentOffset.x)
-            //pageControll.frame.origin.y = getStartedButton.frame.origin.y - getStartedButton.frame.height
-            pageControll.alpha = (4 - progress)*3
+            // get a startpoint where x is zero when on page 4, increasing the content offsett will give value from 0 to the size of one frame.width
+            let startPoint = scrollView.contentOffset.x - (scrollView.frame.width * 3)
+            // Then we use this translated x offset to increase/decreace the y position of the button
+            let translatedXPostitionToY = buttonInitialPostionY - startPoint
+            // stop decreasing y when welcome label reaches the middle of the screen
+            if startPoint < scrollView.frame.height / 2 {
+                getStartedButton.center.y =  translatedXPostitionToY
+                buttonEndPositionY = getStartedButton.center.y
+            }
+            pageControll.alpha = (4 - progress)
             logoImageView.hidden = true
             welcomeLabel.hidden = true
+        case 4.0...5.0:
+            // get a startpoint where x is zero when on page 4
+            let startPoint = scrollView.contentOffset.x - (scrollView.frame.width * 4)
+            // If the user over scrolls the scrollview in x, move the button equally in y
+            getStartedButton.center.y = buttonEndPositionY - startPoint
         default: break
         }
     }

        switch progress{
        case -1.0...1.0:
            firstAnimationView.progress =  progress
            logoImageView.center.y = CGFloat(abs(Int32(scrollView.contentOffset.x + ((scrollView.frame.height / 2 ))))) - logoImageView.frame.height
            welcomeLabel.center.y = logoImageView.center.y + welcomeLabel.frame.height/3
            logoImageView.alpha = 1 - progress
            logoImageView.hidden = false
            welcomeLabel.hidden = false

        bgParallaxImageView.frame.origin.x = translatedOffsetX * mountainParallaxRate
    }
    
    override func shouldAutorotate() -> Bool {
        return false
    }
    
    override func supportedInterfaceOrientations() -> Int {
        let device = UIDevice.currentDevice().userInterfaceIdiom
        switch device{
        case .Phone: return UIInterfaceOrientation.Portrait.rawValue
        case .Pad: return UIInterfaceOrientation.LandscapeLeft.rawValue
        default: return UIInterfaceOrientation.Portrait.rawValue
        }
    }
    
}

