diff --git a/README.rst b/README.rst
index 53e4203336494fc4d36dbc64f4891428d2b17586..65d2c2a61d74aed4649fb6e3a981674c533563fc 100644
--- a/README.rst
+++ b/README.rst
@@ -42,9 +42,11 @@ Current build status
    :target: https://codeclimate.com/github/holgern/beem/test_coverage
    :alt: Test Coverage
 
-Support
-=======
-You may find help at https://discord.gg/4HM592V. The discord channel can also be used to discuss things about beem.
+Support & Documentation
+=======================
+You may find help in the  `beem-discord-channel`_. The discord channel can also be used to discuss things about beem.
+
+A complete library documentation is available at  `beem.readthedocs.io`_.
 
 Installation
 ============
@@ -116,15 +118,11 @@ Signing and Verify can be fasten (200 %) by installing cryptography::
     conda install cryptography
     
 
-CLI tool bundled
-----------------
-I started to work on a CLI tool::
-
-    beempy
+CLI tool beempy
+---------------
+A command line tool is available. The help output shows the available commands:
 
-Documentation
-=============
-Documentation is available at http://beem.readthedocs.io/en/latest/
+    beempy --help
 
 Changelog
 =========
@@ -310,3 +308,5 @@ Acknowledgements
 .. _python-bitshares: https://github.com/xeroc/python-bitshares
 .. _Python: http://python.org
 .. _Anaconda: https://www.continuum.io
+.. _beem.readthedocs.io: http://beem.readthedocs.io/en/latest/
+.. _beem-discord-channel: https://discord.gg/4HM592V
diff --git a/beem/account.py b/beem/account.py
index 2682953776b29729e587c75c466e69050a54942e..817dd803ce40230e11900189e69755eb5de21ac9 100644
--- a/beem/account.py
+++ b/beem/account.py
@@ -44,14 +44,16 @@ class Account(BlockchainObject):
 
         .. code-block:: python
 
-            from beem.account import Account
-            account = Account("test")
-            print(account)
-            print(account.balances)
+            >>> from beem.account import Account
+            >>> account = Account("test")
+            >>> print(account)
+            <Account test>
+            >>> print(account.balances) # doctest: +SKIP
 
         .. note:: This class comes with its own caching function to reduce the
                   load on the API server. Instances of this class can be
-                  refreshed with ``Account.refresh()``.
+                  refreshed with ``Account.refresh()``. The chache can be cleared with
+                  ``Account.clear_cache()``
 
     """
 
@@ -168,7 +170,23 @@ class Account(BlockchainObject):
         return json.loads(str(json.dumps(output)))
 
     def getSimilarAccountNames(self, limit=5):
-        """ Returns limit similar accounts with name as array
+        """Depriated, please use get_similar_account_names"""
+        return self.get_similar_account_names(limit=limit)
+
+    def get_similar_account_names(self, limit=5):
+        """ Returns limit similar accounts with name as list
+
+        :param int limit: limits the number of accounts, which will be returned
+        :returns: Similar account names as list
+        :rtype: list
+
+        .. code-block:: python
+
+            >>> from beem.account import Account
+            >>> account = Account("test")
+            >>> len(account.get_similar_account_names(limit=5))
+            5
+
         """
         if self.steem.rpc.get_use_appbase():
             account = self.steem.rpc.list_accounts({'start': self.name, 'limit': limit}, api="database")
@@ -457,7 +475,7 @@ class Account(BlockchainObject):
     @property
     def available_balances(self):
         """ List balances of an account. This call returns instances of
-            :class:`steem.amount.Amount`.
+            :class:`beem.amount.Amount`.
         """
         amount_list = ["balance", "sbd_balance", "vesting_shares"]
         available_amount = []
@@ -497,10 +515,28 @@ class Account(BlockchainObject):
 
     @property
     def balances(self):
+        """ Returns all account balances as dictionary
+        """
         return self.get_balances()
 
     def get_balances(self):
+        """ Returns all account balances as dictionary
+
+            :returns: Account balances
+            :rtype: dictionary
 
+            Sample output:
+
+                .. code-block:: js
+
+                    {
+                        'available': [102.985 STEEM, 0.008 SBD, 146273.695970 VESTS],
+                        'savings': [0.000 STEEM, 0.000 SBD],
+                        'rewards': [0.000 STEEM, 0.000 SBD, 0.000000 VESTS],
+                        'total': [102.985 STEEM, 0.008 SBD, 146273.695970 VESTS]
+                    }
+
+        """
         return {
             'available': self.available_balances,
             'savings': self.saving_balances,
@@ -510,14 +546,30 @@ class Account(BlockchainObject):
 
     def get_balance(self, balances, symbol):
         """ Obtain the balance of a specific Asset. This call returns instances of
-            :class:`steem.amount.Amount`.
+            :class:`beem.amount.Amount`. Available balance types:
+
+            * "available"
+            * "saving"
+            * "reward"
+            * "total"
+
+            :param str balances: Defines the balance type
+            :param (str, dict) symbol: Can be "SBD", "STEEM" or "VESTS
+
+            .. code-block:: python
+
+                >>> from beem.account import Account
+                >>> account = Account("test")
+                >>> account.get_balance("rewards", "SBD")
+                0.000 SBD
+
         """
         if isinstance(balances, string_types):
             if balances == "available":
                 balances = self.available_balances
-            elif balances == "saving":
+            elif balances == "savings":
                 balances = self.saving_balances
-            elif balances == "reward":
+            elif balances == "rewards":
                 balances = self.reward_balances
             elif balances == "total":
                 balances = self.total_balances
@@ -533,8 +585,23 @@ class Account(BlockchainObject):
         return Amount(0, symbol, steem_instance=self.steem)
 
     def interest(self):
-        """ Caluclate interest for an account
+        """ Calculate interest for an account
+
             :param str account: Account name to get interest for
+            :rtype: dictionary
+
+            Sample output:
+
+            .. code-block:: js
+
+                {
+                    'interest': 0.0,
+                    'last_payment': datetime.datetime(2018, 1, 26, 5, 50, 27, tzinfo=<UTC>),
+                    'next_payment': datetime.datetime(2018, 2, 25, 5, 50, 27, tzinfo=<UTC>),
+                    'next_payment_duration': datetime.timedelta(-65, 52132, 684026),
+                    'interest_rate': 0.0
+                }
+
         """
         last_payment = (self["sbd_last_interest_payment"])
         next_payment = last_payment + timedelta(days=30)
@@ -547,17 +614,20 @@ class Account(BlockchainObject):
             "interest": interest_amount,
             "last_payment": last_payment,
             "next_payment": next_payment,
-            "next_payment_duration": next_payment - utc.localize(datetime.now()),
+            "next_payment_duration": next_payment - utc.localize(datetime.utcnow()),
             "interest_rate": interest_rate,
         }
 
     @property
     def is_fully_loaded(self):
         """ Is this instance fully loaded / e.g. all data available?
+
+            :rtype: bool
         """
         return (self.full)
 
     def ensure_full(self):
+        """Ensure that all data are loaded"""
         if not self.is_fully_loaded:
             self.full = True
             self.refresh()
@@ -573,7 +643,20 @@ class Account(BlockchainObject):
             return self.steem.rpc.get_account_bandwidth(account, bandwidth_type)
 
     def get_bandwidth(self):
-        """Returns used and allocated bandwidth"""
+        """ Returns used and allocated bandwidth
+
+            :rtype: dict
+
+            Sample output:
+
+                .. code-block:: js
+
+                    {
+                        'used': 0,
+                        'allocated': 2211037
+                    }
+
+        """
         account = self["name"]
         global_properties = self.steem.get_dynamic_global_properties()
         reserve_ratio = self.steem.get_reserve_ratio()
@@ -609,7 +692,11 @@ class Account(BlockchainObject):
         # print("bandwidth percent remaining: " + str(100 - (100 * used_bandwidth / allocated_bandwidth)))
 
     def get_owner_history(self, account=None):
-        """ get_owner_history """
+        """ get_owner_history
+
+            :rtype: list
+
+        """
         if account is None:
             account = self["name"]
         if self.steem.rpc.get_use_appbase():
@@ -618,7 +705,11 @@ class Account(BlockchainObject):
             return self.steem.rpc.get_owner_history(account)
 
     def get_conversion_requests(self, account=None):
-        """ get_owner_history """
+        """ Returns get_owner_history
+
+            :rtype: list
+
+        """
         if account is None:
             account = self["name"]
         if self.steem.rpc.get_use_appbase():
@@ -627,7 +718,11 @@ class Account(BlockchainObject):
             return self.steem.rpc.get_conversion_requests(account)
 
     def get_withdraw_routes(self, account=None):
-        """Returns withdraw_routes """
+        """ Returns withdraw_routes
+
+            :rtype: list
+
+        """
         if account is None:
             account = self["name"]
         if self.steem.rpc.get_use_appbase():
@@ -636,7 +731,11 @@ class Account(BlockchainObject):
             return self.steem.rpc.get_withdraw_routes(account, 'all')
 
     def get_recovery_request(self, account=None):
-        """ get_recovery_request """
+        """ Returns get_recovery_request
+
+            :rtype: list
+
+        """
         if account is None:
             account = self["name"]
         if self.steem.rpc.get_use_appbase():
@@ -687,7 +786,10 @@ class Account(BlockchainObject):
         return self["name"] in active_votes
 
     def virtual_op_count(self, until=None):
-        """Returns the number of individual account transactions"""
+        """ Returns the number of individual account transactions
+
+            :rtype: list
+        """
         if until is not None and isinstance(until, datetime):
             limit = until
             last_gen = self.history_reverse(limit=limit)
@@ -728,6 +830,20 @@ class Account(BlockchainObject):
     def curation_stats(self):
         """Returns the curation reward of the last 24h and 7d and the average
             of the last 7 days
+
+            :returns: Account curation
+            :rtype: dictionary
+
+            Sample output:
+
+            .. code-block:: js
+
+                {
+                    '24hr': 0.0,
+                    '7d': 0.0,
+                    'avg': 0.0
+                }
+
         """
         return {"24hr": self.get_curation_reward(days=1),
                 "7d": self.get_curation_reward(days=7),
@@ -736,10 +852,9 @@ class Account(BlockchainObject):
     def get_account_history(self, index, limit, order=-1, start=None, stop=None, use_block_num=True, only_ops=[], exclude_ops=[], raw_output=False):
         """ Returns a generator for individual account transactions. This call can be used in a
             ``for`` loop.
-            :param int index: first number of transactions to
-                return
-            :param int limit: limit number of transactions to
-                return
+
+            :param int index: first number of transactions to return
+            :param int limit: limit number of transactions to return
             :param int/datetime start: start number/date of transactions to
                 return (*optional*)
             :param int/datetime stop: stop number/date of transactions to
@@ -759,6 +874,7 @@ class Account(BlockchainObject):
                 The full list of operation ID's can be found in
                 beembase.operationids.ops.
                 Example: ['transfer', 'vote']
+
         """
         if order != -1 and order != 1:
             raise ValueError("order must be -1 or 1!")
@@ -859,27 +975,57 @@ class Account(BlockchainObject):
                 beembase.operationids.ops.
                 Example: ['transfer', 'vote']
 
-            Example::
+            .. testsetup:: *
+
                 from beem.account import Account
-                from beem.blockchain import Blockchain
                 from datetime import datetime
-                acc = Account("test")
+                acc = Account("gtg")
+
+            .. testcode::
+
+                from beem.account import Account
+                from datetime import datetime
+                acc = Account("gtg")
                 max_op_count = acc.virtual_op_count()
                 # Returns the 100 latest operations
-                for h in acc.history(start=max_op_count-100, stop=max_op_count, use_block_num=False):
-                    print(h)
+                acc_op = []
+                for h in acc.history(start=max_op_count - 99, stop=max_op_count, use_block_num=False):
+                    acc_op.append(h)
+                len(acc_op)
+
+            .. testoutput::
+
+                100
+
+            .. testcode::
 
-                b = Blockchain()
-                max_block = b.get_current_block_num()
+                acc = Account("test")
+                max_block = 21990141
                 # Returns the account operation inside the last 100 block. This can be empty.
-                for h in acc.history(start=max_block-100, stop=max_block, use_block_num=True):
-                    print(h)
+                acc_op = []
+                for h in acc.history(start=max_block - 99, stop=max_block, use_block_num=True):
+                    acc_op.append(h)
+                len(acc_op)
+
+            .. testoutput::
+
+                0
 
+            .. testcode::
+
+                acc = Account("test")
                 start_time = datetime(2018, 3, 1, 0, 0, 0)
-                stop_time = datetime(2018, 4, 1, 0, 0, 0)
+                stop_time = datetime(2018, 3, 2, 0, 0, 0)
                 # Returns the account operation from 1.4.2018 back to 1.3.2018
+                acc_op = []
                 for h in acc.history(start=start_time, stop=stop_time):
-                    print(h)
+                    acc_op.append(h)
+                len(acc_op)
+
+            .. testoutput::
+
+                0
+
         """
         _limit = batch_size
         max_index = self.virtual_op_count()
@@ -970,27 +1116,55 @@ class Account(BlockchainObject):
                 beembase.operationids.ops.
                 Example: ['transfer', 'vote']
 
-            Example::
+            .. testsetup::
+
                 from beem.account import Account
-                from beem.blockchain import Blockchain
                 from datetime import datetime
-                acc = Account("test")
+                acc = Account("gtg")
+
+            .. testcode::
+
+                from beem.account import Account
+                from datetime import datetime
+                acc = Account("gtg")
                 max_op_count = acc.virtual_op_count()
                 # Returns the 100 latest operations
-                for h in acc.history_reverse(start=max_op_count, stop=max_op_count-100, use_block_num=False):
-                    print(h)
+                acc_op = []
+                for h in acc.history_reverse(start=max_op_count, stop=max_op_count - 99, use_block_num=False):
+                    acc_op.append(h)
+                len(acc_op)
+
+            .. testoutput::
+
+                100
+
+            .. testcode::
 
-                b = Blockchain()
-                max_block = b.get_current_block_num()
+                max_block = 21990141
+                acc = Account("test")
                 # Returns the account operation inside the last 100 block. This can be empty.
+                acc_op = []
                 for h in acc.history_reverse(start=max_block, stop=max_block-100, use_block_num=True):
-                    print(h)
+                    acc_op.append(h)
+                len(acc_op)
+
+            .. testoutput::
+
+                0
+
+            .. testcode::
 
                 start_time = datetime(2018, 4, 1, 0, 0, 0)
                 stop_time = datetime(2018, 3, 1, 0, 0, 0)
                 # Returns the account operation from 1.4.2018 back to 1.3.2018
+                acc_op = []
                 for h in acc.history_reverse(start=start_time, stop=stop_time):
-                    print(h)
+                    acc_op.append(h)
+                len(acc_op)
+
+            .. testoutput::
+
+                0
 
         """
         _limit = batch_size
@@ -1050,22 +1224,27 @@ class Account(BlockchainObject):
 
     def mute(self, mute, account=None):
         """ Mute another account
+
             :param str mute: Mute this account
             :param str account: (optional) the account to allow access
                 to (defaults to ``default_account``)
+
         """
         return self.follow(mute, what=["ignore"], account=account)
 
     def unfollow(self, unfollow, account=None):
         """ Unfollow/Unmute another account's blog
+
             :param str unfollow: Unfollow/Unmute this account
             :param str account: (optional) the account to allow access
                 to (defaults to ``default_account``)
+
         """
         return self.follow(unfollow, what=[], account=account)
 
     def follow(self, other, what=["blog"], account=None):
         """ Follow/Unfollow/Mute/Unmute another account's blog
+
             :param str other: Follow this account
             :param list what: List of states to follow.
                 ``['blog']`` means to follow ``other``,
@@ -1074,6 +1253,7 @@ class Account(BlockchainObject):
                 (defaults to ``['blog']``)
             :param str account: (optional) the account to allow access
                 to (defaults to ``default_account``)
+
         """
         if not account:
             account = self["name"]
@@ -1094,10 +1274,12 @@ class Account(BlockchainObject):
 
     def update_account_profile(self, profile, account=None):
         """ Update an account's meta data (json_meta)
+
             :param dict json: The meta data to use (i.e. use Profile() from
                 account.py)
             :param str account: (optional) the account to allow access
                 to (defaults to ``default_account``)
+
         """
         if not account:
             account = self
@@ -1122,6 +1304,7 @@ class Account(BlockchainObject):
             :param list witnesses: list of Witness name or id
             :param str account: (optional) the account to allow access
                 to (defaults to ``default_account``)
+
         """
         if not account:
             account = self["name"]
@@ -1254,11 +1437,13 @@ class Account(BlockchainObject):
 
     def convert(self, amount, account=None, request_id=None):
         """ Convert SteemDollars to Steem (takes one week to settle)
+
             :param float amount: number of VESTS to withdraw
             :param str account: (optional) the source account for the transfer
-            if not ``default_account``
+                if not ``default_account``
             :param str request_id: (optional) identifier for tracking the
-            conversion`
+                conversion`
+
         """
         if not account:
             account = self
@@ -1287,13 +1472,15 @@ class Account(BlockchainObject):
 
     def transfer_to_savings(self, amount, asset, memo, to=None, account=None):
         """ Transfer SBD or STEEM into a 'savings' account.
+
             :param float amount: STEEM or SBD amount
             :param float asset: 'STEEM' or 'SBD'
             :param str memo: (optional) Memo
             :param str to: (optional) the source account for the transfer if
-            not ``default_account``
+                not ``default_account``
             :param str account: (optional) the source account for the transfer
-            if not ``default_account``
+                if not ``default_account``
+
         """
         if asset not in ['STEEM', 'SBD']:
             raise AssertionError()
@@ -1325,15 +1512,17 @@ class Account(BlockchainObject):
                               to=None,
                               account=None):
         """ Withdraw SBD or STEEM from 'savings' account.
+
             :param float amount: STEEM or SBD amount
             :param float asset: 'STEEM' or 'SBD'
             :param str memo: (optional) Memo
             :param str request_id: (optional) identifier for tracking or
-            cancelling the withdrawal
+                cancelling the withdrawal
             :param str to: (optional) the source account for the transfer if
-            not ``default_account``
+                not ``default_account``
             :param str account: (optional) the source account for the transfer
-            if not ``default_account``
+                if not ``default_account``
+
         """
         if asset not in ['STEEM', 'SBD']:
             raise AssertionError()
@@ -1364,10 +1553,12 @@ class Account(BlockchainObject):
 
     def cancel_transfer_from_savings(self, request_id, account=None):
         """ Cancel a withdrawal from 'savings' account.
+
             :param str request_id: Identifier for tracking or cancelling
-            the withdrawal
+                the withdrawal
             :param str account: (optional) the source account for the transfer
-            if not ``default_account``
+                if not ``default_account``
+
         """
         if not account:
             account = self
@@ -1390,12 +1581,13 @@ class Account(BlockchainObject):
         By default, this will claim ``all`` outstanding balances. To bypass
         this behaviour, set desired claim amount by setting any of
         `reward_steem`, `reward_sbd` or `reward_vests`.
-        Args:
-            reward_steem (string): Amount of STEEM you would like to claim.
-            reward_sbd (string): Amount of SBD you would like to claim.
-            reward_vests (string): Amount of VESTS you would like to claim.
-            account (string): The source account for the claim if not
+
+        :param str reward_steem: Amount of STEEM you would like to claim.
+        :param str reward_sbd: Amount of SBD you would like to claim.
+        :param str reward_vests: Amount of VESTS you would like to claim.
+        :param str account: The source account for the claim if not
             ``default_account`` is used.
+
         """
         if not account:
             account = self
@@ -1444,12 +1636,12 @@ class Account(BlockchainObject):
     def delegate_vesting_shares(self, to_account, vesting_shares,
                                 account=None):
         """ Delegate SP to another account.
-        Args:
-            to_account (string): Account we are delegating shares to
+
+        :param str to_account: Account we are delegating shares to
             (delegatee).
-            vesting_shares (string): Amount of VESTS to delegate eg. `10000
+        :param str vesting_shares: Amount of VESTS to delegate eg. `10000
             VESTS`.
-            account (string): The source account (delegator). If not specified,
+        :param str account: The source account (delegator). If not specified,
             ``default_account`` is used.
         """
         if not account:
@@ -1474,10 +1666,12 @@ class Account(BlockchainObject):
 
     def withdraw_vesting(self, amount, account=None):
         """ Withdraw VESTS from the vesting account.
+
             :param float amount: number of VESTS to withdraw over a period of
-            104 weeks
+                104 weeks
             :param str account: (optional) the source account for the transfer
-            if not ``default_account``
+                if not ``default_account``
+
     """
         if not account:
             account = self
@@ -1507,6 +1701,7 @@ class Account(BlockchainObject):
         """ Set up a vesting withdraw route. When vesting shares are
             withdrawn, they will be routed to these accounts based on the
             specified weights.
+
             :param str to: Recipient of the vesting withdrawal
             :param float percentage: The percent of the withdraw to go
                 to the 'to' account.
@@ -1514,6 +1709,7 @@ class Account(BlockchainObject):
             :param bool auto_vest: Set to true if the from account
                 should receive the VESTS as VESTS, or false if it should
                 receive them as STEEM. (defaults to ``False``)
+
         """
         if not account:
             account = self
diff --git a/beem/amount.py b/beem/amount.py
index 4785604a2aa3c6396de83a7e6f701e23477f652a..b96b275d1512c19a9bf59f90790171f7350a37f7 100644
--- a/beem/amount.py
+++ b/beem/amount.py
@@ -42,7 +42,7 @@ class Amount(dict):
         Instances of this class can be used in regular mathematical expressions
         (``+-*/%``) such as:
 
-        .. code-block:: python
+        .. testcode::
 
             from beem.amount import Amount
             from beem.asset import Asset
@@ -54,6 +54,11 @@ class Amount(dict):
             a += b
             a /= 2.0
 
+        .. testoutput::
+
+            2.000 STEEM
+            2.000 STEEM
+
     """
     def __init__(self, amount, asset=None, new_appbase_format=False, steem_instance=None):
         self["asset"] = {}
diff --git a/beem/asciichart.py b/beem/asciichart.py
index 7dd17eef61f9af237443d5d57a656490d904e48e..b88223449cc43216094df88c7d6ecbf63c5eb961 100644
--- a/beem/asciichart.py
+++ b/beem/asciichart.py
@@ -78,7 +78,8 @@ class AsciiChart(object):
 
             :param list series: time series to plot
 
-            .. code-block:: python
+            .. testcode::
+
                 from beem.asciichart import AsciiChart
                 chart = AsciiChart()
                 series = [1, 2, 3, 7, 2, -4, -2]
@@ -87,6 +88,7 @@ class AsciiChart(object):
                 chart.add_axis()
                 chart.add_curve(series)
                 print(str(chart))
+
         """
         self.minimum = min(series)
         self.maximum = max(series)
@@ -127,7 +129,8 @@ class AsciiChart(object):
     def plot(self, series, return_str=False):
         """All in one function for plotting
 
-            .. code-block:: python
+            .. testcode::
+
                 from beem.asciichart import AsciiChart
                 chart = AsciiChart()
                 series = [1, 2, 3, 7, 2, -4, -2]
@@ -146,7 +149,8 @@ class AsciiChart(object):
     def new_chart(self, minimum=None, maximum=None, n=None):
         """Clears the canvas
 
-            .. code-block:: python
+            .. testcode::
+
                 from beem.asciichart import AsciiChart
                 chart = AsciiChart()
                 series = [1, 2, 3, 7, 2, -4, -2]
@@ -155,6 +159,7 @@ class AsciiChart(object):
                 chart.add_axis()
                 chart.add_curve(series)
                 print(str(chart))
+
         """
         if minimum is not None:
             self.minimum = minimum
@@ -168,7 +173,8 @@ class AsciiChart(object):
     def add_axis(self):
         """Adds a y-axis to the canvas
 
-            .. code-block:: python
+            .. testcode::
+
                 from beem.asciichart import AsciiChart
                 chart = AsciiChart()
                 series = [1, 2, 3, 7, 2, -4, -2]
@@ -177,6 +183,7 @@ class AsciiChart(object):
                 chart.add_axis()
                 chart.add_curve(series)
                 print(str(chart))
+
         """
         # axis and labels
         interval = abs(float(self.maximum) - float(self.minimum))
@@ -204,7 +211,8 @@ class AsciiChart(object):
 
             :param list series: List width float data points
 
-            .. code-block:: python
+            .. testcode::
+
                 from beem.asciichart import AsciiChart
                 chart = AsciiChart()
                 series = [1, 2, 3, 7, 2, -4, -2]
diff --git a/beem/asset.py b/beem/asset.py
index 703efb4ae5c71b6dd004f17c11ef99f634282bdd..bfccc20067527a9dc7d6f869c163ed5dc0b4ea66 100644
--- a/beem/asset.py
+++ b/beem/asset.py
@@ -17,7 +17,6 @@ class Asset(BlockchainObject):
         :param beem.steem.Steem steem_instance: Steem
             instance
         :returns: All data of an asset
-        :rtype: dict
 
         .. note:: This class comes with its own caching function to reduce the
                   load on the API server. Instances of this class can be
diff --git a/beem/block.py b/beem/block.py
index d66e4be61007717a97d99e8e681364e651b6e104..b6b898690a3a1d83a08ff7e2ab0870ef3c43773e 100644
--- a/beem/block.py
+++ b/beem/block.py
@@ -24,9 +24,10 @@ class Block(BlockchainObject):
 
         .. code-block:: python
 
-            from beem.block import Block
-            block = Block(1)
-            print(block)
+            >>> from beem.block import Block
+            >>> block = Block(1)
+            >>> print(block)
+            <Block 1>
 
         .. note:: This class comes with its own caching function to reduce the
                   load on the API server. Instances of this class can be
diff --git a/beem/blockchain.py b/beem/blockchain.py
index 9601d7121aa7a6137af5c1b871fc7e244251fedb..23dac55690a5d657061a633d94f5f0d5b93d4dda 100644
--- a/beem/blockchain.py
+++ b/beem/blockchain.py
@@ -40,25 +40,41 @@ class Blockchain(object):
 
         This class let's you deal with blockchain related data and methods.
         Read blockchain related data:
-        .. code-block:: python
+
+        .. testsetup::
 
             from beem.blockchain import Blockchain
             chain = Blockchain()
 
         Read current block and blockchain info
-        .. code-block:: python
+
+        .. testcode::
+
             print(chain.get_current_block())
             print(chain.steem.info())
 
-        Monitor for new blocks ..
-        .. code-block:: python
-            for block in chain.blocks():
-                print(block)
+        Monitor for new blocks. When ``stop`` is not set, monitoring will never stop.
+
+        .. testcode::
+
+            blocks = []
+            current_num = chain.get_current_block_num()
+            for block in chain.blocks(start=current_num - 99, stop=current_num):
+                blocks.append(block)
+            len(blocks)
+
+        .. testoutput::
+
+            100
 
         or each operation individually:
-        .. code-block:: python
-            for operations in chain.ops():
-                print(operations)
+
+        .. testcode::
+
+            ops = []
+            current_num = chain.get_current_block_num()
+            for operation in chain.ops(start=current_num - 99, stop=current_num):
+                ops.append(operation)
 
     """
     def __init__(
@@ -261,9 +277,11 @@ class Blockchain(object):
     def wait_for_and_get_block(self, block_number, blocks_waiting_for=None, last_fetched_block_num=None):
         """ Get the desired block from the chain, if the current head block is smaller (for both head and irreversible)
             then we wait, but a maxmimum of blocks_waiting_for * max_block_wait_repetition time before failure.
+
             :param int block_number: desired block number
             :param int blocks_waiting_for: (default) difference between block_number and current head
-                                           how many blocks we are willing to wait, positive int
+                how many blocks we are willing to wait, positive int
+
         """
         if last_fetched_block_num is None or (last_fetched_block_num is not None and block_number > last_fetched_block_num):
             if not blocks_waiting_for:
@@ -319,9 +337,11 @@ class Blockchain(object):
 
             :param int start: Starting block
             :param int stop: Stop at this block, if set to None, the current_block_num is taken
-            :param dict add_to_ops_stat, if set, the result is added to add_to_ops_stat
-            :param bool verbose, if True, the current block number and timestamp is printed
+            :param dict add_to_ops_stat: if set, the result is added to add_to_ops_stat
+            :param bool verbose: if True, the current block number and timestamp is printed
+
             This call returns a dict with all possible operations and their occurence.
+
         """
         if add_to_ops_stat is None:
             import beembase.operationids
diff --git a/beem/comment.py b/beem/comment.py
index 6b18568aacb568f97609f59e1ff981e64b099d00..fd8e0b3fa0e63de96201c07b4dff01bcbe5c34cf 100644
--- a/beem/comment.py
+++ b/beem/comment.py
@@ -239,9 +239,11 @@ class Comment(BlockchainObject):
 
     def upvote(self, weight=+100, voter=None):
         """ Upvote the post
+
             :param float weight: (optional) Weight for posting (-100.0 -
-            +100.0) defaults to +100.0
+                +100.0) defaults to +100.0
             :param str voter: (optional) Voting account
+
         """
         if self.get('net_rshares', None) is None:
             raise VotingInvalidOnArchivedPost
@@ -249,9 +251,11 @@ class Comment(BlockchainObject):
 
     def downvote(self, weight=-100, voter=None):
         """ Downvote the post
+
             :param float weight: (optional) Weight for posting (-100.0 -
-            +100.0) defaults to -100.0
+                +100.0) defaults to -100.0
             :param str voter: (optional) Voting account
+
         """
         if self.get('net_rshares', None) is None:
             raise VotingInvalidOnArchivedPost
@@ -259,11 +263,13 @@ class Comment(BlockchainObject):
 
     def vote(self, weight, account=None, identifier=None, **kwargs):
         """ Vote for a post
+
             :param str identifier: Identifier for the post to upvote Takes
-                                   the form ``@author/permlink``
+                the form ``@author/permlink``
             :param float weight: Voting weight. Range: -100.0 - +100.0. May
-                                 not be 0.0
+                not be 0.0
             :param str account: Voter to use for voting. (Optional)
+
             If ``voter`` is not defines, the ``default_account`` will be taken
             or a ValueError will be raised
         """
@@ -299,11 +305,13 @@ class Comment(BlockchainObject):
 
     def edit(self, body, meta=None, replace=False):
         """ Edit an existing post
+
             :param str body: Body of the reply
             :param json meta: JSON meta object that can be attached to the
-                              post. (optional)
+                post. (optional)
             :param bool replace: Instead of calculating a *diff*, replace
-                                 the post entirely (defaults to ``False``)
+                the post entirely (defaults to ``False``)
+
         """
         if not meta:
             meta = {}
@@ -338,13 +346,15 @@ class Comment(BlockchainObject):
 
     def reply(self, body, title="", author="", meta=None):
         """ Reply to an existing post
+
             :param str body: Body of the reply
             :param str title: Title of the reply post
             :param str author: Author of reply (optional) if not provided
-                               ``default_user`` will be used, if present, else
-                               a ``ValueError`` will be raised.
+                ``default_user`` will be used, if present, else
+                a ``ValueError`` will be raised.
             :param json meta: JSON meta object that can be attached to the
-                              post. (optional)
+                post. (optional)
+
         """
         return self.steem.post(
             title,
@@ -355,9 +365,11 @@ class Comment(BlockchainObject):
 
     def delete(self, account=None, identifier=None):
         """ Delete an existing post/comment
+
             :param str identifier: Identifier for the post to upvote Takes
-                                   the form ``@author/permlink``
+                the form ``@author/permlink``
             :param str account: Voter to use for voting. (Optional)
+
             If ``voter`` is not defines, the ``default_account`` will be taken
             or a ValueError will be raised
         """
@@ -379,9 +391,11 @@ class Comment(BlockchainObject):
 
     def resteem(self, identifier=None, account=None):
         """ Resteem a post
+
             :param str identifier: post identifier (@<account>/<permlink>)
             :param str account: (optional) the account to allow access
                 to (defaults to ``default_account``)
+
         """
         if not account:
             account = self.steem.configStorage.get("default_account")
diff --git a/beem/discussions.py b/beem/discussions.py
index ffcdf681be2f6ece4fe3606b081048a906e18f20..ec4e0a2a2bfb195b35fd6eec372b246b697537ee 100644
--- a/beem/discussions.py
+++ b/beem/discussions.py
@@ -12,17 +12,24 @@ log = logging.getLogger(__name__)
 
 
 class Query(dict):
-    """
-    :param int limit
-    :param str tag
-    :param int truncate_body
-    :param array filter_tags
-    :param array select_authors
-    :param array select_tags
-    :param str start_author
-    :param str start_permlink
-    :param str parent_author
-    :param str parent_permlink
+    """ Query to be used for all discussion queries
+
+        :param int limit: limits the number of posts
+        :param str tag: tag query
+        :param int truncate_body:
+        :param array filter_tags:
+        :param array select_authors:
+        :param array select_tags:
+        :param str start_author:
+        :param str start_permlink:
+        :param str parent_author:
+        :param str parent_permlink:
+
+        .. testcode::
+
+            from beem.discussions import Query
+            query = Query(limit=10, tag="steemit")
+
     """
     def __init__(self, limit=0, tag="", truncate_body=0,
                  filter_tags=[], select_authors=[], select_tags=[],
@@ -40,10 +47,11 @@ class Query(dict):
 
 
 class Discussions_by_trending(list):
-    """ get_discussions_by_trending
+    """ Get Discussions by trending
+
+        :param beem.discussions.Query: discussion_query
+        :param beem.steem.Steem steem_instance: Steem instance
 
-        :param Query discussion_query
-        :param steem steem_instance: Steem() instance to use when accesing a RPC
     """
     def __init__(self, discussion_query, steem_instance=None):
         self.steem = steem_instance or shared_steem_instance()
@@ -62,10 +70,11 @@ class Discussions_by_trending(list):
 
 
 class Comment_discussions_by_payout(list):
-    """ get_comment_discussions_by_payout
+    """ Get comment_discussions_by_payout
+
+        :param beem.discussions.Query: discussion_query
+        :param beem.steem.Steem steem_instance: Steem instance
 
-        :param str discussion_query
-        :param steem steem_instance: Steem() instance to use when accesing a RPC
     """
     def __init__(self, discussion_query, steem_instance=None):
         self.steem = steem_instance or shared_steem_instance()
@@ -84,10 +93,10 @@ class Comment_discussions_by_payout(list):
 
 
 class Post_discussions_by_payout(list):
-    """ get_post_discussions_by_payout
+    """ Get post_discussions_by_payout
 
-        :param str discussion_query
-        :param steem steem_instance: Steem() instance to use when accesing a RPC
+        :param beem.discussions.Query: discussion_query
+        :param beem.steem.Steem steem_instance: Steem instance
     """
     def __init__(self, discussion_query, steem_instance=None):
         self.steem = steem_instance or shared_steem_instance()
@@ -106,10 +115,10 @@ class Post_discussions_by_payout(list):
 
 
 class Discussions_by_created(list):
-    """ get_discussions_by_created
+    """ Get discussions_by_created
 
-        :param str discussion_query
-        :param steem steem_instance: Steem() instance to use when accesing a RPC
+        :param beem.discussions.Query: discussion_query
+        :param beem.steem.Steem steem_instance: Steem instance
     """
     def __init__(self, discussion_query, steem_instance=None):
         self.steem = steem_instance or shared_steem_instance()
@@ -150,11 +159,11 @@ class Discussions_by_active(list):
 
 
 class Discussions_by_cashout(list):
-    """ get_discussions_by_cashout. This query seems to be broken at the moment.
+    """ Get discussions_by_cashout. This query seems to be broken at the moment.
         The output is always empty.
 
-        :param str discussion_query
-        :param steem steem_instance: Steem() instance to use when accesing a RPC
+        :param beem.discussions.Query: discussion_query
+        :param beem.steem.Steem steem_instance: Steem instance
     """
     def __init__(self, discussion_query, steem_instance=None):
         self.steem = steem_instance or shared_steem_instance()
@@ -173,10 +182,10 @@ class Discussions_by_cashout(list):
 
 
 class Discussions_by_votes(list):
-    """ get_discussions_by_votes
+    """ Get discussions_by_votes
 
-        :param str discussion_query
-        :param steem steem_instance: Steem() instance to use when accesing a RPC
+        :param beem.discussions.Query: discussion_query
+        :param beem.steem.Steem steem_instance: Steem instance
     """
     def __init__(self, discussion_query, steem_instance=None):
         self.steem = steem_instance or shared_steem_instance()
@@ -195,10 +204,10 @@ class Discussions_by_votes(list):
 
 
 class Discussions_by_children(list):
-    """ get_discussions_by_children
+    """ Get discussions by children
 
-        :param str discussion_query
-        :param steem steem_instance: Steem() instance to use when accesing a RPC
+        :param beem.discussions.Query: discussion_query
+        :param beem.steem.Steem steem_instance: Steem instance
     """
     def __init__(self, discussion_query, steem_instance=None):
         self.steem = steem_instance or shared_steem_instance()
@@ -217,10 +226,10 @@ class Discussions_by_children(list):
 
 
 class Discussions_by_hot(list):
-    """ get_discussions_by_hot
+    """ Get discussions by hot
 
-        :param str discussion_query
-        :param steem steem_instance: Steem() instance to use when accesing a RPC
+        :param beem.discussions.Query: discussion_query
+        :param beem.steem.Steem steem_instance: Steem instance
     """
     def __init__(self, discussion_query, steem_instance=None):
         self.steem = steem_instance or shared_steem_instance()
@@ -239,10 +248,10 @@ class Discussions_by_hot(list):
 
 
 class Discussions_by_feed(list):
-    """ get_discussions_by_feed
+    """ Get discussions by feed
 
-        :param str discussion_query, tag musst be set to a username
-        :param steem steem_instance: Steem() instance to use when accesing a RPC
+        :param beem.discussions.Query: discussion_query, tag musst be set to a username
+        :param beem.steem.Steem steem_instance: Steem instance
     """
     def __init__(self, discussion_query, steem_instance=None):
         self.steem = steem_instance or shared_steem_instance()
@@ -265,10 +274,10 @@ class Discussions_by_feed(list):
 
 
 class Discussions_by_blog(list):
-    """ get_discussions_by_blog
+    """ Get discussions by blog
 
-        :param str discussion_query, tag musst be set to a username
-        :param steem steem_instance: Steem() instance to use when accesing a RPC
+        :param beem.discussions.Query: discussion_query, tag musst be set to a username
+        :param beem.steem.Steem steem_instance: Steem instance
     """
     def __init__(self, discussion_query, steem_instance=None):
         self.steem = steem_instance or shared_steem_instance()
@@ -291,10 +300,10 @@ class Discussions_by_blog(list):
 
 
 class Discussions_by_comments(list):
-    """ get_discussions_by_comments
+    """ Get discussions by comments
 
-        :param str discussion_query
-        :param steem steem_instance: Steem() instance to use when accesing a RPC
+        :param beem.discussions.Query: discussion_query
+        :param beem.steem.Steem steem_instance: Steem instance
     """
     def __init__(self, discussion_query, steem_instance=None):
         self.steem = steem_instance or shared_steem_instance()
@@ -313,10 +322,10 @@ class Discussions_by_comments(list):
 
 
 class Discussions_by_promoted(list):
-    """ get_discussions_by_promoted
+    """ Get discussions by promoted
 
-        :param str discussion_query
-        :param steem steem_instance: Steem() instance to use when accesing a RPC
+        :param beem.discussions.Query: discussion_query
+        :param beem.steem.Steem steem_instance: Steem instance
     """
     def __init__(self, discussion_query, steem_instance=None):
         self.steem = steem_instance or shared_steem_instance()
diff --git a/beem/instance.py b/beem/instance.py
index 2efe17fe1546da98cb7dc5bc3850f42ce82ceef2..ec89ca247532e3f5db3d095cac7b371c943b81d1 100644
--- a/beem/instance.py
+++ b/beem/instance.py
@@ -38,7 +38,7 @@ def set_shared_steem_instance(steem_instance):
     """ This method allows us to override default steem instance for all users of
         ``SharedInstance.instance``.
 
-        :param steem.steem.Steem steem_instance: Steem instance
+        :param beem.steem.Steem steem_instance: Steem instance
     """
     clear_cache()
     SharedInstance.instance = steem_instance
diff --git a/beem/market.py b/beem/market.py
index 21606fd9e42462319aff3c4e5149db324a06b839..594603f346d4a419cfba362447137b3ac4f966b8 100644
--- a/beem/market.py
+++ b/beem/market.py
@@ -121,12 +121,14 @@ class Market(dict):
 
             .. code-block:: js
 
-                 {'highest_bid': 0.30100226633322913,
-                  'latest': 0.0,
-                  'lowest_ask': 0.3249636958897082,
-                  'percent_change': 0.0,
-                  'sbd_volume': 108329611.0,
-                  'steem_volume': 355094043.0}
+                 {
+                    'highest_bid': 0.30100226633322913,
+                    'latest': 0.0,
+                    'lowest_ask': 0.3249636958897082,
+                    'percent_change': 0.0,
+                    'sbd_volume': 108329611.0,
+                    'steem_volume': 355094043.0
+                }
 
         """
         data = {}
@@ -186,22 +188,58 @@ class Market(dict):
     def orderbook(self, limit=25, raw_data=False):
         """ Returns the order book for SBD/STEEM market.
             :param int limit: Limit the amount of orders (default: 25)
-            Sample output:
-            .. code-block:: js
-                {'bids': [0.003679 USD/BTS (1.9103 USD|519.29602 BTS),
-                0.003676 USD/BTS (299.9997 USD|81606.16394 BTS),
-                0.003665 USD/BTS (288.4618 USD|78706.21881 BTS),
-                0.003665 USD/BTS (3.5285 USD|962.74409 BTS),
-                0.003665 USD/BTS (72.5474 USD|19794.41299 BTS)],
-                'asks': [0.003738 USD/BTS (36.4715 USD|9756.17339 BTS),
-                0.003738 USD/BTS (18.6915 USD|5000.00000 BTS),
-                0.003742 USD/BTS (182.6881 USD|48820.22081 BTS),
-                0.003772 USD/BTS (4.5200 USD|1198.14798 BTS),
-                0.003799 USD/BTS (148.4975 USD|39086.59741 BTS)]}
+
+            Sample output (raw_data=False):
+                .. code-block:: js
+
+                    {
+                        'asks': [
+                            380.510 STEEM 460.291 SBD @ 1.209669 SBD/STEEM,
+                            53.785 STEEM 65.063 SBD @ 1.209687 SBD/STEEM
+                        ],
+                        'bids': [
+                            0.292 STEEM 0.353 SBD @ 1.208904 SBD/STEEM,
+                            8.498 STEEM 10.262 SBD @ 1.207578 SBD/STEEM
+                        ],
+                        'asks_date': [
+                            datetime.datetime(2018, 4, 30, 21, 7, 24, tzinfo=<UTC>),
+                            datetime.datetime(2018, 4, 30, 18, 12, 18, tzinfo=<UTC>)
+                        ],
+                        'bids_date': [
+                            datetime.datetime(2018, 4, 30, 21, 1, 21, tzinfo=<UTC>),
+                            datetime.datetime(2018, 4, 30, 20, 38, 21, tzinfo=<UTC>)
+                        ]
+                    }
+
+            Sample output (raw_data=True):
+                .. code-block:: js
+
+                    {
+                        'asks': [
+                            {
+                                'order_price': {'base': '8.000 STEEM', 'quote': '9.618 SBD'},
+                                'real_price': '1.20225000000000004',
+                                'steem': 4565,
+                                'sbd': 5488,
+                                'created': '2018-04-30T21:12:45'
+                            }
+                        ],
+                        'bids': [
+                            {
+                                'order_price': {'base': '10.000 SBD', 'quote': '8.333 STEEM'},
+                                'real_price': '1.20004800192007677',
+                                'steem': 8333,
+                                'sbd': 10000,
+                                'created': '2018-04-30T20:29:33'
+                            }
+                        ]
+                    }
+
             .. note:: Each bid is an instance of
                 class:`beem.price.Order` and thus carries the keys
                 ``base``, ``quote`` and ``price``. From those you can
                 obtain the actual amounts for sale
+
         """
         self.steem.rpc.set_next_node_on_empty_reply(True)
         if self.steem.rpc.get_use_appbase():
@@ -228,22 +266,32 @@ class Market(dict):
             specify "all" to get the orderbooks of all markets.
 
             :param int limit: Limit the amount of orders (default: 25)
+            :param bool raw_data: when False, FilledOrder objects will be
+                returned
 
-            Sample output:
+            Sample output (raw_data=False):
 
-            .. code-block:: js
+                .. code-block:: js
 
-                {'bids': [0.003679 USD/BTS (1.9103 USD|519.29602 BTS),
-                0.003676 USD/BTS (299.9997 USD|81606.16394 BTS),
-                0.003665 USD/BTS (288.4618 USD|78706.21881 BTS),
-                0.003665 USD/BTS (3.5285 USD|962.74409 BTS),
-                0.003665 USD/BTS (72.5474 USD|19794.41299 BTS)],
-                'asks': [0.003738 USD/BTS (36.4715 USD|9756.17339 BTS),
-                0.003738 USD/BTS (18.6915 USD|5000.00000 BTS),
-                0.003742 USD/BTS (182.6881 USD|48820.22081 BTS),
-                0.003772 USD/BTS (4.5200 USD|1198.14798 BTS),
-                0.003799 USD/BTS (148.4975 USD|39086.59741 BTS)]}
+                    [
+                        (2018-04-30 21:00:54+00:00) 0.267 STEEM 0.323 SBD @ 1.209738 SBD/STEEM,
+                        (2018-04-30 20:59:30+00:00) 0.131 STEEM 0.159 SBD @ 1.213740 SBD/STEEM,
+                        (2018-04-30 20:55:45+00:00) 0.093 STEEM 0.113 SBD @ 1.215054 SBD/STEEM,
+                        (2018-04-30 20:55:30+00:00) 26.501 STEEM 32.058 SBD @ 1.209690 SBD/STEEM,
+                        (2018-04-30 20:55:18+00:00) 2.108 STEEM 2.550 SBD @ 1.209677 SBD/STEEM,
+                    ]
 
+            Sample output (raw_data=True):
+
+                .. code-block:: js
+
+                    [
+                        {'date': '2018-04-30T21:02:45', 'current_pays': '0.235 SBD', 'open_pays': '0.194 STEEM'},
+                        {'date': '2018-04-30T21:02:03', 'current_pays': '24.494 SBD', 'open_pays': '20.248 STEEM'},
+                        {'date': '2018-04-30T20:48:30', 'current_pays': '175.464 STEEM', 'open_pays': '211.955 SBD'},
+                        {'date': '2018-04-30T20:48:30', 'current_pays': '0.999 STEEM', 'open_pays': '1.207 SBD'},
+                        {'date': '2018-04-30T20:47:54', 'current_pays': '0.273 SBD', 'open_pays': '0.225 STEEM'},
+                    ]
 
             .. note:: Each bid is an instance of
                 class:`steem.price.Order` and thus carries the keys
@@ -349,27 +397,33 @@ class Market(dict):
 
     def market_history(self, bucket_seconds=300, start_age=3600, end_age=0):
         """ Return the market history (filled orders).
+
             :param int bucket_seconds: Bucket size in seconds (see
-            `returnMarketHistoryBuckets()`)
+                `returnMarketHistoryBuckets()`)
             :param int start_age: Age (in seconds) of the start of the
-            window (default: 1h/3600)
+                window (default: 1h/3600)
             :param int end_age: Age (in seconds) of the end of the window
-            (default: now/0)
+                (default: now/0)
+
             Example:
-            .. code-block:: js
-                 {'close_sbd': 2493387,
-                  'close_steem': 7743431,
-                  'high_sbd': 1943872,
-                  'high_steem': 5999610,
-                  'id': '7.1.5252',
-                  'low_sbd': 534928,
-                  'low_steem': 1661266,
-                  'open': '2016-07-08T11:25:00',
-                  'open_sbd': 534928,
-                  'open_steem': 1661266,
-                  'sbd_volume': 9714435,
-                  'seconds': 300,
-                  'steem_volume': 30088443},
+                .. code-block:: js
+
+                    {
+                        'close_sbd': 2493387,
+                        'close_steem': 7743431,
+                        'high_sbd': 1943872,
+                        'high_steem': 5999610,
+                        'id': '7.1.5252',
+                        'low_sbd': 534928,
+                        'low_steem': 1661266,
+                        'open': '2016-07-08T11:25:00',
+                        'open_sbd': 534928,
+                        'open_steem': 1661266,
+                        'sbd_volume': 9714435,
+                        'seconds': 300,
+                        'steem_volume': 30088443
+                    }
+
         """
         buckets = self.market_history_buckets()
         if bucket_seconds < 5 and bucket_seconds >= 0:
@@ -440,18 +494,18 @@ class Market(dict):
             :param bool killfill: flag that indicates if the order shall be killed if it is not filled (defaults to False)
             :param string account: Account name that executes that order
             :param string returnOrderId: If set to "head" or "irreversible" the call will wait for the tx to appear in
-                                        the head/irreversible block and add the key "orderid" to the tx output
+                the head/irreversible block and add the key "orderid" to the tx output
 
-            Prices/Rates are denoted in 'base', i.e. the USD_BTS market
-            is priced in BTS per USD.
+            Prices/Rates are denoted in 'base', i.e. the SBD_STEEM market
+            is priced in STEEM per SBD.
 
-            **Example:** in the USD_BTS market, a price of 300 means
-            a USD is worth 300 BTS
+            **Example:** in the SBD_STEEM market, a price of 300 means
+            a SBD is worth 300 STEEM
 
             .. note::
 
                 All prices returned are in the **reversed** orientation as the
-                market. I.e. in the BTC/BTS market, prices are BTS per BTC.
+                market. I.e. in the STEEM/SBD market, prices are SBD per STEEM.
                 That way you can multiply prices with `1.05` to get a +5%.
 
             .. warning::
@@ -462,9 +516,9 @@ class Market(dict):
                 buy asset than you placed the order
                 for. Example:
 
-                    * You place and order to buy 10 USD for 100 BTS/USD
-                    * This means that you actually place a sell order for 1000 BTS in order to obtain **at least** 10 USD
-                    * If an order on the market exists that sells USD for cheaper, you will end up with more than 10 USD
+                    * You place and order to buy 10 SBD for 100 STEEM/SBD
+                    * This means that you actually place a sell order for 1000 STEEM in order to obtain **at least** 10 SBD
+                    * If an order on the market exists that sells SBD for cheaper, you will end up with more than 10 SBD
         """
         if not expiration:
             expiration = self.steem.config["order-expiration"]
@@ -537,18 +591,18 @@ class Market(dict):
             :param bool killfill: flag that indicates if the order shall be killed if it is not filled (defaults to False)
             :param string account: Account name that executes that order
             :param string returnOrderId: If set to "head" or "irreversible" the call will wait for the tx to appear in
-                                        the head/irreversible block and add the key "orderid" to the tx output
+                the head/irreversible block and add the key "orderid" to the tx output
 
-            Prices/Rates are denoted in 'base', i.e. the USD_BTS market
-            is priced in BTS per USD.
+            Prices/Rates are denoted in 'base', i.e. the SBD_STEEM market
+            is priced in STEEM per SBD.
 
-            **Example:** in the USD_BTS market, a price of 300 means
-            a USD is worth 300 BTS
+            **Example:** in the SBD_STEEM market, a price of 300 means
+            a SBD is worth 300 STEEM
 
             .. note::
 
                 All prices returned are in the **reversed** orientation as the
-                market. I.e. in the BTC/BTS market, prices are BTS per BTC.
+                market. I.e. in the STEEM/SBD market, prices are SBD per STEEM.
                 That way you can multiply prices with `1.05` to get a +5%.
         """
         if not expiration:
@@ -604,9 +658,9 @@ class Market(dict):
 
     def cancel(self, orderNumbers, account=None, **kwargs):
         """ Cancels an order you have placed in a given market. Requires
-            only the "orderNumbers". An order number takes the form
-            ``1.7.xxx``.
-            :param str orderNumbers: The Order Object ide of the form ``1.7.xxxx``
+            only the "orderNumbers".
+
+            :param int/list orderNumbers: A single order number or a list of order numbers
         """
         if not account:
             if "default_account" in self.steem.config:
diff --git a/beem/memo.py b/beem/memo.py
index df9342c53c3813a6803019349679a89262c8dd55..6fa53708b8b3e4324739ddc8e0511f4ff7078e49 100644
--- a/beem/memo.py
+++ b/beem/memo.py
@@ -49,7 +49,6 @@ class Memo(object):
         if ``op_data`` being the payload of a transfer operation.
 
         Memo Keys
-        #########
 
         In Steem, memos are AES-256 encrypted with a shared secret between sender and
         receiver. It is derived from the memo private key of the sender and the memo
@@ -76,7 +75,6 @@ class Memo(object):
         while the memo private key can be dumped with `dump_private_keys`
 
         Memo Message
-        ############
 
         The take the following form:
 
@@ -93,13 +91,9 @@ class Memo(object):
         The `nonce` is a random integer that is used for the seed of the AES encryption
         of the message.
 
-        Example
-        #######
-
         Encrypting a memo
-        ~~~~~~~~~~~~~~~~~
 
-        The high level memo class makes use of the pysteem wallet to obtain keys
+        The high level memo class makes use of the beem wallet to obtain keys
         for the corresponding accounts.
 
         .. code-block:: python
@@ -114,30 +108,29 @@ class Memo(object):
             encrypted_memo = memoObj.encrypt(memo)
 
         Decoding of a received memo
-        ~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
         .. code-block:: python
 
-             from getpass import getpass
-             from beem.block import Block
-             from beem.memo import Memo
+            from getpass import getpass
+            from beem.block import Block
+            from beem.memo import Memo
 
-             # Obtain a transfer from the blockchain
-             block = Block(23755086)                   # block
-             transaction = block["transactions"][3]    # transactions
-             op = transaction["operations"][0]         # operation
-             op_id = op[0]                             # operation type
-             op_data = op[1]                           # operation payload
+            # Obtain a transfer from the blockchain
+            block = Block(23755086)                   # block
+            transaction = block["transactions"][3]    # transactions
+            op = transaction["operations"][0]         # operation
+            op_id = op[0]                             # operation type
+            op_data = op[1]                           # operation payload
 
-             # Instantiate Memo for decoding
-             memo = Memo()
+            # Instantiate Memo for decoding
+            memo = Memo()
 
-             # Unlock wallet
-             memo.unlock_wallet(getpass())
+            # Unlock wallet
+            memo.unlock_wallet(getpass())
 
-             # Decode memo
-             # Raises exception if required keys not available in the wallet
-             print(memo.decrypt(op_data["transfer"]))
+            # Decode memo
+            # Raises exception if required keys not available in the wallet
+            print(memo.decrypt(op_data["transfer"]))
 
     """
     def __init__(
diff --git a/beem/message.py b/beem/message.py
index e93413ce3a49e0b58f8a9126666c415da16b7655..d6e8086f45376a22ad31da9d51ecb966d2257886 100644
--- a/beem/message.py
+++ b/beem/message.py
@@ -57,6 +57,7 @@ class Message(object):
                 (defaults to ``default_account``)
 
             :returns: the signed message encapsulated in a known format
+
         """
         if not account:
             if "default_account" in config:
@@ -98,7 +99,9 @@ class Message(object):
                 (defaults to ``default_account``)
 
             :returns: True if the message is verified successfully
-            :raises InvalidMessageSignature if the signature is not ok
+
+            :raises: InvalidMessageSignature if the signature is not ok
+
         """
         # Split message into its parts
         parts = re.split("|".join(MESSAGE_SPLIT), self.message)
diff --git a/beem/price.py b/beem/price.py
index 9b3099b78a8b5208d9d833b5facddd74c5af85fe..f2d0bc3a9aba4b615d176e4dffdf70f7436f3259 100644
--- a/beem/price.py
+++ b/beem/price.py
@@ -67,7 +67,9 @@ class Price(dict):
 
             >>> from beem.price import Price
             >>> Price("0.3314 SBD/STEEM") * 2
-            0.662600000 SBD/STEEM
+            0.662804 SBD/STEEM
+            >>> Price(0.3314, "SBD", "STEEM")
+            0.331402 SBD/STEEM
 
     """
     def __init__(
@@ -160,7 +162,8 @@ class Price(dict):
         return Price(
             None,
             base=self["base"].copy(),
-            quote=self["quote"].copy())
+            quote=self["quote"].copy(),
+            steem_instance=self.steem)
 
     def _safedivide(self, a, b):
         if b != 0.0:
@@ -175,6 +178,13 @@ class Price(dict):
         """ Returns the price instance so that the base asset is ``base``.
 
             Note: This makes a copy of the object!
+
+            .. code-block:: python
+
+                >>> from beem.price import Price
+                >>> Price("0.3314 SBD/STEEM").as_base("STEEM")
+                3.017483 STEEM/SBD
+
         """
         if base == self["base"]["symbol"]:
             return self.copy()
@@ -187,6 +197,13 @@ class Price(dict):
         """ Returns the price instance so that the quote asset is ``quote``.
 
             Note: This makes a copy of the object!
+
+            .. code-block:: python
+
+                >>> from beem.price import Price
+                >>> Price("0.3314 SBD/STEEM").as_quote("SBD")
+                3.017483 STEEM/SBD
+
         """
         if quote == self["quote"]["symbol"]:
             return self.copy()
@@ -197,6 +214,13 @@ class Price(dict):
 
     def invert(self):
         """ Invert the price (e.g. go from ``SBD/STEEM`` into ``STEEM/SBD``)
+
+            .. code-block:: python
+
+                >>> from beem.price import Price
+                >>> Price("0.3314 SBD/STEEM").invert()
+                3.017483 STEEM/SBD
+
         """
         tmp = self["quote"]
         self["quote"] = self["base"]
diff --git a/beem/profile.py b/beem/profile.py
index f1d6da938a0c63f6b52c13701f8e3e50acedac58..10896572ad65d007600d056bcafee60155c8c7e8 100644
--- a/beem/profile.py
+++ b/beem/profile.py
@@ -13,11 +13,12 @@ class DotDict(dict):
         """ This class simplifies the use of "."-separated
             keys when defining a nested dictionary:::
 
+                >>> from beem.profile import Profile
                 >>> keys = ['profile.url', 'profile.img']
                 >>> values = ["http:", "foobar"]
-                >>> print(Profile(keys, values))
-
-                {"profile": {"url": "http:", "img": "foobar"}}
+                >>> p = Profile(keys, values)
+                >>> print(p["profile"]["url"])
+                http:
 
         """
         if len(args) == 2:
diff --git a/beem/steem.py b/beem/steem.py
index 53302590de616720ebc2cf251313e5b46d92a4e0..c01778002aafa8dbc3aa096047642469e4ab31fd 100644
--- a/beem/steem.py
+++ b/beem/steem.py
@@ -53,7 +53,8 @@ class Steem(object):
             in a block and return full transaction (can be "head" or
             "irrversible")
         :param bool bundle: Do not broadcast transactions right away, but allow
-            to bundle operations *(optional)*
+            to bundle operations. It is not possible to send out more than one
+            vote operation and more than one comment operation in a single broadcast *(optional)*
         :param bool appbase: Use the new appbase rpc protocol on nodes with version
             0.19.4 or higher. The settings has no effect on nodes with version of 0.19.3 or lower.
         :param int num_retries: Set the maximum number of reconnects to the nodes before
@@ -94,9 +95,10 @@ class Steem(object):
 
         .. code-block:: python
 
-            from beem import Steem
-            steem = Steem()
-            print(steem.info())
+            >>> from beem import Steem
+            >>> steem = Steem()
+            >>> print(steem.get_blockchain_version())
+            0.19.2
 
         This class also deals with edits, votes and reading content.
     """
@@ -208,9 +210,9 @@ class Steem(object):
         if data_refresh_time_seconds is not None:
             self.data_refresh_time_seconds = data_refresh_time_seconds
         if self.data['last_refresh'] is not None and not force_refresh:
-            if (datetime.now() - self.data['last_refresh']).total_seconds() < self.data_refresh_time_seconds:
+            if (datetime.utcnow() - self.data['last_refresh']).total_seconds() < self.data_refresh_time_seconds:
                 return
-        self.data['last_refresh'] = datetime.now()
+        self.data['last_refresh'] = datetime.utcnow()
         self.data["dynamic_global_properties"] = self.get_dynamic_global_properties(False)
         self.data['feed_history'] = self.get_feed_history(False)
         self.data['get_feed_history'] = self.get_feed_history(False)
@@ -578,10 +580,12 @@ class Steem(object):
 
             When set to "no", the password has to provided everytime.
             When set to "environment" the password is taken from the
-                UNLOCK variable
+            UNLOCK variable
+
             When set to "keyring" the password is taken from the
             python keyring module. A wallet password can be stored with
             python -m keyring set beem wallet password
+
             :param str password_storage: can be "no",
                 "keyring" or "environment"
 
@@ -645,18 +649,16 @@ class Steem(object):
                 TransactionBuilder (see :func:`steem.new_tx()`) to specify
                 where to put a specific operation.
 
-            ... note:: ``append_to`` is exposed to every method used in the
+            .. note:: ``append_to`` is exposed to every method used in the
                 Steem class
 
-            ... note::
-
-                If ``ops`` is a list of operation, they all need to be
-                signable by the same key! Thus, you cannot combine ops
-                that require active permission with ops that require
-                posting permission. Neither can you use different
-                accounts for different operations!
+            .. note::   If ``ops`` is a list of operation, they all need to be
+                        signable by the same key! Thus, you cannot combine ops
+                        that require active permission with ops that require
+                        posting permission. Neither can you use different
+                        accounts for different operations!
 
-            ... note:: This uses ``beem.txbuffer`` as instance of
+            .. note:: This uses ``beem.txbuffer`` as instance of
                 :class:`beem.transactionbuilder.TransactionBuilder`.
                 You may want to use your own txbuffer
         """
@@ -1034,16 +1036,20 @@ class Steem(object):
 
     def witness_update(self, signing_key, url, props, account=None):
         """ Creates/updates a witness
+
             :param pubkey signing_key: Signing key
             :param str url: URL
             :param dict props: Properties
             :param str account: (optional) witness account name
-             Properties:::
+
+            Properties:::
+
                 {
                     "account_creation_fee": x,
                     "maximum_block_size": x,
                     "sbd_interest_rate": x,
                 }
+
         """
         if not account and config["default_account"]:
             account = config["default_account"]
@@ -1091,11 +1097,13 @@ class Steem(object):
                     required_auths=[],
                     required_posting_auths=[]):
         """ Create a custom json operation
+
             :param str id: identifier for the custom json (max length 32 bytes)
             :param json json_data: the json data to put into the custom_json
                 operation
             :param list required_auths: (optional) required auths
             :param list required_posting_auths: (optional) posting auths
+
         """
         account = None
         if len(required_auths):
@@ -1136,19 +1144,21 @@ class Steem(object):
         the newly created post as an author.
         Setting category, tags or community will override the values provided
         in json_metadata and/or comment_options where appropriate.
-        Args:
-        title (str): Title of the post
-        body (str): Body of the post/comment
-        author (str): Account are you posting from
-        permlink (str): Manually set the permlink (defaults to None).
+
+        :param str title: Title of the post
+        :param str body: Body of the post/comment
+        :param str author: Account are you posting from
+        :param str permlink: Manually set the permlink (defaults to None).
             If left empty, it will be derived from title automatically.
-        reply_identifier (str): Identifier of the parent post/comment (only
+        :param str reply_identifier: Identifier of the parent post/comment (only
             if this post is a reply/comment).
-        json_metadata (str, dict): JSON meta object that can be attached to
+        :param (str, dict) json_metadata: JSON meta object that can be attached to
             the post.
-        comment_options (str, dict): JSON options object that can be
+        :param (str, dict) comment_options: JSON options object that can be
             attached to the post.
+
         Example::
+
             comment_options = {
                 'max_accepted_payout': '1000000.000 SBD',
                 'percent_steem_dollars': 10000,
@@ -1161,26 +1171,31 @@ class Steem(object):
                     ]}
                 ]]
             }
-        community (str): (Optional) Name of the community we are posting
+
+        :param str community: (Optional) Name of the community we are posting
             into. This will also override the community specified in
             `json_metadata`.
-        app (str): (Optional) Name of the app which are used for posting
+        :param str app: (Optional) Name of the app which are used for posting
             when not set, beem/<version> is used
-        tags (str, list): (Optional) A list of tags (5 max) to go with the
+        :param (str, list) tags: (Optional) A list of tags (5 max) to go with the
             post. This will also override the tags specified in
             `json_metadata`. The first tag will be used as a 'category'. If
             provided as a string, it should be space separated.
-        beneficiaries (list of dicts): (Optional) A list of beneficiaries
+        :param (list of dicts) beneficiaries: (Optional) A list of beneficiaries
             for posting reward distribution. This argument overrides
             beneficiaries as specified in `comment_options`.
+
         For example, if we would like to split rewards between account1 and
         account2::
+
             beneficiaries = [
                 {'account': 'account1', 'weight': 5000},
                 {'account': 'account2', 'weight': 5000}
             ]
-        self_vote (bool): (Optional) Upvote the post as author, right after
+
+        :param bool self_vote: (Optional) Upvote the post as author, right after
             posting.
+
         """
 
         # prepare json_metadata
@@ -1312,19 +1327,23 @@ class Steem(object):
 
     def comment_options(self, options, identifier, account=None):
         """ Set the comment options
+
             :param str identifier: Post identifier
             :param dict options: The options to define.
             :param str account: (optional) the account to allow access
                 to (defaults to ``default_account``)
+
             For the options, you have these defaults:::
-                    {
-                        "author": "",
-                        "permlink": "",
-                        "max_accepted_payout": "1000000.000 SBD",
-                        "percent_steem_dollars": 10000,
-                        "allow_votes": True,
-                        "allow_curation_rewards": True,
-                    }
+
+                {
+                    "author": "",
+                    "permlink": "",
+                    "max_accepted_payout": "1000000.000 SBD",
+                    "percent_steem_dollars": 10000,
+                    "allow_votes": True,
+                    "allow_curation_rewards": True,
+                }
+
         """
         if not account and config["default_account"]:
             account = config["default_account"]
diff --git a/beem/storage.py b/beem/storage.py
index 3d19bac278b41485bbd6763a672603caef92b0bf..2cffb88c3203d0ebe38a16f998b84033e4663027 100644
--- a/beem/storage.py
+++ b/beem/storage.py
@@ -83,9 +83,9 @@ class DataDir(object):
         backup_file = os.path.join(
             backupdir,
             os.path.basename(self.storageDatabase) +
-            datetime.now().strftime("-" + timeformat))
+            datetime.utcnow().strftime("-" + timeformat))
         self.sqlite3_copy(self.sqlDataBaseFile, backup_file)
-        configStorage["lastBackup"] = datetime.now().strftime(timeformat)
+        configStorage["lastBackup"] = datetime.utcnow().strftime(timeformat)
 
     def sqlite3_copy(self, src, dst):
         """Copy sql file from src to dst"""
@@ -324,7 +324,7 @@ class Configuration(DataDir):
             self.refreshBackup()
         try:
             if (
-                datetime.now() -
+                datetime.utcnow() -
                 datetime.strptime(configStorage["lastBackup"],
                                   timeformat)
             ).days > 7:
diff --git a/beem/transactionbuilder.py b/beem/transactionbuilder.py
index 083bac5bdbeffa36f827fc34fc0a590271d217ee..a58f5d522ed8c3707593d07144a19ce89422d821 100644
--- a/beem/transactionbuilder.py
+++ b/beem/transactionbuilder.py
@@ -30,24 +30,23 @@ class TransactionBuilder(dict):
         operations and signers.
         To build your own transactions and sign them
 
-        param dict tx: transaction (Optional). If not set, the new transaction is created.
-        param str expiration: expiration date
-        param Steem steem_instance: If not set, shared_steem_instance() is used
+        :param dict tx: transaction (Optional). If not set, the new transaction is created.
+        :param str expiration: expiration date
+        :param Steem steem_instance: If not set, shared_steem_instance() is used
 
-        .. code-block:: python
+        .. testcode::
 
            from beem.transactionbuilder import TransactionBuilder
            from beembase.operations import Transfer
-           tx = TransactionBuilder()
-           tx.appendOps(Transfer(**{
-                    "from": "test",
-                    "to": "test1",
-                    "amount": "1 STEEM",
-                    "memo": ""
-                }))
-           tx.appendSigner("test", "active")
-           tx.sign()
-           tx.broadcast()
+           from beem import Steem
+           wif = "5KQwrPbwdL6PhXujxW37FSSQZ1JiwsST4cqQzDeyXtP79zkvFD3"
+           stm = Steem(nobroadcast=True, keys={'active': wif})
+           tx = TransactionBuilder(steem_instance=stm)
+           transfer = {"from": "test", "to": "test1", "amount": "1 STEEM", "memo": ""}
+           tx.appendOps(Transfer(transfer))
+           tx.appendSigner("test", "active") # or tx.appendWif(wif)
+           signed_tx = tx.sign()
+           broadcast_tx = tx.broadcast()
 
     """
     def __init__(
@@ -251,6 +250,7 @@ class TransactionBuilder(dict):
             :param bool reconstruct_tx: when set to False and tx
                 is already contructed, it will not reconstructed
                 and already added signatures remain
+
         """
         if not self._is_constructed() or (self._is_constructed() and reconstruct_tx):
             self.constructTx()
@@ -303,6 +303,7 @@ class TransactionBuilder(dict):
 
             :param int max_block_age: paramerter only used
                 for appbase ready nodes
+
         """
         # Cannot broadcast an empty transaction
         if not self._is_signed():
@@ -359,6 +360,7 @@ class TransactionBuilder(dict):
             :param bool reconstruct_tx: when set to False and tx
                 is already contructed, it will not reconstructed
                 and already added signatures remain
+
         """
         if not self._is_constructed() or (self._is_constructed() and reconstruct_tx):
             self.constructTx()
diff --git a/beem/utils.py b/beem/utils.py
index bb64555138fed42b3b75b5b998a76ad2955df72d..3648cdac2417b59e2b5a7f6a821e702ae8a65c34 100644
--- a/beem/utils.py
+++ b/beem/utils.py
@@ -136,9 +136,13 @@ def construct_authorperm(*args):
     Examples:
 
         .. code-block:: python
-            construct_authorperm('username', 'permlink')
-            construct_authorperm({'author': 'username',
-                'permlink': 'permlink'})
+
+            >>> from beem.utils import construct_authorperm
+            >>> print(construct_authorperm('username', 'permlink'))
+            @username/permlink
+            >>> print(construct_authorperm({'author': 'username', 'permlink': 'permlink'}))
+            @username/permlink
+
     """
     username_prefix = '@'
     if len(args) == 1:
@@ -183,9 +187,13 @@ def construct_authorpermvoter(*args):
     Examples:
 
         .. code-block:: python
-            construct_authorpermvoter('username', 'permlink', 'voter')
-            construct_authorpermvoter({'author': 'username',
-                'permlink': 'permlink', 'voter': 'voter'})
+
+            >>> from beem.utils import construct_authorpermvoter
+            >>> print(construct_authorpermvoter('username', 'permlink', 'voter'))
+            @username/permlink|voter
+            >>> print(construct_authorpermvoter({'author': 'username', 'permlink': 'permlink', 'voter': 'voter'}))
+            @username/permlink|voter
+
     """
     username_prefix = '@'
     if len(args) == 1:
diff --git a/beem/vote.py b/beem/vote.py
index a96526c8a4fdad129de3e66c9708b004831cc790..75f08b85435886b50f8e1c74fa8347c6df185cf0 100644
--- a/beem/vote.py
+++ b/beem/vote.py
@@ -30,8 +30,8 @@ class Vote(BlockchainObject):
 
         .. code-block:: python
 
-           from beem.vote import Vote
-           v = Vote("theaussiegame/cryptokittie-giveaway-number-2|")
+           >>> from beem.vote import Vote
+           >>> v = Vote("@gtg/ffdhu-gtg-witness-log|gandalf")
 
     """
     type_id = 11
@@ -178,7 +178,7 @@ class VotesObject(list):
         elif sort_key == 'voter':
             sortedList = sorted(self, key=lambda self: self[sort_key], reverse=reverse)
         elif sort_key == 'time':
-            sortedList = sorted(self, key=lambda self: (utc.localize(datetime.now()) - formatTimeString(self.time)).total_seconds(), reverse=reverse)
+            sortedList = sorted(self, key=lambda self: (utc.localize(datetime.utcnow()) - formatTimeString(self.time)).total_seconds(), reverse=reverse)
         elif sort_key == 'rshares':
             sortedList = sorted(self, key=lambda self: self[sort_key], reverse=reverse)
         elif sort_key == 'percent':
@@ -204,7 +204,7 @@ class VotesObject(list):
             time = vote.time
             if time != '':
                 d_time = formatTimeString(time)
-                td = utc.localize(datetime.now()) - d_time
+                td = utc.localize(datetime.utcnow()) - d_time
                 timestr = str(td.days) + " days " + str(td.seconds // 3600) + ":" + str((td.seconds // 60) % 60)
             else:
                 start = None
diff --git a/beem/wallet.py b/beem/wallet.py
index 5ad9e3f530cccb1e0269987d21b95a0482088ceb..cf7bb6a72b8700c291a8b8e1e3065d1ed9c6f383 100644
--- a/beem/wallet.py
+++ b/beem/wallet.py
@@ -60,9 +60,6 @@ class Wallet(object):
           any account. This mode is only used for *foreign*
           signatures!
 
-        Create a new wallet
-        -------------------
-
         A new wallet can be created by using:
 
         .. code-block:: python
@@ -74,8 +71,6 @@ class Wallet(object):
 
         This will raise an exception if you already have a wallet installed.
 
-        Unlocking the wallet for signing
-        --------------------------------
 
         The wallet can be unlocked for signing using
 
@@ -85,9 +80,6 @@ class Wallet(object):
            steem = Steem()
            steem.wallet.unlock("supersecret-passphrase")
 
-        Adding a Private Key
-        --------------------
-
         A private key can be added by using the
         :func:`steem.wallet.Wallet.addPrivateKey` method that is available
         **after** unlocking the wallet with the correct passphrase:
diff --git a/beem/witness.py b/beem/witness.py
index a8e9bfa286e81e06d2101c157748d85a8cb73846..bb03040e3d80c85cb19964c1ba909f8f1ea25315 100644
--- a/beem/witness.py
+++ b/beem/witness.py
@@ -27,8 +27,9 @@ class Witness(BlockchainObject):
 
         .. code-block:: python
 
-           from beem.witness import Witness
-           Witness("gtg")
+           >>> from beem.witness import Witness
+           >>> Witness("gtg")
+           <Witness gtg>
 
     """
     type_id = 3
@@ -122,16 +123,20 @@ class Witness(BlockchainObject):
 
     def update(self, signing_key, url, props, account=None):
         """ Update witness
+
             :param pubkey signing_key: Signing key
             :param str url: URL
             :param dict props: Properties
             :param str account: (optional) witness account name
-             Properties:::
+
+            Properties:::
+
                 {
                     "account_creation_fee": x,
                     "maximum_block_size": x,
                     "sbd_interest_rate": x,
                 }
+
         """
         if not account:
             account = self["owner"]
@@ -149,7 +154,7 @@ class WitnessesObject(list):
         elif sort_key == 'quote':
             sortedList = sorted(self, key=lambda self: self['sbd_exchange_rate']['quote'], reverse=reverse)
         elif sort_key == 'last_sbd_exchange_update':
-            sortedList = sorted(self, key=lambda self: (utc.localize(datetime.now()) - formatTimeString(self['last_sbd_exchange_update'])).total_seconds(), reverse=reverse)
+            sortedList = sorted(self, key=lambda self: (utc.localize(datetime.utcnow()) - formatTimeString(self['last_sbd_exchange_update'])).total_seconds(), reverse=reverse)
         elif sort_key == 'account_creation_fee':
             sortedList = sorted(self, key=lambda self: self['props']['account_creation_fee'], reverse=reverse)
         elif sort_key == 'sbd_interest_rate':
@@ -161,7 +166,7 @@ class WitnessesObject(list):
         else:
             sortedList = sorted(self, key=lambda self: self[sort_key], reverse=reverse)
         for witness in sortedList:
-            td = utc.localize(datetime.now()) - formatTimeString(witness['last_sbd_exchange_update'])
+            td = utc.localize(datetime.utcnow()) - formatTimeString(witness['last_sbd_exchange_update'])
             disabled = ""
             if not witness.is_active:
                 disabled = "yes"
diff --git a/beemapi/steemnoderpc.py b/beemapi/steemnoderpc.py
index 0f993c764f192d7432c52b241ed4390ba753dea8..f85b9a179e1280324c23eaaebd631cd8e0675c9c 100644
--- a/beemapi/steemnoderpc.py
+++ b/beemapi/steemnoderpc.py
@@ -17,12 +17,14 @@ log = logging.getLogger(__name__)
 class SteemNodeRPC(GrapheneRPC):
     """This class allows to call API methods exposed by the witness node via
        websockets / rpc-json.
+
     :param str urls: Either a single Websocket/Http URL, or a list of URLs
     :param str user: Username for Authentication
     :param str password: Password for Authentication
     :param int num_retries: Try x times to num_retries to a node on disconnect, -1 for indefinitely
     :param int num_retries_call: Repeat num_retries_call times a rpc call on node error (default is 5)
     :param int timeout: Timeout setting for https nodes (default is 60)
+
     """
 
     def __init__(self, *args, **kwargs):
diff --git a/beemapi/websocket.py b/beemapi/websocket.py
index 19813bb979fcdbe6e43199643374fa24fe6697f8..ed1c04943ba31bf78ea2c59fda393f44b201d5fe 100644
--- a/beemapi/websocket.py
+++ b/beemapi/websocket.py
@@ -47,15 +47,6 @@ class SteemWebsocket(Events):
             ws.on_block += print
             ws.run_forever()
 
-        Notices:
-
-        * ``on_block``:
-
-            .. code-block:: js
-
-                '0062f19df70ecf3a478a84b4607d9ad8b3e3b607'
-
-
     """
     __events__ = [
         'on_block',
diff --git a/beembase/memo.py b/beembase/memo.py
index cfa1af20c280cc6c4891d9d49d6e462ab7dd15b1..09745c04c647c8222c973b1b8eb05253485c1c68 100644
--- a/beembase/memo.py
+++ b/beembase/memo.py
@@ -69,6 +69,7 @@ def init_aes_bts(shared_secret, nonce):
 
 def init_aes(shared_secret, nonce):
     """ Initialize AES instance
+
         :param hex shared_secret: Shared Secret to use as encryption key
         :param int nonce: Random nonce
         :return: AES instance and checksum of the encryption key
@@ -154,6 +155,7 @@ def decode_memo_bts(priv, pub, nonce, message):
 
 def encode_memo(priv, pub, nonce, message, **kwargs):
     """ Encode a message with a shared secret between Alice and Bob
+
         :param PrivateKey priv: Private Key (of Alice)
         :param PublicKey pub: Public Key (of Bob)
         :param int nonce: Random nonce
@@ -186,6 +188,7 @@ def encode_memo(priv, pub, nonce, message, **kwargs):
 
 def decode_memo(priv, message):
     """ Decode a message with a shared secret between Alice and Bob
+
         :param PrivateKey priv: Private Key (of Bob)
         :param base58encoded message: Encrypted Memo message
         :return: Decrypted message
diff --git a/beembase/objects.py b/beembase/objects.py
index 3ba66dfc31b6cce322e0c2fbed886ffb56696634..6281a56b5f66325233ee8d4fe33f0204d3d4fd91 100644
--- a/beembase/objects.py
+++ b/beembase/objects.py
@@ -239,15 +239,17 @@ class Beneficiaries(GrapheneObject):
 
 class CommentOptionExtensions(Static_variant):
     """ Serialize Comment Payout Beneficiaries.
-    Args:
-        beneficiaries (list): A static_variant containing beneficiaries.
-    Example:
-        ::
+
+        :param list beneficiaries: A static_variant containing beneficiaries.
+
+        Example::
+
             [0,
                 {'beneficiaries': [
                     {'account': 'furion', 'weight': 10000}
                 ]}
             ]
+
     """
     def __init__(self, o):
         type_id, data = o
diff --git a/beemgrapheneapi/graphenerpc.py b/beemgrapheneapi/graphenerpc.py
index fd4ffe8a3f9f571bfba403a767e8b4d6bc4141b7..fa38a438ee9dc257190a0c0933bc0f881875551a 100644
--- a/beemgrapheneapi/graphenerpc.py
+++ b/beemgrapheneapi/graphenerpc.py
@@ -22,7 +22,7 @@ from .rpcutils import (
     is_network_appbase_ready, sleep_and_check_retries,
     get_api_name, get_query
 )
-from beem.version import version as beem_version
+from beemgraphenebase.version import version as beem_version
 from beemgraphenebase.chains import known_chains
 
 WEBSOCKET_MODULE = None
@@ -110,7 +110,8 @@ class GrapheneRPC(object):
     :param int num_retries: Try x times to num_retries to a node on disconnect, -1 for indefinitely
     :param int num_retries_call: Repeat num_retries_call times a rpc call on node error (default is 5)
     :param int timeout: Timeout setting for https nodes (default is 60)
-    Available APIs
+
+    Available APIs:
 
           * database
           * network_node
@@ -118,13 +119,14 @@ class GrapheneRPC(object):
 
     Usage:
 
-    .. code-block:: python
-        from beemgrapheneapi.graphenerpc import GrapheneRPC
-        ws = GrapheneRPC("wss://steemd.pevo.science","","")
-        print(ws.get_account_count())
+        .. code-block:: python
+
+            from beemgrapheneapi.graphenerpc import GrapheneRPC
+            ws = GrapheneRPC("wss://steemd.pevo.science","","")
+            print(ws.get_account_count())
 
-        ws = GrapheneRPC("https://api.steemit.com","","")
-        print(ws.get_account_count())
+            ws = GrapheneRPC("https://api.steemit.com","","")
+            print(ws.get_account_count())
 
     .. note:: This class allows to call methods available via
               websocket. If you want to use the notification
diff --git a/beemgraphenebase/__init__.py b/beemgraphenebase/__init__.py
index 888504f6d1f472b6a4b6ebd58b1d02a11329955f..54d00b2e6684ad3692c27a30a4f024ff5a09259d 100644
--- a/beemgraphenebase/__init__.py
+++ b/beemgraphenebase/__init__.py
@@ -12,6 +12,7 @@ __all__ = ['account',
            'bip38',
            'transactions',
            'types',
+           'ecdasig',
            'chains',
            'objects',
            'operations',
diff --git a/docs/_static/beem-icon.png b/docs/_static/beem-icon.png
new file mode 100644
index 0000000000000000000000000000000000000000..d1d388644e29aad4d8cd024a735f429567c5fb49
Binary files /dev/null and b/docs/_static/beem-icon.png differ
diff --git a/docs/_static/beem-icon_bw.png b/docs/_static/beem-icon_bw.png
new file mode 100644
index 0000000000000000000000000000000000000000..1d63db8f67cc77ac95794471c9f13be1ffa173c9
Binary files /dev/null and b/docs/_static/beem-icon_bw.png differ
diff --git a/docs/_static/beem-logo_2.png b/docs/_static/beem-logo_2.png
new file mode 100644
index 0000000000000000000000000000000000000000..8488b6e0a5907297726f310b931921175b485691
Binary files /dev/null and b/docs/_static/beem-logo_2.png differ
diff --git a/docs/_static/beem-logo_2.svg b/docs/_static/beem-logo_2.svg
new file mode 100644
index 0000000000000000000000000000000000000000..014be475f77589ea071c27c3249073fec044372d
--- /dev/null
+++ b/docs/_static/beem-logo_2.svg
@@ -0,0 +1 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg width="100%" height="100%" viewBox="0 0 569 569" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve" xmlns:serif="http://www.serif.com/" style="fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:1.41421;"><g id="Layer-1" serif:id="Layer 1"><g><path d="M80.075,367.29c34.301,-1.394 157.829,-5.859 157.829,-5.859l-8.818,-24.675c-5.203,-17.054 3.282,-36.78 17.163,-45.714c12.077,-7.774 39.77,-11.502 57.625,-17.877c4.215,-1.505 7.881,-3.157 10.664,-5.044c11.886,-8.06 22.845,-25.031 19.153,-37.134l-17.296,-56.672c-3.869,-12.683 -16.337,-20.847 -31.758,-20.8c-1.745,0.006 -3.512,0.123 -5.25,0.353c-10.213,1.345 -21.077,3.752 -31.414,6.957c-9.773,3.032 -19.242,6.826 -27.38,10.975c-22.66,11.538 -24.282,21.326 -19.308,37.628l6.333,20.754l59.516,-18.156l3.382,11.096l-200.136,103.926c0,0 -4.276,2.032 -7.533,4.021c-2.206,1.347 -3.723,2.821 -3.982,3.067c-4.99,4.732 -5.951,9.425 -5.937,14.408c0.027,8.349 8.127,16.429 13.421,17.917c2.859,0.804 3.17,0.668 5.186,0.794c4.08,0.255 8.54,0.035 8.54,0.035Zm11.104,-11.507c-1.112,0.339 -2.236,0.503 -3.344,0.506c-5.033,0.015 -9.71,-3.28 -11.273,-8.406c-1.915,-6.273 1.528,-12.9 7.697,-14.783c1.097,-0.334 2.208,-0.496 3.305,-0.499c5.042,-0.016 9.761,3.315 11.332,8.468c1.909,6.252 -1.57,12.839 -7.717,14.714Zm130.849,-167.423c1.112,-0.336 2.238,-0.496 3.344,-0.496c5.035,0 9.702,3.31 11.25,8.44c1.893,6.28 -1.568,12.896 -7.744,14.759c-1.097,0.332 -2.21,0.489 -3.305,0.489c-5.042,0 -9.752,-3.344 -11.308,-8.503c-1.889,-6.257 1.609,-12.833 7.763,-14.689Z" style="fill:#314bff;stroke:#7e8eff;stroke-width:1px;"/><path d="M495.37,202.989c9.538,0 16.713,9.037 16.452,18.575c-0.147,5.417 -2.935,11.267 -7.105,14.075c-1.631,1.098 -4.589,2.733 -6.213,3.489c-0.771,0.359 -3.967,2.052 -6.044,2.968c-3.325,1.466 -5.648,2.634 -5.648,2.634l-182.667,93.318l-2.995,1.53l0.971,3.213l2.285,7.552l1.165,3.828l3.862,-1.232l55.64,-16.922l5.685,18.573c3.753,12.438 -2.635,23.578 -18.985,34.171c-18.461,11.975 -35.609,16.228 -57.335,16.228l-0.541,0c-10.804,0 -29.653,-1.314 -34.489,-17.339l-17.114,-55.648c-3.067,-10.164 6.958,-25.578 15.255,-30.96c14.693,-9.532 44.937,-7.888 69.899,-24.513c15.63,-10.41 26.943,-29.476 21.506,-47.502l-7.118,-24.252c0,0 24.027,-0.283 53.047,-0.623c43.964,-0.515 99.388,-1.163 100.089,-1.163l0.398,0Zm-147.688,170.731c-5.768,0.017 -10.458,-4.644 -10.477,-10.411c-0.018,-5.768 4.645,-10.457 10.413,-10.476c5.767,-0.017 10.456,4.644 10.474,10.412c0.017,5.767 -4.643,10.457 -10.41,10.475Zm135.822,-140.57c-5.767,0 -10.442,-4.676 -10.442,-10.443c0,-5.768 4.675,-10.443 10.442,-10.443c2.489,0 4.776,0.871 6.571,2.325c2.363,1.914 3.874,4.839 3.874,8.118c0,5.767 -4.677,10.443 -10.445,10.443Z" style="fill:#ffe531;stroke:#e4c700;stroke-width:1px;"/></g><path d="M367.9,542.179c-25.067,7.738 -52.852,11.805 -82.887,11.668c-0.315,-0.001 -0.631,-0.003 -0.947,-0.006c-45.461,-0.34 -85.019,-10.205 -122.595,-28.296c-33.811,-16.279 -62.302,-40.424 -85.497,-68.515l-13.721,-18.111c-14.942,-21.598 -26.793,-45.512 -35.092,-71.208c-22.225,-68.83 -16.318,-142.193 16.635,-206.579c32.953,-64.384 89.006,-112.084 157.834,-134.309c27.403,-8.849 55.513,-13.237 83.501,-13.237c42.309,0 84.326,10.038 123.077,29.871c64.386,32.953 112.084,89.068 134.31,157.897c22.226,68.828 12.469,149.834 -16.634,206.638c-29.103,56.804 -88.108,112.617 -157.984,134.187Zm186.989,-344.882c-23.293,-72.133 -73.282,-130.877 -140.758,-165.412c-67.477,-34.535 -144.363,-40.725 -216.495,-17.433c-72.133,23.293 -130.877,73.282 -165.412,140.758c-34.535,67.476 -40.727,144.362 -17.434,216.495c23.293,72.132 73.282,130.878 140.759,165.412c0.283,0.145 0.565,0.289 0.848,0.432c40.38,20.502 84.102,30.873 128.138,30.873c29.326,0 58.794,-4.599 87.508,-13.872c72.134,-23.293 130.878,-73.282 165.413,-140.758c34.535,-67.476 40.726,-144.362 17.433,-216.495" style="fill:url(#_Linear1);fill-rule:nonzero;"/></g><defs><linearGradient id="_Linear1" x1="0" y1="0" x2="1" y2="0" gradientUnits="userSpaceOnUse" gradientTransform="matrix(567.844,0,0,567.842,0.917694,284.501)"><stop offset="0" style="stop-color:#314bff;stop-opacity:1"/><stop offset="1" style="stop-color:#ffe531;stop-opacity:1"/></linearGradient></defs></svg>
\ No newline at end of file
diff --git a/docs/_static/beem-logo_bw.png b/docs/_static/beem-logo_bw.png
new file mode 100644
index 0000000000000000000000000000000000000000..e986635206f9726afc747131b678c907c2373807
Binary files /dev/null and b/docs/_static/beem-logo_bw.png differ
diff --git a/docs/_static/beem-logo_bw.svg b/docs/_static/beem-logo_bw.svg
new file mode 100644
index 0000000000000000000000000000000000000000..b4c60997e26aed0dcbf90a45d2c4d7e56c81fc0b
--- /dev/null
+++ b/docs/_static/beem-logo_bw.svg
@@ -0,0 +1 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg width="100%" height="100%" viewBox="0 0 1000 1000" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve" xmlns:serif="http://www.serif.com/" style="fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:1.41421;"><g id="Layer-1" serif:id="Layer 1"><g><path d="M300.075,443.29c34.301,-1.394 157.829,-5.859 157.829,-5.859l-8.818,-24.675c-5.203,-17.054 3.282,-36.78 17.163,-45.714c12.077,-7.774 39.77,-11.502 57.625,-17.877c4.215,-1.505 7.881,-3.157 10.664,-5.044c11.886,-8.06 22.845,-25.031 19.153,-37.134l-17.296,-56.672c-3.869,-12.683 -16.337,-20.847 -31.758,-20.8c-1.745,0.006 -3.512,0.123 -5.25,0.353c-10.213,1.345 -21.077,3.752 -31.414,6.957c-9.773,3.032 -19.242,6.826 -27.38,10.975c-22.66,11.538 -24.282,21.326 -19.308,37.628l6.333,20.754l59.516,-18.156l3.382,11.096l-200.136,103.926c0,0 -4.276,2.032 -7.533,4.021c-2.206,1.347 -3.723,2.821 -3.982,3.067c-4.99,4.732 -5.951,9.425 -5.937,14.408c0.027,8.349 8.127,16.429 13.421,17.917c2.859,0.804 3.17,0.668 5.186,0.794c4.08,0.255 8.54,0.035 8.54,0.035Zm11.104,-11.507c-1.112,0.339 -2.236,0.503 -3.344,0.506c-5.033,0.015 -9.71,-3.28 -11.273,-8.406c-1.915,-6.273 1.528,-12.9 7.697,-14.783c1.097,-0.334 2.208,-0.496 3.305,-0.499c5.042,-0.016 9.761,3.315 11.332,8.468c1.909,6.252 -1.57,12.839 -7.717,14.714Zm130.849,-167.423c1.112,-0.336 2.238,-0.496 3.344,-0.496c5.035,0 9.702,3.31 11.25,8.44c1.893,6.28 -1.568,12.896 -7.744,14.759c-1.097,0.332 -2.21,0.489 -3.305,0.489c-5.042,0 -9.752,-3.344 -11.308,-8.503c-1.889,-6.257 1.609,-12.833 7.763,-14.689Z"/><path d="M715.37,278.989c9.538,0 16.713,9.037 16.452,18.575c-0.147,5.417 -2.935,11.267 -7.105,14.075c-1.631,1.098 -4.589,2.733 -6.213,3.489c-0.771,0.359 -3.967,2.052 -6.044,2.968c-3.325,1.466 -5.648,2.634 -5.648,2.634l-182.667,93.318l-2.995,1.53l0.971,3.213l2.285,7.552l1.165,3.828l3.862,-1.232l55.64,-16.922l5.685,18.573c3.753,12.438 -2.635,23.578 -18.985,34.171c-18.461,11.975 -35.609,16.228 -57.335,16.228l-0.541,0c-10.804,0 -29.653,-1.314 -34.489,-17.339l-17.114,-55.648c-3.067,-10.164 6.958,-25.578 15.255,-30.96c14.693,-9.532 44.937,-7.888 69.899,-24.513c15.63,-10.41 26.943,-29.476 21.506,-47.502l-7.118,-24.252c0,0 24.027,-0.283 53.047,-0.623c43.964,-0.515 99.388,-1.163 100.089,-1.163l0.398,0Zm-147.688,170.731c-5.768,0.017 -10.458,-4.644 -10.477,-10.411c-0.018,-5.768 4.645,-10.457 10.413,-10.476c5.767,-0.017 10.456,4.644 10.474,10.412c0.017,5.767 -4.643,10.457 -10.41,10.475Zm135.822,-140.57c-5.767,0 -10.442,-4.676 -10.442,-10.443c0,-5.768 4.675,-10.443 10.442,-10.443c2.489,0 4.776,0.871 6.571,2.325c2.363,1.914 3.874,4.839 3.874,8.118c0,5.767 -4.677,10.443 -10.445,10.443Z"/></g><path d="M324.787,830.39c0,-18.921 -15.498,-29.79 -42.671,-29.79l-48.91,0l0,60.183l48.91,0c27.173,0.201 42.671,-10.87 42.671,-30.393m-7.044,-66.02c0,-17.511 -13.083,-27.575 -35.627,-27.575l-48.91,0l0,55.553l48.91,0c22.544,0 35.627,-10.064 35.627,-27.978m8.453,-1.006c0,17.31 -9.862,29.185 -27.173,32.406c21.739,2.616 34.218,15.9 34.218,35.626c0,23.952 -18.719,37.841 -50.52,37.841l-57.969,0l0,-140.695l57.565,0c27.575,0 43.879,12.882 43.879,34.822" style="fill-rule:nonzero;"/><path d="M461.455,728.542l0,8.253l-82.322,0l0,56.156l73.265,0l0,8.454l-73.265,0l0,59.578l84.939,0l0,8.253l-93.393,0l0,-140.694l90.776,0Z" style="fill-rule:nonzero;"/><path d="M591.683,728.542l0,8.253l-82.322,0l0,56.156l73.265,0l0,8.454l-73.265,0l0,59.578l84.939,0l0,8.253l-93.393,0l0,-140.694l90.776,0Z" style="fill-rule:nonzero;"/><path d="M638.78,728.542l56.56,110.703l56.157,-110.703l11.674,0l0,140.694l-8.051,0l-0.201,-129.019l-57.768,113.722l-3.824,0l-58.17,-113.722l0,129.019l-8.051,0l0,-140.694l11.674,0Z" style="fill-rule:nonzero;"/></g></svg>
\ No newline at end of file
diff --git a/docs/beem.account.rst b/docs/beem.account.rst
index eccc1ae4351438137e318f433de685330c72873f..b13aea001cf87d7444c3fbea3d8417e1fb710dec 100644
--- a/docs/beem.account.rst
+++ b/docs/beem.account.rst
@@ -1,5 +1,5 @@
-beem\.account module
-====================
+beem\.account
+=============
 
 .. automodule:: beem.account
     :members:
diff --git a/docs/beem.aes.rst b/docs/beem.aes.rst
index 2af682991317c8c416c5917d8a994ae190743489..e784b7cd28481421c69f41f8cb6eee07333f8ed2 100644
--- a/docs/beem.aes.rst
+++ b/docs/beem.aes.rst
@@ -1,5 +1,5 @@
-beem\.aes module
-================
+beem\.aes
+=========
 
 .. automodule:: beem.aes
     :members:
diff --git a/docs/beem.amount.rst b/docs/beem.amount.rst
index 07676b71cec1dc9169692dd50fb8625393afff8b..15fcb24c7fdcb5d874b29f393444227d4d40b9af 100644
--- a/docs/beem.amount.rst
+++ b/docs/beem.amount.rst
@@ -1,5 +1,5 @@
-beem\.amount module
-===================
+beem\.amount
+============
 
 .. automodule:: beem.amount
     :members:
diff --git a/docs/beem.asciichart.rst b/docs/beem.asciichart.rst
new file mode 100644
index 0000000000000000000000000000000000000000..80f6fd7355a1b1c626ef04d83602b550c13be1a3
--- /dev/null
+++ b/docs/beem.asciichart.rst
@@ -0,0 +1,7 @@
+beem\.asciichart
+================
+
+.. automodule:: beem.asciichart
+    :members:
+    :undoc-members:
+    :show-inheritance:
\ No newline at end of file
diff --git a/docs/beem.asset.rst b/docs/beem.asset.rst
index 93c12ae05c97ac915ec63bcf855f611b47a909d0..5319efb56008c2a6c6d5de4686f3ee325db978ad 100644
--- a/docs/beem.asset.rst
+++ b/docs/beem.asset.rst
@@ -1,5 +1,5 @@
-beem\.asset module
-==================
+beem\.asset
+===========
 
 .. automodule:: beem.asset
     :members:
diff --git a/docs/beem.block.rst b/docs/beem.block.rst
index 24c7b18c0473f8b732e9cc6e3a4432668d281bc3..553a234cc968995c172aeb2c3a9bbc05bcffbfb2 100644
--- a/docs/beem.block.rst
+++ b/docs/beem.block.rst
@@ -1,5 +1,5 @@
-beem\.block module
-==================
+beem\.block
+===========
 
 .. automodule:: beem.block
     :members:
diff --git a/docs/beem.blockchain.rst b/docs/beem.blockchain.rst
index 5e63eabc129679b8b7528c25a02360380fea3919..31e432741e1d97829f7f66ce1ce21380e2abfcfa 100644
--- a/docs/beem.blockchain.rst
+++ b/docs/beem.blockchain.rst
@@ -1,5 +1,5 @@
-beem\.blockchain module
-=======================
+beem\.blockchain
+================
 
 .. automodule:: beem.blockchain
     :members:
diff --git a/docs/beem.blockchainobject.rst b/docs/beem.blockchainobject.rst
new file mode 100644
index 0000000000000000000000000000000000000000..121783bcea268f76243e74399881e9821207e1a4
--- /dev/null
+++ b/docs/beem.blockchainobject.rst
@@ -0,0 +1,7 @@
+beem\.blockchainobject
+======================
+
+.. automodule:: beem.blockchainobject
+    :members:
+    :undoc-members:
+    :show-inheritance:
\ No newline at end of file
diff --git a/docs/beem.comment.rst b/docs/beem.comment.rst
index 62214b9818129cce2860d389bbf905895d6233a2..3ee6e370d79d3845bee6bde345b06b16337fc465 100644
--- a/docs/beem.comment.rst
+++ b/docs/beem.comment.rst
@@ -1,5 +1,5 @@
-beem\.comment module
-====================
+beem\.comment
+=============
 
 .. automodule:: beem.comment
     :members:
diff --git a/docs/beem.discussions.rst b/docs/beem.discussions.rst
index 0217308e0574089391e74d8b4705613829296119..d42146509f4a3993317b31f9a9e3d5ca82254637 100644
--- a/docs/beem.discussions.rst
+++ b/docs/beem.discussions.rst
@@ -1,5 +1,5 @@
-beem\.discussions module
-========================
+beem\.discussions
+=================
 
 .. automodule:: beem.discussions
     :members:
diff --git a/docs/beem.exceptions.rst b/docs/beem.exceptions.rst
index c0c8b9704c03b3b53848e2b264a9d62dd6d21f9d..9d839dcf1301058b6a6b249f97acd22562c7a930 100644
--- a/docs/beem.exceptions.rst
+++ b/docs/beem.exceptions.rst
@@ -1,5 +1,5 @@
-beem\.exceptions module
-=======================
+beem\.exceptions
+================
 
 .. automodule:: beem.exceptions
     :members:
diff --git a/docs/beem.instances.rst b/docs/beem.instance.rst
similarity index 66%
rename from docs/beem.instances.rst
rename to docs/beem.instance.rst
index 2cdfbe70c8d10e805fbccd08eca7daf00f75d460..c2f26fcc6e59944445866e20cebf805ba4f5c9cf 100644
--- a/docs/beem.instances.rst
+++ b/docs/beem.instance.rst
@@ -1,5 +1,5 @@
-beem\.instance module
-=====================
+beem\.instance
+==============
 
 .. automodule:: beem.instance
     :members:
diff --git a/docs/beem.market.rst b/docs/beem.market.rst
index db64afa90c6d9b75c935c6b9c22d147a42e1e10a..7f9596d013ca5a0814c5a720c00c64362a166607 100644
--- a/docs/beem.market.rst
+++ b/docs/beem.market.rst
@@ -1,5 +1,5 @@
-beem\.market module
-===================
+beem\.market
+============
 
 .. automodule:: beem.market
     :members:
diff --git a/docs/beem.memo.rst b/docs/beem.memo.rst
index 26b6bd03331352d7d077030507f4a00a530cb072..195eac9b53aa86b00388dcf45280833f0fad02c3 100644
--- a/docs/beem.memo.rst
+++ b/docs/beem.memo.rst
@@ -1,5 +1,5 @@
-beem\.memo module
-=================
+beem\.memo
+==========
 
 .. automodule:: beem.memo
     :members:
diff --git a/docs/beem.message.rst b/docs/beem.message.rst
index 6dc3f825b623701c5d1efc7b8313205368798bf6..56589c2b3de695aa70857141b1a71b9fb83e702d 100644
--- a/docs/beem.message.rst
+++ b/docs/beem.message.rst
@@ -1,5 +1,5 @@
-beem\.message module
-====================
+beem\.message
+=============
 
 .. automodule:: beem.message
     :members:
diff --git a/docs/beem.notify.rst b/docs/beem.notify.rst
index 0a47d5a94795f2c4f82e55b7e8ac8f89f25e376d..09dd4c0540bc178d5de11eb53777f348c40f1017 100644
--- a/docs/beem.notify.rst
+++ b/docs/beem.notify.rst
@@ -1,5 +1,5 @@
-beem\.notify module
-===================
+beem\.notify
+============
 
 .. automodule:: beem.notify
     :members:
diff --git a/docs/beem.price.rst b/docs/beem.price.rst
index 2da4fcdce09ba063fed11329c2760c0ea646548a..7f516a09f31f2c99a194f0502e220dadad467249 100644
--- a/docs/beem.price.rst
+++ b/docs/beem.price.rst
@@ -1,5 +1,5 @@
-beem\.price module
-==================
+beem\.price
+===========
 
 .. automodule:: beem.price
     :members:
diff --git a/docs/beem.rst b/docs/beem.rst
deleted file mode 100644
index 8157fbe77334630c671b913cc1b18a5c9b370e34..0000000000000000000000000000000000000000
--- a/docs/beem.rst
+++ /dev/null
@@ -1,39 +0,0 @@
-beem package
-=================
-
-Submodules
-----------
-
-.. toctree::
-
-   beem.account
-   beem.aes
-   beem.amount
-   beem.asset
-   beem.steem
-   beem.block
-   beem.blockchain
-   beem.blockchainobject
-   beem.comment
-   beem.discussions
-   beem.exceptions
-   beem.instance
-   beem.market
-   beem.memo
-   beem.message
-   beem.notify
-   beem.price
-   beem.storage
-   beem.transactionbuilder
-   beem.utils
-   beem.vote
-   beem.wallet
-   beem.witness
-
-Module contents
----------------
-
-.. automodule:: beem
-    :members:
-    :undoc-members:
-    :show-inheritance:
\ No newline at end of file
diff --git a/docs/beem.steem.rst b/docs/beem.steem.rst
index 6d603e9e0a1142704439b4f30f3382f511573f3b..95013ba71265d688a90666fb9591303bb28a688c 100644
--- a/docs/beem.steem.rst
+++ b/docs/beem.steem.rst
@@ -1,5 +1,5 @@
-beem\.steem module
-==================
+beem\.steem
+===========
 
 .. automodule:: beem.steem
     :members:
diff --git a/docs/beem.storage.rst b/docs/beem.storage.rst
index 3b95ce9d29ba946e5a7983170c02c16e66ca745f..7aa796355968e2839051e512513cd10fcee13fdb 100644
--- a/docs/beem.storage.rst
+++ b/docs/beem.storage.rst
@@ -1,5 +1,5 @@
-beem\.storage module
-====================
+beem\.storage
+=============
 
 .. automodule:: beem.storage
     :members:
diff --git a/docs/beem.transactionbuilder.rst b/docs/beem.transactionbuilder.rst
index 009985153a8903a45165c4f22b20a7282fb5ce76..c87b5ec5798c17379ff0c77de03c8938d3c10ab4 100644
--- a/docs/beem.transactionbuilder.rst
+++ b/docs/beem.transactionbuilder.rst
@@ -1,5 +1,5 @@
-beem\.transactionbuilder module
-===============================
+beem\.transactionbuilder
+========================
 
 .. automodule:: beem.transactionbuilder
     :members:
diff --git a/docs/beem.utils.rst b/docs/beem.utils.rst
index 4983a4bd199331d164346afbac383570628afc8e..f95fdf2139c67f7053a141c2c0ac202a21a748cf 100644
--- a/docs/beem.utils.rst
+++ b/docs/beem.utils.rst
@@ -1,5 +1,5 @@
-beem\.utils module
-==================
+beem\.utils
+===========
 
 .. automodule:: beem.utils
     :members:
diff --git a/docs/beem.vote.rst b/docs/beem.vote.rst
index b9d76e5fa3495d164075e71b989133e1e197d961..c950d43bb4e9cfc94cbffeed6a6eef5c8a9a64d2 100644
--- a/docs/beem.vote.rst
+++ b/docs/beem.vote.rst
@@ -1,5 +1,5 @@
-beem\.vote module
-=================
+beem\.vote
+==========
 
 .. automodule:: beem.vote
     :members:
diff --git a/docs/beem.wallet.rst b/docs/beem.wallet.rst
index 9c393d726cf56aa5f093fa7c3ad0ed85ae21af23..d4545b89b62326f886b320030d20cf396f08d785 100644
--- a/docs/beem.wallet.rst
+++ b/docs/beem.wallet.rst
@@ -1,5 +1,5 @@
-beem\.wallet module
-===================
+beem\.wallet
+============
 
 .. automodule:: beem.wallet
     :members:
diff --git a/docs/beem.witness.rst b/docs/beem.witness.rst
index 15f4120cbd6559a7b10000ebf3468a08fa45100c..8aa1edb8072db5fc9c817907825b730e67002eff 100644
--- a/docs/beem.witness.rst
+++ b/docs/beem.witness.rst
@@ -1,5 +1,5 @@
-beem\.witness module
-====================
+beem\.witness
+=============
 
 .. automodule:: beem.witness
     :members:
diff --git a/docs/beemapi.rst b/docs/beemapi.rst
deleted file mode 100644
index 5150dd446f0c0bb5d90ee186e414ecd22b07a776..0000000000000000000000000000000000000000
--- a/docs/beemapi.rst
+++ /dev/null
@@ -1,19 +0,0 @@
-beemapi package
-===============
-
-Submodules
-----------
-
-.. toctree::
-
-   beemapi.steemnoderpc
-   beemapi.exceptions
-   beemapi.websocket
-
-Module contents
----------------
-
-.. automodule:: beemapi
-    :members:
-    :undoc-members:
-    :show-inheritance:
diff --git a/docs/beemapi.steemnoderpc.rst b/docs/beemapi.steemnoderpc.rst
index ce6b0aa1987d37e6097f4bf93079295015cee11b..3ebaf862231420ed88c90a0523c1d7e07eff5dca 100644
--- a/docs/beemapi.steemnoderpc.rst
+++ b/docs/beemapi.steemnoderpc.rst
@@ -1,11 +1,7 @@
-****************
-SteemNodeRPC
-****************
+beemapi\.steemnoderpc
+=====================
 
-This class allows to call API methods exposed by the witness node via
-websockets.
-
-Defintion
-=========
-.. autoclass:: beemapi.steemnoderpc.SteemNodeRPC
-    :members: rpcexec, __getattr__
+.. automodule:: beemapi.steemnoderpc
+    :members:
+    :undoc-members:
+    :show-inheritance:
diff --git a/docs/beemapi.websocket.rst b/docs/beemapi.websocket.rst
index f13e69aff3930d663cdc3c471ad6f4aec052eda4..75f31fe4b060de1e1e50b35eb3e676df0458f473 100644
--- a/docs/beemapi.websocket.rst
+++ b/docs/beemapi.websocket.rst
@@ -1,6 +1,5 @@
-******************
-SteemWebsocket
-******************
+beemapi\.websocket
+==================
 
 This class allows subscribe to push notifications from the Steem
 node.
@@ -18,10 +17,11 @@ node.
 
     ws.run_forever()
 
-Defintion
-=========
+
 .. autoclass:: beemapi.websocket.SteemWebsocket
     :members:
     :undoc-members:
     :private-members:
     :special-members:
+
+
diff --git a/docs/beembase.chains.rst b/docs/beembase.chains.rst
deleted file mode 100644
index a7526f6d05627eba552f6f6a62a8d2be50f56d3f..0000000000000000000000000000000000000000
--- a/docs/beembase.chains.rst
+++ /dev/null
@@ -1,7 +0,0 @@
-beembase\.chains module
-=======================
-
-.. automodule:: beembase.chains
-    :members:
-    :undoc-members:
-    :show-inheritance:
\ No newline at end of file
diff --git a/docs/beembase.memo.rst b/docs/beembase.memo.rst
index 8708a95b5c65408560867757b313d292095a6c45..a88a7bb15123947e1bf10873538d8b7abeb2611f 100644
--- a/docs/beembase.memo.rst
+++ b/docs/beembase.memo.rst
@@ -1,5 +1,5 @@
-beembase\.memo module
-=====================
+beembase\.memo
+==============
 
 .. automodule:: beembase.memo
     :members:
diff --git a/docs/beembase.objects.rst b/docs/beembase.objects.rst
index be152cd9f0cd33877d3c34851219a8f7336263ea..7be3267ee229464b8da1d5dab6f80be7af7edaba 100644
--- a/docs/beembase.objects.rst
+++ b/docs/beembase.objects.rst
@@ -1,5 +1,5 @@
-beembase\.objects module
-========================
+beembase\.objects
+=================
 
 .. automodule:: beembase.objects
     :members:
diff --git a/docs/beembase.objecttypes.rst b/docs/beembase.objecttypes.rst
index 77bf72dd4b1c7b374891c808ebdaa2c6ec93b542..585ae93051422487de10ac073c0998565d087361 100644
--- a/docs/beembase.objecttypes.rst
+++ b/docs/beembase.objecttypes.rst
@@ -1,5 +1,5 @@
-beembase\.objecttypes module
-============================
+beembase\.objecttypes
+=====================
 
 .. automodule:: beembase.objecttypes
     :members:
diff --git a/docs/beembase.operationids.rst b/docs/beembase.operationids.rst
index b757f3be36a8d27284c9a9477118960d15eda7a9..6489947eec41a2d15c176c051a5c07a26d1d22a7 100644
--- a/docs/beembase.operationids.rst
+++ b/docs/beembase.operationids.rst
@@ -1,7 +1,8 @@
-beembase\.operationids module
-=============================
+beembase\.operationids
+======================
 
 .. automodule:: beembase.operationids
     :members:
+    :noindex:
     :undoc-members:
     :show-inheritance:
\ No newline at end of file
diff --git a/docs/beembase.operations.rst b/docs/beembase.operations.rst
index 0fd3b967dad62ef4c50bb59a11857d2baaabad46..d8aeed786f50a095348b67366e582e99c773c533 100644
--- a/docs/beembase.operations.rst
+++ b/docs/beembase.operations.rst
@@ -1,5 +1,5 @@
-beembase\.operations module
-===========================
+beembase\.operations
+====================
 
 .. automodule:: beembase.operationids
     :members:
diff --git a/docs/beembase.rst b/docs/beembase.rst
deleted file mode 100644
index 38fb5f778256191e5576004ef1ec48f1a485b4b8..0000000000000000000000000000000000000000
--- a/docs/beembase.rst
+++ /dev/null
@@ -1,24 +0,0 @@
-beembase package
-================
-
-Submodules
-----------
-
-.. toctree::
-
-   beembase.chains
-   beembase.memo
-   beembase.objects
-   beembase.objecttypes
-   beembase.operationids
-   beembase.operations
-   beembase.signedtransactions
-   beembase.transactions
-
-Module contents
----------------
-
-.. automodule:: beembase
-    :members:
-    :undoc-members:
-    :show-inheritance:
\ No newline at end of file
diff --git a/docs/beembase.signedtransations.rst b/docs/beembase.signedtransactions.rst
similarity index 58%
rename from docs/beembase.signedtransations.rst
rename to docs/beembase.signedtransactions.rst
index 26baaf36c5e43e79b8206401e1029875400fa684..ddd58420cfafe72c1773b3cec6bae19cccb0ac23 100644
--- a/docs/beembase.signedtransations.rst
+++ b/docs/beembase.signedtransactions.rst
@@ -1,5 +1,5 @@
-beembase\.signedtransactions module
-===================================
+beembase\.signedtransactions
+============================
 
 .. automodule:: beembase.signedtransactions
     :members:
diff --git a/docs/beembase.transactions.rst b/docs/beembase.transactions.rst
index 61cf1eee520f3e4781e02f021e5984784d83f8d6..da989c3e543681c9720dbe7779e9164548ac62a6 100644
--- a/docs/beembase.transactions.rst
+++ b/docs/beembase.transactions.rst
@@ -1,5 +1,5 @@
-beembase\.transactions module
-===================================
+beembase\.transactions
+======================
 
 .. automodule:: beembase.transactions
     :members:
diff --git a/docs/beemgrapheneapi.graphenenerpc.rst b/docs/beemgrapheneapi.graphenenerpc.rst
index cf4d0660c2689da9dcbad05535a6bed303d73a56..a806260c44801b06854d579f36db1fecc24bf257 100644
--- a/docs/beemgrapheneapi.graphenenerpc.rst
+++ b/docs/beemgrapheneapi.graphenenerpc.rst
@@ -1,6 +1,6 @@
-************
-GrapheneRPC
-************
+beemgrapheneapi\.graphenerpc
+============================
+
 
 .. note:: This is a low level class that can be used in combination with
           GrapheneClient
@@ -9,5 +9,7 @@ This class allows to call API methods exposed by the witness node via
 websockets. It does **not** support notifications and is not run
 asynchronously.
 
-.. autoclass:: beemgrapheneapi.graphenerpc.GrapheneRPC
-     :members:
+.. automodule:: beemgrapheneapi.graphenerpc
+    :members:
+    :undoc-members:
+    :show-inheritance:
diff --git a/docs/beemgrapheneapi.rst b/docs/beemgrapheneapi.rst
deleted file mode 100644
index 1d0329eb301a95ea9a3a23370aa499b7d2823a46..0000000000000000000000000000000000000000
--- a/docs/beemgrapheneapi.rst
+++ /dev/null
@@ -1,17 +0,0 @@
-beemgrapheneapi package
-=======================
-
-Submodules
-----------
-
-.. toctree::
-
-   beemgrapheneapi.graphenenerpc
-
-Module contents
----------------
-
-.. automodule:: beemgrapheneapi
-    :members:
-    :undoc-members:
-    :show-inheritance:
diff --git a/docs/beemgraphenebase.account.rst b/docs/beemgraphenebase.account.rst
index 3ae066375f195c4c4801bf1bb55de2ff1862c5ed..26e781be011904d4ca663547f1b151b1fe8cd336 100644
--- a/docs/beemgraphenebase.account.rst
+++ b/docs/beemgraphenebase.account.rst
@@ -1,5 +1,5 @@
-beemgraphenebase\.account module
-================================
+beemgraphenebase\.account
+=========================
 
 .. automodule:: beemgraphenebase.account
     :members:
diff --git a/docs/beemgraphenebase.base58.rst b/docs/beemgraphenebase.base58.rst
index 9d8837730d42c01261171057d3df19f69281f516..5eb3057415db8a983ab0c329e9096959304582da 100644
--- a/docs/beemgraphenebase.base58.rst
+++ b/docs/beemgraphenebase.base58.rst
@@ -1,5 +1,5 @@
-beemgraphenebase\.base58 module
-===============================
+beemgraphenebase\.base58
+========================
 
 .. automodule:: beemgraphenebase.base58
     :members:
diff --git a/docs/beemgraphenebase.bip38.rst b/docs/beemgraphenebase.bip38.rst
index 03f6df2eeb7d7a69a340d6e0e60107e56fee39f9..2b038ad43ba3c5c3f919c66a0c6e766ba09f9452 100644
--- a/docs/beemgraphenebase.bip38.rst
+++ b/docs/beemgraphenebase.bip38.rst
@@ -1,5 +1,5 @@
-beemgraphenebase\.bip38 module
-==============================
+beemgraphenebase\.bip38
+=======================
 
 .. automodule:: beemgraphenebase.bip38
     :members:
diff --git a/docs/beemgraphenebase.ecdasig.rst b/docs/beemgraphenebase.ecdasig.rst
index 244b6a95bad793486e062a5d6ab0dc8f8145d548..dfa0b33d104fbd1e845c1b7e2fbf327f7bc560e6 100644
--- a/docs/beemgraphenebase.ecdasig.rst
+++ b/docs/beemgraphenebase.ecdasig.rst
@@ -1,5 +1,5 @@
-beemgraphenebase\.ecdasig module
-================================
+beemgraphenebase\.ecdasig
+=========================
 
 .. automodule:: beemgraphenebase.ecdasig
     :members:
diff --git a/docs/beemgraphenebase.objects.rst b/docs/beemgraphenebase.objects.rst
index 2709351db46ecd879bfd66a276badfee156eaa7b..1dcf96313cc3796c9570b1924cb2be0bef096d04 100644
--- a/docs/beemgraphenebase.objects.rst
+++ b/docs/beemgraphenebase.objects.rst
@@ -1,5 +1,5 @@
-beemgraphenebase\.objects module
-================================
+beemgraphenebase\.objects
+=========================
 
 .. automodule:: beemgraphenebase.objects
     :members:
diff --git a/docs/beemgraphenebase.objecttypes.rst b/docs/beemgraphenebase.objecttypes.rst
index 467d8fecd76077e38b5cd17a1294724c25d26280..baf02fd1c92fe7ca73ba051eaf211488ee4b54dc 100644
--- a/docs/beemgraphenebase.objecttypes.rst
+++ b/docs/beemgraphenebase.objecttypes.rst
@@ -1,5 +1,5 @@
-beemgraphenebase\.objecttypes module
-====================================
+beemgraphenebase\.objecttypes
+=============================
 
 .. automodule:: beemgraphenebase.objecttypes
     :members:
diff --git a/docs/beemgraphenebase.operations.rst b/docs/beemgraphenebase.operations.rst
index a758faed34368aff95cde964610e7bb3a018607d..c30f1087333a0b3bfd3ca9633d7fc983d9dc1f7f 100644
--- a/docs/beemgraphenebase.operations.rst
+++ b/docs/beemgraphenebase.operations.rst
@@ -1,5 +1,5 @@
-beemgraphenebase\.operations module
-===================================
+beemgraphenebase\.operations
+============================
 
 .. automodule:: beemgraphenebase.operationids
     :members:
diff --git a/docs/beemgraphenebase.rst b/docs/beemgraphenebase.rst
deleted file mode 100644
index aa25f6df9aa35075e9d63a58b4acd5711ec88028..0000000000000000000000000000000000000000
--- a/docs/beemgraphenebase.rst
+++ /dev/null
@@ -1,25 +0,0 @@
-beemgraphenebase package
-========================
-
-Submodules
-----------
-
-.. toctree::
-
-   beemgraphenebase.account
-   beemgraphenebase.base58
-   beemgraphenebase.bip38
-   beemgraphenebase.ecdasig
-   beemgraphenebase.objects
-   beemgraphenebase.objecttypes
-   beemgraphenebase.operations
-   beemgraphenebase.signedtransactions
-   beemgraphenebase.transactions
-
-Module contents
----------------
-
-.. automodule:: beemgraphenebase
-    :members:
-    :undoc-members:
-    :show-inheritance:
\ No newline at end of file
diff --git a/docs/beemgraphenebase.signedtransations.rst b/docs/beemgraphenebase.signedtransactions.rst
similarity index 55%
rename from docs/beemgraphenebase.signedtransations.rst
rename to docs/beemgraphenebase.signedtransactions.rst
index 93803200414d392d18eb9941f17268c7e6a08506..bb5d747b955403de5130e134dc7154ef8d10adb7 100644
--- a/docs/beemgraphenebase.signedtransations.rst
+++ b/docs/beemgraphenebase.signedtransactions.rst
@@ -1,5 +1,5 @@
-beemgraphenebase\.signedtransactions module
-===========================================
+beemgraphenebase\.signedtransactions 
+====================================
 
 .. automodule:: beemgraphenebase.signedtransactions
     :members:
diff --git a/docs/beemgraphenebase.transactions.rst b/docs/beemgraphenebase.transactions.rst
deleted file mode 100644
index 38374371d3188621a8df14ea85a7759e2ffb716e..0000000000000000000000000000000000000000
--- a/docs/beemgraphenebase.transactions.rst
+++ /dev/null
@@ -1,7 +0,0 @@
-beemgraphenebase\.transactions module
-=====================================
-
-.. automodule:: beemgraphenebase.transactions
-    :members:
-    :undoc-members:
-    :show-inheritance:
diff --git a/docs/cli.rst b/docs/cli.rst
index 0cf3eb1d3cf72a4d09210ab125a048b988d0fafe..09f1f86183af25afe14fbacb39498b4c1e64812b 100644
--- a/docs/cli.rst
+++ b/docs/cli.rst
@@ -90,9 +90,15 @@ If you've set up your `default_account`, you can now send funds by omitting this
 
     beempy transfer <recipient_name> 100 STEEM memo
 
+Commands
+--------
 
-Help
-----
+.. click:: beem.cli:cli
+    :prog: beempy
+    :show-nested:
+
+beempy --help
+-------------
 You can see all available commands with ``beempy --help``
 
 ::
@@ -125,8 +131,8 @@ You can see all available commands with ``beempy --help``
      claimreward             Claim reward balances By default, this will...
      config                  Shows local configuration
      convert                 Convert STEEMDollars to Steem (takes a week...
-     createwallet            Create new wallet with password
-     currentnode             Returns the current node
+     createwallet            Create new wallet with a new password
+     currentnode             Sets the currently working node at the first...
      delkey                  Delete key from the wallet PUB is the public...
      delprofile              Delete a variable in an account's profile
      disallow                Remove allowance an account/key to interact...
@@ -154,11 +160,14 @@ You can see all available commands with ``beempy --help``
      powerdown               Power down (start withdrawing VESTS from...
      powerdownroute          Setup a powerdown route
      powerup                 Power up (vest STEEM as STEEM POWER)
+     pricehistory            Show price history
      resteem                 Resteem an existing post
      sell                    Sell STEEM or SBD from the internal market...
      set                     Set default_account, default_vote_weight or...
      setprofile              Set a variable in an account's profile
      sign                    Sign a provided transaction with available...
+     ticker                  Show ticker
+     tradehistory            Show price history
      transfer                Transfer SBD/STEEM
      unfollow                Unfollow/Unmute another account
      updatememokey           Update an account's memo key
diff --git a/docs/conf.py b/docs/conf.py
index 0a950c7c9ec019489d9949c4199c68de8497f944..a636deddc3d9e013eb0d5975f7bf63ec85017bd7 100644
--- a/docs/conf.py
+++ b/docs/conf.py
@@ -31,7 +31,7 @@ sys.path.insert(0, os.path.abspath('../scripts/'))
 # Add any Sphinx extension module names here, as strings. They can be
 # extensions coming with Sphinx (named 'sphinx.ext.*') or your custom
 # ones.
-extensions = ["sphinx.ext.autodoc"]
+extensions = ["sphinx.ext.autodoc", "sphinx.ext.doctest", "sphinx_click.ext"]
 
 # Add any paths that contain templates here, relative to this directory.
 templates_path = ['_templates']
@@ -59,7 +59,7 @@ author = 'Holger Nahrstaedt'
 # The short X.Y version.
 version = '0.19'
 # The full version, including alpha/beta/rc tags.
-release = '0.19.23'
+release = '0.19.25'
 
 # The language for content autogenerated by Sphinx. Refer to documentation
 # for a list of supported languages.
@@ -110,7 +110,7 @@ todo_include_todos = False
 
 # The theme to use for HTML and HTML Help pages.  See the documentation for
 # a list of builtin themes.
-html_theme = 'pyramid'
+html_theme = 'sphinx_rtd_theme'
 
 # Theme options are theme-specific and customize the look and feel of a theme
 # further.  For a list of options available for each theme, see the
@@ -129,12 +129,12 @@ html_theme = 'pyramid'
 
 # The name of an image file (relative to this directory) to place at the top
 # of the sidebar.
-#html_logo = None
+html_logo = '_static/beem-logo_2.svg'
 
 # The name of an image file (within the static path) to use as favicon of the
 # docs.  This file should be a Windows icon file (.ico) being 16x16 or 32x32
 # pixels large.
-#html_favicon = None
+html_favicon = '_static/beem-icon_bw.png'
 
 # Add any paths that contain custom static files (such as style sheets) here,
 # relative to this directory. They are copied after the builtin static files,
@@ -269,7 +269,7 @@ man_pages = [
 #  dir menu entry, description, category)
 texinfo_documents = [
   (master_doc, 'beem', 'beem Documentation',
-   author, 'beem', 'One line description of project.',
+   author, 'beem', 'python library for steem',
    'Miscellaneous'),
 ]
 
diff --git a/docs/configuration.rst b/docs/configuration.rst
index db9d6b8a15b85924f292d4e19f6ece575dde2acd..a346723a5ea82b815a949338ceef30ac7db7cdb6 100644
--- a/docs/configuration.rst
+++ b/docs/configuration.rst
@@ -5,9 +5,11 @@ Configuration
 The pysteem library comes with its own local configuration database
 that stores information like
 
-* API node URL
+* API node URLs
 * default account name
 * the encrypted master password
+* the default voting weight
+* if keyring should be used for unlocking the wallet
 
 and potentially more.
 
@@ -21,14 +23,153 @@ You can access those variables like a regular dictionary by using
 
 Keys can be added and changed like they are for regular dictionaries.
 
-If you don't want to load the :class:`steem.Steem` class, you
+If you don't want to load the :class:`beem.Steem` class, you
 can load the configuration directly by using:
 
 .. code-block:: python
 
     from beem.storage import configStorage as config
 
-API
----
-.. autoclass:: beem.storage.Configuration
-   :members:
+It is also possible to access the configuration with the commandline tool `beempy`:
+
+.. code-block:: bash
+
+    beempy config
+
+API node URLs
+-------------
+
+The default node URLs which will be used when  `node` is  `None` in :class:`beem.Steem` class
+is stored in `config["nodes"]` as string. The list can be get and set by:
+
+.. code-block:: python
+
+    from beem import Steem
+    steem = Steem()
+    node_list = steem.get_default_nodes()
+    node_list = node_list[1:] + [node_list[0]]
+    steem.set_default_nodes(node_list)
+
+beempy can also be used to set nodes:
+
+.. code-block:: bash
+
+        beempy set nodes wss://steemd.privex.io
+        beempy set nodes "['wss://steemd.privex.io', 'wss://gtg.steem.house:8090']"
+
+The default nodes can be resetted to the default value. When the first node does not
+answer, steem should be set to the offline mode. This can be done by:
+
+.. code-block:: bash
+
+        beempy -o set nodes ""
+
+or
+
+.. code-block:: python
+
+    from beem import Steem
+    steem = Steem(offline=True)
+    steem.set_default_nodes("")
+
+Default account
+---------------
+
+The default account name is used in some functions, when no account name is given.
+It is also used in  `beempy` for all account related functions.
+
+.. code-block:: python
+
+    from beem import Steem
+    steem = Steem()
+    steem.set_default_account("test")
+    steem.config["default_account"] = "test"
+
+or by beempy with
+
+.. code-block:: bash
+
+        beempy set default_account test
+
+Default voting weight
+---------------------
+
+The default vote weight is used for voting, when no vote weight is given.
+
+.. code-block:: python
+
+    from beem import Steem
+    steem = Steem()
+    steem.config["default_vote_weight"] = 100
+
+or by beempy with
+
+.. code-block:: bash
+
+        beempy set default_vote_weight 100
+
+
+Setting password_storage
+------------------------
+
+The password_storage can be set to:
+
+* environment, this is the default setting. The master password for the wallet can be provided in the environment variable `UNLOCK`.
+* keyring (when set with beempy, it asks for the wallet password)
+
+.. code-block:: bash
+
+        beempy set password_storage environment
+        beempy set password_storage keyring
+
+
+
+Environment variable for storing the master password
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+When `password_storage` is set to `environment`, the master password can be stored in `UNLOCK`
+for unlocking automatically the wallet.
+
+Keyring support for beempy and wallet
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+In order to use keyring for storing the wallet password, the following steps are necessary:
+
+* Install keyring: `pip install keyring`
+* Change `password_storage` to `keyring` with `beempy` and enter the wallet password.
+
+It also possible to change the password in the keyring by
+
+.. code-block:: bash
+
+    python -m keyring set beem wallet
+
+The stored master password can be displayed in the terminal by
+
+.. code-block:: bash
+
+    python -m keyring get beem wallet
+
+When keyring is set as `password_storage` and the stored password in the keyring
+is identically to the set master password of the wallet, the wallet is automatically
+unlocked everytime it is used.
+
+Testing if unlocking works
+~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+Testing if the master password is correctly provided by keyring or the `UNLOCK` variable:
+
+.. code-block:: python
+
+    from beem import Steem
+    steem = Steem()
+    print(steem.wallet.locked())
+
+When the output is False, automatic unlocking with keyring or the `UNLOCK` variable works.
+It can also tested by beempy with
+
+.. code-block:: bash
+
+        beempy walletinfo --test-unlock
+
+When no password prompt is shown, unlocking with keyring or the `UNLOCK` variable works.
diff --git a/docs/index.rst b/docs/index.rst
index 7dcb9eaa583acb229827b8d7f9f93824ae874dda..8237bc84b5dd19b47157cc4548a7c1bf5227ac70 100644
--- a/docs/index.rst
+++ b/docs/index.rst
@@ -25,7 +25,7 @@ software) that allows for fast transactions and ascalable blockchain
 solution. In case of Steem, it comes with decentralized publishing of
 content.
 
-The Steem library has been designed to allow developers to easily
+The beem library has been designed to allow developers to easily
 access its routines and make use of the network without dealing with all
 the related blockchain technology and cryptography. This library can be
 used to do anything that is allowed according to the Steem
@@ -118,58 +118,11 @@ General
    tutorials
    cli
    configuration
+   modules
    contribute
    support
+   indices
 
-Packages
---------
-
-
-beem
-~~~~
-
-.. toctree::
-   :maxdepth: 3
-
-   beem
-
-beembase
-~~~~~~~~
-
-.. toctree::
-   :maxdepth: 3
-
-   beembase
-
-beemapi
-~~~~~~~
-
-.. toctree::
-   :maxdepth: 3
-
-   beemapi
-
-beemgraphenebase
-~~~~~~~~~~~~~~~~
-
-.. toctree::
-   :maxdepth: 3
-
-   beemgraphenebase
-
-beemgrapheneapi
-~~~~~~~~~~~~~~~
-
-.. toctree::
-   :maxdepth: 3
-
-   beemgrapheneapi
-   
-Glossary
-========
-
-.. toctree::
-   :maxdepth: 1
 
 
 Indices and tables
diff --git a/docs/indices.rst b/docs/indices.rst
new file mode 100644
index 0000000000000000000000000000000000000000..47168c868966e0dcadcc3687e71f9c9b89d1b242
--- /dev/null
+++ b/docs/indices.rst
@@ -0,0 +1,5 @@
+Indices and Tables
+==================
+
+* :ref:`genindex`
+* :ref:`modindex`
diff --git a/docs/installation.rst b/docs/installation.rst
index 484bcaf63d5eca98fbd1459177973ce87bd41baa..6570808f979206e35a8801ee038a6a0363300b14 100644
--- a/docs/installation.rst
+++ b/docs/installation.rst
@@ -1,7 +1,8 @@
 Installation
 ============
-Warning: install beem will install pycrytodome which is not compatible to pycryto which is need for python-steem.
-At the moment, either beem or steem can be install at one maschine!
+The minimal working python version is 2.7.x. or 3.4.x
+
+beem can be installed parallel to python-steem.
 
 For Debian and Ubuntu, please ensure that the following packages are installed:
         
@@ -26,10 +27,19 @@ For Termux on Android, please install the following packages:
 .. code:: bash
 
     pkg install clang openssl-dev python-dev
+
+Signing and Verify can be fasten (200 %) by installing cryptography:
+
+.. code:: bash
+
+    pip install -U cryptography
     
 Install beem by pip::
 
     pip install -U beem
+
+Manual installation
+-------------------
     
 You can install beem from this repository if you want the latest
 but possibly non-compiling version::
@@ -43,20 +53,19 @@ but possibly non-compiling version::
 Run tests after install::
 
     pytest
+    
+    
+Installing beem with conda-forge
+--------------------------------
 
-Manual installation:
---------------------
-
-::
+Installing beem from the conda-forge channel can be achieved by adding conda-forge to your channels with::
 
-    $ git clone https://github.com/holgern/beem/
-    $ cd beem
-    $ python setup.py build
-    $ python setup.py install --user
+    conda config --add channels conda-forge
+    
+Once the conda-forge channel has been enabled, beem can be installed with::
 
-Upgrade
--------
+    conda install beem
 
-::
+Signing and Verify can be fasten (200 %) by installing cryptography::
 
-   $ pip install --user --upgrade
+    conda install cryptography
diff --git a/docs/modules.rst b/docs/modules.rst
index 266c622a9b0602e312f8d989ea95827b5b820422..97a56620601ec4a86172ae79bb96bf2f52b78bdf 100644
--- a/docs/modules.rst
+++ b/docs/modules.rst
@@ -1,9 +1,76 @@
-beem
-====
+Modules
+=======
+
+beem Modules
+---------------
+
+.. toctree::
+
+   beem.account
+   beem.aes
+   beem.asciichart
+   beem.amount
+   beem.asset
+   beem.steem
+   beem.block
+   beem.blockchain
+   beem.blockchainobject
+   beem.comment
+   beem.discussions
+   beem.exceptions
+   beem.instance
+   beem.market
+   beem.memo
+   beem.message
+   beem.notify
+   beem.price
+   beem.storage
+   beem.transactionbuilder
+   beem.utils
+   beem.vote
+   beem.wallet
+   beem.witness
+
+beemapi Modules
+------------------
+
+.. toctree::
+
+   beemapi.steemnoderpc
+   beemapi.exceptions
+   beemapi.websocket
+
+beembase Modules
+-------------------
+
+.. toctree::
+
+   beembase.memo
+   beembase.objects
+   beembase.objecttypes
+   beembase.operationids
+   beembase.operations
+   beembase.signedtransactions
+   beembase.transactions
+
+beemgrapheneapi Modules
+--------------------------
+
+.. toctree::
+
+   beemgrapheneapi.graphenenerpc
+
+
+beemgraphenebase Modules
+---------------------------
 
 .. toctree::
-   :maxdepth: 6
 
-   beem
-   beemapi
-   beembase
\ No newline at end of file
+   beemgraphenebase.account
+   beemgraphenebase.base58
+   beemgraphenebase.bip38
+   beemgraphenebase.ecdasig
+   beemgraphenebase.objects
+   beemgraphenebase.objecttypes
+   beemgraphenebase.operations
+   beemgraphenebase.signedtransactions
\ No newline at end of file
diff --git a/docs/quickstart.rst b/docs/quickstart.rst
index f4fc09c0f1775f6bdeeb7b8121f754bb7c11263c..d2554f1a3fa2f2fdc13d74d5c68cdb7ad6522d23 100644
--- a/docs/quickstart.rst
+++ b/docs/quickstart.rst
@@ -1,3 +1,204 @@
-***********
 Quickstart
-***********
+==========
+
+Steem
+-----
+The steem object is the connection to the Steem blockchain.
+By creating this object different options can be set.
+
+.. note:: All init methods of beem classes can be given
+          the ``steem_instance=`` parameter to assure that
+          all objects use the same steem object. When the
+          ``steem_instance=`` parameter is not used, the 
+          steem object is taken from get_shared_steem_instance().
+
+          ``get_shared_steem_instance()`` returns a global instance of steem.
+          It can be set by ``set_shared_steem_instance`` otherwise it is created
+          on the first call.
+
+.. code-block:: python
+
+   from beem import Steem
+   stm = Steem()
+   account = Account("test", steem_instance=stm)
+
+.. code-block:: python
+
+   from beem import Steem
+   from beem.instance import set_shared_steem_instance
+   stm = Steem()
+   set_shared_steem_instance(stm)
+   account = Account("test")
+
+Wallet and Keys
+---------------
+Each account has the following keys:
+
+* Posting key (allows accounts to post, vote, edit, resteem and follow/mute)
+* Active key (allows accounts to transfer, power up/down, voting for witness, ...)
+* Memo key (Can be used to encrypt/decrypt memos)
+* Owner key (The most important key, should not be used with beem)
+
+Outgoing operation, which will be stored in the steem blockchain, have to be
+signed by a private key. E.g. Comment or Vote operation need to be signed by the posting key
+of the author or upvoter. Private keys can be provided to beem temporary or can be
+stored encrypted in a sql-database (wallet).
+
+.. note:: Before using the wallet the first time, it has to be created and a password has
+          to set. The wallet content is available to beempy and all python scripts, which have
+          access to the sql database file.
+
+Creating a wallet
+~~~~~~~~~~~~~~~~~
+``steem.wallet.wipe(True)`` is only necessary when there was already an wallet created.
+.. code-block:: python
+
+   from beem import Steem
+   steem = Steem()
+   steem.wallet.wipe(True)
+   steem.wallet.create("wallet-passphrase")
+
+
+Adding keys to the wallet
+~~~~~~~~~~~~~~~~~~~~~~~~~
+.. code-block:: python
+
+   from beem import Steem
+   steem = Steem()
+   steem.wallet.unlock("wallet-passphrase")
+   steem.wallet.addPrivateKey("xxxxxxx")
+   steem.wallet.addPrivateKey("xxxxxxx")
+
+Using the keys in the wallet
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+.. code-block:: python
+
+   from beem import Steem
+   steem = Steem()
+   steem.wallet.unlock("wallet-passphrase")
+   account = Account("test", steem_instance=steem)
+   account.transfer("<to>", "<amount>", "<asset>", "<memo>")
+
+Private keys can also set temporary
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+.. code-block:: python
+
+   from beem import Steem
+   steem = Steem(keys=["xxxxxxxxx"])
+   account = Account("test", steem_instance=steem)
+   account.transfer("<to>", "<amount>", "<asset>", "<memo>")
+
+Receiving information about blocks, accounts, votes, comments, market and witness
+---------------------------------------------------------------------------------
+
+Receive all Blocks from the Blockchain
+
+.. code-block:: python
+
+   from beem.blockchain import Blockchain
+   blockchain = Blockchain()
+   for op in Blockchain.ops():
+       print(op)
+
+Access one Block
+
+.. code-block:: python
+
+   from beem.block import Block
+   print(Block(1))
+
+Access an account
+
+.. code-block:: python
+
+   from beem.account import Account
+   account = Account("test")
+   print(account.balances)
+   for h in account.history():
+       print(h)
+
+A single vote
+
+.. code-block:: python
+
+   from beem.vote import Vote
+   vote = Vote(u"@gtg/ffdhu-gtg-witness-log|gandalf")
+   print(vote.json())
+
+All votes from an account
+
+.. code-block:: python
+
+   from beem.vote import AccountVotes
+   allVotes = AccountVotes("gtg")
+
+Access a post
+
+.. code-block:: python
+
+   from beem.comment import Comment
+   comment = Comment("@gtg/ffdhu-gtg-witness-log")
+   print(comment["active_votes"])
+
+Access the market
+
+.. code-block:: python
+
+   from beem.market import Market
+   market = Market("SBD:STEEM")
+   print(market.ticker())
+
+Access a witness
+
+.. code-block:: python
+
+   from beem.witness import Witness
+   witness = Witness("gtg")
+   print(witness.is_active)
+
+Sending transaction to the blockchain
+-------------------------------------
+
+Sending a Transfer
+
+.. code-block:: python
+
+   from beem import Steem
+   steem = Steem()
+   steem.wallet.unlock("wallet-passphrase")
+   account = Account("test", steem_instance=steem)
+   account.transfer("null", 1, "SBD", "test")
+
+Upvote a post
+
+.. code-block:: python
+
+   from beem.comment import Comment
+   from beem import Steem
+   steem = Steem()
+   steem.wallet.unlock("wallet-passphrase")
+   comment = Comment("@gtg/ffdhu-gtg-witness-log", steem_instance=steem)
+   comment.upvote(weight=10, voter="test")
+
+Publish a post to the blockchain
+
+.. code-block:: python
+
+   from beem import Steem
+   steem = Steem()
+   steem.wallet.unlock("wallet-passphrase")
+   steem.post("title", "body", author="test", tags=["a", "b", "c", "d", "e"], self_vote=True)
+
+Sell STEEM on the market
+
+.. code-block:: python
+
+   from beem.market import Market
+   from beem import Steem
+   steem.wallet.unlock("wallet-passphrase")
+   market = Market("SBD:STEEM", steem_instance=steem)
+   print(market.ticker())
+   market.steem.wallet.unlock("wallet-passphrase")
+   print(market.sell(300, 100)  # sell 100 STEEM for 300 STEEM/SBD
diff --git a/docs/requirements.txt b/docs/requirements.txt
index 83dc3d1ec196e500760521b6922aa7b2ea6e0821..fed1bfabd7a25239c55b625a16c81a2d67726e2c 100644
--- a/docs/requirements.txt
+++ b/docs/requirements.txt
@@ -15,3 +15,5 @@ mock
 appdirs
 Click
 prettytable
+sphinx_rtd_theme
+sphinx-click
diff --git a/docs/support.rst b/docs/support.rst
index 5377a837d222595a7fb0b077f4788397aca38abd..cd2bd342e1655e417a43a2fee083060dadab0dc7 100644
--- a/docs/support.rst
+++ b/docs/support.rst
@@ -2,8 +2,6 @@
 Support and Questions
 *********************
 
-We have currently not setup a distinct channel for development around
-pysteemi. However, many of the contributors are frequently reading
-through these channels:
-
+Help and discussion channel for beem can be found here:
 
+* https://discord.gg/4HM592V
diff --git a/docs/tutorials.rst b/docs/tutorials.rst
index 45ed1589348ad7e693e331e41282cc42171ddd64..442bb0b668b5752158d4f649d7ca3aa479eca36d 100644
--- a/docs/tutorials.rst
+++ b/docs/tutorials.rst
@@ -11,6 +11,9 @@ receivers), but it also allows to use any other kind of operation. The
 advantage here is that the user can be sure that the operations are
 executed in the same order as they are added to the transaction.
 
+A block can only include one vote operation and
+one comment operation from each sender.
+
 .. code-block:: python
 
   from pprint import pprint
@@ -19,19 +22,18 @@ executed in the same order as they are added to the transaction.
   from beem.comment import Comment
   from beem.instance import set_shared_steem_instance
 
-  # Only for testing not a real working key
+  # not a real working key
   wif = "5KQwrPbwdL6PhXujxW37FSSQZ1JiwsST4cqQzDeyXtP79zkvFD3"
 
-  # set nobroadcast always to True, when testing
-  testnet = Steem(
-      nobroadcast=True,
-      bundle=True,
+  stm = Steem(
+      bundle=True, # Enable bundle broadcast
+      # nobroadcast=True, # Enable this for testing
       keys=[wif],
   )
-  # Set testnet as shared instance
-  set_shared_steem_instance(testnet)
+  # Set stm as shared instance
+  set_shared_steem_instance(stm)
 
-  # Account and Comment will use now testnet
+  # Account and Comment will use now stm
   account = Account("test")
 
   # Post 
@@ -46,6 +48,71 @@ executed in the same order as they are added to the transaction.
   pprint(testnet.broadcast())
 
 
+Use nobroadcast for testing
+---------------------------
+
+When using  `nobroadcast=True` the transaction is not broadcasted but printed.
+
+.. code-block:: python
+
+  from pprint import pprint
+  from beem import Steem
+  from beem.account import Account
+  from beem.instance import set_shared_steem_instance
+
+  # Only for testing not a real working key
+  wif = "5KQwrPbwdL6PhXujxW37FSSQZ1JiwsST4cqQzDeyXtP79zkvFD3"
+
+  # set nobroadcast always to True, when testing
+  testnet = Steem(
+      nobroadcast=True, # Set to false when want to go live
+      keys=[wif],
+  )
+  # Set testnet as shared instance
+  set_shared_steem_instance(testnet)
+
+  # Account will use now testnet
+  account = Account("test")
+
+  pprint(account.transfer("test1", 1, "STEEM"))
+
+When executing the script above, the output will be similar to the following:
+
+.. code-block:: js
+
+    Not broadcasting anything!
+    {'expiration': '2018-05-01T16:16:57',
+     'extensions': [],
+     'operations': [['transfer',
+                     {'amount': '1.000 STEEM',
+                      'from': 'test',
+                      'memo': '',
+                      'to': 'test1'}]],
+     'ref_block_num': 33020,
+     'ref_block_prefix': 2523628005,
+     'signatures': ['1f57da50f241e70c229ed67b5d61898e792175c0f18ae29df8af414c46ae91eb5729c867b5d7dcc578368e7024e414c237f644629cb0aa3ecafac3640871ffe785']}
+
+Clear BlockchainObject Caching
+------------------------------
+
+Each BlockchainObject (Account, Comment, Vote, Witness, Amount, ...) has a glocal cache. This cache
+stores all objects and could lead to increased memory consumption. The global cache can be cleared
+with a `clear_cache()` call from any BlockchainObject.
+
+.. code-block:: python
+
+  from pprint import pprint
+  from beem.account import Account
+
+  account = Account("test")
+  pprint(str(account._cache))
+  account1 = Account("test1")
+  pprint(str(account._cache))
+  pprint(str(account1._cache))
+  account.clear_cache()
+  pprint(str(account._cache))
+  pprint(str(account1._cache))
+
 Simple Sell Script
 ------------------
 
@@ -129,3 +196,86 @@ Sell at a timely rate
         )
 
         sell()
+
+Batch api calls on AppBase
+--------------------------
+
+Batch api calls are possible with AppBase RPC nodes.
+If you call a Api-Call with add_to_queue=True it is not submitted but stored in rpc_queue.
+When a call with add_to_queue=False (default setting) is started,
+the complete queue is sended at once to the node. The result is a list with replies.
+
+.. code-block:: python
+
+    from beem import Steem
+    stm = Steem("https://api.steemit.com")
+    stm.rpc.get_config(add_to_queue=True)
+    stm.rpc.rpc_queue
+
+.. code-block:: python
+
+    [{'method': 'condenser_api.get_config', 'jsonrpc': '2.0', 'params': [], 'id': 6}]
+
+.. code-block:: python
+
+    result = stm.rpc.get_block({"block_num":1}, api="block", add_to_queue=False)
+    len(result)
+
+.. code-block:: python
+
+    2
+
+
+Account history
+---------------
+Lets calculate the curation reward from the last 7 days:
+
+.. code-block:: python
+
+    from datetime import datetime, timedelta
+    from beem.account import Account
+    from beem.amount import Amount
+    
+    acc = Account("gtg")
+    stop = datetime.utcnow() - timedelta(days=7)
+    reward_vests = Amount("0 VESTS")
+    for reward in acc.history_reverse(stop=stop, only_ops=["curation_reward"]):
+                reward_vests += Amount(reward['reward'])
+    curation_rewards_SP = acc.steem.vests_to_sp(reward_vests.amount)
+    print("Rewards are %.3f SP" % curation_rewards_SP)
+
+Transactionbuilder
+------------------
+Sign transactions with beem without using the wallet and build the transaction by hand.
+Example without using the wallet:
+
+.. code-block:: python
+
+    from beem import Steem
+    from beem.transactionbuilder import TransactionBuilder
+    stm = Steem()
+    tx = TransactionBuilder(steem_instance=stm)
+    tx.appendOps(Transfer(**{"from": 'user_a',
+                             "to": 'user_b',
+                             "amount": '1.000 SBD',
+                             "memo": 'test 2'}))
+    tx.appendWif('5.....') # `user_a`
+    tx.sign()
+    tx.broadcast()
+
+Example with using the wallet:
+
+.. code-block:: python
+
+    from beem.transactionbuilder import TransactionBuilder
+    from beem import Steem
+    stm = Steem()
+    stm.wallet.unlock("secret_password")
+    tx = TransactionBuilder(steem_instance=stm)
+    tx.appendOps(Transfer(**{"from": 'user_a',
+                             "to": 'user_b',
+                             "amount": '1.000 SBD',
+                             "memo": 'test 2'}))
+    tx.appendSigner('user_a', 'active')
+    tx.sign()
+    tx.broadcast()
diff --git a/pytest.ini b/pytest.ini
index 39a29feb61a4f306341cf450e60aaf9aae811ad2..908b3331ae1226eb124718cec933737987bc04ac 100644
--- a/pytest.ini
+++ b/pytest.ini
@@ -1,3 +1,3 @@
 [pytest]
-norecursedirs = .git .* *.egg* old docs dist build
-addopts = -rw
+norecursedirs = .git .* *.egg* old docs dist build examples
+addopts = -rw --doctest-modules
diff --git a/tests/beem/test_comment.py b/tests/beem/test_comment.py
index 2fa81acc6077fe6b9b85cd11871f973660ba83b2..b21f380bccf6e9b711b0542a0eb2849d51bb70db 100644
--- a/tests/beem/test_comment.py
+++ b/tests/beem/test_comment.py
@@ -77,6 +77,25 @@ class Testcases(unittest.TestCase):
             self.assertTrue(len(c.get_votes()) > 0)
             self.assertTrue(isinstance(c.get_votes()[0], Vote))
 
+    @parameterized.expand([
+        ("non_appbase"),
+        ("appbase"),
+    ])
+    def test_comment_dict(self, node_param):
+        if node_param == "non_appbase":
+            bts = self.bts
+        else:
+            bts = self.appbase
+        c = Comment({'author': self.author, 'permlink': self.permlink}, steem_instance=bts)
+        c.refresh()
+        self.assertEqual(c.author, self.author)
+        self.assertEqual(c.permlink, self.permlink)
+        self.assertEqual(c.authorperm, self.authorperm)
+        self.assertEqual(c.category, self.category)
+        self.assertEqual(c.parent_author, '')
+        self.assertEqual(c.parent_permlink, self.category)
+        self.assertEqual(c.title, self.title)
+
     @parameterized.expand([
         ("non_appbase"),
         ("appbase"),
diff --git a/tests/beem/test_discussions.py b/tests/beem/test_discussions.py
index c11b68e55f20b57f207a7a87eee031ad17fbc974..fb170a9309e465e24e203f06f113d80387c4bb21 100644
--- a/tests/beem/test_discussions.py
+++ b/tests/beem/test_discussions.py
@@ -117,18 +117,10 @@ class Testcases(unittest.TestCase):
         d = Discussions_by_active(query, steem_instance=bts)
         self.assertEqual(len(d), 10)
 
-    @parameterized.expand([
-        ("non_appbase"),
-        ("appbase"),
-    ])
-    def test_cashout(self, node_param):
-        if node_param == "non_appbase":
-            bts = self.bts
-        else:
-            bts = self.appbase
-        query = Query()
-        query["limit"] = 10
-        Discussions_by_cashout({"limit": 10}, steem_instance=bts)
+    def test_cashout(self):
+        bts = self.appbase
+        query = Query(limit=10)
+        Discussions_by_cashout(query, steem_instance=bts)
         # self.assertEqual(len(d), 10)
 
     @parameterized.expand([
diff --git a/tox.ini b/tox.ini
index bb4551adb38c0b8a706bb0055d12fd6ea70427a4..4c87d14922b6ee3844bfbac78ecc6fa5c655f41f 100644
--- a/tox.ini
+++ b/tox.ini
@@ -128,6 +128,7 @@ changedir=
     docs
 deps=-rdocs/requirements.txt
      sphinx
+     sphinx-click
 commands=
     sphinx-build -b html ./ ./html