 
 }
 
-public extension ViewControllerPresentDialogs {
+public extension ViewControllerDialogsPresenter where Self: ViewControllerPresenter {
 
     func showPicker<T: CustomStringConvertible>(_ list: [T], completion: @escaping ((Int?) -> Void)) {
         let pickerViewController = PickerViewController(list: list)

import UIKit


// MARK: ViewControllerPresentContent

public protocol ViewControllerPresentContent {
    func loadContent()
}


// MARK: ViewControllerPresentErrors

public protocol ViewControllerPresentErrors {
    func presentViewController(_ viewControllerToPresent: UIViewController, animated: Bool, completion: (() -> Void)?)
    func showError(_ message: String, handler: ((UIAlertAction) -> Void)?)
}

public extension ViewControllerPresentErrors {

    func showError(_ message: String, handler: ((UIAlertAction) -> Void)? = nil) {
        let alertController = UIAlertController(title: "Error", message: message, preferredStyle: .alert)
        let okAction = UIAlertAction(title: "OK", style: .destructive, handler: handler)
        alertController.addAction(okAction)
        presentViewController(alertController, animated: true, completion: nil)
    }

}

// MARK: ViewControllerPresentDialogs

public protocol ViewControllerPresenter: AnyObject {
    func present(_ viewController: UIViewController, animated flag: Bool, completion: (() -> Swift.Void)?)
}

public protocol ViewControllerDialogsPresenter {
    func showConfimationDialog(_ title: String?, message: String?, acceptButtonTitle: String?, acceptButtonStyle: UIAlertAction.Style?, completionAccepted: @escaping () -> Void)
    func showMessage(_ title: String, message: String, handler: ((UIAlertAction) -> Void)?)
}

public extension ViewControllerDialogsPresenter where Self: ViewControllerPresenter {

    func showConfimationDialog(_ title: String?, message: String?, acceptButtonTitle: String? = nil, acceptButtonStyle: UIAlertAction.Style? = nil, completionAccepted: @escaping () -> Void) {
        let alertController = UIAlertController(title: title, message: message, preferredStyle: .alert)
