 
 // MARK: Debug
 
-extension SwiftQueue: Printable {
+extension SwiftQueue: CustomStringConvertible {
     var description: String {
         return storage.description
     }


struct SwiftQueue <T: Equatable> {
    typealias ElementType = T
    
    private var storage = [ElementType]()
    
    // MARK: Queryng the Queue
    var count: Int {
        return storage.count
    }
    
    var isEmpty: Bool {
        return storage.isEmpty
    }
    
    func front() -> ElementType? {
        return storage.first
    }
    
    func back() -> ElementType? {
        return storage.last
    }
    
    func findElement(element: ElementType) -> Int? {
        return find(storage, element)
    }
    
    // MARK: Adding and Removing Elements
    
    mutating func pushBack(element: ElementType) {
        storage.append(element)
    }
    
    mutating func popFront() -> ElementType? {
        if let first = storage.first {
            storage.removeAtIndex(0)
            
            return first
        }
        
        return nil
    }
    
    mutating func clear() {
        storage.removeAll()
    }


// MARK: Debug

extension SwiftDequeue: CustomStringConvertible {
    var description: String {
        return storage.description
    }
