diff --git a/setup.py b/setup.py
index ee09ae24e4e4614b0db6f89ec2b277b025b65af8..dca0a8308b46987df54a3e7daafef65b5270428c 100644
--- a/setup.py
+++ b/setup.py
@@ -117,7 +117,7 @@ else:
 
     setup(
         name = "sakia",
-        version = "0.11.3",
+        version = "0.11.4",
         description = "UCoin client",
         author = "Inso",
         options = {"build_exe": options},
diff --git a/src/sakia/core/account.py b/src/sakia/core/account.py
index 21ed972e668a2c02c183aebadf559fde2baa16cb..15a20055ba1bb70056c84f9ee35471792a811ee7 100644
--- a/src/sakia/core/account.py
+++ b/src/sakia/core/account.py
@@ -33,6 +33,7 @@ class Account(QObject):
     loading_progressed = pyqtSignal(Community, int, int)
     loading_finished = pyqtSignal(Community, list)
     wallets_changed = pyqtSignal()
+    certification_accepted = pyqtSignal()
 
     def __init__(self, salt, pubkey, name, communities, wallets, contacts, identities_registry):
         """
@@ -488,6 +489,8 @@ class Account(QObject):
             for r in responses:
                 if r.status == 200:
                     result = (True, (await r.json()))
+                    # signal certification to all listeners
+                    self.certification_accepted.emit()
                 elif not result[0]:
                     result = (False, (await r.text()))
                 else:
diff --git a/src/sakia/core/money/quant_zerosum.py b/src/sakia/core/money/quant_zerosum.py
index dfa9637d36cba5e0c7442a9f2684da74f4aa970b..2c63322514e1d69c2952869965da43c8d61ab421 100644
--- a/src/sakia/core/money/quant_zerosum.py
+++ b/src/sakia/core/money/quant_zerosum.py
@@ -2,6 +2,7 @@ from PyQt5.QtCore import QCoreApplication, QT_TRANSLATE_NOOP, QLocale
 from . import Quantitative
 import asyncio
 
+
 class QuantitativeZSum:
     _NAME_STR_ = QT_TRANSLATE_NOOP('QuantitativeZSum', 'Quant Z-sum')
     _REF_STR_ = QT_TRANSLATE_NOOP('QuantitativeZSum', "{0} Q0 {1}")
@@ -22,12 +23,19 @@ class QuantitativeZSum:
 
     @classmethod
     def diff_units(cls, currency):
-        return QuantitativeZSum.units(currency)
+        return Quantitative.units(currency)
 
     async def value(self):
         """
         Return quantitative value of amount minus the average value
 
+        t = last UD block
+        t-1 = penultimate UD block
+        M = Monetary mass
+        N = Members count
+
+        zsum value = value - ( M(t-1) / N(t) )
+
         :param int amount:   Value
         :param sakia.core.community.Community community: Community instance
         :return: int
@@ -46,7 +54,11 @@ class QuantitativeZSum:
     async def localized(self, units=False, international_system=False):
         value = await self.value()
 
-        localized_value = QLocale().toString(float(value), 'f', 0)
+        prefix = ""
+        if international_system:
+            localized_value, prefix = Quantitative.to_si(value, self.app.preferences['digits_after_comma'])
+        else:
+            localized_value = QLocale().toString(float(value), 'f', 0)
 
         if units:
             return QCoreApplication.translate("QuantitativeZSum",
@@ -58,4 +70,4 @@ class QuantitativeZSum:
 
     async def diff_localized(self, units=False, international_system=False):
         localized = await Quantitative(self.amount, self.community, self.app).localized(units, international_system)
-        return localized
\ No newline at end of file
+        return localized
diff --git a/src/sakia/core/money/quantitative.py b/src/sakia/core/money/quantitative.py
index c34ab4536a2ac6957e3a691c9f7f2a5a77b7c09b..811ff8f0c9cd2473410576f7d513f5ce176373ca 100644
--- a/src/sakia/core/money/quantitative.py
+++ b/src/sakia/core/money/quantitative.py
@@ -1,6 +1,7 @@
 from PyQt5.QtCore import QCoreApplication, QT_TRANSLATE_NOOP, QObject, QLocale
 import asyncio
 
+
 class Quantitative():
     _NAME_STR_ = QT_TRANSLATE_NOOP('Quantitative', 'Units')
     _REF_STR_ = QT_TRANSLATE_NOOP('Quantitative', "{0} {1}{2}")
@@ -36,8 +37,15 @@ class Quantitative():
     async def differential(self):
         return await self.value()
 
-    def _to_si(self, value):
+    @staticmethod
+    def to_si(value, digits):
         prefixes = ['', 'k', 'M', 'G', 'T', 'P', 'E', 'Z', 'Y', 'z', 'y']
+        if value < 0:
+            value = -value
+            multiplier = -1
+        else:
+            multiplier = 1
+
         scientific_value = value
         prefix_index = 0
         prefix = ""
@@ -48,10 +56,9 @@ class Quantitative():
 
         if prefix_index < len(prefixes):
             prefix = prefixes[prefix_index]
-            localized_value = QLocale().toString(float(scientific_value), 'f',
-                                                 self.app.preferences['digits_after_comma'])
+            localized_value = QLocale().toString(float(scientific_value * multiplier), 'f', digits)
         else:
-            localized_value = QLocale().toString(float(value), 'f', 0)
+            localized_value = QLocale().toString(float(value * multiplier), 'f', 0)
 
         return localized_value, prefix
 
@@ -59,7 +66,7 @@ class Quantitative():
         value = await self.value()
         prefix = ""
         if international_system:
-            localized_value, prefix = self._to_si(value)
+            localized_value, prefix = Quantitative.to_si(value, self.app.preferences['digits_after_comma'])
         else:
             localized_value = QLocale().toString(float(value), 'f', 0)
 
@@ -76,7 +83,7 @@ class Quantitative():
         value = await self.differential()
         prefix = ""
         if international_system:
-            localized_value, prefix = self._to_si(value)
+            localized_value, prefix = Quantitative.to_si(value, self.app.preferences['digits_after_comma'])
         else:
             localized_value = QLocale().toString(float(value), 'f', 0)
 
diff --git a/src/sakia/core/money/relative.py b/src/sakia/core/money/relative.py
index 1f4926cc0d293ac3c04be7f01fae72b0a270d3d6..29b7d3f0d001d87a8d75b1341df748b0adff35d7 100644
--- a/src/sakia/core/money/relative.py
+++ b/src/sakia/core/money/relative.py
@@ -1,7 +1,8 @@
 from PyQt5.QtCore import QObject, QCoreApplication, QT_TRANSLATE_NOOP, QLocale
 import asyncio
 
-class Relative():
+
+class Relative:
     _NAME_STR_ = QT_TRANSLATE_NOOP('Relative', 'UD')
     _REF_STR_ = QT_TRANSLATE_NOOP('Relative',  "{0} {1}UD {2}")
     _UNITS_STR_ = QT_TRANSLATE_NOOP('Relative',  "UD {0}")
@@ -39,8 +40,14 @@ class Relative():
     async def differential(self):
         return await self.value()
 
-    def _to_si(self, value):
+    @staticmethod
+    def to_si(value, digits):
         prefixes = ['', 'd', 'c', 'm', 'µ', 'n', 'p', 'f', 'a', 'z', 'y']
+        if value < 0:
+            value = -value
+            multiplier = -1
+        else:
+            multiplier = 1
         scientific_value = value
         prefix_index = 0
         prefix = ""
@@ -54,11 +61,9 @@ class Relative():
 
         if prefix_index < len(prefixes):
             prefix = prefixes[prefix_index]
-            localized_value = QLocale().toString(float(scientific_value), 'f',
-                                                 self.app.preferences['digits_after_comma'])
+            localized_value = QLocale().toString(float(scientific_value * multiplier), 'f', digits)
         else:
-            localized_value = QLocale().toString(float(value), 'f',
-                                                 self.app.preferences['digits_after_comma'])
+            localized_value = QLocale().toString(float(value * multiplier), 'f', digits)
 
         return localized_value, prefix
 
@@ -66,7 +71,7 @@ class Relative():
         value = await self.value()
         prefix = ""
         if international_system:
-            localized_value, prefix = self._to_si(value)
+            localized_value, prefix = Relative.to_si(value, self.app.preferences['digits_after_comma'])
         else:
             localized_value = QLocale().toString(float(value), 'f', self.app.preferences['digits_after_comma'])
 
@@ -82,7 +87,7 @@ class Relative():
         value = await self.differential()
         prefix = ""
         if international_system and value != 0:
-            localized_value, prefix = self._to_si(value)
+            localized_value, prefix = Relative.to_si(value, self.app.preferences['digits_after_comma'])
         else:
             localized_value = QLocale().toString(float(value), 'f', self.app.preferences['digits_after_comma'])
 
diff --git a/src/sakia/core/money/relative_zerosum.py b/src/sakia/core/money/relative_zerosum.py
index b744682315f383c0211f09bedf9216ca53d9519c..5a6b823985ec04ade40327397fffe1337c2df790 100644
--- a/src/sakia/core/money/relative_zerosum.py
+++ b/src/sakia/core/money/relative_zerosum.py
@@ -2,6 +2,7 @@ from PyQt5.QtCore import QCoreApplication, QT_TRANSLATE_NOOP, QLocale
 from .relative import Relative
 import asyncio
 
+
 class RelativeZSum:
     _NAME_STR_ = QT_TRANSLATE_NOOP('RelativeZSum', 'Relat Z-sum')
     _REF_STR_ = QT_TRANSLATE_NOOP('RelativeZSum', "{0} R0 {1}")
@@ -22,23 +23,29 @@ class RelativeZSum:
 
     @classmethod
     def diff_units(cls, currency):
-        return RelativeZSum.units(currency)
+        return Relative.units(currency)
 
     async def value(self):
         """
         Return relative value of amount minus the average value
 
+        t = last UD block
+        t-1 = penultimate UD block
+        M = Monetary mass
+        N = Members count
+
+        zsum value = (value / UD(t)) - (( M(t-1) / N(t) ) / UD(t))
+
         :param int amount:   Value
         :param sakia.core.community.Community community: Community instance
         :return: float
         """
         ud_block = await self.community.get_ud_block()
-        if ud_block and ud_block['membersCount'] > 0:
-            monetary_mass = await self.community.monetary_mass()
-            dividend = await self.community.dividend()
-            median = monetary_mass / ud_block['membersCount']
-            relative_value = self.amount / float(dividend)
-            relative_median = median / dividend
+        ud_block_minus_1 = await self.community.get_ud_block(1)
+        if ud_block_minus_1 and ud_block['membersCount'] > 0:
+            median = ud_block_minus_1['monetaryMass'] / ud_block['membersCount']
+            relative_value = self.amount / float(ud_block['dividend'])
+            relative_median = median / ud_block['dividend']
         else:
             relative_value = self.amount
             relative_median = 0
@@ -50,7 +57,11 @@ class RelativeZSum:
     async def localized(self, units=False, international_system=False):
         value = await self.value()
 
-        localized_value = QLocale().toString(float(value), 'f', self.app.preferences['digits_after_comma'])
+        prefix = ""
+        if international_system:
+            localized_value, prefix = Relative.to_si(value, self.app.preferences['digits_after_comma'])
+        else:
+            localized_value = QLocale().toString(float(value), 'f', self.app.preferences['digits_after_comma'])
 
         if units:
             return QCoreApplication.translate("RelativeZSum", RelativeZSum._REF_STR_)\
@@ -62,7 +73,11 @@ class RelativeZSum:
     async def diff_localized(self, units=False, international_system=False):
         value = await self.differential()
 
-        localized_value = QLocale().toString(float(value), 'f', self.app.preferences['digits_after_comma'])
+        prefix = ""
+        if international_system and value != 0:
+            localized_value, prefix = Relative.to_si(value, self.app.preferences['digits_after_comma'])
+        else:
+            localized_value = QLocale().toString(float(value), 'f', self.app.preferences['digits_after_comma'])
 
         if units:
             return QCoreApplication.translate("RelativeZSum", RelativeZSum._REF_STR_)\
diff --git a/src/sakia/core/net/api/bma/access.py b/src/sakia/core/net/api/bma/access.py
index 34f87c2bffc6d69c0ebd4db6faee50d107d45c1f..f6d645e0654bb49e83a9d06ca12512a7def01d16 100644
--- a/src/sakia/core/net/api/bma/access.py
+++ b/src/sakia/core/net/api/bma/access.py
@@ -266,6 +266,7 @@ class BmaAccess(QObject):
             node = random.choice(nodes)
             req = request(node.endpoint.conn_handler(), **req_args)
             tries = 0
+            json_data = None
             while tries < 3:
                 try:
                     json_data = await req.get(**get_args)
@@ -279,7 +280,7 @@ class BmaAccess(QObject):
                 except jsonschema.ValidationError as e:
                     logging.debug(str(e))
                     tries += 1
-        if len(nodes) == 0 or json_data is None:
+        if len(nodes) == 0 or not json_data:
             raise NoPeerAvailable("", len(nodes))
         return json_data
 
diff --git a/src/sakia/core/wallet.py b/src/sakia/core/wallet.py
index de7ac9f3235724a03ab1021df91cd0b29b2416e1..fc95d1ec618624070ab2e51aa2cdd4518401820f 100644
--- a/src/sakia/core/wallet.py
+++ b/src/sakia/core/wallet.py
@@ -228,12 +228,10 @@ class Wallet(QObject):
                                       req_args={'number': blockid.number})
         except ValueError as e:
             if '404' in str(e):
-                return (False, "Could not send transfer with null blockchain")
+                return False, "Could not send transfer with null blockchain"
 
         time = block['medianTime']
         txid = len(block['transactions'])
-        key = None
-        logging.debug("Key : {0} : {1}".format(salt, password))
         if self.walletid == 0:
             key = SigningKey(salt, password)
         else:
@@ -266,12 +264,15 @@ class Wallet(QObject):
 
         self.caches[community.currency]._transfers.append(transfer)
 
-        result = self.tx_inputs(int(amount), community)
-        inputs = result[0]
-        self.caches[community.currency].available_sources = result[1][1:]
+        try:
+            result = self.tx_inputs(int(amount), community)
+            inputs = result[0]
+            self.caches[community.currency].available_sources = result[1][1:]
+        except NotEnoughMoneyError as e:
+            return False, str(e)
         logging.debug("Inputs : {0}".format(inputs))
 
-        outputs =  self.tx_outputs(recipient, amount, inputs)
+        outputs = self.tx_outputs(recipient, amount, inputs)
         logging.debug("Outputs : {0}".format(outputs))
         tx = Transaction(PROTOCOL_VERSION, community.currency,
                          [self.pubkey], inputs,
diff --git a/src/sakia/gui/certification.py b/src/sakia/gui/certification.py
index 64c46ace1aa5921dcd61031d25d344d00e0f339c..da2bbfba295e91475f53d1a45dcc6270f6b5abe8 100644
--- a/src/sakia/gui/certification.py
+++ b/src/sakia/gui/certification.py
@@ -36,8 +36,8 @@ class CertificationDialog(QDialog, Ui_CertificationDialog):
         for community in self.account.communities:
             self.combo_community.addItem(community.currency)
 
-        for contact in certifier.contacts:
-            self.combo_contact.addItem(contact['name'])
+        for contact_name in sorted([c['name'] for c in certifier.contacts], key=str.lower):
+            self.combo_contact.addItem(contact_name)
         if len(certifier.contacts) == 0:
             self.radio_pubkey.setChecked(True)
             self.radio_contact.setEnabled(False)
@@ -53,8 +53,10 @@ class CertificationDialog(QDialog, Ui_CertificationDialog):
     @asyncify
     async def accept(self):
         if self.radio_contact.isChecked():
-            index = self.combo_contact.currentIndex()
-            pubkey = self.account.contacts[index]['pubkey']
+            for contact in self.account.contacts:
+                if contact['name'] == self.combo_contact.currentText():
+                    pubkey = contact['pubkey']
+                    break
         else:
             pubkey = self.edit_pubkey.text()
 
diff --git a/src/sakia/gui/graphs/wot_tab.py b/src/sakia/gui/graphs/wot_tab.py
index 311af103d0374774c2462a80ea99f7b0f3b1899a..ac9b934e6f0239b4bf0fe49436f8c2606791f93b 100644
--- a/src/sakia/gui/graphs/wot_tab.py
+++ b/src/sakia/gui/graphs/wot_tab.py
@@ -5,17 +5,17 @@ from PyQt5.QtWidgets import QWidget, QComboBox, QDialog
 from PyQt5.QtCore import pyqtSlot, QEvent, QLocale, QDateTime, pyqtSignal, QT_TRANSLATE_NOOP
 from ucoinpy.api import bma
 
-from sakia.tools.exceptions import MembershipNotFoundError
-from sakia.tools.decorators import asyncify, once_at_a_time, cancel_once_task
-from sakia.core.graph import WoTGraph
-from sakia.core.registry import BlockchainState
-from sakia.gui.member import MemberDialog
-from sakia.gui.certification import CertificationDialog
-from sakia.gui.transfer import TransferMoneyDialog
-from sakia.gui.contact import ConfigureContactDialog
-from sakia.gen_resources.wot_tab_uic import Ui_WotTabWidget
-from sakia.gui.widgets.busy import Busy
-from sakia.tools.exceptions import NoPeerAvailable
+from ...tools.exceptions import MembershipNotFoundError
+from ...tools.decorators import asyncify, once_at_a_time, cancel_once_task
+from ...core.graph import WoTGraph
+from ...core.registry import BlockchainState
+from ..member import MemberDialog
+from ..certification import CertificationDialog
+from ..transfer import TransferMoneyDialog
+from ..contact import ConfigureContactDialog
+from ...gen_resources.wot_tab_uic import Ui_WotTabWidget
+from ..widgets.busy import Busy
+from ...tools.exceptions import NoPeerAvailable
 
 
 class WotTabWidget(QWidget, Ui_WotTabWidget):
@@ -69,8 +69,12 @@ class WotTabWidget(QWidget, Ui_WotTabWidget):
 
     def change_account(self, account, password_asker):
         self.cancel_once_tasks()
+        if self.account is not None:
+            self.account.certification_accepted.disconnect(self.refresh)
         self.account = account
         self.password_asker = password_asker
+        if self.account is not None:
+            self.account.certification_accepted.connect(self.refresh)
 
     def change_community(self, community):
         self.cancel_once_tasks()
diff --git a/src/sakia/gui/identities_tab.py b/src/sakia/gui/identities_tab.py
index 514827686286c1c3b3f6e6531b38d92d319da183..8968aac488ccd22e9c7a67f2a0e31f51513d109c 100644
--- a/src/sakia/gui/identities_tab.py
+++ b/src/sakia/gui/identities_tab.py
@@ -99,7 +99,7 @@ class IdentitiesTabWidget(QWidget, Ui_IdentitiesTab):
     async def identity_context_menu(self, point):
         index = self.table_identities.indexAt(point)
         model = self.table_identities.model()
-        if index.row() < model.rowCount():
+        if index.isValid() and index.row() < model.rowCount():
             source_index = model.mapToSource(index)
             pubkey_col = model.sourceModel().columns_ids.index('pubkey')
             pubkey_index = model.sourceModel().index(source_index.row(),
diff --git a/src/sakia/gui/informations_tab.py b/src/sakia/gui/informations_tab.py
index 24dac8c7817969d41f19e31816b6dc38884e8395..bfad9b2f535dcc205a324538fe00a965aac780fd 100644
--- a/src/sakia/gui/informations_tab.py
+++ b/src/sakia/gui/informations_tab.py
@@ -6,7 +6,6 @@ Created on 31 janv. 2015
 
 import logging
 import asyncio
-import math
 from PyQt5.QtCore import QLocale, QDateTime, QEvent
 from PyQt5.QtWidgets import QWidget
 from ..gen_resources.informations_tab_uic import Ui_InformationsTabWidget
@@ -14,6 +13,7 @@ from ..tools.decorators import asyncify, once_at_a_time, cancel_once_task
 from ..tools.exceptions import NoPeerAvailable
 from .widgets import Busy
 
+
 class InformationsTabWidget(QWidget, Ui_InformationsTabWidget):
     """
     classdocs
@@ -23,8 +23,8 @@ class InformationsTabWidget(QWidget, Ui_InformationsTabWidget):
         """
         Constructor of the InformationsTabWidget
 
-        :param app: sakia.core.Application
-        :param community: sakia.core.Community
+        :param sakia.core.app.Application app: Application instance
+
         :return:
         """
         super().__init__()
@@ -36,6 +36,10 @@ class InformationsTabWidget(QWidget, Ui_InformationsTabWidget):
         self.busy.hide()
 
     def change_account(self, account):
+        """
+
+        :param sakia.core.app.Account account: Account instance selected
+        """
         cancel_once_task(self, self.refresh_labels)
         self.account = account
 
@@ -73,22 +77,29 @@ class InformationsTabWidget(QWidget, Ui_InformationsTabWidget):
 
         if block_ud:
             # display float values
-            localized_ud = await self.account.current_ref(block_ud['dividend'], self.community, self.app).diff_localized()
+            localized_ud = await self.account.current_ref(block_ud['dividend'],
+                                                               self.community,
+                                                               self.app)\
+                .diff_localized(True, self.app.preferences['international_system_of_units'])
 
             computed_dividend = await self.community.computed_dividend()
             # display float values
             localized_ud_plus_1 = await self.account.current_ref(computed_dividend,
-                                                    self.community, self.app).diff_localized()
+                                                    self.community, self.app)\
+                .diff_localized(True, self.app.preferences['international_system_of_units'])
 
             localized_mass = await self.account.current_ref(block_ud['monetaryMass'],
-                                                    self.community, self.app).diff_localized()
+                                                    self.community, self.app)\
+                .diff_localized(True, self.app.preferences['international_system_of_units'])
             if block_ud_minus_1:
                 mass_minus_1 = (float(0) if block_ud['membersCount'] == 0 else
                         block_ud_minus_1['monetaryMass'] / block_ud['membersCount'])
                 localized_mass_minus_1_per_member = await self.account.current_ref(mass_minus_1,
-                                                                  self.community, self.app).diff_localized()
+                                                                  self.community, self.app)\
+                    .diff_localized(True, self.app.preferences['international_system_of_units'])
                 localized_mass_minus_1 = await self.account.current_ref(block_ud_minus_1['monetaryMass'],
-                                                                  self.community, self.app).diff_localized()
+                                                                  self.community, self.app)\
+                    .diff_localized(True, self.app.preferences['international_system_of_units'])
 
             else:
                 localized_mass_minus_1_per_member = QLocale().toString(
@@ -109,6 +120,7 @@ class InformationsTabWidget(QWidget, Ui_InformationsTabWidget):
                 <tr><td align="right"><b>{:2.2%} / {:} days</b></td><td>{:}</td></tr>
                 <tr><td align="right"><b>{:}</b></td><td>{:}</td></tr>
                 <tr><td align="right"><b>{:}</b></td><td>{:}</td></tr>
+                <tr><td align="right"><b>{:}</b></td><td>{:}</td></tr>
                 </table>
                 """).format(
                     localized_ud,
@@ -127,6 +139,12 @@ class InformationsTabWidget(QWidget, Ui_InformationsTabWidget):
 
                     params['dt'] / 86400,
                     self.tr('Actual growth c = UD(t)/[M(t-1)/N(t)]'),
+                    QLocale.toString(
+                        QLocale(),
+                        QDateTime.fromTime_t(block_ud_minus_1['medianTime']),
+                        QLocale.dateTimeFormat(QLocale(), QLocale.ShortFormat)
+                    ),
+                    self.tr('Penultimate UD date and time (t-1)'),
                     QLocale.toString(
                         QLocale(),
                         QDateTime.fromTime_t(block_ud['medianTime']),
diff --git a/src/sakia/gui/process_cfg_account.py b/src/sakia/gui/process_cfg_account.py
index 02e6ffcc9c7edf0daf460ff9c350d41158a05473..cfdd5f3bffb890ce976eeada8da5944fe96859dd 100644
--- a/src/sakia/gui/process_cfg_account.py
+++ b/src/sakia/gui/process_cfg_account.py
@@ -13,6 +13,8 @@ from ..models.communities import CommunitiesListModel
 from ..tools.exceptions import KeyAlreadyUsed, Error, NoPeerAvailable
 
 from PyQt5.QtWidgets import QDialog, QMessageBox
+from PyQt5.QtCore import QRegExp
+from PyQt5.QtGui import QRegExpValidator
 
 
 class Step():
@@ -144,6 +146,9 @@ class ProcessConfigureAccount(QDialog, Ui_AccountConfigurationDialog):
         # Set up the user interface from Designer.
         super().__init__()
         self.setupUi(self)
+        regexp = QRegExp('[A-Za-z0-9_-]*')
+        validator = QRegExpValidator(regexp)
+        self.edit_account_name.setValidator(validator)
         self.account = account
         self.password_asker = None
         self.app = app
diff --git a/src/sakia/gui/transactions_tab.py b/src/sakia/gui/transactions_tab.py
index 0b216371768491a90f35996ed46a2ec4f489d2d5..b35cf48c9538690e6699c68cfce87addf051c401 100644
--- a/src/sakia/gui/transactions_tab.py
+++ b/src/sakia/gui/transactions_tab.py
@@ -168,7 +168,7 @@ class TransactionsTabWidget(QWidget, Ui_transactionsTabWidget):
     async def history_context_menu(self, point):
         index = self.table_history.indexAt(point)
         model = self.table_history.model()
-        if index.row() < model.rowCount(QModelIndex()):
+        if index.isValid() and index.row() < model.rowCount(QModelIndex()):
             menu = QMenu(self.tr("Actions"), self)
             source_index = model.mapToSource(index)
             state_col = model.sourceModel().columns_types.index('state')
diff --git a/src/sakia/gui/transfer.py b/src/sakia/gui/transfer.py
index 0e44a25ad15f9608b9fdce4f17c003ce9db5ad19..e97939ee51759746d6628e34d4fc24195c274b2f 100644
--- a/src/sakia/gui/transfer.py
+++ b/src/sakia/gui/transfer.py
@@ -51,8 +51,8 @@ class TransferMoneyDialog(QDialog, Ui_TransferMoneyDialog):
         for wallet in self.account.wallets:
             self.combo_wallets.addItem(wallet.name)
 
-        for contact in sender.contacts:
-            self.combo_contact.addItem(contact['name'])
+        for contact_name in sorted([c['name'] for c in sender.contacts], key=str.lower):
+            self.combo_contact.addItem(contact_name)
 
         if len(self.account.contacts) == 0:
             self.combo_contact.setEnabled(False)
@@ -93,8 +93,10 @@ class TransferMoneyDialog(QDialog, Ui_TransferMoneyDialog):
         comment = self.edit_message.text()
 
         if self.radio_contact.isChecked():
-            index = self.combo_contact.currentIndex()
-            recipient = self.account.contacts[index]['pubkey']
+            for contact in self.account.contacts:
+                if contact['name'] == self.combo_contact.currentText():
+                    recipient = contact['pubkey']
+                    break
         else:
             recipient = self.edit_pubkey.text()
         amount = self.spinbox_amount.value()
diff --git a/src/sakia/tests/functional/process_cfg_account/test_add_account.py b/src/sakia/tests/functional/process_cfg_account/test_add_account.py
index 3143f9ee1a74ce283848b92155477857c49b01d3..8e7c5dc90512d03558e414eee0e4aa88c58a4187 100644
--- a/src/sakia/tests/functional/process_cfg_account/test_add_account.py
+++ b/src/sakia/tests/functional/process_cfg_account/test_add_account.py
@@ -86,6 +86,7 @@ class ProcessAddCommunity(unittest.TestCase, QuamashTest):
             self.assertEqual(self.application.current_account.name, "test")
             self.assertEqual(self.application.preferences['account'], "test")
             self.assertEqual(len(self.application.current_account.wallets), 1)
+            yield from asyncio.sleep(0)
 
         self.lp.call_later(10, close_dialog)
         asyncio.ensure_future(exec_test())
diff --git a/src/sakia/tests/mocks/bma/nice_blockchain.py b/src/sakia/tests/mocks/bma/nice_blockchain.py
index 2029188cd127134d62179b0a4aa6dfaba9efc82f..1d012287b6c7e2ac7ef289b0f747af68b0db21c2 100644
--- a/src/sakia/tests/mocks/bma/nice_blockchain.py
+++ b/src/sakia/tests/mocks/bma/nice_blockchain.py
@@ -41,7 +41,7 @@ bma_membership_john = {
         [
             {
 
-                "version": "1",
+                "version": 1,
                 "currency": "test_currency",
                 "membership": "IN",
                 "blockNumber": 0,