     
     private func validateCounts<T, U>(a: [T], _ b: [U]) throws {
         if a.count != b.count {
-            throw SidebarMenuError.DifferentNumberOfControllersAndMenuElements(controllersCount: a.count, menuElementsCount: b.count)
+            throw SidebarMenuError.NumberOfControllersAndMenuElementsAreNotEqual(controllersCount: a.count, menuElementsCount: b.count)
         }
     }
     

    private var sidebarMenuView: DORSidebarMenuView
    
    // MARK: - Public variables
    public var animateDuration: CFTimeInterval = 0.2
    public var controllers: [UIViewController?]
    /// Menu elements is an array storing structs with `title`, `textColor` and `backgroundColor`
    public var menuElements = [MenuElement]() {
        didSet {
            sidebarMenuView.tableView.reloadData()
        }
    }
    override public var backgroundColor: UIColor? {
        set {
            sidebarMenuView.view.backgroundColor = newValue

        self.menuElements = menuElements
    }

    /**
     Not implemented init resulting in fatalError.
     You should always use designated `init(width:controllers:menuElements:)`.
     */
    public required init?(coder aDecoder: NSCoder) {
        fatalError("init(coder:) has not been implemented")
    }
    
    /**
     Show the sidebar with animation duration set in `animateDuration`.
     */
    public func show() {
        show(duration: animateDuration)
    }
    
    private func show(duration duration: CFTimeInterval) {
        makeKeyAndVisible()
        sidebarMenuView.show(duration: duration)
    }
    
    /**
     Dismiss the sidebar with animation duration set in `animateDuration`.
     */
    public func dismiss() {
        dismiss(duration: animateDuration)
    }
    
    private func dismiss(duration duration: CFTimeInterval) {
        if sidebarMenuView.visible {
            sidebarMenuView.dismiss(duration: duration) { _ in
                self.hidden = true
