     }
     
     /// EZSE: Gets the object at the specified index, if it exists.
-    func get(index: Int) -> Element? {
+    public func get(index: Int) -> Element? {
         return index >= 0 && index < count ? self[index] : nil
     }
     
     /// EZSE: Reverse the given index. i.g.: reverseIndex(2) would be 2 to the last
-    func reverseIndex(index: Int) -> Int {
+    public func reverseIndex(index: Int) -> Int {
         return Swift.max(self.count - 1 - index, 0)
     }
     
     /// EZSE: Returns an array with the given number as the max number of elements.
-    func takeMax(n: Int) -> Array {
+    public func takeMax(n: Int) -> Array {
         return Array(self[0..<Swift.max(0, Swift.min(n, count))])
     }
     
     /// EZSE: Iterates on each element of the array.
-    func each(call: (Element) -> ()) {
+    public func each(call: (Element) -> ()) {
         for item in self {
             call(item)
         }
     }
     
     /// EZSE: Iterates on each element of the array with its index.
-    func each(call: (Int, Element) -> ()) {
+    public func each(call: (Int, Element) -> ()) {
         for (index, item) in self.enumerate() {
             call(index, item)
         }

    
    /// EZSE: Creates an array with values generated by running each value of self
    /// through the mapFunction and discarding nil return values.
    func mapFilter<V>(mapFunction map: (Element) -> (V)?) -> [V] {
        var mapped = [V]()
        each { (value: Element) -> Void in
            if let mappedValue = map(value) {

    }
    
    /// EZSE: Intersection of self and the input arrays.
    public func intersection(values: [Element]...) -> Array {
        var result = self
        var intersection = Array()
        
