public IObservable<Unit> Execute() { return InitializeGame() .ContinueWith( _inputController.OnPlayerStart().First().ContinueWith(ExecuteRound()) .Repeat() .TakeWhile(_ => _gameStateProvider.Current.PlayerLives > 0)) .DoOnCompleted(() => _letterboardView.ShowText("GAME OVER")) .DoOnCompleted(() => _changeSceneView.Show()) .DoOnCompleted(() => _inputController.Disable()) .Catch<Unit, Exception>(LogException) .DoOnError(e => UnityEngine.Debug.LogError(e.ToString())); }