     ///                       called. The block is called with an array of raw
     ///                       SQL values mapped to the function's parameters and
     ///                       should return a raw SQL value (or nil).
-    public func create(#function: String, argc: Int = -1, deterministic: Bool = false, _ block: [Binding?] -> Binding?) {
+    public func create(#function: String, argc: Int = -1, deterministic: Bool = false, _ block: (args: [Binding?]) -> Binding?) {
         try {
             if self.functions[function] == nil { self.functions[function] = [:] }
             self.functions[function]?[argc] = { context, argc, argv in

    ///                  number of times it’s been called for this lock. If it
    ///                  returns true, it will try again. If it returns false,
    ///                  no further attempts will be made.
    public func busy(callback: (Int -> Bool)?) {
        try {
            if let callback = callback {
                self.busy = { callback(Int($0)) ? 1 : 0 }
            } else {
                self.busy = nil
            }

    ///
    /// :param: block     A collation function that takes two strings and
    ///                   returns the comparison result.
    public func create(#collation: String, _ block: (lhs: String, rhs: String) -> ComparisonResult) {
        try {
            self.collations[collation] = { lhs, rhs in
                return Int32(block(lhs: String.fromCString(lhs)!, rhs: String.fromCString(rhs)!).rawValue)
            }
            return SQLiteCreateCollation(self.handle, collation, self.collations[collation])
        }
