diff --git a/warden3/warden_server/warden_server.py b/warden3/warden_server/warden_server.py
index 898b27ffaf4ba8888a2b260641dc88edb0a2fbdc..1ebfd5ccbdeb2a8d635f75ef9740375da1396aa0 100755
--- a/warden3/warden_server/warden_server.py
+++ b/warden3/warden_server/warden_server.py
@@ -208,9 +208,8 @@ def SysLogger(req, socket="/dev/log", facility=logging.handlers.SysLogHandler.LO
 
 
 Client = namedtuple("Client",
-    ["id", "registered", "requestor", "hostname", "name", "note",
-    "valid", "secret", "read", "debug", "write", "test"])
-
+    ["id", "registered", "requestor", "hostname", "name",
+    "secret", "valid", "read", "debug", "write", "test", "note"])
 
 
 class Object(object):
@@ -522,7 +521,7 @@ class MySQL(ObjectReq):
 
 
     def get_client_by_name(self, cert_names, name=None, secret=None):
-        query = ["SELECT id, registered, requestor, hostname, note, valid, name, secret, `read`, debug, `write`, test FROM clients WHERE valid = 1"]
+        query = ["SELECT * FROM clients WHERE valid = 1"]
         params = []
         if name:
             query.append(" AND name = %s")
@@ -543,7 +542,7 @@ class MySQL(ObjectReq):
 
 
     def get_clients(self, id=None):
-        query = ["SELECT id, registered, requestor, hostname, note, valid, name, secret, `read`, debug, `write`, test FROM clients"]
+        query = ["SELECT * FROM clients"]
         params = []
         if id:
             query.append("WHERE id = %s")
@@ -562,12 +561,9 @@ class MySQL(ObjectReq):
             uquery.append("registered = now()")
         else:
             query.append("UPDATE clients SET")
-        for attr in ["name", "hostname", "requestor", "secret", "note",
-                      "valid", "read", "write", "debug", "test"]:
+        for attr in set(Client._fields) - set(["id", "registered"]):
             val = kwargs.get(attr, None)
             if val is not None:
-                if attr in ["name", "hostname"]:
-                    val = val.lower()
                 uquery.append("`%s` = %%s" % attr)
                 params.append(val)
         if not uquery:
@@ -1307,28 +1303,24 @@ def check_config():
 
 def list_clients(id=None):
     clients = server.handler.db.get_clients(id)
-    order = ["id", "registered", "requestor", "hostname", "name",
-             "secret", "valid", "read", "debug", "write", "test", "note"]
-    lines = [[str(getattr(client, col)) for col in order] for client in clients]
-    col_width = [max(len(val) for val in col) for col in zip(*(lines+[order]))]
+    lines = [[str(getattr(client, col)) for col in Client._fields] for client in clients]
+    col_width = [max(len(val) for val in col) for col in zip(*(lines+[Client._fields]))]
     divider = ["-" * l for l in col_width]
-    for line in [order, divider] + lines:
+    for line in [Client._fields, divider] + lines:
         print " ".join([val.ljust(width) for val, width in zip(line, col_width)])
 
 
-def register_client(name, hostname, requestor, secret, note, valid, read, write, debug, test):
+def register_client(**kwargs):
     # argparse does _always_ return something, so we cannot rely on missing arguments
-    if valid is None: valid = 1
-    if read is None: read = 1
-    if write is None: write = 0
-    if debug is None: debug = 0
-    if test is None: test = 1
-    modify_client(id=None,
-            name=name, hostname=hostname, requestor=requestor, secret=secret,
-            note=note, valid=valid, read=read, write=write, debug=debug, test=test)
+    if kwargs["valid"] is None: kwargs["valid"] = 1
+    if kwargs["read"] is None: kwargs["read"] = 1
+    if kwargs["write"] is None: kwargs["write"] = 0
+    if kwargs["debug"] is None: kwargs["debug"] = 0
+    if kwargs["test"] is None: kwargs["test"] = 1
+    modify_client(id=None, **kwargs)
 
 
-def modify_client(id, name, hostname, requestor, secret, note, valid, read, write, debug, test):
+def modify_client(**kwargs):
 
     def isValidHostname(hostname):
         if len(hostname) > 255:
@@ -1356,33 +1348,35 @@ def modify_client(id, name, hostname, requestor, secret, note, valid, read, writ
         return client and True or False
 
 
-    if name is not None and not isValidNSID(name):
-        print >>sys.stderr, "Invalid client name \"%s\"." % name
+    if kwargs["name"] is not None:
+        kwargs["name"] = kwargs["name"].lower()
+        if not isValidNSID(kwargs["name"]):
+            print >>sys.stderr, "Invalid client name \"%s\"." % kwargs["name"]
+            return 254
 
-    if hostname is not None and not isValidHostname(hostname):
-        print >>sys.stderr, "Invalid hostname \"%s\"." % hostname
-        return 254
+    if kwargs["hostname"] is not None:
+        kwargs["hostname"] = kwargs["hostname"].lower()
+        if not isValidHostname(kwargs["hostname"]):
+            print >>sys.stderr, "Invalid hostname \"%s\"." % kwargs["hostname"]
+            return 254
 
-    if requestor is not None and not isValidEmail(requestor):
-        print >>sys.stderr, "Invalid requestor email \"%s\"." % requestor
+    if kwargs["requestor"] is not None and not isValidEmail(kwargs["requestor"]):
+        print >>sys.stderr, "Invalid requestor email \"%s\"." % kwargs["requestor"]
         return 254
 
-    if id is not None and not isValidID(id):
-        print >>sys.stderr, "Invalid id \"%s\"." % id
+    if kwargs["id"] is not None and not isValidID(kwargs["id"]):
+        print >>sys.stderr, "Invalid id \"%s\"." % kwargs["id"]
         return 254
 
     for c in server.handler.db.get_clients():
-        if name is not None and name.lower()==c.name:
+        if kwargs["name"] is not None and kwargs["name"].lower()==c.name:
             print >>sys.stderr, "Clash with existing name: %s" % str(c)
             return 254
-        if secret is not None and secret==c.secret:
+        if kwargs["secret"] is not None and kwargs["secret"]==c.secret:
             print >>sys.stderr, "Clash with existing secret: %s" % str(c)
             return 254
 
-    newid = server.handler.db.add_modify_client(
-        id=id, name=name, hostname=hostname,
-        requestor=requestor, secret=secret, note=note, valid=valid,
-        read=read, write=write, debug=debug, test=test)
+    newid = server.handler.db.add_modify_client(**kwargs)
 
     list_clients(id=newid)