         case .rate:
             guard let viewController = viewController, let iTunesItemIdentifier = iTunesItemIdentifier else { fatalError() }
             settingsActionService.rateApp(fromViewController: viewController, iTunesItemIdentifier: iTunesItemIdentifier)
-            currentState = .initial
             delegate?.didRateApp()
+            transition(to: .initial)
         case .share:
             guard let viewController = viewController, let appStorePath = appStorePath else { fatalError() }
             settingsActionService.shareApp(fromViewController: viewController, appStoreAppPath: appStorePath)
-            currentState = .initial
             delegate?.didShareApp()
+            transition(to: .initial)
         case .feedback:
             guard let viewController = viewController, let feedbackEmail = feedbackEmail else { fatalError() }
             settingsActionService.sendFeedback(fromViewController: viewController, emailAddresses: [feedbackEmail], mailComposeDelegate: self)
-            currentState = .initial
             delegate?.didSendFeedback()
+            transition(to: .initial)
         }
     }
     

import UIKit
import SettingsActions
import MessageUI

// MARK: - Public API


    }
    
    func initialTitle() -> String {
        let appName = DeviceInfoService().appName
        return "Is \(appName) working well for you?"
    }
    
    func rateTitle() -> String {
