diff --git a/steempy/memo.py b/steempy/memo.py
index a84d1b73fa8b0ce49cc7e67bff03fc5601329de6..ab1e1eda74e4f7e49b56fe82fe5b9d001405451c 100644
--- a/steempy/memo.py
+++ b/steempy/memo.py
@@ -34,7 +34,7 @@ class Memo(object):
 
         .. code-block:: python
 
-            from steem.memo import Memo
+            from steempy.memo import Memo
             m = Memo()
             m.steem.wallet.unlock("secret")
             print(memo.decrypt(op_data["memo"]))
diff --git a/steempy/transactionbuilder.py b/steempy/transactionbuilder.py
index ee371ee88d47faf94fe660df7b791fddc8518b53..696f549c5ec59bdbaf211de72fac8283af57288f 100644
--- a/steempy/transactionbuilder.py
+++ b/steempy/transactionbuilder.py
@@ -101,7 +101,11 @@ class TransactionBuilder(dict):
         assert permission in ["active", "owner", "posting"], "Invalid permission"
         account = Account(account, steem_instance=self.steem)
         if permission not in account:
-            account = Account(account, steem_instance=self.steem)
+            account = Account(account, steem_instance=self.steem, lazy=False, full=True)
+            account.clear_cache()
+            account.refresh()
+        if permission not in account:
+            account = Account(account, steem_instance=self.steem)        
         assert permission in account, "Could not access permission"
         
         required_treshold = account[permission]["weight_threshold"]
@@ -178,10 +182,10 @@ class TransactionBuilder(dict):
         ref_block_num, ref_block_prefix = transactions.getBlockParams(
             self.steem.rpc)
         self.tx = Signed_Transaction(
-            ref_block_num=ref_block_num,
             ref_block_prefix=ref_block_prefix,
             expiration=expiration,
-            operations=ops
+            operations=ops,
+            ref_block_num=ref_block_num
         )
         super(TransactionBuilder, self).update(self.tx.json())
         self._unset_require_reconstruction()
diff --git a/steempybase/objects.py b/steempybase/objects.py
index 65c63e5006f120ad518beef1631339ebfd9bb4bd..690c496e6674f34996925260d34266700c815aa5 100644
--- a/steempybase/objects.py
+++ b/steempybase/objects.py
@@ -35,18 +35,19 @@ class ObjectId(GPHObjectId):
     """ Encodes object/protocol ids
     """
     def __init__(self, object_str, type_verify=None):
-        # space, type, id = object_str.split(".")
-        # self.space = int(space)
-        # self.type = int(type)
-        self.instance = Id(int(object_str))
-        self.Id = object_str
-        # if type_verify:
-        #     assert object_type[type_verify] == int(type),\
-        #        "Object id does not match object type! " +\
-        #        "Excpected %d, got %d" %\
-        #        (object_type[type_verify], int(type))
-        # else:
-        #     raise Exception("Object id is invalid")
+        if len(object_str.split(".")) == 3:
+            space, type, id = object_str.split(".")
+            self.space = int(space)
+            self.type = int(type)
+            self.instance = Id(int(id))
+            self.Id = object_str
+            if type_verify:
+                assert object_type[type_verify] == int(type),\
+                    "Object id does not match object type! " +\
+                    "Excpected %d, got %d" %\
+                    (object_type[type_verify], int(type))
+        else:
+            raise Exception("Object id is invalid")
 
 
 class Amount():
@@ -97,6 +98,14 @@ class Operation(GPHOperation):
 
     def json(self):
         return json.loads(str(self))
+        #return json.loads(str(json.dumps([self.name, self.op.toJson()])))
+
+    def __bytes__(self):
+        return bytes(Id(self.opId)) + bytes(self.op)
+        # return bytes(self.op)
+
+    def __str__(self):
+        return json.dumps([self.name.lower(), self.op.toJson()])
 
 
 class Transfer(GrapheneObject):
@@ -189,7 +198,6 @@ class Permission(GrapheneObject):
                 ('weight_threshold', Uint32(int(kwargs["weight_threshold"]))),
                 ('account_auths', accountAuths),
                 ('key_auths', keyAuths),
-                ('extensions', Set([])),
             ]))
 
 
@@ -216,7 +224,6 @@ class AccountOptions(GrapheneObject):
                 ('num_witness', Uint16(kwargs["num_witness"])),
                 ('num_committee', Uint16(kwargs["num_committee"])),
                 ('votes', Array([VoteId(o) for o in kwargs["votes"]])),
-                ('extensions', Set([])),
             ]))
 
 
diff --git a/steempybase/operations.py b/steempybase/operations.py
index 77a9292a6d6375958d108908a28c7618673ea76e..1571392297e0c324925b780115b0c0abb2f425f8 100644
--- a/steempybase/operations.py
+++ b/steempybase/operations.py
@@ -49,16 +49,17 @@ class Transfer(GrapheneObject):
                 if isinstance(kwargs["memo"], dict):
                     kwargs["memo"]["prefix"] = prefix
                     memo = Optional(Memo(**kwargs["memo"]))
+                elif isinstance(kwargs["memo"], str):
+                    memo = (String(kwargs["memo"]))
                 else:
                     memo = Optional(Memo(kwargs["memo"]))
             else:
                 memo = Optional(None)
             super().__init__(OrderedDict([
-                ('from', (kwargs["from"])),
-                ('to', (kwargs["to"])),
+                ('from', String(kwargs["from"])),
+                ('to', String(kwargs["to"])),
                 ('amount', Amount(kwargs["amount"])),
                 ('memo', memo),
-                ('extensions', Set([])),
             ]))
 
 
diff --git a/tests/test_steem.py b/tests/test_steem.py
index 74a1b80f05bd327122a8918043a1912d0fa7f791..6a7b4e478b9d38ad0b9cf131c46d90c4fe4f1bc5 100644
--- a/tests/test_steem.py
+++ b/tests/test_steem.py
@@ -34,7 +34,7 @@ class Testcases(unittest.TestCase):
         tx = bts.transfer(
             "test", 1.33, "SBD", memo="Foobar", account="test1")
         self.assertEqual(
-            getOperationNameForId(tx["operations"][0][0]),
+            tx["operations"][0][0],
             "transfer"
         )
         op = tx["operations"][0][1]
diff --git a/tests/test_steem_testnet.py b/tests/test_steem_testnet.py
index 9b41051e5e0dbf1c827bd9af804ab4b38daafe26..abccbc9caa6806e8f90917c272b1a8363ff59dca 100644
--- a/tests/test_steem_testnet.py
+++ b/tests/test_steem_testnet.py
@@ -51,7 +51,7 @@ class Testcases(unittest.TestCase):
             storekeys=False
         )
         self.assertEqual(
-            getOperationNameForId(tx["operations"][0][0]),
+            tx["operations"][0][0],
             "account_create"
         )
         op = tx["operations"][0][1]
diff --git a/tests/test_transactions.py b/tests/test_transactions.py
index b996c6aa4e43edea566e87e7a9b4a470d2601905..93323daf2a8f5f6109eed90af0c68d06f26d47c5 100644
--- a/tests/test_transactions.py
+++ b/tests/test_transactions.py
@@ -8,6 +8,9 @@ from steempybase import (
 from steempybase.objects import Operation
 from steempybase.signedtransactions import Signed_Transaction
 from steempybase.account import PrivateKey
+from steempybase.operationids import getOperationNameForId
+from steempy.amount import Amount
+from steempy.asset import Asset
 import random
 import unittest
 from pprint import pprint
@@ -15,7 +18,7 @@ from binascii import hexlify
 
 TEST_AGAINST_CLI_WALLET = False
 
-prefix = "STM"
+prefix = "STEEM"
 wif = "5KQwrPbwdL6PhXujxW37FSSQZ1JiwsST4cqQzDeyXtP79zkvFD3"
 ref_block_num = 34294
 ref_block_prefix = 3707022213
@@ -24,12 +27,16 @@ expiration = "2016-04-06T08:29:27"
 
 class Testcases(unittest.TestCase):
 
-    def doit(self, printWire=False):
-        ops = [Operation(self.op)]
+    def doit(self, printWire=False, ops=None):
+        if ops is None:
+            ops = [Operation(self.op)]
+        if len(ops) > 0:
+            txWire_ops = hexlify(bytes(ops[0])).decode("ascii")
         tx = Signed_Transaction(ref_block_num=ref_block_num,
                                 ref_block_prefix=ref_block_prefix,
                                 expiration=expiration,
                                 operations=ops)
+        txWire_Unsigned = hexlify(bytes(tx)).decode("ascii")
         tx = tx.sign([wif], chain=prefix)
         tx.verify([PrivateKey(wif).pubkey], prefix)
         txWire = hexlify(bytes(tx)).decode("ascii")
@@ -37,7 +44,12 @@ class Testcases(unittest.TestCase):
             print()
             print(txWire)
             print()
+        if self.cm_op != '' and len(ops) > 0:
+            self.assertEqual(self.cm_op, txWire_ops)
+        if self.cm_unsigned != '':
+            self.assertEqual(self.cm_unsigned, txWire_Unsigned)
         self.assertEqual(self.cm[:-130], txWire[:-130])
+        
 
         if TEST_AGAINST_CLI_WALLET:
             from grapheneapi.grapheneapi import GrapheneAPI
@@ -48,6 +60,32 @@ class Testcases(unittest.TestCase):
             # print(txWire[:-130] == self.cm[:-130])
             self.assertEqual(self.cm[:-130], txWire[:-130])
 
+    def test_Empty_Op(self):
+        self.cm = ("f68585abf4dce7c8045700000120020c2218cd5bcbaf3bdaba2f192a7"
+                   "a69cb2307fcc6be2c09e45e204d175fc5fb715df86fcccfa1235babe6"
+                   "09461cc9fdfadbae06381d711576fb4265bd832008")
+        self.cm_unsigned = ("f68585abf4dce7c80457000000")
+        self.cm_op = ("")
+        self.doit(ops=[])
+
+    def test_Transfer(self):
+        self.op = operations.Transfer(**{
+            "from": "foo",
+            "to": "baar",
+            "amount": Amount("111.110 STEEM"),
+            "memo": "Fooo"
+        })
+        self.op = [2, {'from': 'foo', 'to': 'baar', 'amount': '111.110 STEEM', 'memo': 'Fooo'}]
+        self.cm_op = ("") # ("03666f6f046261617206b201000000000003535445454d000004466f6f6f")
+        self.cm = ("f68585abf4dce7c80457010203666f6f046261617206b201000000"
+                   "000003535445454d000004466f6f6f00012025416c234dd5ff15d8"
+                   "b45486833443c128002bcafa57269cada3ad213ef88adb5831f63a"
+                   "58d8b81bbdd92d494da01eeb13ee1786d02ce075228b25d7132f8f"
+                   "3e")
+        self.cm_unsigned = ("f68585abf4dce7c80457010203666f6f046261617206b201"
+                            "000000000003535445454d000004466f6f6f0000")        
+        self.doit()
+
 
 """
     def test_call_update(self):