     /// :return Function that can be called n times after which the callback function is called.
     public class func after<T, E>(n: Int, function: (T...) -> E) -> ((T...) -> E?) {
         var counter = n
-        return { (params: (T...)) -> E? in
-            typealias TType = (T...)
+        return { (params: T...) -> E? in
+            typealias Function = [T] -> E
             if --counter <= 0 {
-                return function(unsafeBitCast(params, TType.self))
+                let f = unsafeBitCast(function, Function.self)
+                return f(params)
             }
             return nil
         }

    public class func values<T, U>(dictionary: [T: U]) -> [U] {
        var result : [U] = []
        for (_, value) in dictionary {
            result.insert(value, atIndex: 0)
        }
        return result
    }

        }
        return newArr
    }
        
    /// Creates an array excluding all values of the provided arrays.
    ///
    /// :param arrays The arrays to difference between.
