diff --git a/.travis.yml b/.travis.yml
index 94ea926d7b19254cf0a916f6e92abce4a3065051..cca898e6cf25f319591f9402ad3d383a13b7173f 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -15,8 +15,18 @@ matrix:
         - pip install flake8
       script:
         - flake8
+    - os: linux
+      python: 3.5
+      env:
+        - TOXENV=py35
     - os: linux
       python: 3.6
+      env:
+        - TOXENV=py36
+    # - os: linux
+    #  python: 3.7
+    #  env:
+    #    - TOXENV=py37
     - os: osx
       osx_image: xcode9.2
       language: objective-c
@@ -36,7 +46,7 @@ before_install:
   - pip install --upgrade pip
   - pip install --upgrade wheel
   # Set numpy version first, other packages link against it
-  - pip install six nose coverage codecov tox pytest pytest-cov
+  - pip install six nose coverage codecov tox-travis pytest pytest-cov
 
 script:
  - tox
diff --git a/Makefile b/Makefile
index f71bacf3ed75a315ba11ded88fda0b964a941b28..808279e4178abe91035db1cc166906488e594e45 100644
--- a/Makefile
+++ b/Makefile
@@ -39,4 +39,8 @@ dist:
 	python3 setup.py sdist upload -r pypi
 	python3 setup.py bdist_wheel upload
 
+docs:
+	sphinx-apidoc -d 6 -e -f -o docs beem*
+	make -C docs clean html
+
 release: clean check dist git
diff --git a/README.rst b/README.rst
index f56e1a1f083f9754cde4a45fc0ddb4507c06098b..a686c2a9215f9545862691b877dabb137134687e 100644
--- a/README.rst
+++ b/README.rst
@@ -4,6 +4,11 @@ beem - Unofficial Python 3 Library for Steem
 !!!Alpha-State, be carefull!!!
 
 beem is an unofficial python 3 library for steem, which is created new from scratch from https://github.com/xeroc/python-bitshares.
+The library name is derived from a beam maschine, similar to the analogy between steem and steam. beem depends on 
+
+.. image:: https://img.shields.io/pypi/v/beem.svg
+    :target: https://pypi.python.org/pypi/beem/
+    :alt: Latest Version
 
 .. image:: https://travis-ci.org/holgern/beem.svg?branch=master
     :target: https://travis-ci.org/holgern/beem
@@ -39,6 +44,12 @@ For OSX, please do the following::
     brew install openssl
     export CFLAGS="-I$(brew --prefix openssl)/include $CFLAGS"
     export LDFLAGS="-L$(brew --prefix openssl)/lib $LDFLAGS"
+
+For Termux on Android, please install the following packages:
+
+.. code:: bash
+
+    pkg install clang openssl-dev python-dev
     
 Install beem by pip::
 
diff --git a/beem/account.py b/beem/account.py
index bd09a2c5d086373f88cbc00b8c1ac35bc1d648b9..63f79b4ef7ebc24eae9c3fb76078e1ad22779d08 100644
--- a/beem/account.py
+++ b/beem/account.py
@@ -30,6 +30,7 @@ class Account(BlockchainObject):
             from beem.account import Account
             account = Account("test")
             print(account)
+            print(account.balances)
 
         .. note:: This class comes with its own caching function to reduce the
                   load on the API server. Instances of this class can be
@@ -252,54 +253,3 @@ class Account(BlockchainObject):
                 break
             if first < _limit:
                 _limit = first - 1
-
-    # def upgrade(self):
-    #    return self.steem.upgrade_account(account=self)
-
-
-class AccountUpdate(dict):
-    """ This purpose of this class is to keep track of account updates
-        as they are pushed through by :class:`beem.notify.Notify`.
-
-        Instances of this class are dictionaries and take the following
-        form:
-
-        ... code-block: js
-
-            {'name': 'test',
-             'owner': '1.2.29',
-             'pending_fees': 0,
-             'pending_vested_fees': 16310,
-             'total_core_in_orders': '6788845277634',
-             'total_ops': 0}
-
-    """
-
-    def __init__(
-        self,
-        data,
-        steem_instance=None
-    ):
-        self.steem = steem_instance or shared_steem_instance()
-
-        if isinstance(data, dict):
-            super(AccountUpdate, self).__init__(data)
-        else:
-            account = Account(data, steem_instance=self.steem)
-            # update = self.steem.rpc.get_objects([
-            #    "2.6.%s" % (account["id"].split(".")[2])
-            # ])[0]
-            super(AccountUpdate, self).__init__(account)
-
-    @property
-    def account(self):
-        """ In oder to obtain the actual
-            :class:`steem.account.Account` from this class, you can
-            use the ``account`` attribute.
-        """
-        account = Account(self["name"])
-        account.refresh()
-        return account
-
-    def __repr__(self):
-        return "<AccountUpdate: {}>".format(self["name"])
diff --git a/beem/amount.py b/beem/amount.py
index 43a227285cfb68057325925d90eb3eca2171ab5e..8bc950e302312c7eb016cd38e27dacd28b2e7d44 100644
--- a/beem/amount.py
+++ b/beem/amount.py
@@ -35,8 +35,16 @@ class Amount(dict):
 
         .. code-block:: python
 
-            Amount("1 STEEM") * 2
-            Amount("15 SBD") + Amount("0.5 SBD")
+            from beem.amount import Amount
+            from beem.asset import Asset
+            a = Amount("1 STEEM")
+            b = Amount(1, "STEEM")
+            c = Amount("20", Asset("STEEM"))
+            a + b
+            a * 2
+            a += b
+            a /= 2.0
+
     """
     def __init__(self, *args, amount=None, asset=None, steem_instance=None):
         self["asset"] = {}
diff --git a/beem/blockchain.py b/beem/blockchain.py
index fd73725b58af50e72e3a874cd27bc0f7376c6e81..8dc0b3824ea8e5f7e4f30e661860bebccd693c6c 100644
--- a/beem/blockchain.py
+++ b/beem/blockchain.py
@@ -14,6 +14,27 @@ class Blockchain(object):
                  actual head block (``head``)
 
         This class let's you deal with blockchain related data and methods.
+        Read blockchain related data:
+        .. code-block:: python
+
+            from beem.blockchain import Blockchain
+            chain = Blockchain()
+
+        Read current block and blockchain info
+        .. code-block:: python
+            print(chain.get_current_block())
+            print(chain.info())
+
+        Monitor for new blocks ..
+        .. code-block:: python
+            for block in chain.blocks():
+                print(block)
+
+        or each operation individually:
+        .. code-block:: python
+            for operations in chain.ops():
+                print(operations)
+
     """
     def __init__(
         self,
diff --git a/beem/instance.py b/beem/instance.py
index b50b4fcdfd99e22fd6d28624cd3e7742ded94831..d713eaeb0ff7b7c181024a8df208c31d9b4f0b38 100644
--- a/beem/instance.py
+++ b/beem/instance.py
@@ -9,6 +9,16 @@ def shared_steem_instance():
     """ This method will initialize ``SharedInstance.instance`` and return it.
         The purpose of this method is to have offer single default
         steem instance that can be reused by multiple classes.
+
+        .. code-block:: python
+
+            from beem.account import Account
+            from beem.instance import shared_steem_instance
+
+            account = Account("test")
+            # is equivalent with
+            account = Account("test", steem_instance=shared_steem_instance())
+
     """
     if not SharedInstance.instance:
         clear_cache()
diff --git a/beem/memo.py b/beem/memo.py
index 58523903e80f8b596aba4aed4032c90b2ed1bfca..8b554f2191b4efae563ebfc7197542931346abbf 100644
--- a/beem/memo.py
+++ b/beem/memo.py
@@ -41,6 +41,97 @@ class Memo(object):
 
         if ``op_data`` being the payload of a transfer operation.
 
+        Memo Keys
+        #########
+
+        In BitShares, 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
+        publick key of the receiver.
+
+        In order for the receiver to decode the memo, the shared secret has to be
+        derived from the receiver's private key and the senders public key.
+
+        The memo public key is part of the account and can be retreived with the
+        `get_account` call:
+
+        .. code-block:: js
+
+            get_account <accountname>
+            {
+              [...]
+              "options": {
+                "memo_key": "GPH5TPTziKkLexhVKsQKtSpo4bAv5RnB8oXcG4sMHEwCcTf3r7dqE",
+                [...]
+              },
+              [...]
+            }
+
+        while the memo private key can be dumped with `dump_private_keys`
+
+        Memo Message
+        ############
+
+        The take the following form:
+
+        .. code-block:: js
+
+                {
+                  "from": "GPH5mgup8evDqMnT86L7scVebRYDC2fwAWmygPEUL43LjstQegYCC",
+                  "to": "GPH5Ar4j53kFWuEZQ9XhxbAja4YXMPJ2EnUg5QcrdeMFYUNMMNJbe",
+                  "nonce": "13043867485137706821",
+                  "message": "d55524c37320920844ca83bb20c8d008"
+                }
+
+        The fields `from` and `to` contain the memo public key of sender and receiver.
+        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
+        for the corresponding accounts.
+
+        .. code-block:: python
+
+            from beem.memo import Memo
+            from beem.account import Account
+
+            memoObj = Memo(
+                from_account=Account(from_account),
+                to_account=Account(to_account)
+            )
+            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
+
+             # 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()
+
+             # Unlock wallet
+             memo.unlock_wallet(getpass())
+
+             # Decode memo
+             # Raises exception if required keys not available in the wallet
+             print(memo.decrypt(op_data["memo"]))
+
     """
     def __init__(
         self,
diff --git a/beem/notify.py b/beem/notify.py
index 60823177ae85ae49f526bba53f902c916c440ceb..24a38fc2497e8f4636c7e8877405dd7bf6ed7daa 100644
--- a/beem/notify.py
+++ b/beem/notify.py
@@ -4,7 +4,6 @@ from beemapi.websocket import SteemWebsocket
 from beem.instance import shared_steem_instance
 from beem.blockchain import Blockchain
 from beem.price import Order, FilledOrder, UpdateCallOrder
-from beem.account import AccountUpdate
 log = logging.getLogger(__name__)
 # logging.basicConfig(level=logging.DEBUG)
 
@@ -12,10 +11,10 @@ log = logging.getLogger(__name__)
 class Notify(Events):
     """ Notifications on Blockchain events.
 
-        :param list accounts: Account names/ids to be notified about when changing
-        :param fnt on_tx: Callback that will be called for each transaction received
+        This modules allows yout to be notified of events taking place on the
+        blockchain.
+
         :param fnt on_block: Callback that will be called for each block received
-        :param fnt on_account: Callback that will be called for changes of the listed accounts
         :param beem.steem.Steem steem_instance: Steem instance
 
         **Example**
@@ -26,12 +25,10 @@ class Notify(Events):
             from beem.notify import Notify
 
             notify = Notify(
-                accounts=["test"],
                 on_block=print,
             )
             notify.listen()
 
-
     """
 
     __events__ = [
@@ -40,10 +37,11 @@ class Notify(Events):
 
     def __init__(
         self,
-        accounts=[],
+        # accounts=[],
         on_block=None,
         only_block_id=False,
         steem_instance=None,
+        keep_alive=25
     ):
         # Events
         super(Notify, self).__init__()
@@ -51,8 +49,8 @@ class Notify(Events):
 
         # Steem instance
         self.steem = steem_instance or shared_steem_instance()
-        # Callbacks
 
+        # Callbacks
         if on_block:
             self.on_block += on_block
 
@@ -63,16 +61,18 @@ class Notify(Events):
             password=self.steem.rpc.password,
             only_block_id=only_block_id,
             on_block=self.process_block,
+            keep_alive=keep_alive
         )
 
-    def process_account(self, message):
-        """ This is used for processing of account Updates. It will
-            return instances of :class:beem.account.AccountUpdate`
+    def reset_subscriptions(self, accounts=[]):
+        """Change the subscriptions of a running Notify instance
+        """
+        self.websocket.reset_subscriptions(accounts)
+
+    def close(self):
+        """Cleanly close the Notify instance
         """
-        self.on_account(AccountUpdate(
-            message,
-            steem_instance=self.steem
-        ))
+        self.websocket.close()
 
     def process_block(self, message):
         self.on_block(message)
diff --git a/beem/transactionbuilder.py b/beem/transactionbuilder.py
index 7a8e1e1484f12cda37f867977dfc509ff418d2e6..07a4577c398ee5a094a8df68fab21e40ddbf743c 100644
--- a/beem/transactionbuilder.py
+++ b/beem/transactionbuilder.py
@@ -17,6 +17,23 @@ log = logging.getLogger(__name__)
 class TransactionBuilder(dict):
     """ This class simplifies the creation of transactions by adding
         operations and signers.
+        To build your own transactions and sign them
+
+        .. code-block:: python
+
+           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()
+
     """
     def __init__(
         self,
diff --git a/beem/vote.py b/beem/vote.py
index 23fd89dff4891606c2bf55d285437a5b6245de17..fc09053ef962b28ac5e700eaec249b00cfe96fd3 100644
--- a/beem/vote.py
+++ b/beem/vote.py
@@ -15,6 +15,11 @@ class Vote(BlockchainObject):
         :param str authorperm: perm link to post/comment
         :param steem steem_instance: Steem() instance to use when accesing a RPC
 
+        .. code-block:: python
+
+           from beem.vote import Vote
+           v = Vote("theaussiegame/cryptokittie-giveaway-number-2|")
+
     """
     type_id = 11
 
diff --git a/beem/wallet.py b/beem/wallet.py
index 832116ff1108b56f0faf20eabdddd6d8e8e7eb8e..1d957a0e833ca25a8dc2fe5fd7dbd5d20ed6652a 100644
--- a/beem/wallet.py
+++ b/beem/wallet.py
@@ -41,6 +41,48 @@ class Wallet():
           ``active``, ``owner``, ``posting`` or ``memo`` keys for
           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
+
+           from beem import Steem
+           steem = Steem()
+           steem.wallet.create("supersecret-passphrase")
+
+        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
+
+        .. code-block:: python
+
+           from beem import Steem
+           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:
+
+        .. code-block:: python
+
+           from beem import Steem
+           steem = Steem()
+           steem.wallet.unlock("supersecret-passphrase")
+           steem.wallet.addPrivateKey("5xxxxxxxxxxxxxxxxxxxx")
+
+        .. note:: The private key has to be either in hexadecimal or in wallet
+                  import format (wif) (starting with a ``5``).
+
     """
     keys = []
     rpc = None
diff --git a/beem/witness.py b/beem/witness.py
index 9534333e9db6365b0344a531747d55f25d6d8d5b..69e3d93cc840c70c2c7df9ee5ee10a1e1a021998 100644
--- a/beem/witness.py
+++ b/beem/witness.py
@@ -13,6 +13,11 @@ class Witness(BlockchainObject):
         :param steem steem_instance: Steem() instance to use when
                accesing a RPC
 
+        .. code-block:: python
+
+           from beem.witness import Witness
+           Witness("gtg")
+
     """
     type_id = 3
 
diff --git a/beemapi/steemnoderpc.py b/beemapi/steemnoderpc.py
index 3da3a00b268713741bc5545dfc877ab2f32390d2..4ccbfe81448277d704ee15f5eb0e8cbb75767c2c 100644
--- a/beemapi/steemnoderpc.py
+++ b/beemapi/steemnoderpc.py
@@ -18,6 +18,10 @@ class NumRetriesReached(Exception):
 
 
 class SteemNodeRPC(GrapheneWebsocketRPC):
+    """ This class allows to call API methods exposed by the witness node via
+        websockets.
+
+    """
 
     def __init__(self, *args, **kwargs):
         super(SteemNodeRPC, self).__init__(*args, **kwargs)
diff --git a/beemapi/websocket.py b/beemapi/websocket.py
index 218b6c6c2ef6108dcf5c1b95ae215d090f371265..7c62ce36c74bdc96e29355dcae0faceb4d5b8251 100644
--- a/beemapi/websocket.py
+++ b/beemapi/websocket.py
@@ -39,7 +39,6 @@ class SteemWebsocket(Events):
 
         Notices:
 
-
         * ``on_block``:
 
             .. code-block:: js
@@ -58,8 +57,10 @@ class SteemWebsocket(Events):
         user="",
         password="",
         *args,
+        # accounts=[],
         only_block_id=False,
         on_block=None,
+        # on_account=None,
         keep_alive=25,
         num_retries=-1,
         **kwargs
@@ -72,6 +73,7 @@ class SteemWebsocket(Events):
         self.user = user
         self.password = password
         self.keep_alive = keep_alive
+        self.run_event = threading.Event()
         self.only_block_id = only_block_id
         if isinstance(urls, cycle):
             self.urls = urls
@@ -84,8 +86,13 @@ class SteemWebsocket(Events):
         Events.__init__(self)
         self.events = Events()
 
+        # Store the objects we are interested in
+        # self.subscription_accounts = accounts
+
         if on_block:
             self.on_block += on_block
+        # if on_account:
+        #     self.on_account += on_account
 
     def cancel_subscriptions(self):
         # self.cancel_all_subscriptions()
@@ -103,8 +110,18 @@ class SteemWebsocket(Events):
         """
         self.login(self.user, self.password, api_id=1)
         # self.database(api_id=1)
-        # self.cancel_all_subscriptions()
+        self.__set_subscriptions()
+        self.keepalive = threading.Thread(
+            target=self._ping,
+        )
+        self.keepalive.start()
+
+    def reset_subscriptions(self, accounts=[]):
+        # self.subscription_accounts = accounts
+        self.__set_subscriptions()
 
+    def __set_subscriptions(self):
+        # self.cancel_all_subscriptions()
         # Subscribe to events on the Backend and give them a
         # callback number that allows us to identify the event
         # set_pending_transaction_callback is removed from api
@@ -114,18 +131,12 @@ class SteemWebsocket(Events):
             self.set_block_applied_callback(
                 self.__events__.index('on_block'))
 
+    def _ping(self):
         # We keep the connetion alive by requesting a short object
         def ping(self):
-            while 1:
+            while not self.run_event.wait(self.keep_alive):
                 log.debug('Sending ping')
                 self.get_chain_properties()
-                time.sleep(self.keep_alive)
-
-        self.keepalive = threading.Thread(
-            target=ping,
-            args=(self,)
-        )
-        self.keepalive.start()
 
     def process_block(self, data):
         """ This method is called on notices that need processing. Here,
@@ -213,7 +224,7 @@ class SteemWebsocket(Events):
             connected with the provided APIs
         """
         cnt = 0
-        while True:
+        while not self.run_event.is_set():
             cnt += 1
             self.url = next(self.urls)
             log.debug("Trying to connect to node %s" % self.url)
@@ -251,6 +262,15 @@ class SteemWebsocket(Events):
         self._request_id += 1
         return self._request_id
 
+    def close(self):
+        """ Closes the websocket connection and waits for the ping thread to close
+        """
+        self.run_event.set()
+        self.ws.close()
+
+        if self.keepalive and self.keepalive.is_alive():
+            self.keepalive.join()
+
     """ RPC Calls
     """
     def rpcexec(self, payload):
diff --git a/docs/account.rst b/docs/account.rst
deleted file mode 100644
index aa7c9cd566e01be3509ebe1240c4499facdbda88..0000000000000000000000000000000000000000
--- a/docs/account.rst
+++ /dev/null
@@ -1,17 +0,0 @@
-Account
-~~~~~~~
-
-Obtaining data of an account.
-
-.. code-block:: python
-
-   from beem.account import Account
-   account = Account("test")
-   print(account)
-   print(account.balances)
-
-.. autoclass:: beem.account.Account
-   :members:
-
-.. autoclass:: beem.account.AccountUpdate
-   :members:
diff --git a/docs/amount.rst b/docs/amount.rst
deleted file mode 100644
index a982990a0dbdd9d8145505c19b839b8c4e84766a..0000000000000000000000000000000000000000
--- a/docs/amount.rst
+++ /dev/null
@@ -1,19 +0,0 @@
-Amount
-~~~~~~
-
-For the sake of easier handling of Assets on the blockchain
-
-.. code-block:: python
-
-   from beem.amount import Amount
-   from beem.asset import Asset
-   a = Amount("1 USD")
-   b = Amount(1, "USD")
-   c = Amount("20", Asset("USD"))
-   a + b
-   a * 2
-   a += b
-   a /= 2.0
-
-.. autoclass:: beem.amount.Amount
-   :members:
diff --git a/docs/asset.rst b/docs/asset.rst
deleted file mode 100644
index b9e1b0d4e0a2956f66d318b52f1f965321274e3e..0000000000000000000000000000000000000000
--- a/docs/asset.rst
+++ /dev/null
@@ -1,5 +0,0 @@
-Asset
-~~~~~~
-
-.. autoclass:: beem.asset.Asset
-   :members:
diff --git a/docs/beem.account.rst b/docs/beem.account.rst
new file mode 100644
index 0000000000000000000000000000000000000000..eccc1ae4351438137e318f433de685330c72873f
--- /dev/null
+++ b/docs/beem.account.rst
@@ -0,0 +1,7 @@
+beem\.account module
+====================
+
+.. automodule:: beem.account
+    :members:
+    :undoc-members:
+    :show-inheritance:
\ No newline at end of file
diff --git a/docs/beem.aes.rst b/docs/beem.aes.rst
new file mode 100644
index 0000000000000000000000000000000000000000..2af682991317c8c416c5917d8a994ae190743489
--- /dev/null
+++ b/docs/beem.aes.rst
@@ -0,0 +1,7 @@
+beem\.aes module
+================
+
+.. automodule:: beem.aes
+    :members:
+    :undoc-members:
+    :show-inheritance:
\ No newline at end of file
diff --git a/docs/beem.amount.rst b/docs/beem.amount.rst
new file mode 100644
index 0000000000000000000000000000000000000000..07676b71cec1dc9169692dd50fb8625393afff8b
--- /dev/null
+++ b/docs/beem.amount.rst
@@ -0,0 +1,7 @@
+beem\.amount module
+===================
+
+.. automodule:: beem.amount
+    :members:
+    :undoc-members:
+    :show-inheritance:
\ No newline at end of file
diff --git a/docs/beem.asset.rst b/docs/beem.asset.rst
new file mode 100644
index 0000000000000000000000000000000000000000..93c12ae05c97ac915ec63bcf855f611b47a909d0
--- /dev/null
+++ b/docs/beem.asset.rst
@@ -0,0 +1,7 @@
+beem\.asset module
+==================
+
+.. automodule:: beem.asset
+    :members:
+    :undoc-members:
+    :show-inheritance:
\ No newline at end of file
diff --git a/docs/beem.block.rst b/docs/beem.block.rst
new file mode 100644
index 0000000000000000000000000000000000000000..24c7b18c0473f8b732e9cc6e3a4432668d281bc3
--- /dev/null
+++ b/docs/beem.block.rst
@@ -0,0 +1,7 @@
+beem\.block module
+==================
+
+.. automodule:: beem.block
+    :members:
+    :undoc-members:
+    :show-inheritance:
\ No newline at end of file
diff --git a/docs/beem.blockchain.rst b/docs/beem.blockchain.rst
new file mode 100644
index 0000000000000000000000000000000000000000..5e63eabc129679b8b7528c25a02360380fea3919
--- /dev/null
+++ b/docs/beem.blockchain.rst
@@ -0,0 +1,7 @@
+beem\.blockchain module
+=======================
+
+.. automodule:: beem.blockchain
+    :members:
+    :undoc-members:
+    :show-inheritance:
\ No newline at end of file
diff --git a/docs/beem.comment.rst b/docs/beem.comment.rst
new file mode 100644
index 0000000000000000000000000000000000000000..d73cf23fb696cac58d065155364781ecb2a94a6e
--- /dev/null
+++ b/docs/beem.comment.rst
@@ -0,0 +1,7 @@
+beem\.comment module
+==================
+
+.. automodule:: beem.comment
+    :members:
+    :undoc-members:
+    :show-inheritance:
\ No newline at end of file
diff --git a/docs/beem.exceptions.rst b/docs/beem.exceptions.rst
new file mode 100644
index 0000000000000000000000000000000000000000..c0c8b9704c03b3b53848e2b264a9d62dd6d21f9d
--- /dev/null
+++ b/docs/beem.exceptions.rst
@@ -0,0 +1,7 @@
+beem\.exceptions module
+=======================
+
+.. automodule:: beem.exceptions
+    :members:
+    :undoc-members:
+    :show-inheritance:
\ No newline at end of file
diff --git a/docs/beem.instances.rst b/docs/beem.instances.rst
new file mode 100644
index 0000000000000000000000000000000000000000..2cdfbe70c8d10e805fbccd08eca7daf00f75d460
--- /dev/null
+++ b/docs/beem.instances.rst
@@ -0,0 +1,7 @@
+beem\.instance module
+=====================
+
+.. automodule:: beem.instance
+    :members:
+    :undoc-members:
+    :show-inheritance:
\ No newline at end of file
diff --git a/docs/beem.market.rst b/docs/beem.market.rst
new file mode 100644
index 0000000000000000000000000000000000000000..db64afa90c6d9b75c935c6b9c22d147a42e1e10a
--- /dev/null
+++ b/docs/beem.market.rst
@@ -0,0 +1,7 @@
+beem\.market module
+===================
+
+.. automodule:: beem.market
+    :members:
+    :undoc-members:
+    :show-inheritance:
\ No newline at end of file
diff --git a/docs/beem.memo.rst b/docs/beem.memo.rst
new file mode 100644
index 0000000000000000000000000000000000000000..26b6bd03331352d7d077030507f4a00a530cb072
--- /dev/null
+++ b/docs/beem.memo.rst
@@ -0,0 +1,7 @@
+beem\.memo module
+=================
+
+.. automodule:: beem.memo
+    :members:
+    :undoc-members:
+    :show-inheritance:
\ No newline at end of file
diff --git a/docs/beem.message.rst b/docs/beem.message.rst
new file mode 100644
index 0000000000000000000000000000000000000000..6dc3f825b623701c5d1efc7b8313205368798bf6
--- /dev/null
+++ b/docs/beem.message.rst
@@ -0,0 +1,7 @@
+beem\.message module
+====================
+
+.. automodule:: beem.message
+    :members:
+    :undoc-members:
+    :show-inheritance:
\ No newline at end of file
diff --git a/docs/beem.notify.rst b/docs/beem.notify.rst
new file mode 100644
index 0000000000000000000000000000000000000000..0a47d5a94795f2c4f82e55b7e8ac8f89f25e376d
--- /dev/null
+++ b/docs/beem.notify.rst
@@ -0,0 +1,7 @@
+beem\.notify module
+===================
+
+.. automodule:: beem.notify
+    :members:
+    :undoc-members:
+    :show-inheritance:
\ No newline at end of file
diff --git a/docs/beem.price.rst b/docs/beem.price.rst
new file mode 100644
index 0000000000000000000000000000000000000000..2da4fcdce09ba063fed11329c2760c0ea646548a
--- /dev/null
+++ b/docs/beem.price.rst
@@ -0,0 +1,7 @@
+beem\.price module
+==================
+
+.. automodule:: beem.price
+    :members:
+    :undoc-members:
+    :show-inheritance:
\ No newline at end of file
diff --git a/docs/beem.rst b/docs/beem.rst
new file mode 100644
index 0000000000000000000000000000000000000000..287524e65ba3ccd1cfc3e7f66518a887c91ea79f
--- /dev/null
+++ b/docs/beem.rst
@@ -0,0 +1,38 @@
+beem package
+=================
+
+Submodules
+----------
+
+.. toctree::
+
+   beem.account
+   beem.aes
+   beem.amount
+   beem.asset
+   beem.steem
+   beem.block
+   beem.blockchain
+   beem.blockchainobject
+   beem.comment
+   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
new file mode 100644
index 0000000000000000000000000000000000000000..6d603e9e0a1142704439b4f30f3382f511573f3b
--- /dev/null
+++ b/docs/beem.steem.rst
@@ -0,0 +1,7 @@
+beem\.steem module
+==================
+
+.. automodule:: beem.steem
+    :members:
+    :undoc-members:
+    :show-inheritance:
\ No newline at end of file
diff --git a/docs/beem.storage.rst b/docs/beem.storage.rst
new file mode 100644
index 0000000000000000000000000000000000000000..3b95ce9d29ba946e5a7983170c02c16e66ca745f
--- /dev/null
+++ b/docs/beem.storage.rst
@@ -0,0 +1,7 @@
+beem\.storage module
+====================
+
+.. automodule:: beem.storage
+    :members:
+    :undoc-members:
+    :show-inheritance:
\ No newline at end of file
diff --git a/docs/beem.transactionbuilder.rst b/docs/beem.transactionbuilder.rst
new file mode 100644
index 0000000000000000000000000000000000000000..009985153a8903a45165c4f22b20a7282fb5ce76
--- /dev/null
+++ b/docs/beem.transactionbuilder.rst
@@ -0,0 +1,7 @@
+beem\.transactionbuilder module
+===============================
+
+.. automodule:: beem.transactionbuilder
+    :members:
+    :undoc-members:
+    :show-inheritance:
\ No newline at end of file
diff --git a/docs/beem.utils.rst b/docs/beem.utils.rst
new file mode 100644
index 0000000000000000000000000000000000000000..4983a4bd199331d164346afbac383570628afc8e
--- /dev/null
+++ b/docs/beem.utils.rst
@@ -0,0 +1,7 @@
+beem\.utils module
+==================
+
+.. automodule:: beem.utils
+    :members:
+    :undoc-members:
+    :show-inheritance:
\ No newline at end of file
diff --git a/docs/beem.vote.rst b/docs/beem.vote.rst
new file mode 100644
index 0000000000000000000000000000000000000000..b9d76e5fa3495d164075e71b989133e1e197d961
--- /dev/null
+++ b/docs/beem.vote.rst
@@ -0,0 +1,7 @@
+beem\.vote module
+=================
+
+.. automodule:: beem.vote
+    :members:
+    :undoc-members:
+    :show-inheritance:
\ No newline at end of file
diff --git a/docs/beem.wallet.rst b/docs/beem.wallet.rst
new file mode 100644
index 0000000000000000000000000000000000000000..9c393d726cf56aa5f093fa7c3ad0ed85ae21af23
--- /dev/null
+++ b/docs/beem.wallet.rst
@@ -0,0 +1,7 @@
+beem\.wallet module
+===================
+
+.. automodule:: beem.wallet
+    :members:
+    :undoc-members:
+    :show-inheritance:
\ No newline at end of file
diff --git a/docs/beem.witness.rst b/docs/beem.witness.rst
new file mode 100644
index 0000000000000000000000000000000000000000..15f4120cbd6559a7b10000ebf3468a08fa45100c
--- /dev/null
+++ b/docs/beem.witness.rst
@@ -0,0 +1,8 @@
+beem\.witness module
+====================
+
+.. automodule:: beem.witness
+    :members:
+    :undoc-members:
+    :show-inheritance:
+   
diff --git a/docs/beemapi.exceptions.rst b/docs/beemapi.exceptions.rst
new file mode 100644
index 0000000000000000000000000000000000000000..07c320d990fadf435155d6e893240426dd97ed71
--- /dev/null
+++ b/docs/beemapi.exceptions.rst
@@ -0,0 +1,7 @@
+beemapi\.exceptions module
+==========================
+
+.. automodule:: beemapi.exceptions
+    :members:
+    :undoc-members:
+    :show-inheritance:
\ No newline at end of file
diff --git a/docs/beemapi.rst b/docs/beemapi.rst
new file mode 100644
index 0000000000000000000000000000000000000000..5150dd446f0c0bb5d90ee186e414ecd22b07a776
--- /dev/null
+++ b/docs/beemapi.rst
@@ -0,0 +1,19 @@
+beemapi package
+===============
+
+Submodules
+----------
+
+.. toctree::
+
+   beemapi.steemnoderpc
+   beemapi.exceptions
+   beemapi.websocket
+
+Module contents
+---------------
+
+.. automodule:: beemapi
+    :members:
+    :undoc-members:
+    :show-inheritance:
diff --git a/docs/websocketrpc.rst b/docs/beemapi.steemnoderpc.rst
similarity index 100%
rename from docs/websocketrpc.rst
rename to docs/beemapi.steemnoderpc.rst
diff --git a/docs/websocket.rst b/docs/beemapi.websocket.rst
similarity index 100%
rename from docs/websocket.rst
rename to docs/beemapi.websocket.rst
diff --git a/docs/beembase.account.rst b/docs/beembase.account.rst
new file mode 100644
index 0000000000000000000000000000000000000000..046169ac4efb964a0ab73a24656c5cede804ad1a
--- /dev/null
+++ b/docs/beembase.account.rst
@@ -0,0 +1,7 @@
+beembase\.account module
+========================
+
+.. automodule:: beembase.account
+    :members:
+    :undoc-members:
+    :show-inheritance:
\ No newline at end of file
diff --git a/docs/beembase.bip38.rst b/docs/beembase.bip38.rst
new file mode 100644
index 0000000000000000000000000000000000000000..fc53d02a7925bb331b717d8d452e5518b6fbf285
--- /dev/null
+++ b/docs/beembase.bip38.rst
@@ -0,0 +1,7 @@
+beembase\.bip38 module
+========================
+
+.. automodule:: beembase.bip38
+    :members:
+    :undoc-members:
+    :show-inheritance:
\ No newline at end of file
diff --git a/docs/beembase.chains.rst b/docs/beembase.chains.rst
new file mode 100644
index 0000000000000000000000000000000000000000..a7526f6d05627eba552f6f6a62a8d2be50f56d3f
--- /dev/null
+++ b/docs/beembase.chains.rst
@@ -0,0 +1,7 @@
+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
new file mode 100644
index 0000000000000000000000000000000000000000..8708a95b5c65408560867757b313d292095a6c45
--- /dev/null
+++ b/docs/beembase.memo.rst
@@ -0,0 +1,7 @@
+beembase\.memo module
+=====================
+
+.. automodule:: beembase.memo
+    :members:
+    :undoc-members:
+    :show-inheritance:
\ No newline at end of file
diff --git a/docs/beembase.objects.rst b/docs/beembase.objects.rst
new file mode 100644
index 0000000000000000000000000000000000000000..be152cd9f0cd33877d3c34851219a8f7336263ea
--- /dev/null
+++ b/docs/beembase.objects.rst
@@ -0,0 +1,7 @@
+beembase\.objects module
+========================
+
+.. automodule:: beembase.objects
+    :members:
+    :undoc-members:
+    :show-inheritance:
\ No newline at end of file
diff --git a/docs/beembase.objecttypes.rst b/docs/beembase.objecttypes.rst
new file mode 100644
index 0000000000000000000000000000000000000000..77bf72dd4b1c7b374891c808ebdaa2c6ec93b542
--- /dev/null
+++ b/docs/beembase.objecttypes.rst
@@ -0,0 +1,7 @@
+beembase\.objecttypes module
+============================
+
+.. automodule:: beembase.objecttypes
+    :members:
+    :undoc-members:
+    :show-inheritance:
\ No newline at end of file
diff --git a/docs/beembase.operationids.rst b/docs/beembase.operationids.rst
new file mode 100644
index 0000000000000000000000000000000000000000..b757f3be36a8d27284c9a9477118960d15eda7a9
--- /dev/null
+++ b/docs/beembase.operationids.rst
@@ -0,0 +1,7 @@
+beembase\.operationids module
+=============================
+
+.. automodule:: beembase.operationids
+    :members:
+    :undoc-members:
+    :show-inheritance:
\ No newline at end of file
diff --git a/docs/beembase.operations.rst b/docs/beembase.operations.rst
new file mode 100644
index 0000000000000000000000000000000000000000..0fd3b967dad62ef4c50bb59a11857d2baaabad46
--- /dev/null
+++ b/docs/beembase.operations.rst
@@ -0,0 +1,7 @@
+beembase\.operations module
+===========================
+
+.. automodule:: beembase.operationids
+    :members:
+    :undoc-members:
+    :show-inheritance:
\ No newline at end of file
diff --git a/docs/beembase.rst b/docs/beembase.rst
new file mode 100644
index 0000000000000000000000000000000000000000..534113ee6da15b1a05eaad655c7147aa1d8ccec1
--- /dev/null
+++ b/docs/beembase.rst
@@ -0,0 +1,26 @@
+beembase package
+================
+
+Submodules
+----------
+
+.. toctree::
+
+   beembase.account
+   beembase.bip38
+   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.signedtransations.rst
new file mode 100644
index 0000000000000000000000000000000000000000..26baaf36c5e43e79b8206401e1029875400fa684
--- /dev/null
+++ b/docs/beembase.signedtransations.rst
@@ -0,0 +1,7 @@
+beembase\.signedtransactions module
+===================================
+
+.. automodule:: beembase.signedtransactions
+    :members:
+    :undoc-members:
+    :show-inheritance:
\ No newline at end of file
diff --git a/docs/beembase.transactions.rst b/docs/beembase.transactions.rst
new file mode 100644
index 0000000000000000000000000000000000000000..61cf1eee520f3e4781e02f021e5984784d83f8d6
--- /dev/null
+++ b/docs/beembase.transactions.rst
@@ -0,0 +1,7 @@
+beembase\.transactions module
+===================================
+
+.. automodule:: beembase.transactions
+    :members:
+    :undoc-members:
+    :show-inheritance:
diff --git a/docs/block.rst b/docs/block.rst
deleted file mode 100644
index ccc63c9bf05d181ee1454f5c9a52264bf118fb1e..0000000000000000000000000000000000000000
--- a/docs/block.rst
+++ /dev/null
@@ -1,13 +0,0 @@
-Block
-~~~~~~
-
-Easily read data in a Block
-
-.. code-block:: python
-
-   from beem.block import Block
-   from pprint import pprint
-   pprint(Block(1))
-
-.. autoclass:: beem.block.Block
-   :members:
diff --git a/docs/blockchain.rst b/docs/blockchain.rst
deleted file mode 100644
index 4ee750518e6fe732138414a8c37c1631718cdc1a..0000000000000000000000000000000000000000
--- a/docs/blockchain.rst
+++ /dev/null
@@ -1,33 +0,0 @@
-Blockchain
-~~~~~~~~~~
-
-Read blockchain related data-
-
-.. code-block:: python
-
-   from beem.blockchain import Blockchain
-   chain = Blockchain()
-
-Read current block and blockchain info
-
-.. code-block:: python
-
-   print(chain.get_current_block())
-   print(chain.info())
-
-Monitor for new blocks ..
-
-.. code-block:: python
-
-   for block in chain.blocks():
-       print(block)
-
-... or each operation individually:
-
-.. code-block:: python
-
-   for operations in chain.ops():
-       print(operations)
-
-.. autoclass:: beem.blockchain.Blockchain
-   :members:
diff --git a/docs/comment.rst b/docs/comment.rst
deleted file mode 100644
index 223c26fc28489733e5e1362672305658bf271ee3..0000000000000000000000000000000000000000
--- a/docs/comment.rst
+++ /dev/null
@@ -1,13 +0,0 @@
-Comment
-~~~~~~~
-
-Read data about a Comment/Post
-
-.. code-block:: python
-
-   from beem.comment import Comment
-
-.. autoclass:: beem.comment.Comment
-   :members:
-
-
diff --git a/docs/exceptions.rst b/docs/exceptions.rst
deleted file mode 100644
index 36b2e1f53f6a7a9e94f2bb4e5096761b5281be38..0000000000000000000000000000000000000000
--- a/docs/exceptions.rst
+++ /dev/null
@@ -1,8 +0,0 @@
-Exceptions
-~~~~~~~~~~
-
-.. autoclass:: beem.exceptions
-   :members:
-
-.. autoclass:: beemapi.exceptions
-   :members:
diff --git a/docs/index.rst b/docs/index.rst
index 83f62cfe3c1dc0bfd8cd02bd1a40c39496caa1e7..c8e3c2a5949e6f46082d2817a5ec12257512b89c 100644
--- a/docs/index.rst
+++ b/docs/index.rst
@@ -10,7 +10,7 @@
    http://rest-sphinx-memo.readthedocs.org/en/latest/ReST.html
 
 Welcome to beem's documentation!
-===============================================
+================================
 
 Steem is a blockchain-based rewards platform for publishers to monetize 
 content and grow community.
@@ -20,6 +20,13 @@ 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
+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
+blockchain protocol.
+
+
 About this Library
 ------------------
 
@@ -94,7 +101,7 @@ Quickstart
    
 
 General
--------------------------
+-------
 .. toctree::
    :maxdepth: 1
 
@@ -105,42 +112,34 @@ General
    contribute
    support
 
-beem Libraries
---------------------------
+Packages
+--------
+
+
+beem
+~~~~
 
 .. toctree::
-   :maxdepth: 1
+   :maxdepth: 3
+
+   beem
 
-   steem
-   instances
-   account
-   amount
-   asset
-   block
-   blockchain
-   exceptions
-   dex
-   market
-   notify
-   price
-   vesting
-   witness
-
-Low Level Classes
------------------
+beembase
+~~~~~~~~
 
 .. toctree::
-   :maxdepth: 1
+   :maxdepth: 3
+
+   beembase
 
-   storage
-   utils
-   transactionbuilder
-   wallet
-   websocket
-   websocketrpc
-   transactions
-   memo
+beemapi
+~~~~~~~
 
+.. toctree::
+   :maxdepth: 3
+
+   beemapi
+   
 Glossary
 ========
 
diff --git a/docs/instances.rst b/docs/instances.rst
deleted file mode 100644
index 571bd5fad8b2cdc3e298658d0d8a57ae62028415..0000000000000000000000000000000000000000
--- a/docs/instances.rst
+++ /dev/null
@@ -1,16 +0,0 @@
-Instances
-~~~~~~~~~
-
-Default instance to be used when no ``steem_instance`` is given to
-the Objects!
-
-.. code-block:: python
-
-   from beem.instance import shared_steem_instance
-
-   account = Account("test")
-   # is equivalent with 
-   account = Account("test", steem_instance=shared_steem_instance())
-
-.. automethod:: beem.instance.shared_steem_instance
-.. automethod:: beem.instance.set_shared_steem_instance
diff --git a/docs/market.rst b/docs/market.rst
deleted file mode 100644
index 3a0ec86bf0b3bd1d50c9250d16b485f51f73e98f..0000000000000000000000000000000000000000
--- a/docs/market.rst
+++ /dev/null
@@ -1,5 +0,0 @@
-Market
-~~~~~~~
-
-.. autoclass:: beem.market.Market
-    :members:
diff --git a/docs/memo.rst b/docs/memo.rst
deleted file mode 100644
index 6a287ce6e15a704fc0ef8ad2195643fda9755b79..0000000000000000000000000000000000000000
--- a/docs/memo.rst
+++ /dev/null
@@ -1,100 +0,0 @@
-****
-Memo
-****
-
-Memo Keys
-#########
-
-In BitShares, 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
-publick key of the receiver. 
-
-In order for the receiver to decode the memo, the shared secret has to be
-derived from the receiver's private key and the senders public key.
-
-The memo public key is part of the account and can be retreived with the
-`get_account` call:
-
-.. code-block:: js
-
-    get_account <accountname>
-    {
-      [...]
-      "options": {
-        "memo_key": "GPH5TPTziKkLexhVKsQKtSpo4bAv5RnB8oXcG4sMHEwCcTf3r7dqE",
-        [...]
-      },
-      [...]
-    }
-
-while the memo private key can be dumped with `dump_private_keys`
-
-Memo Message
-############
-
-The take the following form:
-
-.. code-block:: js
-
-        {
-          "from": "GPH5mgup8evDqMnT86L7scVebRYDC2fwAWmygPEUL43LjstQegYCC",
-          "to": "GPH5Ar4j53kFWuEZQ9XhxbAja4YXMPJ2EnUg5QcrdeMFYUNMMNJbe",
-          "nonce": "13043867485137706821",
-          "message": "d55524c37320920844ca83bb20c8d008"
-        }
-
-The fields `from` and `to` contain the memo public key of sender and receiver.
-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
-for the corresponding accounts.
-
-.. code-block:: python
-
-    from beem.memo import Memo
-    from beem.account import Account
-
-    memoObj = Memo(
-        from_account=Account(from_account),
-        to_account=Account(to_account)
-    )
-    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
-
-     # 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()
-
-     # Unlock wallet
-     memo.unlock_wallet(getpass())
-
-     # Decode memo
-     # Raises exception if required keys not available in the wallet
-     print(memo.decrypt(op_data["memo"]))
-
-API
-###
-
-.. automodule:: beembase.memo
-    :members:
diff --git a/docs/modules.rst b/docs/modules.rst
new file mode 100644
index 0000000000000000000000000000000000000000..266c622a9b0602e312f8d989ea95827b5b820422
--- /dev/null
+++ b/docs/modules.rst
@@ -0,0 +1,9 @@
+beem
+====
+
+.. toctree::
+   :maxdepth: 6
+
+   beem
+   beemapi
+   beembase
\ No newline at end of file
diff --git a/docs/notify.rst b/docs/notify.rst
deleted file mode 100644
index cc6945c9864b91dc3499a73a884700f6baea0fc7..0000000000000000000000000000000000000000
--- a/docs/notify.rst
+++ /dev/null
@@ -1,8 +0,0 @@
-Notify
-~~~~~~~
-
-This modules allows yout to be notified of events taking place on the
-blockchain.
-
-.. autoclass:: beem.notify.Notify
-   :members:
diff --git a/docs/price.rst b/docs/price.rst
deleted file mode 100644
index b10a1b59d9b9de292f82b8aa4a48457cad3849cb..0000000000000000000000000000000000000000
--- a/docs/price.rst
+++ /dev/null
@@ -1,5 +0,0 @@
-Price
-~~~~~~
-
-.. autoclass:: beem.price.Price
-   :members:
diff --git a/docs/steem.rst b/docs/steem.rst
deleted file mode 100644
index 7db40e7cfed9ee704a3590cb5dd7076db2285efe..0000000000000000000000000000000000000000
--- a/docs/steem.rst
+++ /dev/null
@@ -1,11 +0,0 @@
-Steem
-~~~~~~~~~
-
-The Steem 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
-blockchain protocol.
-
-.. autoclass:: beem.steem.Steem
-   :members:
diff --git a/docs/storage.rst b/docs/storage.rst
deleted file mode 100644
index 102bde856a345c3559caf686d17b2c097184d3c9..0000000000000000000000000000000000000000
--- a/docs/storage.rst
+++ /dev/null
@@ -1,17 +0,0 @@
-*******
-Storage
-*******
-
-These classes are very low level and are not well documented.
-
-API
----
-
-.. autoclass:: beem.storage.DataDir
-   :members:
-
-.. autoclass:: beem.storage.Key
-   :members:
-
-.. autoclass:: beem.storage.MasterPassword
-   :members:
diff --git a/docs/transactionbuilder.rst b/docs/transactionbuilder.rst
deleted file mode 100644
index 4f20f4273735b5f6f9beea38af550b78501a209e..0000000000000000000000000000000000000000
--- a/docs/transactionbuilder.rst
+++ /dev/null
@@ -1,22 +0,0 @@
-Transaction Builder
-~~~~~~~~~~~~~~~~~~~
-
-To build your own transactions and sign them
-
-.. code-block:: python
-
-   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()
-
-.. autoclass:: beem.transactionbuilder.TransactionBuilder
-   :members:
diff --git a/docs/transactions.rst b/docs/transactions.rst
deleted file mode 100644
index f838aa8539a7d82acd1c71767dad7bca08a3966e..0000000000000000000000000000000000000000
--- a/docs/transactions.rst
+++ /dev/null
@@ -1,64 +0,0 @@
-***********************************************
-Manual Constructing and Signing of Transactions
-***********************************************
-
-.. warning:: This is a low level class. Do not use this class unless you
-             know what you are doing!
-
-.. note:: This class is under development and meant for people that are
-          looking into the low level construction and signing of various
-          transactions.
-
-Loading Transactions Class
-##########################
-
-We load the class for manual transaction construction via:
-
-.. code-block:: python
-
-    from beembase import transactions, operations
-
-Construction
-############
-
-Now we can use the predefined transaction formats, e.g. ``Transfer`` or
-``limit_order_create`` as follows:
-
-1. define the expiration time
-2. define a JSON object that contains all data for that transaction
-3. load that data into the corresponding **operations** class
-4. collect multiple operations
-5. get some blockchain parameters to prevent replay attack
-6. Construct the actual **transaction** from the list of operations
-7. sign the transaction with the corresponding private key(s)
-
-**Example A: Transfer**
-
-.. code-block:: python
-
-        expiration = transactions.formatTimeFromNow(60)
-        op = operations.Transfer(**{
-            "from": "test",
-            "to": "test1",
-            "amount": "1.000 SBD",
-            "memo": ""
-        })
-        ops    = [transactions.Operation(op)]
-        ref_block_num, ref_block_prefix = transactions.getBlockParams(rpc)
-        tx     = transactions.Signed_Transaction(ref_block_num=ref_block_num,
-                                                 ref_block_prefix=ref_block_prefix,
-                                                 expiration=expiration,
-                                                 operations=ops)
-        tx = tx.sign([wif])
-
-
-Broadcasting
-############
-
-For broadcasting, we first need to convert the transactions class into a
-JSON object. After that, we can broadcast this to the network:
-
-.. code-block:: python
-
-    # Broadcast JSON to network
-    rpc.broadcast_transaction(tx.json(), api="network_broadcast"):
diff --git a/docs/utils.rst b/docs/utils.rst
deleted file mode 100644
index f29628449aa26e9b4e04b3218441cb84b1f9f3c2..0000000000000000000000000000000000000000
--- a/docs/utils.rst
+++ /dev/null
@@ -1,5 +0,0 @@
-Utilities
-~~~~~~~~~~~~~~~~~~~
-
-.. autoclass:: beem.utils
-   :members:
diff --git a/docs/vote.rst b/docs/vote.rst
deleted file mode 100644
index e1fbf2f0a103c205301703809a6c74127a92b962..0000000000000000000000000000000000000000
--- a/docs/vote.rst
+++ /dev/null
@@ -1,15 +0,0 @@
-Vote
-~~~~
-
-Read data about a vote
-
-.. code-block:: python
-
-   from beem.vote import Vote
-   Witness("gtg")
-
-.. autoclass:: beem.vote.Vote
-   :members:
-
-
-   
diff --git a/docs/wallet.rst b/docs/wallet.rst
deleted file mode 100644
index f6092fae68a052fe02ea6a38fabdb77d960e63c8..0000000000000000000000000000000000000000
--- a/docs/wallet.rst
+++ /dev/null
@@ -1,49 +0,0 @@
-Wallet
-~~~~~~
-
-Create a new wallet
--------------------
-
-A new wallet can be created by using:
-
-.. code-block:: python
-
-   from beem import Steem
-   steem = Steem()
-   steem.wallet.create("supersecret-passphrase")
-
-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
-
-.. code-block:: python
-
-   from beem import Steem
-   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:
-
-.. code-block:: python
-
-   from beem import Steem
-   steem = Steem()
-   steem.wallet.unlock("supersecret-passphrase")
-   steem.wallet.addPrivateKey("5xxxxxxxxxxxxxxxxxxxx")
-
-.. note:: The private key has to be either in hexadecimal or in wallet
-          import format (wif) (starting with a ``5``).
-
-API
----
-
-.. autoclass:: beem.wallet.Wallet
-   :members:
diff --git a/docs/witness.rst b/docs/witness.rst
deleted file mode 100644
index 554585021a72b1602b7f26fc984bfcc8ffaf557d..0000000000000000000000000000000000000000
--- a/docs/witness.rst
+++ /dev/null
@@ -1,28 +0,0 @@
-Witness
-~~~~~~~
-
-Read data about a witness
-
-.. code-block:: python
-
-   from beem.witness import Witness
-   Witness("gtg")
-
-.. autoclass:: beem.witness.Witness
-   :members:
-
-.. autoclass:: beem.witness.Witnesses
-   :members:
-
-.. autoclass:: beem.witness.WitnessesVotedByAccount
-   :members:
-   
-.. autoclass:: beem.witness.WitnessesRankedByVote
-   :members:
-   
-.. autoclass:: beem.witness.WitnessesByIds
-   :members:
-   
-.. autoclass:: beem.witness.LookupWitnesses
-   :members:
-   
diff --git a/requirements.txt b/requirements.txt
index a025cfee7dbc0d7893676847b710366b3a708b8c..76b9c782c22a3e81d31b183af41adbd359bdf37e 100644
--- a/requirements.txt
+++ b/requirements.txt
@@ -1,5 +1,5 @@
-graphenelib
-pycryptodomex>=3.4.6
+graphenelib>=0.5.9
+pycryptodome>=3.4.6
 scrypt>=0.7.1
 Events>=0.2.2
 pyyaml
diff --git a/setup.py b/setup.py
index 72d2cc00a7d0f63942afc557538808b96beaeec9..9f875fde7b9eea715ac9d509a3b18a7da01e26dd 100755
--- a/setup.py
+++ b/setup.py
@@ -14,7 +14,7 @@ except LookupError:
     ascii = codecs.lookup('ascii')
     codecs.register(lambda name, enc=ascii: {True: enc}.get(name == 'mbcs'))
 
-VERSION = '0.19.3'
+VERSION = '0.19.4'
 
 
 def write_version_py(filename):
@@ -65,7 +65,7 @@ if __name__ == '__main__':
             "appdirs",
             "Events",
             "scrypt",
-            "pycryptodomex",  # for AES, installed through graphenelib already
+            "pycryptodome",  # for AES, installed through graphenelib already
         ],
         setup_requires=['pytest-runner'],
         tests_require=['pytest'],