diff --git a/hive/server/database_api/methods.py b/hive/server/database_api/methods.py
index 90384e273c8e02d621f0bba41f186a7f2de4ff0d..e9d3d991d8a648ca3aa0604ceb3298f03c051896 100644
--- a/hive/server/database_api/methods.py
+++ b/hive/server/database_api/methods.py
@@ -213,7 +213,7 @@ async def find_votes(context, params: dict, votes_presentation = VotesPresentati
     return ret
 
 @return_error_info
-async def list_votes(context, start: list, limit: int, order: str):
+async def list_votes(context, start: list, limit: int, order: str, votes_presentation = VotesPresentation.DatabaseApi):
     """ Returns all votes, starting with the specified voter and/or author and permlink. """
     supported_order_list = ["by_comment_voter", "by_voter_comment"]
     assert order in supported_order_list, "Order {} is not supported".format(order)
@@ -221,6 +221,8 @@ async def list_votes(context, start: list, limit: int, order: str):
     assert len(start) == 3, "Expecting 3 elements in start array"
     db = context['db']
 
+    ret = []
+
     sql = """
         SELECT
             voter,
@@ -236,31 +238,48 @@ async def list_votes(context, start: list, limit: int, order: str):
             hive_votes_accounts_permlinks_view
     """
 
-    if order == "by_comment_voter": # ABW: wrong! fat node sorted by ( comment_id, voter_id )
+    if order == "by_comment_voter":
         sql += """
             WHERE
                 author >= :author AND 
                 permlink >= :permlink AND 
                 voter >= :voter
             ORDER BY
-                author ASC, 
-                permlink ASC, 
-                id ASC 
+                post_id ASC,
+                voter_id ASC
             LIMIT 
                 :limit
         """
-        return await db.query_all(sql, author=start[0], permlink=start[1], voter=start[2], limit=limit)
-    if order == "by_voter_comment": # ABW: wrong! fat node sorted by ( voter_id, comment_id )
+        rows = await db.query_all(sql, author=start[0], permlink=start[1], voter=start[2], limit=limit)
+
+    if order == "by_voter_comment":
         sql += """
             WHERE
                 voter >= :voter AND 
                 author >= :author AND 
                 permlink >= :permlink
             ORDER BY 
-                voter ASC,
-                id ASC
+                voter_id ASC,
+                post_id ASC
             LIMIT
                 :limit
         """
-        return await db.query_all(sql, author=start[1], permlink=start[2], voter=start[0], limit=limit)
-    return []
+        rows = await db.query_all(sql, author=start[1], permlink=start[2], voter=start[0], limit=limit)
+
+    for row in rows:
+        if votes_presentation == VotesPresentation.DatabaseApi:
+            ret.append(dict(voter=row.voter, author=row.author, permlink=row.permlink,
+                            weight=row.weight, rshares=row.rshares, vote_percent=row.percent,
+                            last_update=str(row.time), num_changes=row.num_changes))
+        elif votes_presentation == VotesPresentation.CondenserApi:
+            ret.append(dict(percent=str(row.percent), reputation=rep_to_raw(row.reputation),
+                            rshares=str(row.rshares), voter=row.voter))
+        elif votes_presentation == VotesPresentation.BridgeApi:
+            ret.append(dict(rshares=str(row.rshares), voter=row.voter))
+        else:
+            ret.append(dict(percent=row.percent, reputation=rep_to_raw(row.reputation),
+                            rshares=number_to_json_value(row.rshares), time=time_string_with_t(row.time), 
+                            voter=row.voter, weight=number_to_json_value(row.weight)
+                            ))
+
+    return ret