diff --git a/beem/account.py b/beem/account.py
index ed82f978124149fb3f32bc916d1aa02ade5a0330..1c2ae67feb3150f5b20174dd4cb10df812cea573 100644
--- a/beem/account.py
+++ b/beem/account.py
@@ -938,6 +938,34 @@ class Account(BlockchainObject):
         else:
             return self.steem.rpc.get_conversion_requests(account)
 
+    def get_vesting_delegations(self, start_account="", limit=100, account=None):
+        """ Returns the vesting delegations by an account.
+
+            :param str account: When set, a different account is used for the request (Default is object account name)
+            :param str start_account: Only used in pre-appbase nodes
+            :param int limit: Only used in pre-appbase nodes
+            :rtype: list
+
+            .. code-block:: python
+
+                >>> from beem.account import Account
+                >>> account = Account("test")
+                >>> account.get_vesting_delegations()
+                []
+
+        """
+        if account is None:
+            account = self["name"]
+        elif isinstance(account, Account):
+            account = account["name"]
+        if not self.steem.is_connected():
+            raise OfflineHasNoRPCException("No RPC available in offline mode!")
+        self.steem.rpc.set_next_node_on_empty_reply(False)
+        if self.steem.rpc.get_use_appbase():
+            return self.steem.rpc.find_vesting_delegations({'account': account}, api="database")['delegations']
+        else:
+            return self.steem.rpc.get_vesting_delegations(account, start_account, limit)
+
     def get_withdraw_routes(self, account=None):
         """ Returns the withdraw routes for an account.
 
diff --git a/beem/block.py b/beem/block.py
index 9ec7b9f44b52cb9f0ad3fabfffc553c4fd61734a..4e19a228b15ee3cee5f8a718a8df408d18bae6c0 100644
--- a/beem/block.py
+++ b/beem/block.py
@@ -84,19 +84,13 @@ class Block(BlockchainObject):
             if p in block and isinstance(block.get(p), string_types):
                 block[p] = formatTimeString(block.get(p, "1970-01-01T00:00:00"))
         if "transactions" in block:
-            new_transactions = []
-            for trx in block["transactions"]:
-                if 'expiration' in trx and isinstance(trx.get('expiration'), string_types):
-                    trx['expiration'] = formatTimeString(trx.get('expiration', "1970-01-01T00:00:00"))
-                new_transactions.append(trx)
-            block["transactions"] = new_transactions
+            for i in range(len(block["transactions"])):
+                if 'expiration' in block["transactions"][i] and isinstance(block["transactions"][i]["expiration"], string_types):
+                    block["transactions"][i]["expiration"] = formatTimeString(block["transactions"][i]["expiration"])
         elif "operations" in block:
-            new_operations = []
-            for trx in block["operations"]:
-                if 'timestamp' in trx and isinstance(trx.get('timestamp'), string_types):
-                    trx['timestamp'] = formatTimeString(trx.get('timestamp', "1970-01-01T00:00:00"))
-                new_operations.append(trx)
-            block["operations"] = new_operations
+            for i in range(len(block["operations"])):
+                if 'timestamp' in block["operations"][i]  and isinstance(block["operations"][i]["timestamp"], string_types):
+                    block["operations"][i]["timestamp"] = formatTimeString(block["operations"][i]["timestamp"])
         return block
 
     def json(self):
@@ -111,29 +105,19 @@ class Block(BlockchainObject):
                     output[p] = formatTimeString(p_date)
                 else:
                     output[p] = p_date
+
         if "transactions" in output:
-            new_transactions = []
-            for trx in output["transactions"]:
-                if 'expiration' in trx:
-                    p_date = trx.get('expiration', datetime(1970, 1, 1, 0, 0))
-                    if isinstance(p_date, (datetime, date)):
-                        trx['expiration'] = formatTimeString(p_date)
-                    else:
-                        trx['expiration'] = p_date
-                new_transactions.append(trx)
-            output["transactions"] = new_transactions
+            for i in range(len(output["transactions"])):
+                if 'expiration' in output["transactions"][i] and isinstance(output["transactions"][i]["expiration"], (datetime, date)):
+                    output["transactions"][i]["expiration"] = formatTimeString(output["transactions"][i]["expiration"])
         elif "operations" in output:
-            new_operations = []
-            for trx in output["operations"]:
-                if 'timestamp' in trx:
-                    p_date = trx.get('timestamp', datetime(1970, 1, 1, 0, 0))
-                    if isinstance(p_date, (datetime, date)):
-                        trx['timestamp'] = formatTimeString(p_date)
-                    else:
-                        trx['timestamp'] = p_date
-                new_operations.append(trx)
-            output["operations"] = new_operations
-        return json.loads(str(json.dumps(output)))
+            for i in range(len(output["operations"])):
+                if 'timestamp' in output["operations"][i]  and isinstance(output["operations"][i]["timestamp"], (datetime, date)):
+                    output["operations"][i]["timestamp"] = formatTimeString(output["operations"][i]["timestamp"])
+
+        ret = json.loads(str(json.dumps(output)))
+        output = self._parse_json_data(output)
+        return ret
 
     def refresh(self):
         """ Even though blocks never change, you freshly obtain its contents