                 }
             }
             
-            return self.completeMessage(msg, args: args)
-    }
-    
-    private class func completeMessage(var message:String, args:[AnyObject]) -> String {
+            return self.completeMessage(msg, args: args, ack: true)
+    }
+    
+    private class func completeMessage(var message:String, args:[AnyObject], ack:Bool = false) -> String {
         var err:NSError?
         
         if args.count == 0 {
             return message + "]"
+        } else if !ack {
+            message += ","
         }
         
         for arg in args {

        if message != "" {
            message.removeAtIndex(message.endIndex.predecessor())
        }
        return message + "]"
    }
    

            if !hasBinary {
                if nsp == nil {
                    if ack == nil {
                        message = "42[\"\(event)\""
                    } else {
                        message = "42\(ack!)[\"\(event)\""
                    }
                } else {
                    if ack == nil {
                        message = "42/\(nsp!),[\"\(event)\""
                    } else {
                        message = "42/\(nsp!),\(ack!)[\"\(event)\""
                    }
                }
            } else {
                if nsp == nil {
                    if ack == nil {
                        message = "45\(datas)-[\"\(event)\""
                    } else {
                        message = "45\(datas)-\(ack!)[\"\(event)\""
                    }
                } else {
                    if ack == nil {
                        message = "45\(datas)-/\(nsp!),[\"\(event)\""
                    } else {
                        message = "45\(datas)-/\(nsp!),\(ack!)[\"\(event)\""
                    }
                }
            }
