diff --git a/CHANGELOG.rst b/CHANGELOG.rst
index 4ca2b310bedd33af777fbfad0edfe70da8b7c977..be33bdada16f67fd2d06517e613224e57309143a 100644
--- a/CHANGELOG.rst
+++ b/CHANGELOG.rst
@@ -1,5 +1,13 @@
 Changelog
 =========
+0.20.1
+------
+* Improved get_rc_manabar(), get_manabar() output
+* get_voting_power() fixed again
+* print_info for account improved
+* get_manabar_recharge_time_str(), get_manabar_recharge_timedelta() and get_manabar_recharge_time() added
+* https://steemd-appbase.steemit.com added to nodelist
+
 0.20.0
 ------
 * Fully supporting hf20
diff --git a/beem/account.py b/beem/account.py
index 922dfeeef51f7f874ca7f12b73f0379e8c6d2d45..df835c0181c1c3b67b743e1b89441a4fd1ff6bcb 100644
--- a/beem/account.py
+++ b/beem/account.py
@@ -228,12 +228,16 @@ class Account(BlockchainObject):
 
     def get_rc_manabar(self):
         """Returns current_mana and max_mana for RC"""
+        estimated_max = int(self.get_vests())
         rc_param = self.get_rc()
-        max_mana = int(rc_param["max_rc"])
-        last_update = datetime.utcfromtimestamp(rc_param["rc_manabar"]["last_update_time"])
+        current_mana = int(rc_param["rc_manabar"]["current_mana"])
+        last_update_time = rc_param["rc_manabar"]["last_update_time"]
+        last_update = datetime.utcfromtimestamp(last_update_time)
         diff_in_seconds = (addTzInfo(datetime.utcnow()) - addTzInfo(last_update)).total_seconds()
-        current_mana = rc_param["rc_manabar"]["current_mana"] + diff_in_seconds * max_mana / (5 * 24 * 60 * 60)
-        return {"current_mana": current_mana, "max_mana": max_mana}
+        estimated_mana = int(current_mana + diff_in_seconds * estimated_max / STEEM_VOTING_MANA_REGENERATION_SECONDS)
+        estimated_pct = estimated_mana / estimated_max * 100
+        return {"current_mana": current_mana, "last_update_time": last_update_time,
+                "estimated_mana": estimated_mana, "estimated_max": estimated_max, "estimated_pct": estimated_pct}
 
     def get_similar_account_names(self, limit=5):
         """ Returns ``limit`` account names similar to the current account
@@ -305,25 +309,28 @@ class Account(BlockchainObject):
         last_vote_time_str = formatTimedelta(addTzInfo(datetime.utcnow()) - self["last_vote_time"])
         try:
             rc_mana = self.get_rc_manabar()
+            rc = self.get_rc()
         except:
             rc_mana = None
+        vote_mana = self.get_manabar()
 
         if use_table:
             t = PrettyTable(["Key", "Value"])
             t.align = "l"
             t.add_row(["Name (rep)", self.name + " (%.2f)" % (self.rep)])
-            t.add_row(["Voting Power", "%.2f %%, " % (self.get_voting_power())])
+            t.add_row(["Voting Power", "%.2f %%, " % (vote_mana["estimated_pct"])])
             t.add_row(["Vote Value", "%.2f $" % (self.get_voting_value_SBD())])
             t.add_row(["Last vote", "%s ago" % last_vote_time_str])
-            t.add_row(["Full in ", "%s" % (self.get_recharge_time_str())])
+            t.add_row(["Full in ", "%s" % (self.get_manabar_recharge_time_str(vote_mana))])
             t.add_row(["Steem Power", "%.2f STEEM" % (self.get_steem_power())])
             t.add_row(["Balance", "%s, %s" % (str(self.balances["available"][0]), str(self.balances["available"][1]))])
-            if bandwidth["allocated"] > 0:
+            if False and bandwidth["allocated"] > 0:
                 t.add_row(["Remaining Bandwidth", "%.2f %%" % (remaining)])
                 t.add_row(["used/allocated Bandwidth", "(%.0f kb of %.0f mb)" % (used_kb, allocated_mb)])
             if rc_mana is not None:
                 t.add_row(["Remaining RC", "%.2f %%" % (rc_mana["current_mana"] / rc_mana["max_mana"] * 100)])
-                t.add_row(["used/allocated RC", "(%.0f of %.0f)" % (rc_mana["current_mana"], rc_mana["max_mana"])])
+                t.add_row(["used/allocated RC", "(%.0f of %.0f)" % (int(rc["max_rc"]) * rc_mana["estimated_pct"], int(rc["max_rc"]))])
+                t.add_row(["Full in ", "%s" % (self.get_manabar_recharge_time_str(rc_mana))])
             if return_str:
                 return t.get_string(**kwargs)
             else:
@@ -331,20 +338,21 @@ class Account(BlockchainObject):
         else:
             ret = self.name + " (%.2f) \n" % (self.rep)
             ret += "--- Voting Power ---\n"
-            ret += "%.2f %%, " % (self.get_voting_power())
+            ret += "%.2f %%, " % (vote_mana["estimated_pct"])
             ret += " VP = %.2f $\n" % (self.get_voting_value_SBD())
-            ret += "full in %s \n" % (self.get_recharge_time_str())
+            ret += "full in %s \n" % (self.get_manabar_recharge_time_str(vote_mana))
             ret += "--- Balance ---\n"
             ret += "%.2f SP, " % (self.get_steem_power())
             ret += "%s, %s\n" % (str(self.balances["available"][0]), str(self.balances["available"][1]))
-            if bandwidth["allocated"] > 0:
+            if False and bandwidth["allocated"] > 0:
                 ret += "--- Bandwidth ---\n"
                 ret += "Remaining: %.2f %%" % (remaining)
                 ret += " (%.0f kb of %.0f mb)\n" % (used_kb, allocated_mb)
             if rc_mana is not None:
                 ret += "--- RC manabar ---\n"
-                ret += "Remaining: %.2f %%" % (rc_mana["current_mana"] / rc_mana["max_mana"] * 100)
-                ret += " (%.0f of %.0f)" % (rc_mana["current_mana"], rc_mana["max_mana"])
+                ret += "Remaining: %.2f %%" % (rc_mana["current_mana"] / rc_mana["estimated_max"] * 100)
+                ret += " (%.0f of %.0f)\n" % (int(rc["max_rc"]) * rc_mana["estimated_pct"], int(rc["max_rc"]))
+                ret += "full in %s \n" % (self.get_manabar_recharge_time_str(rc_mana))
             if return_str:
                 return ret
             print(ret)
@@ -365,31 +373,24 @@ class Account(BlockchainObject):
 
     def get_manabar(self):
         """"Return manabar"""
-        max_mana = int(self.get_vests())
-        last_update = datetime.utcfromtimestamp(self["voting_manabar"]["last_update_time"])
+        estimated_max = int(self.get_vests())
+        current_mana = int(self["voting_manabar"]["current_mana"])
+        last_update_time = self["voting_manabar"]["last_update_time"]
+        last_update = datetime.utcfromtimestamp(last_update_time)
         diff_in_seconds = (addTzInfo(datetime.utcnow()) - addTzInfo(last_update)).total_seconds()
-        current_mana = int(self["voting_manabar"]["current_mana"]) + diff_in_seconds * max_mana / (5 * 24 * 60 * 60)
-        return {"current_mana": current_mana, "max_mana": max_mana}
+        estimated_mana = int(current_mana + diff_in_seconds * estimated_max / STEEM_VOTING_MANA_REGENERATION_SECONDS)
+        estimated_pct = estimated_mana / estimated_max * 100
+        return {"current_mana": current_mana, "last_update_time": last_update_time,
+                "estimated_mana": estimated_mana, "estimated_max": estimated_max, "estimated_pct": estimated_pct}
 
     def get_voting_power(self, with_regeneration=True):
         """ Returns the account voting power in the range of 0-100%
         """
+        manabar = self.get_manabar()
         if with_regeneration:
-            regenerated_vp = 0
-            if "voting_manabar" in self:
-                last_vote_time = datetime.utcfromtimestamp(self["voting_manabar"]["last_update_time"])
-                diff_in_seconds = (addTzInfo(datetime.utcnow()) - addTzInfo(last_vote_time)).total_seconds()
-                regenerated_vp = diff_in_seconds * STEEM_100_PERCENT / STEEM_VOTING_MANA_REGENERATION_SECONDS / 100
-            elif "last_vote_time" in self:
-                last_vote_time = self["last_vote_time"]
-                diff_in_seconds = (addTzInfo(datetime.utcnow()) - (last_vote_time)).total_seconds()
-                regenerated_vp = diff_in_seconds * STEEM_100_PERCENT / STEEM_VOTE_REGENERATION_SECONDS / 100
+            total_vp = manabar["estimated_pct"]
         else:
-            regenerated_vp = 0
-        if "voting_power" in self:
-            total_vp = (self["voting_power"] / 100 + regenerated_vp)
-        elif "voting_manabar" in self:
-            total_vp = int(self["voting_manabar"]["current_mana"]) / int(self.get_vests()) + regenerated_vp
+            total_vp = manabar["current_mana"] / manabar["estimated_max"] * 100
         if total_vp > 100:
             return 100
         if total_vp < 0:
@@ -487,6 +488,38 @@ class Account(BlockchainObject):
         """
         return addTzInfo(datetime.utcnow()) + self.get_recharge_timedelta(voting_power_goal)
 
+    def get_manabar_recharge_time_str(self, manabar, recharge_pct_goal=100):
+        """ Returns the account manabar recharge time as string
+
+            :param dict manabar: manabar dict from get_manabar() or get_rc_manabar()
+            :param float recharge_pct_goal: mana recovery goal in percentage (default is 100)
+
+        """
+        remainingTime = self.get_manabar_recharge_timedelta(manabar, recharge_pct_goal=recharge_pct_goal)
+        return formatTimedelta(remainingTime)
+
+    def get_manabar_recharge_timedelta(self, manabar, recharge_pct_goal=100):
+        """ Returns the account mana recharge time as timedelta object
+
+            :param dict manabar: manabar dict from get_manabar() or get_rc_manabar()
+            :param float recharge_pct_goal: mana recovery goal in percentage (default is 100)
+
+        """
+        missing_rc_pct = recharge_pct_goal - manabar["estimated_pct"]
+        if missing_rc_pct < 0:
+            return 0
+        recharge_seconds = missing_rc_pct * 100 * STEEM_VOTING_MANA_REGENERATION_SECONDS / STEEM_100_PERCENT
+        return timedelta(seconds=recharge_seconds)
+
+    def get_manabar_recharge_time(self, manabar, recharge_pct_goal=100):
+        """ Returns the account mana recharge time in minutes
+
+            :param dict manabar: manabar dict from get_manabar() or get_rc_manabar()
+            :param float recharge_pct_goal: mana recovery goal in percentage (default is 100)
+
+        """
+        return addTzInfo(datetime.utcnow()) + self.get_manabar_recharge_timedelta(manabar, recharge_pct_goal)
+
     def get_feed(self, start_entry_id=0, limit=100, raw_data=False, short_entries=False, account=None):
         """ Returns a list of items in an account’s feed
 
diff --git a/beem/blockchain.py b/beem/blockchain.py
index 5226da94f5fe0ba8c4aa731c67cecadb11f06e5d..0c7a9613e22c3d194b6bfb770c5d74d03e6b23cc 100644
--- a/beem/blockchain.py
+++ b/beem/blockchain.py
@@ -922,7 +922,7 @@ class Blockchain(object):
 
             >>> from beem.blockchain import Blockchain
             >>> blockchain = Blockchain()
-            >>> ret = blockchain.find_rc_accounts("test")
+            >>> ret = blockchain.find_rc_accounts(["test"])
             >>> len(ret) == 1
             True
 
diff --git a/beem/nodelist.py b/beem/nodelist.py
index a285e19719ec69044deaf8249c4e264142757d4f..a739fbd5b2e3d284142828e012076bb3af79da48 100644
--- a/beem/nodelist.py
+++ b/beem/nodelist.py
@@ -28,7 +28,21 @@ class NodeList(list):
         nodes = [
             {
                 "url": "https://api.steemit.com",
-                "version": "0.19.11",
+                "version": "0.20.2",
+                "type": "appbase",
+                "owner": "steemit",
+                "score": 100
+            },
+            {
+                "url": "https://steemd-appbase.steemit.com",
+                "version": "0.20.2",
+                "type": "appbase",
+                "owner": "steemit",
+                "score": 100
+            },
+            {
+                "url": "wss://steemd-appbase.steemit.com",
+                "version": "0.20.2",
                 "type": "appbase",
                 "owner": "steemit",
                 "score": 100
@@ -42,7 +56,7 @@ class NodeList(list):
             },
             {
                 "url": "https://appbasetest.timcliff.com",
-                "version": "0.19.11",
+                "version": "0.20.2",
                 "type": "appbase",
                 "owner": "timcliff",
                 "score": 10
diff --git a/beem/version.py b/beem/version.py
index ab30de6799be54b1b978ac21393d402fb1a86464..e567c425b51168aa204dfd5fb018f4dade307867 100644
--- a/beem/version.py
+++ b/beem/version.py
@@ -1,2 +1,2 @@
 """THIS FILE IS GENERATED FROM beem SETUP.PY."""
-version = '0.20.0'
+version = '0.20.1'
diff --git a/beemapi/version.py b/beemapi/version.py
index ab30de6799be54b1b978ac21393d402fb1a86464..e567c425b51168aa204dfd5fb018f4dade307867 100644
--- a/beemapi/version.py
+++ b/beemapi/version.py
@@ -1,2 +1,2 @@
 """THIS FILE IS GENERATED FROM beem SETUP.PY."""
-version = '0.20.0'
+version = '0.20.1'
diff --git a/beembase/version.py b/beembase/version.py
index ab30de6799be54b1b978ac21393d402fb1a86464..e567c425b51168aa204dfd5fb018f4dade307867 100644
--- a/beembase/version.py
+++ b/beembase/version.py
@@ -1,2 +1,2 @@
 """THIS FILE IS GENERATED FROM beem SETUP.PY."""
-version = '0.20.0'
+version = '0.20.1'
diff --git a/beemgraphenebase/version.py b/beemgraphenebase/version.py
index ab30de6799be54b1b978ac21393d402fb1a86464..e567c425b51168aa204dfd5fb018f4dade307867 100644
--- a/beemgraphenebase/version.py
+++ b/beemgraphenebase/version.py
@@ -1,2 +1,2 @@
 """THIS FILE IS GENERATED FROM beem SETUP.PY."""
-version = '0.20.0'
+version = '0.20.1'
diff --git a/setup.py b/setup.py
index be8dbb666874ec50651b07f76bc44bd9994cb70f..3797a987ac5bf3d45b52907698fd0a646e78fb10 100755
--- a/setup.py
+++ b/setup.py
@@ -16,7 +16,7 @@ except LookupError:
     ascii = codecs.lookup('ascii')
     codecs.register(lambda name, enc=ascii: {True: enc}.get(name == 'mbcs'))
 
-VERSION = '0.20.0'
+VERSION = '0.20.1'
 
 tests_require = ['mock >= 2.0.0', 'pytest', 'pytest-mock', 'parameterized']