     }
     
     public func nextMenuItemPosition() -> MenuItemPosition? {
-        let takenPositions = menuItems.map( { $0.position.rawValue } )
-        let freePositions = [Int](MenuItemPosition.TwelveOClock.rawValue...MenuItemPosition.ElevenOClock.rawValue).filter() {
-            return takenPositions.indexOf($0) == nil
-        }
-        if freePositions.isEmpty {
+        let takenPositions = menuItems.map { $0.position.rawValue }
+        let range = (MenuItemPosition.TwelveOClock.rawValue...MenuItemPosition.ElevenOClock.rawValue)
+        let freePositions = range.filter() { return takenPositions.indexOf($0) == nil }
+        if let freePosition = freePositions.first {
+            return MenuItemPosition(rawValue: freePosition)
+        } else {
             return nil
-        } else {
-            return MenuItemPosition(rawValue: freePositions.first!)
         }
     }
     

    // MARK: Public
    
    public func addMenuItem<T: UIButton>(title: String, position: MenuItemPosition) -> T {
        return addMenuItem(title, position: position, size: menuItemSize)        
    }
    
    public func addMenuItem<T: UIButton>(title: String, position: MenuItemPosition, size: CGSize) -> T {

    func animateMenuItemOut(menuItem: MenuItem) {
        menuItem.button.hidden = false
        let point = calculateMenuItemPoint(menuItem.position)
        animateMenuItem(menuItem,
                        direction: .Out,
                        animations: { menuItem.button.transform = CGAffineTransformMakeTranslation(point.x, point.y) },
                        completion: nil)
    }
    
    func animateMenuItemIn(menuItem: MenuItem) {
        animateMenuItem(menuItem,
                        direction: .In,
                        animations: { menuItem.button.transform = CGAffineTransformIdentity },
                        completion: { finished in menuItem.button.hidden = true })
    }
    
    func animateMenuItem(menuItem: MenuItem, direction: MenuItemAnimationDirection, animations: (() -> Void), completion: ((Bool) -> Void)?) {
        UIView.animateWithDuration(0.4,
                                   delay: 0,
                                   usingSpringWithDamping: direction.damping,
                                   initialSpringVelocity: direction.velocity,
                                   options: .CurveEaseInOut,
                                   animations: { animations() },
                                   completion: { finished in completion?(finished)
        })
    }
    
