diff --git a/helios/models.py b/helios/models.py
index a9ab20e472e1c4ab52036676b16651c6c9cac80f..ebe9875f8b44775fa755d6bd1064ab54170f9b45 100644
--- a/helios/models.py
+++ b/helios/models.py
@@ -542,16 +542,15 @@ class VoterFile(models.Model):
 class Voter(models.Model, electionalgs.Voter):
   election = models.ForeignKey(Election)
   
-  name = models.CharField(max_length = 200, null=True)
-  
   # let's link directly to the user now
   # voter_type = models.CharField(max_length = 100)
 
   user = models.ForeignKey('auth.User', null=True)
 
   # if user is null, then you need a voter login ID and password
-  voter_id = models.CharField(max_length = 100, null=True)
+  voter_login_id = models.CharField(max_length = 100, null=True)
   voter_password = models.CharField(max_length = 100, null=True)
+  voter_name = models.CharField(max_length = 200, null=True)
   
   uuid = models.CharField(max_length = 50)
   
@@ -567,7 +566,7 @@ class Voter(models.Model, electionalgs.Voter):
   @transaction.commit_on_success
   def register_user_in_election(cls, user, election):
     voter_uuid = str(uuid.uuid4())
-    voter = Voter(uuid= voter_uuid, user = user, election = election, name = user.name)
+    voter = Voter(uuid= voter_uuid, user = user, election = election)
 
     # do we need to generate an alias?
     if election.use_voter_aliases:
@@ -617,7 +616,7 @@ class Voter(models.Model, electionalgs.Voter):
 
   @classmethod
   def get_by_election_and_voter_id(cls, election, voter_id):
-    query = cls.objects.filter(election = election, voter_id = voter_id)
+    query = cls.objects.filter(election = election, voter_login_id = voter_id)
 
     try:
       return query[0]
@@ -649,6 +648,27 @@ class Voter(models.Model, electionalgs.Voter):
   @property
   def election_uuid(self):
     return self.election.uuid
+
+  @property
+  def name(self):
+    if self.user:
+      return self.user.name
+    else:
+      return self.voter_name
+
+  @property
+  def voter_id(self):
+    if self.user:
+      return self.user.user_id
+    else:
+      return self.voter_login_id
+
+  @property
+  def voter_type(self):
+    if self.user:
+      return self.user.user_type
+    else:
+      return 'password'
   
   def store_vote(self, cast_vote):
     # only store the vote if it's cast later than the current one
diff --git a/helios/views.py b/helios/views.py
index 223cec80ca08e663c198d46740be3edded1992cd..d77cafbd5975b83f45b17ca29c67e0a58d3924d7 100644
--- a/helios/views.py
+++ b/helios/views.py
@@ -951,7 +951,7 @@ def voters_list_pretty(request, election):
   limit = int(request.GET.get('limit', 50))
   q = request.GET.get('q','')
   
-  order_by = 'voter_id'
+  order_by = 'user__user_id'
 
   # unless it's by alias, in which case we better go by UUID
   if election.use_voter_aliases: