diff --git a/src/memberdb/account.py b/src/memberdb/account.py
index 216358c0b7800039f28efb10d317affe828a34ff..bb1b683829c1514353391665d218c31ebe5c487f 100644
--- a/src/memberdb/account.py
+++ b/src/memberdb/account.py
@@ -9,7 +9,7 @@ from formtools.wizard.views import SessionWizardView
 from .models import Member
 from .forms import MyModelForm, MyForm
 from .views import MyUpdateView, MyWizardView
-from memberdb.account_backend import validate_username, create_ad_user
+from memberdb.account_backend import validate_username, create_ad_user, make_home
 
 
 
@@ -127,8 +127,8 @@ class AccountView(MyWizardView):
 				form_dict['0'].save()
 
 			make_home(self.get_cleaned_data_for_step('1'), self.object)
-			make_dispense_account(self.object.username, self.get_cleaned_data_for_step('2')['pin'])
-			subscribe_to_list(self.object)
+			#make_dispense_account(self.object.username, self.get_cleaned_data_for_step('2')['pin'])
+			#subscribe_to_list(self.object)
 		except Exception as e:
 			messages.error(self.request,'Account creation failed for %s', self.object)
 			messages.error(self.request, e)
diff --git a/src/memberdb/account_backend.py b/src/memberdb/account_backend.py
index bcfffeddfc6f2de6353e28698025e2e7edf6855a..9910eab02e8693f9adbf3f947508f91280592dce 100644
--- a/src/memberdb/account_backend.py
+++ b/src/memberdb/account_backend.py
@@ -1,51 +1,45 @@
 
-import logging
-
-from django.conf import settings
-from django.core.exceptions import ImproperlyConfigured, ValidationError
-from django.utils.translation import gettext_lazy as _
-
+from datetime                   import date
+from django.conf                import settings
+from django.core.exceptions     import ValidationError
+from django.utils.translation   import gettext_lazy as _
+from ldap3                      import ( Server, Connection, 
+                                         MODIFY_REPLACE, MODIFY_ADD )
+from ldap3.core.exceptions      import *
+from ldap3.core.results         import RESULT_SUCCESS
+from subprocess                 import CalledProcessError
+
+# stdlib
+import os
 import re
+import requests
+import shutil
 import socket
-from ldap3 import Server, Connection, MODIFY_REPLACE,MODIFY_ADD
-from ldap3.core.results import RESULT_SUCCESS
-from ldap3.core.exceptions import *
-
-
 import subprocess
-from subprocess import CalledProcessError, TimeoutExpired
 
-import memberdb.models
-from datetime import date
 from squarepay import dispense
-
-import shutil
-import os
-
+import memberdb.models
 
 log = logging.getLogger('ldap')
 
 # load config
-ldap_uri = getattr(settings, 'AUTH_LDAP_SERVER_URI')
-ldap_user_dn = getattr(settings, 'LDAP_USER_SEARCH_DN')
-ldap_base_dn = getattr(settings, 'LDAP_BASE_DN')
-ldap_bind_dn = getattr(settings, 'AUTH_LDAP_BIND_DN')
-ldap_bind_secret = getattr(settings, 'AUTH_LDAP_BIND_PASSWORD')
-make_home_cmd = ["sudo", "/services/uccportal/src/memberdb/root_actions.py"] 
-make_mail_cmd = 'ssh -i %s root@mooneye "/usr/local/mailman/bin/add_members" -r- ucc-announce <<< %s@ucc.asn.au'
-make_mail_key = './mooneye.key'
+ldap_base_dn        = getattr(settings, 'LDAP_BASE_DN')
+ldap_user_dn        = getattr(settings, 'LDAP_USER_SEARCH_DN')
 
+make_home_cmd       = ['sudo','/services/uccportal/src/memberdb/root_actions.py']
+make_mail_cmd       = 'ssh -i %s root@mooneye "/usr/local/mailman/bin/add_members" -r- ucc-announce <<< %s@ucc.asn.au'
+make_mail_key       = './mooneye.key'
 
-maxuid_dn = "CN=uccdomayne,CN=ypservers,CN=ypServ30,CN=RpcServices,CN=System,"+ldap_base_dn
+uid_rel_base_dn = "CN=ypservers,CN=ypServ30,CN=RpcServices,CN=System,"
+maxuid_dn       = "CN=uccdomayne," + uid_rel_base_dn + ldap_base_dn
 
 #initalise ldap instace
 _ldap_inst = Connection(
-	Server(ldap_uri),
-	client_strategy='SYNC',
-	user=ldap_bind_dn,
-	password=ldap_bind_secret,
-	raise_exceptions=True,
-
+	Server(getattr(settings, 'AUTH_LDAP_SERVER_URI'))
+	user     = getattr(settings, 'AUTH_LDAP_BIND_DN'),
+	password = getattr(settings, 'AUTH_LDAP_BIND_PASSWORD'),
+	client_strategy  ='SYNC',
+	raise_exceptions = True,
 	)
 
 # get the ldap instance and bind if required
@@ -81,8 +75,9 @@ def get_ldap_attrs(dn, filter, limit, attrs):
 	return entries;
 
 def get_user_attrs(username, attrs):
+	ld = get_ldap_instance()
 	# find the user
-	filter = "(cn=" + username + ')'
+	filter = '(cn=%s)' % username
 
 	result = get_ldap_attrs(ldap_user_dn, filter, 1, attrs)
 
@@ -236,7 +231,7 @@ def create_ad_user(form_data, member):
 
 	# sanity check: make sure the uid is free
 	if subprocess.call(["id", newuid], stderr=subprocess.DEVNULL) == 0:
-		log.error("LDAP: uid already taken")
+		log.error("LDAP: UID Conflict UID %s already assigned" % newuid)
 		raise ValueError
 
 	# create the new user struct
@@ -273,6 +268,7 @@ def create_ad_user(form_data, member):
 	return True;
 
 def make_home(formdata, member):
+
 	user = member.username
 	mail = formdata['email_address'] if formdata['forward'] else ""
 	result = subprocess.call(make_home_cmd + [user, mail])
@@ -282,6 +278,10 @@ def make_home(formdata, member):
 		raise CalledProcessError
 
 def subscribe_to_list(member):
+  # TODO: when (if) we upgrade to mailman 3 we should switch to the new
+  # mailman REST API.
+
+  # aweful hack
 	result = os.system(make_mail_cmd % (make_mail_key, member.username))
 	if result == 0:
 		return True