diff --git a/beembase/objects.py b/beembase/objects.py
index 95da4bc484dc66809fa0dcc29a0e71328951723b..1a007cc3eb36dcaadbfbd8b0089f3086aa20ce79 100644
--- a/beembase/objects.py
+++ b/beembase/objects.py
@@ -27,7 +27,7 @@ default_prefix = "STM"
 
 @python_2_unicode_compatible
 class Amount(object):
-    def __init__(self, d, prefix="STM"):
+    def __init__(self, d, prefix=default_prefix):
         if isinstance(d, string_types):
             self.amount, self.symbol = d.strip().split(" ")
             self.precision = None
@@ -164,8 +164,9 @@ class WitnessProps(GrapheneObject):
         else:
             if len(args) == 1 and len(kwargs) == 0:
                 kwargs = args[0]
+            prefix = kwargs.get("prefix", default_prefix)
             super(WitnessProps, self).__init__(OrderedDict([
-                ('account_creation_fee', Amount(kwargs["account_creation_fee"])),
+                ('account_creation_fee', Amount(kwargs["account_creation_fee"], prefix=prefix)),
                 ('maximum_block_size', Uint32(kwargs["maximum_block_size"])),
                 ('sbd_interest_rate', Uint16(kwargs["sbd_interest_rate"])),
             ]))
@@ -178,9 +179,10 @@ class Price(GrapheneObject):
         else:
             if len(args) == 1 and len(kwargs) == 0:
                 kwargs = args[0]
+            prefix = kwargs.get("prefix", default_prefix)
             super(Price, self).__init__(OrderedDict([
-                ('base', Amount(kwargs["base"])),
-                ('quote', Amount(kwargs["quote"]))
+                ('base', Amount(kwargs["base"], prefix=prefix)),
+                ('quote', Amount(kwargs["quote"], prefix=prefix))
             ]))
 
 
@@ -238,10 +240,11 @@ class ExchangeRate(GrapheneObject):
             if len(args) == 1 and len(kwargs) == 0:
                 kwargs = args[0]
 
+            prefix = kwargs.get("prefix", default_prefix)
             super(ExchangeRate, self).__init__(
                 OrderedDict([
-                    ('base', Amount(kwargs["base"])),
-                    ('quote', Amount(kwargs["quote"])),
+                    ('base', Amount(kwargs["base"], prefix=prefix)),
+                    ('quote', Amount(kwargs["quote"], prefix=prefix)),
                 ]))
 
 
diff --git a/beembase/operations.py b/beembase/operations.py
index 7c2f7ce18a9ccd82be4f7492055ce9f10e1f72f5..185fac4b1a1135524290fa74d0db49824dd4a919 100644
--- a/beembase/operations.py
+++ b/beembase/operations.py
@@ -64,7 +64,7 @@ class Transfer(GrapheneObject):
         super(Transfer, self).__init__(OrderedDict([
             ('from', String(kwargs["from"])),
             ('to', String(kwargs["to"])),
-            ('amount', Amount(kwargs["amount"])),
+            ('amount', Amount(kwargs["amount"], prefix=prefix)),
             ('memo', memo),
         ]))
 
@@ -89,10 +89,11 @@ class Transfer_to_vesting(GrapheneObject):
             return
         if len(args) == 1 and len(kwargs) == 0:
             kwargs = args[0]
+        prefix = kwargs.get("prefix", default_prefix)
         super(Transfer_to_vesting, self).__init__(OrderedDict([
             ('from', String(kwargs["from"])),
             ('to', String(kwargs["to"])),
-            ('amount', Amount(kwargs["amount"])),
+            ('amount', Amount(kwargs["amount"], prefix=prefix)),
         ]))
 
 
@@ -102,9 +103,10 @@ class Withdraw_vesting(GrapheneObject):
             return
         if len(args) == 1 and len(kwargs) == 0:
             kwargs = args[0]
+        prefix = kwargs.get("prefix", default_prefix)
         super(Withdraw_vesting, self).__init__(OrderedDict([
             ('account', String(kwargs["account"])),
-            ('vesting_shares', Amount(kwargs["vesting_shares"])),
+            ('vesting_shares', Amount(kwargs["vesting_shares"], prefix=prefix)),
         ]))
 
 
@@ -190,7 +192,7 @@ class Account_create(GrapheneObject):
                 meta = kwargs["json_metadata"]
 
         super(Account_create, self).__init__(OrderedDict([
-            ('fee', Amount(kwargs["fee"])),
+            ('fee', Amount(kwargs["fee"], prefix=prefix)),
             ('creator', String(kwargs["creator"])),
             ('new_account_name', String(kwargs["new_account_name"])),
             ('owner', Permission(kwargs["owner"], prefix=prefix)),
@@ -221,8 +223,8 @@ class Account_create_with_delegation(GrapheneObject):
                 meta = kwargs["json_metadata"]
 
         super(Account_create_with_delegation, self).__init__(OrderedDict([
-            ('fee', Amount(kwargs["fee"])),
-            ('delegation', Amount(kwargs["delegation"])),
+            ('fee', Amount(kwargs["fee"], prefix=prefix)),
+            ('delegation', Amount(kwargs["delegation"], prefix=prefix)),
             ('creator', String(kwargs["creator"])),
             ('new_account_name', String(kwargs["new_account_name"])),
             ('owner', Permission(kwargs["owner"], prefix=prefix)),
@@ -302,10 +304,12 @@ class Witness_set_properties(GrapheneObject):
             elif isinstance(k[1], int) and k[0] in ["sbd_interest_rate"]:
                 props[k[0]] = (hexlify(Uint16(k[1]).__bytes__())).decode()
             elif not isinstance(k[1], str) and k[0] in ["account_creation_fee"]:
-                props[k[0]] = (hexlify(Amount(k[1]).__bytes__())).decode()
+                props[k[0]] = (hexlify(Amount(k[1], prefix=prefix).__bytes__())).decode()
             elif not is_hex and isinstance(k[1], str) and k[0] in ["account_creation_fee"]:
-                props[k[0]] = (hexlify(Amount(k[1]).__bytes__())).decode()
+                props[k[0]] = (hexlify(Amount(k[1], prefix=prefix).__bytes__())).decode()
             elif not isinstance(k[1], str) and k[0] in ["sbd_exchange_rate"]:
+                if 'prefix' not in k[1]:
+                    k[1]['prefix'] = prefix
                 props[k[0]] = (hexlify(ExchangeRate(k[1]).__bytes__())).decode()
             elif not is_hex and k[0] in ["url"]:
                 props[k[0]] = (hexlify(String(k[1]).__bytes__())).decode()
@@ -341,13 +345,15 @@ class Witness_update(GrapheneObject):
         else:
             block_signing_key = PublicKey(
                 prefix + "1111111111111111111111111111111114T1Anm", prefix=prefix)
+        if 'prefix' not in kwargs['props']:
+            kwargs['props']['prefix'] = prefix
 
         super(Witness_update, self).__init__(OrderedDict([
             ('owner', String(kwargs["owner"])),
             ('url', String(kwargs["url"])),
             ('block_signing_key', block_signing_key),
             ('props', WitnessProps(kwargs["props"])),
-            ('fee', Amount(kwargs["fee"])),
+            ('fee', Amount(kwargs["fee"], prefix=prefix)),
         ]))
 
 
@@ -410,6 +416,7 @@ class Comment_options(GrapheneObject):
             return
         if len(args) == 1 and len(kwargs) == 0:
             kwargs = args[0]
+        prefix = kwargs.get("prefix", default_prefix)
 
         # handle beneficiaries
         if "beneficiaries" in kwargs and kwargs['beneficiaries']:
@@ -424,7 +431,7 @@ class Comment_options(GrapheneObject):
                 ('author', String(kwargs["author"])),
                 ('permlink', String(kwargs["permlink"])),
                 ('max_accepted_payout',
-                 Amount(kwargs["max_accepted_payout"])),
+                 Amount(kwargs["max_accepted_payout"], prefix=prefix)),
                 ('percent_steem_dollars',
                  Uint16(int(kwargs["percent_steem_dollars"]))),
                 ('allow_votes', Bool(bool(kwargs["allow_votes"]))),
@@ -453,6 +460,9 @@ class Feed_publish(GrapheneObject):
             return
         if len(args) == 1 and len(kwargs) == 0:
             kwargs = args[0]
+        prefix = kwargs.get("prefix", default_prefix)
+        if 'prefix' not in kwargs['exchange_rate']:
+            kwargs['exchange_rate']['prefix'] = prefix
         super(Feed_publish, self).__init__(
             OrderedDict([
                 ('publisher', String(kwargs["publisher"])),
@@ -466,11 +476,12 @@ class Convert(GrapheneObject):
             return
         if len(args) == 1 and len(kwargs) == 0:
             kwargs = args[0]
+        prefix = kwargs.get("prefix", default_prefix)
         super(Convert, self).__init__(
             OrderedDict([
                 ('owner', String(kwargs["owner"])),
                 ('requestid', Uint32(kwargs["requestid"])),
-                ('amount', Amount(kwargs["amount"])),
+                ('amount', Amount(kwargs["amount"], prefix=prefix)),
             ]))
 
 
@@ -508,10 +519,11 @@ class Claim_account(GrapheneObject):
             return
         if len(args) == 1 and len(kwargs) == 0:
             kwargs = args[0]
+        prefix = kwargs.get("prefix", default_prefix)
         super(Claim_account, self).__init__(
             OrderedDict([
                 ('creator', String(kwargs["creator"])),
-                ('fee', Amount(kwargs["fee"])),
+                ('fee', Amount(kwargs["fee"], prefix=prefix)),
                 ('extensions', Array([])),
             ]))
 
@@ -553,11 +565,12 @@ class Delegate_vesting_shares(GrapheneObject):
             return
         if len(args) == 1 and len(kwargs) == 0:
             kwargs = args[0]
+        prefix = kwargs.get("prefix", default_prefix)
         super(Delegate_vesting_shares, self).__init__(
             OrderedDict([
                 ('delegator', String(kwargs["delegator"])),
                 ('delegatee', String(kwargs["delegatee"])),
-                ('vesting_shares', Amount(kwargs["vesting_shares"])),
+                ('vesting_shares', Amount(kwargs["vesting_shares"], prefix=prefix)),
             ]))
 
 
@@ -567,12 +580,13 @@ class Limit_order_create(GrapheneObject):
             return
         if len(args) == 1 and len(kwargs) == 0:
             kwargs = args[0]
+        prefix = kwargs.get("prefix", default_prefix)
         super(Limit_order_create, self).__init__(
             OrderedDict([
                 ('owner', String(kwargs["owner"])),
                 ('orderid', Uint32(kwargs["orderid"])),
-                ('amount_to_sell', Amount(kwargs["amount_to_sell"])),
-                ('min_to_receive', Amount(kwargs["min_to_receive"])),
+                ('amount_to_sell', Amount(kwargs["amount_to_sell"], prefix=prefix)),
+                ('min_to_receive', Amount(kwargs["min_to_receive"], prefix=prefix)),
                 ('fill_or_kill', Bool(kwargs["fill_or_kill"])),
                 ('expiration', PointInTime(kwargs["expiration"])),
             ]))
@@ -584,11 +598,14 @@ class Limit_order_create2(GrapheneObject):
             return
         if len(args) == 1 and len(kwargs) == 0:
             kwargs = args[0]
+        prefix = kwargs.get("prefix", default_prefix)
+        if 'prefix' not in kwargs['exchange_rate']:
+            kwargs['exchange_rate']['prefix'] = prefix
         super(Limit_order_create2, self).__init__(
             OrderedDict([
                 ('owner', String(kwargs["owner"])),
                 ('orderid', Uint32(kwargs["orderid"])),
-                ('amount_to_sell', Amount(kwargs["amount_to_sell"])),
+                ('amount_to_sell', Amount(kwargs["amount_to_sell"], prefix=prefix)),
                 ('fill_or_kill', Bool(kwargs["fill_or_kill"])),
                 ('exchange_rate', ExchangeRate(kwargs["exchange_rate"])),
                 ('expiration', PointInTime(kwargs["expiration"])),
@@ -615,6 +632,7 @@ class Transfer_from_savings(GrapheneObject):
             return
         if len(args) == 1 and len(kwargs) == 0:
             kwargs = args[0]
+        prefix = kwargs.get("prefix", default_prefix)
         if "memo" not in kwargs:
             kwargs["memo"] = ""
 
@@ -623,7 +641,7 @@ class Transfer_from_savings(GrapheneObject):
                 ('from', String(kwargs["from"])),
                 ('request_id', Uint32(kwargs["request_id"])),
                 ('to', String(kwargs["to"])),
-                ('amount', Amount(kwargs["amount"])),
+                ('amount', Amount(kwargs["amount"], prefix=prefix)),
                 ('memo', String(kwargs["memo"])),
             ]))
 
@@ -647,12 +665,13 @@ class Claim_reward_balance(GrapheneObject):
             return
         if len(args) == 1 and len(kwargs) == 0:
             kwargs = args[0]
+        prefix = kwargs.get("prefix", default_prefix)
         super(Claim_reward_balance, self).__init__(
             OrderedDict([
                 ('account', String(kwargs["account"])),
-                ('reward_steem', Amount(kwargs["reward_steem"])),
-                ('reward_sbd', Amount(kwargs["reward_sbd"])),
-                ('reward_vests', Amount(kwargs["reward_vests"])),
+                ('reward_steem', Amount(kwargs["reward_steem"], prefix=prefix)),
+                ('reward_sbd', Amount(kwargs["reward_sbd"], prefix=prefix)),
+                ('reward_vests', Amount(kwargs["reward_vests"], prefix=prefix)),
             ]))
 
 
@@ -662,13 +681,14 @@ class Transfer_to_savings(GrapheneObject):
             return
         if len(args) == 1 and len(kwargs) == 0:
             kwargs = args[0]
+        prefix = kwargs.get("prefix", default_prefix)
         if "memo" not in kwargs:
             kwargs["memo"] = ""
         super(Transfer_to_savings, self).__init__(
             OrderedDict([
                 ('from', String(kwargs["from"])),
                 ('to', String(kwargs["to"])),
-                ('amount', Amount(kwargs["amount"])),
+                ('amount', Amount(kwargs["amount"], prefix=prefix)),
                 ('memo', String(kwargs["memo"])),
             ]))
 
@@ -714,6 +734,7 @@ class Escrow_transfer(GrapheneObject):
             return
         if len(args) == 1 and len(kwargs) == 0:
             kwargs = args[0]
+        prefix = kwargs.get("prefix", default_prefix)
         meta = ""
         if "json_meta" in kwargs and kwargs["json_meta"]:
             if (isinstance(kwargs["json_meta"], dict) or isinstance(kwargs["json_meta"], list)):
@@ -726,9 +747,9 @@ class Escrow_transfer(GrapheneObject):
                 ('to', String(kwargs["to"])),
                 ('agent', String(kwargs["agent"])),
                 ('escrow_id', Uint32(kwargs["escrow_id"])),
-                ('sbd_amount', Amount(kwargs["sbd_amount"])),
-                ('steem_amount', Amount(kwargs["steem_amount"])),
-                ('fee', Amount(kwargs["fee"])),
+                ('sbd_amount', Amount(kwargs["sbd_amount"], prefix=prefix)),
+                ('steem_amount', Amount(kwargs["steem_amount"], prefix=prefix)),
+                ('fee', Amount(kwargs["fee"], prefix=prefix)),
                 ('ratification_deadline', PointInTime(kwargs["ratification_deadline"])),
                 ('escrow_expiration', PointInTime(kwargs["escrow_expiration"])),
                 ('json_meta', String(meta)),
@@ -756,14 +777,15 @@ class Escrow_release(GrapheneObject):
             return
         if len(args) == 1 and len(kwargs) == 0:
             kwargs = args[0]
+        prefix = kwargs.get("prefix", default_prefix)
         super(Escrow_release, self).__init__(
             OrderedDict([
                 ('from', String(kwargs["from"])),
                 ('to', String(kwargs["to"])),
                 ('who', String(kwargs["who"])),
                 ('escrow_id', Uint32(kwargs["escrow_id"])),
-                ('sbd_amount', Amount(kwargs["sbd_amount"])),
-                ('steem_amount', Amount(kwargs["steem_amount"])),
+                ('sbd_amount', Amount(kwargs["sbd_amount"], prefix=prefix)),
+                ('steem_amount', Amount(kwargs["steem_amount"], prefix=prefix)),
             ]))