             case .Min:
 
                 if items[left] < items[index] {
-                    return Heap(items: self.swapItemsForIndices(left, index), ordering: ordering).downHeap(left)
+                    return Heap(items: items.swapValuesForIndices(left, index), ordering: ordering).downHeap(left)
                 } else {
                     return self
                 }
             case .Max:
                 if items[right] > items[index] {
-                    return Heap(items: self.swapItemsForIndices(right, index), ordering: ordering).downHeap(right)
+                    return Heap(items: items.swapValuesForIndices(right, index), ordering: ordering).downHeap(right)
                 } else {
                     return self
                 }

    }
}

let x = Heap<Int>(items: [], ordering: Ordering.Min)
// Min Heap
let emptyMinHeap = Heap<Int>(items: [], ordering: Ordering.Min)
let minHeap = emptyMinHeap.insert(10).insert(8).insert(2).insert(5).insert(7).insert(4)

        case .Min :
            if items[parentIndex] > items[index] {
                print(self.description)
                return Heap(items: items.swapValuesForIndices(parentIndex, index), ordering: ordering).upHeap(parentIndex)
            } else {
                return self
            }
        case .Max:
            if items[parentIndex] < items[index] {
                return Heap(items: items.swapValuesForIndices(parentIndex, index), ordering: ordering).upHeap(parentIndex)
            } else {
                return self
            }
