diff --git a/silkaj/money.py b/silkaj/money.py
index 2e999738e55b8447f4a41f2c683e31bc6cc686a7..8e8a22e28e32a90d6cf7b92fddc2baba682d22d0 100644
--- a/silkaj/money.py
+++ b/silkaj/money.py
@@ -18,18 +18,20 @@ def cmd_amount(ep, cli_args):
             total[0] += value[0]
             total[1] += value[1]
         if (len(pubkeys) > 1):
-            show_amount_from_pubkey("Total", total, ud_value, currency_symbol)
+            show_amount_from_pubkey(ep, "Total", total, currency_symbol)
     else:
         seed = auth_method(cli_args)
         pubkey = get_publickey_from_seed(seed)
         show_amount_from_pubkey(ep, pubkey, get_amount_from_pubkey(ep, pubkey))
 
 
-def show_amount_from_pubkey(pubkey, value, ud_value, currency_symbol):
+def show_amount_from_pubkey(ep, pubkey, value, currency_symbol):
     totalAmountInput = value[0]
     amount = value[1]
     # output
 
+    currency_symbol = CurrencySymbol().symbol
+    ud_value = UDValue(ep).ud_value
     if totalAmountInput - amount != 0:
         print("Blockchain:")
         print("-----------")
@@ -106,8 +108,16 @@ def get_amount_from_pubkey(ep, pubkey):
     return int(totalAmountInput), int(amount)
 
 
-def get_last_ud_value(ep):
-    blockswithud = get_request(ep, "blockchain/with/ud")["result"]
-    NBlastUDblock = blockswithud["blocks"][-1]
-    lastUDblock = get_request(ep, "blockchain/block/" + str(NBlastUDblock))
-    return lastUDblock["dividend"] * 10 ** lastUDblock["unitbase"]
+class UDValue(object):
+    __instance = None
+
+    def __new__(cls, ep):
+        if UDValue.__instance is None:
+            UDValue.__instance = object.__new__(cls)
+        return UDValue.__instance
+
+    def __init__(self, ep):
+        blockswithud = get_request(ep, "blockchain/with/ud")["result"]
+        NBlastUDblock = blockswithud["blocks"][-1]
+        lastUDblock = get_request(ep, "blockchain/block/" + str(NBlastUDblock))
+        self.ud_value = lastUDblock["dividend"] * 10 ** lastUDblock["unitbase"]
diff --git a/silkaj/silkaj.py b/silkaj/silkaj.py
index a8144d9e485bee95150626df6181fd9568c3d180..271148291b25f3c7ba72406c9dff2d9a9d308b10 100644
--- a/silkaj/silkaj.py
+++ b/silkaj/silkaj.py
@@ -3,7 +3,7 @@
 from sys import stderr
 from commandlines import Command
 from silkaj.tx import send_transaction
-from silkaj.money import cmd_amount, get_last_ud_value
+from silkaj.money import cmd_amount
 from silkaj.cert import send_certification
 from silkaj.commands import currency_info, difficulties, set_network_sort_keys,\
         network_info, argos_info, list_issuers
diff --git a/silkaj/tx.py b/silkaj/tx.py
index f5dbac93463a084e4f29127afc830fdac533dd60..7e78deab24f828885a524bd751b921a07c0e7cdc 100644
--- a/silkaj/tx.py
+++ b/silkaj/tx.py
@@ -9,7 +9,7 @@ from silkaj.tools import get_publickey_from_seed, sign_document_from_seed,\
         check_public_key, message_exit
 from silkaj.auth import auth_method
 from silkaj.wot import get_uid_from_pubkey
-from silkaj.money import get_amount_from_pubkey
+from silkaj.money import get_amount_from_pubkey, UDValue
 from silkaj.constants import NO_MATCHING_ID
 
 
@@ -17,7 +17,7 @@ def send_transaction(ep, cli_args):
     """
     Main function
     """
-    amount, output, comment, allSources, outputBackChange = cmd_transaction(cli_args, ud_value)
+    amount, output, comment, allSources, outputBackChange = cmd_transaction(ep, cli_args)
     seed = auth_method(cli_args)
     issuer_pubkey = get_publickey_from_seed(seed)
 
@@ -26,12 +26,12 @@ def send_transaction(ep, cli_args):
     check_transaction_values(comment, outputAddresses, outputBackChange, pubkey_amount < amount * len(outputAddresses), issuer_pubkey)
 
     if cli_args.contains_switches('yes') or cli_args.contains_switches('y') or \
-        input(tabulate(transaction_confirmation(ep, issuer_pubkey, amount, ud_value, currency_symbol, outputAddresses, comment),
+        input(tabulate(transaction_confirmation(ep, issuer_pubkey, amount, currency_symbol, outputAddresses, comment),
         tablefmt="fancy_grid") + "\nDo you confirm sending this transaction? [yes/no]: ") == "yes":
         generate_and_send_transaction(ep, seed, issuer_pubkey, amount, outputAddresses, comment, allSources, outputBackChange)
 
 
-def cmd_transaction(cli_args, ud):
+def cmd_transaction(ep, cli_args):
     """
     Retrieve values from command line interface
     """
@@ -43,7 +43,7 @@ def cmd_transaction(cli_args, ud):
     if cli_args.contains_definitions('amount'):
         amount = int(float(cli_args.get_definition('amount')) * 100)
     if cli_args.contains_definitions('amountUD'):
-        amount = int(float(cli_args.get_definition('amountUD')) * ud)
+        amount = int(float(cli_args.get_definition('amountUD')) * UDValue(ep).ud_value)
 
     output = cli_args.get_definition('output')
     comment = cli_args.get_definition('comment') if cli_args.contains_definitions('comment') else ""
@@ -69,14 +69,14 @@ def check_transaction_values(comment, outputAddresses, outputBackChange, enough_
         message_exit(issuer_pubkey + " pubkey doesn’t have enough money for this transaction.")
 
 
-def transaction_confirmation(ep, issuer_pubkey, amount, ud, currency_symbol, outputAddresses, comment):
+def transaction_confirmation(ep, issuer_pubkey, amount, currency_symbol, outputAddresses, comment):
     """
     Generate transaction confirmation
     """
 
     tx = list()
     tx.append(["amount (" + currency_symbol + ")", amount / 100 * len(outputAddresses)])
-    tx.append(["amount (UD " + currency_symbol + ")", round(amount / ud, 4)])
+    tx.append(["amount (UD " + currency_symbol + ")", round(amount / UDValue(ep).ud_value, 4)])
     tx.append(["from", issuer_pubkey])
     id_from = get_uid_from_pubkey(ep, issuer_pubkey)
     if id_from is not NO_MATCHING_ID: