diff --git a/src/memberdb/account_backend.py b/src/memberdb/account_backend.py
index bcfffeddfc6f2de6353e28698025e2e7edf6855a..93f3f71675b94a9ebff2c2112dbe4bba22d0a468 100644
--- a/src/memberdb/account_backend.py
+++ b/src/memberdb/account_backend.py
@@ -80,6 +80,19 @@ def get_ldap_attrs(dn, filter, limit, attrs):
 
 	return entries;
 
+def enumerate_users():
+	""" return a list of all usernames, procured from the depths of AD """
+	ld = get_ldap_instance()
+	ld.search(ldap_user_dn, '(objectClass=user)', attributes=['sAMAccountName'])
+	result = ld.result
+	if result['result'] == RESULT_SUCCESS:
+		usernames = []
+		for e in ld.entries:
+			usernames += [str(e['sAMAccountName'])]
+		return usernames
+	else:
+		return None
+
 def get_user_attrs(username, attrs):
 	# find the user
 	filter = "(cn=" + username + ')'
@@ -225,6 +238,7 @@ def create_ad_user(form_data, member):
 	if uids[0] != maxuid:
 		newuid = str(maxuid)
 	else:
+		# check for gaps in the uid space and try to fill them
 		prev = uids[0]
 		for uid in uids:
 			if uid - prev > 1: