 
 		set: (orientation) -> @setOrientation(orientation, false)
 
-	setOrientation: (orientation, animate=false) ->
+	setOrientation: (orientation, animate=false, suggestedSize=null) ->
 
 		orientation *= -1 if Utils.framerStudioVersion() is oldDeviceMaxVersion
 

		@emit("change:deviceScale")


	_calculatePhoneScale: ->

		# Calculates a phone scale that fits the screen unless a fixed value is set
		dimension = if @hideBezel then @screen else @phone


		@_orientation = orientation

		# Calculate properties for the phone
		handsProperties =
			rotationZ: -@_orientation

		options = _.clone(@animationOptions)
		if suggestedSize?
			scale = @_calculatePhoneScale(suggestedSize.width, suggestedSize.height)
			handsProperties.x = (suggestedSize.width / 2) - (@hands.width / 2.0)
			handsProperties.y = (suggestedSize.height / 2) - (@hands.height / 2.0)
			options.time = null
			# Converted with Origami from Bounciness 5, Speed 12
			options.curve = Spring(tension: 342.10059, friction: 28.97662)
		else
			scale = @_calculatePhoneScale()

		handsProperties.scale = scale
		contentProperties = @_viewportOrientationOffset()

		@hands.animateStop()
		@viewport.animateStop()

		if animate
			previousBackgroundColor = @background.backgroundColor
			if @hideBezel
				@screenBackground.visible = false
				@background.backgroundColor = @screen.backgroundColor
				@disableSizeUpdates = true
			animation = @hands.animate _.extend options,
				properties: handsProperties
			@viewport.animate _.extend options,
				properties: contentProperties

			animation.on Events.AnimationEnd, =>
				@_update()

			animation.on Events.AnimationStop, =>
				@disableSizeUpdates = false
				@background.backgroundColor = previousBackgroundColor

		else
			@hands.props = handsProperties
			@viewport.props = contentProperties
			@_update()

