diff --git a/uffd/user/models.py b/uffd/user/models.py
index a906fe2b647479f7c3519ee6114b25022963d632..69dcf005b597a2fe4022d682ce996901e19d66a9 100644
--- a/uffd/user/models.py
+++ b/uffd/user/models.py
@@ -7,30 +7,29 @@ from flask import current_app
 from uffd import ldap
 
 class User():
-	uid = None
-	loginname = None
-	displayname = None
-	mail = None
-	newpassword = None
-
 	def __init__(self, uid=None, loginname='', displayname='', mail='', groups=None):
 		self.uid = uid
 		self.loginname = loginname
 		self.displayname = displayname
 		self.mail = mail
-		if isinstance(groups, str):
-			groups = [groups]
 		self.groups_ldap = groups or []
 		self._groups = None
+		self.newpassword = None
 
 	@classmethod
 	def from_ldap(cls, ldapobject):
+		# if you are in no groups, the "memberOf" attribute does not exist
+		# if you are only in one group, ldap returns a string not an array with one element
+		# we sanitize this to always be an array
+		sanitized_groups = ldapobject['memberOf'].value if 'memberOf' in ldapobject else []
+		if isinstance(sanitized_groups, str):
+			sanitized_groups = [sanitized_groups]
 		return User(
 				uid=ldapobject['uidNumber'].value,
 				loginname=ldapobject['uid'].value,
 				displayname=ldapobject['cn'].value,
 				mail=ldapobject['mail'].value,
-				groups=ldapobject['memberOf'].value if 'memberOf' in ldapobject else [],
+				groups=sanitized_groups,
 			)
 
 	@classmethod
@@ -118,10 +117,6 @@ class User():
 		return True
 
 class Group():
-	gid = None
-	name = None
-	description = None
-
 	def __init__(self, gid=None, name='', members=None, description=''):
 		self.gid = gid
 		self.name = name