diff --git a/registrasion/util.py b/registrasion/util.py
index 3df54800..7179ceb5 100644
--- a/registrasion/util.py
+++ b/registrasion/util.py
@@ -14,3 +14,14 @@ def generate_access_code():
     chars = string.uppercase + string.digits[1:]
     # 4 chars => 35 ** 4 = 1500625 (should be enough for anyone)
     return get_random_string(length=length, allowed_chars=chars)
+
+
+def all_arguments_optional(ntcls):
+    ''' Takes a namedtuple derivative and makes all of the arguments optional.
+    '''
+
+    ntcls.__new__.__defaults__ = (
+        (None,) * len(ntcls._fields)
+    )
+
+    return ntcls