diff --git a/workBlock.py b/workBlock.py
index e5d169e5b89d80ab068c5d94e565a066bc58c625..0488c71b5addae1f8e7f159f1d9a30b9b5d34cc2 100644
--- a/workBlock.py
+++ b/workBlock.py
@@ -78,45 +78,14 @@ def list_block(net, chain_name):
 
 
 def list_block_offset_reverse(net, chain_name, count, page):
-    max_element = common.count_atom(net, chain_name)
-    if max_element <= count:
-        res = list_block_offset(net, chain_name, count, page)
-        if res.get('blocks', None) is None:
-            return res
-        res['blocks'] = list(reversed(res['blocks']))
-        return res
-    page_end = math.ceil(max_element / count)
-    if page == 1 or page == 0:
-        res = list_block_offset(net, chain_name, count, page_end)
-        if res.get('blocks', None) is None:
-            return res
-        res['blocks'] = list(reversed(res['blocks']))
-        if len(res['blocks']) == count or page_end - 1 < 1:
-            return res
-        else:
-            delta = count - len(res['blocks'])
-            priv_page = list_block_offset(net, chain_name, count, page_end - 1)
-            for i in range(len(priv_page['blocks']) - 1, len(priv_page['blocks']) - delta - 1, -1):
-                res['blocks'].append(priv_page['blocks'][i])
-            return res
-    else:
-        tpage = page_end - page
-        res = list_block_offset(net, chain_name, count, tpage)
-        if res.get('blocks', None) is None:
-            return res
-        delta = (page_end * count) - max_element
-        del res['blocks'][0: delta]
-        res['blocks'] = list(reversed(res['blocks']))
-        if tpage - 1 <= 1:
-            return res
-        tpage2 = list_block_offset(net, chain_name, count, tpage - 1)
-        del tpage2['blocks'][0:len(tpage2['blocks']) - delta]
-        for el in tpage2['blocks']:
-            res['blocks'].insert(0, el)
+    res = list_block_offset(net, chain_name, count, page, False)
+    if res.get('blocks', None) is None:
         return res
+    res['blocks'].reverse()
+    return res
 
 
-def list_block_offset(net, chain_name, count, page):
+def list_block_offset(net, chain_name, count, page, reverse = True):
     chain_net = Net.byName(net)
     chain = chain_net.getChainByName(chain_name)
     if chain is None:
@@ -126,7 +95,7 @@ def list_block_offset(net, chain_name, count, page):
                 "msg": "Failed to get chain named " + chain_name + "."
             }
         }
-    atoms = chain.getAtoms(count, page)
+    atoms = chain.getAtoms(count, page, reverse)
     if atoms is None:
         return {
             "error":
diff --git a/workDag.py b/workDag.py
index 8c3e8dd35b2cb9b83692d87e56fa15bd4e512541..39562fdf02da46b6e558adc0ea97331327ac80d7 100644
--- a/workDag.py
+++ b/workDag.py
@@ -80,45 +80,14 @@ def list_dag(net, chain):
 
 
 def list_dag_offset_reverse(net, chain_name, count, page):
-    max_element = common.count_atom(net, chain_name)
-    if max_element <= count:
-        res = list_dag_offset(net, chain_name, count, page)
-        if res.get('events', None) is None:
-            return res
-        res['events'] = list(reversed(res['events']))
-        return res
-    page_end = math.ceil(max_element / count)
-    if page == 1 or page == 0:
-        res = list_dag_offset(net, chain_name, count, page_end)
-        if res.get('events', None) is None:
-            return res
-        res['events'] = list(reversed(res['events']))
-        if len(res['events']) == count or page_end - 1 < 1:
-            return res
-        else:
-            delta = count - len(res['events'])
-            priv_page = list_dag_offset(net, chain_name, count, page_end - 1)
-            for i in range(len(priv_page['events']) - 1, len(priv_page['events']) - delta - 1, -1):
-                res['events'].append(priv_page['events'][i])
-            return res
-    else:
-        tpage = page_end - page
-        res = list_dag_offset(net, chain_name, count, tpage)
-        if res.get('events', None) is None:
-            return res
-        delta = (page_end * count) - max_element
-        del res['events'][0:delta]
-        res['events'] = list(reversed(res['events']))
-        if tpage - 1 <= 1:
-            return res
-        tpage2 = list_dag_offset(net, chain_name, count, tpage - 1)
-        del tpage2['events'][0:len(tpage2['events']) - delta]
-        for el in tpage2['events']:
-            res['events'].insert(0, el)
+    res = list_dag_offset(net, chain_name, count, page, False)
+    if res.get('events', None) is None:
         return res
+    res['events'].reverse()
+    return res
 
 
-def list_dag_offset(net, chain_name, count, page):
+def list_dag_offset(net, chain_name, count, page, reverse = True):
     chain_net = Net.byName(net)
     chain = chain_net.getChainByName(chain_name)
     if chain is None:
@@ -128,7 +97,7 @@ def list_dag_offset(net, chain_name, count, page):
                 "msg": "Failed to get chain named " + chain_name + "."
             }
         }
-    atoms = chain.getAtoms(count, page)
+    atoms = chain.getAtoms(count, page, reverse)
     if atoms is None:
         return {
             "error":
diff --git a/workTx.py b/workTx.py
index bdd03e55967cab50820728f7a40fb11784e77302..1d5a674f3fa3e19378e10f08261f25cbb8c5fbea 100644
--- a/workTx.py
+++ b/workTx.py
@@ -20,7 +20,7 @@ def http_handler_list(args):
         if reverse is None:
             tx_list = list_tx(net, int(count), None, int(page))
         else:
-            tx_list = list_tx_reverse(net, int(count), int(page))
+            tx_list = list_tx(net, int(count), True, int(page))
         ret_str = json.dumps({'transactions': tx_list})
         return ret_str
 
@@ -77,64 +77,17 @@ def http_handler_tx_list_mempool(args):
         return json.dumps({'transactions': transactions})
 
 
-def list_tx_reverse(net, count, page=1):
-    chain_net = Net.byName(net)
-    ledger = chain_net.getLedger()
-    max_element = ledger.countFromTo()
-    if max_element <= count:
-        res = list_tx(net, count, None, page)
-        if res.get('transactions', None) is None:
-            return res
-        res['transactions'] = list(reversed(res['transactions']))
-        return res
-    page_end = math.ceil(max_element / count)
-    if page == 1 or page == 0:
-        res = list_tx(net, count, None, page_end)
-        if res.get('transactions', None) is None:
-            return res
-        res['transactions'] = list(reversed(res['transactions']))
-        if len(res['transactions']) == count or page_end - 1 < 1:
-            return res
-        else:
-            delta = count - len(res['transactions'])
-            priv_page = list_tx(net, count, None, page_end - 1)
-            for i in range(len(priv_page['transactions']) - 1, len(priv_page['transactions']) - delta - 1, -1):
-                res['transactions'].append(priv_page['transactions'][i])
-            return res
-    else:
-        tpage = page_end - page
-        res = list_tx(net, count, None, tpage)
-        if res.get('transactions', None) is None:
-            return res
-        delta = (page_end * count) - max_element
-        del res['transactions'][0:delta]
-        if tpage - 1 <= 1:
-            return res
-        tpage2 = list_tx(net, count, None, tpage - 1)
-        del tpage2['transactions'][0:len(tpage2['transactions']) - delta]
-        for el in tpage2['transactions']:
-            res['transactions'].insert(0, el)
-        return res
-
-
 def list_tx(net, count, reverse, page=1, ):
     chain_net = Net.byName(net)
     ledger = chain_net.getLedger()
     transactions = []
 
     if reverse == None:
-        datums_tx = ledger.getTransactions(count, page)
+        datums_tx = ledger.getTransactions(count, page, True)
     else:
-        count_tx = ledger.countFromTo()
-        page = count_tx // 100 + 2 - page
-        datums_tx = ledger.getTransactions(count, page)
-        page = page - 1
-        count = count - len(datums_tx)
-        if count != 0:
-            datums_tx2 = ledger.getTransactions(count, page)
-            datums_tx.extend(datums_tx2)
-        else:
-            datums_tx = datums_tx
+        datums_tx = ledger.getTransactions(count, page, False)
+    if datums_tx is None:
+        return {"error":{"code":22, "msg":"Failed to get transactions from the specified page."}}
     for datum_tx in datums_tx:
         obj_tx = info(datum_tx, chain_net, isToken=True)
         transactions.append(obj_tx)