diff --git a/res/ui/transfer.ui b/res/ui/transfer.ui
index e26418f64b9e25df12a4394e111d00665cfb4371..04a1d75cc9e23bc5efb99474a3bc7fad1d1075b0 100644
--- a/res/ui/transfer.ui
+++ b/res/ui/transfer.ui
@@ -7,7 +7,7 @@
     <x>0</x>
     <y>0</y>
     <width>399</width>
-    <height>402</height>
+    <height>409</height>
    </rect>
   </property>
   <property name="windowTitle">
@@ -143,6 +143,9 @@
           <property name="suffix">
            <string> UD</string>
           </property>
+          <property name="decimals">
+           <number>6</number>
+          </property>
           <property name="maximum">
            <double>9999999.000000000000000</double>
           </property>
diff --git a/src/cutecoin/gui/informations_tab.py b/src/cutecoin/gui/informations_tab.py
index 1f8fd399c46f03c5da67dd3d9e1d4e21fb8533ba..63d7746ae1dda867e8fa6d9e3e1455d1a4eebb1a 100644
--- a/src/cutecoin/gui/informations_tab.py
+++ b/src/cutecoin/gui/informations_tab.py
@@ -55,12 +55,12 @@ class InformationsTabWidget(QWidget, Ui_InformationsTabWidget):
                 localized_monetary_mass = QLocale().toString(round(self.get_referential_value(block['monetaryMass'])))
                 localized_mass_per_member = QLocale().toString(round(self.get_referential_value(block['monetaryMass'] / block['membersCount'])))
             else:
-                localized_ud = QLocale().toString(ud, 'f', 2)
+                localized_ud = QLocale().toString(ud, 'f', 6)
                 localized_monetary_mass = QLocale().toString(
-                    round(self.get_referential_value(block['monetaryMass'])), 'f', 2
+                    round(self.get_referential_value(block['monetaryMass'])), 'f', 6
                 )
                 localized_mass_per_member = QLocale().toString(
-                    round(self.get_referential_value(block['monetaryMass'] / block['membersCount']), 'f', 2)
+                    round(self.get_referential_value(block['monetaryMass'] / block['membersCount']), 'f', 6)
                 )
 
             # set infos in label
diff --git a/src/cutecoin/gui/mainwindow.py b/src/cutecoin/gui/mainwindow.py
index 1aabed473a067dcf0ee667e225e1cebc28a06790..caa26f3b4159117c6f17de76f5db69a082ee1b65 100644
--- a/src/cutecoin/gui/mainwindow.py
+++ b/src/cutecoin/gui/mainwindow.py
@@ -103,6 +103,8 @@ class MainWindow(QMainWindow, Ui_MainWindow):
         self.open_ucoin_info = lambda: QDesktopServices.openUrl(QUrl("http://ucoin.io/theoretical/"))
         self.homescreen.button_info.clicked.connect(self.open_ucoin_info)
 
+        self.export_dialog = None
+
         # TODO: There are too much refresh() calls on startup
         self.refresh()
 
@@ -350,16 +352,23 @@ class MainWindow(QMainWindow, Ui_MainWindow):
         dialog.exec_()
 
     def export_account(self):
-        selected_file = QFileDialog.getSaveFileName(self,
-                                                    self.tr("Export an account"),
-                                                    "",
-                                                    self.tr("All account files (*.acc)"))
-        path = ""
-        if selected_file[0][-4:] == ".acc":
-            path = selected_file[0]
-        else:
-            path = selected_file[0] + ".acc"
-        self.app.export_account(path, self.app.current_account)
+        # Testable way off using a QFileDialog
+        self.export_dialog = QFileDialog(self)
+        self.export_dialog.setObjectName('ExportFileDialog')
+        self.export_dialog.setWindowTitle(self.tr("Export an account"))
+        self.export_dialog.setNameFilter(self.tr("All account files (*.acc)"))
+        self.export_dialog.setLabelText(QFileDialog.Accept, self.tr('Export'))
+        self.export_dialog.accepted.connect(self.export_account_accepted)
+        self.export_dialog.show()
+
+    def export_account_accepted(self):
+        selected_file = self.export_dialog.selectedFiles()
+        if selected_file:
+            if selected_file[0][-4:] == ".acc":
+                path = selected_file[0]
+            else:
+                path = selected_file[0] + ".acc"
+            self.app.export_account(path, self.app.current_account)
 
     def closeEvent(self, event):
         if self.app.current_account:
diff --git a/src/cutecoin/gui/transactions_tab.py b/src/cutecoin/gui/transactions_tab.py
index 14eae68324bb069c6da3f104a636f6bba30c3625..514cff55eaa1825da9eb7c08cb6925b8441b3a51 100644
--- a/src/cutecoin/gui/transactions_tab.py
+++ b/src/cutecoin/gui/transactions_tab.py
@@ -1,6 +1,6 @@
 from PyQt5.QtWidgets import QWidget, QAbstractItemView, QHeaderView, QDialog, \
     QMenu, QAction, QApplication, QMessageBox
-from PyQt5.QtCore import Qt, QDateTime, QModelIndex, QLocale
+from PyQt5.QtCore import Qt, QDateTime, QTime, QModelIndex, QLocale
 from PyQt5.QtGui import QCursor
 from ..gen_resources.transactions_tab_uic import Ui_transactionsTabWidget
 from ..models.txhistory import HistoryTableModel, TxFilterProxyModel
@@ -11,6 +11,7 @@ from .transfer import TransferMoneyDialog
 
 import logging
 
+
 class TransactionsTabWidget(QWidget, Ui_transactionsTabWidget):
     """
     classdocs
@@ -27,7 +28,6 @@ class TransactionsTabWidget(QWidget, Ui_transactionsTabWidget):
         :return:
         """
 
-
         super().__init__()
         self.setupUi(self)
         self.app = app
@@ -37,14 +37,15 @@ class TransactionsTabWidget(QWidget, Ui_transactionsTabWidget):
         self.refresh()
 
     def refresh(self):
-        blockchain_init = QDateTime()
-        blockchain_init.setTime_t(self.community.get_block(1).mediantime)
+        minimum_datetime = QDateTime()
+        minimum_datetime.setTime_t(self.community.get_block(1).mediantime)
+        minimum_datetime.setTime(QTime(0, 0))
 
-        self.date_from.setMinimumDateTime(blockchain_init)
-        self.date_from.setDateTime(blockchain_init)
+        self.date_from.setMinimumDateTime(minimum_datetime)
+        self.date_from.setDateTime(minimum_datetime)
         self.date_from.setMaximumDateTime(QDateTime().currentDateTime())
 
-        self.date_to.setMinimumDateTime(blockchain_init)
+        self.date_to.setMinimumDateTime(minimum_datetime)
         tomorrow_datetime = QDateTime().currentDateTime().addDays(1)
         self.date_to.setDateTime(tomorrow_datetime)
         self.date_to.setMaximumDateTime(tomorrow_datetime)
@@ -78,11 +79,11 @@ class TransactionsTabWidget(QWidget, Ui_transactionsTabWidget):
 
         else:
             localized_deposits = QLocale().toString(
-                self.app.current_account.units_to_ref(proxy.deposits, self.community), 'f', 2)
+                self.app.current_account.units_to_ref(proxy.deposits, self.community), 'f', 6)
             localized_payments = QLocale().toString(
-                self.app.current_account.units_to_ref(proxy.payments, self.community), 'f', 2)
+                self.app.current_account.units_to_ref(proxy.payments, self.community), 'f', 6)
             localized_balance = QLocale().toString(
-                self.app.current_account.units_to_diff_ref(balance, self.community), 'f', 2)
+                self.app.current_account.units_to_diff_ref(balance, self.community), 'f', 6)
 
         self.label_deposit.setText(self.tr("Deposits: {:} {:}").format(
             localized_deposits,
diff --git a/src/cutecoin/gui/transfer.py b/src/cutecoin/gui/transfer.py
index e88ef53defd877378adf1daff2f4ff7afec4a242..2600560685b249349a14429a6e9697cea8067659 100644
--- a/src/cutecoin/gui/transfer.py
+++ b/src/cutecoin/gui/transfer.py
@@ -4,14 +4,12 @@ Created on 2 févr. 2014
 @author: inso
 '''
 from PyQt5.QtWidgets import QDialog, QMessageBox, QApplication
-from PyQt5.QtCore import QRegExp, Qt
+from PyQt5.QtCore import QRegExp, Qt, QLocale
 from PyQt5.QtGui import QRegExpValidator
 
 from ..tools.exceptions import NotEnoughMoneyError, NoPeerAvailable
 from ..gen_resources.transfer_uic import Ui_TransferMoneyDialog
 
-import logging
-
 
 class TransferMoneyDialog(QDialog, Ui_TransferMoneyDialog):
 
@@ -125,6 +123,10 @@ Please try again later"""))
         amount = self.wallet.value(self.community)
         ref_amount = self.account.units_to_ref(amount, self.community)
         ref_name = self.account.ref_name(self.community.currency)
+        if isinstance(ref_amount, int):
+            ref_amount = QLocale().toString(ref_amount)
+        else:
+            ref_amount = QLocale().toString(ref_amount, 'f', 6)
         self.label_total.setText("{0} {1}".format(ref_amount, ref_name))
         self.spinbox_amount.setSuffix(" " + self.community.currency)
         self.spinbox_amount.setValue(0)
@@ -138,6 +140,10 @@ Please try again later"""))
         amount = self.wallet.value(self.community)
         ref_amount = self.account.units_to_ref(amount, self.community)
         ref_name = self.account.ref_name(self.community.currency)
+        if isinstance(ref_amount, int):
+            ref_amount = QLocale().toString(ref_amount)
+        else:
+            ref_amount = QLocale().toString(ref_amount, 'f', 6)
         self.label_total.setText("{0} {1}".format(ref_amount, ref_name))
         self.spinbox_amount.setValue(0)
         amount = self.wallet.value(self.community)
diff --git a/src/cutecoin/gui/wallets_tab.py b/src/cutecoin/gui/wallets_tab.py
index 817a37cf6e5d3150f978bcfe442e521397af280f..565d94ada25a13ba0bd14bfae0f1dbd5d51d5fd8 100644
--- a/src/cutecoin/gui/wallets_tab.py
+++ b/src/cutecoin/gui/wallets_tab.py
@@ -67,7 +67,7 @@ class WalletsTabWidget(QWidget, Ui_WalletsTab):
                     self.tr("Last renewal on {:}, expiration on {:}").format(date_renewal, date_expiration),
                     self.tr("Your web of trust :"),
                     self.tr("Certified by : {:} members; Certifier of : {:} members").format(len(certifiers),
-                                                                                    len(certified))
+                                                                                             len(certified))
                 )
             )
         else:
@@ -84,24 +84,24 @@ class WalletsTabWidget(QWidget, Ui_WalletsTab):
                     self.tr("Not a member"),
                     self.tr("Your web of trust :"),
                     self.tr("Certified by : {:} members; Certifier of : {:} members").format(len(certifiers),
-                                                                                    len(certified))
+                                                                                             len(certified))
                 )
             )
 
         amount = self.account.amount(self.community)
         maximum = self.community.monetary_mass
 
-        if isinstance(amount, int):
+        if isinstance(self.get_referential_value(amount), int):
             localized_amount = QLocale().toString(self.get_referential_value(amount))
         else:
-            localized_amount = QLocale().toString(self.get_referential_value(amount), 'f', 2)
+            localized_amount = QLocale().toString(self.get_referential_value(amount), 'f', 6)
 
-        if isinstance(maximum, int):
+        if isinstance(self.get_referential_value(maximum), int):
             localized_maximum = QLocale().toString(self.get_referential_value(maximum))
         else:
-            localized_maximum = QLocale().toString(self.get_referential_value(maximum), 'f', 2)
+            localized_maximum = QLocale().toString(self.get_referential_value(maximum), 'f', 6)
 
-        logging.debug( self.tr("{:} {:} in [{:.2f} - {:}] {:}"))
+        logging.debug(self.tr("{:} {:} in [{:.2f} - {:}] {:}"))
         # set infos in label
         self.label_balance.setText(
             self.tr("""
@@ -109,14 +109,18 @@ class WalletsTabWidget(QWidget, Ui_WalletsTab):
             <tr><td align="right"><b>{:}</b></td><td>{:}</td></tr>
             <tr><td align="right"><b>{:}</b></td><td>{:}</td></tr>
             </table>
-            """).format(self.tr("Your money share : "), self.tr("{:.2f}%").format(amount / maximum * 100) if maximum != 0 else "0%",
-                       self.tr("Your part : "), self.tr("{:} {:} in [{:.2f} - {:}] {:}")
-                       .format(
+            """).format(
+                self.tr("Your money share : "),
+                self.tr("{:.2f}%").format(amount / maximum * 100) if maximum != 0 else "0%",
+                self.tr("Your part : "),
+                self.tr("{:} {:} in [{:.2f} - {:}] {:}")
+                .format(
                     localized_amount,
                     self.get_referential_name(),
                     self.get_referential_value(0),
                     localized_maximum,
-                    self.get_referential_name())
+                    self.get_referential_name()
+                )
             )
         )
 
diff --git a/src/cutecoin/models/txhistory.py b/src/cutecoin/models/txhistory.py
index e9c4ae1eedcc22a1cec1aede09d9eaaa51731845..3f1456ebb14b029b67e861d36eb674ef48f6c22d 100644
--- a/src/cutecoin/models/txhistory.py
+++ b/src/cutecoin/models/txhistory.py
@@ -4,12 +4,11 @@ Created on 5 févr. 2014
 @author: inso
 '''
 
+import datetime
 import logging
 from ..core.transfer import Transfer, Received
-from ..core.person import Person
-from ..tools.exceptions import PersonNotFoundError
 from PyQt5.QtCore import QAbstractTableModel, Qt, QVariant, QSortFilterProxyModel, \
-    QDateTime, QLocale, QModelIndex
+    QDateTime, QLocale
 from PyQt5.QtGui import QFont, QColor
 
 
@@ -28,7 +27,10 @@ class TxFilterProxyModel(QSortFilterProxyModel):
         """
         Filter table by given timestamps
         """
-        logging.debug("Filtering from {0} to {1}".format(ts_from, ts_to))
+        logging.debug("Filtering from {0} to {1}".format(
+            datetime.datetime.fromtimestamp(ts_from).isoformat(' '),
+            datetime.datetime.fromtimestamp(ts_to).isoformat(' '))
+        )
         self.ts_from = ts_from
         self.ts_to = ts_to
         self.modelReset.emit()
@@ -102,7 +104,7 @@ class TxFilterProxyModel(QSortFilterProxyModel):
                     if isinstance(amount_ref, int):
                         return QLocale().toString(amount_ref)
                     else:
-                        return QLocale().toString(amount_ref, 'f', 2)
+                        return QLocale().toString(amount_ref, 'f', 6)
 
         if role == Qt.FontRole:
             font = QFont()
diff --git a/src/cutecoin/models/wallets.py b/src/cutecoin/models/wallets.py
index a25d871153c998dbfd344e56c2aaefde98d58019..493a841860fbc5df068011745b26107da53077be 100644
--- a/src/cutecoin/models/wallets.py
+++ b/src/cutecoin/models/wallets.py
@@ -42,7 +42,7 @@ class WalletsFilterProxyModel(QSortFilterProxyModel):
                 if isinstance(amount_ref, int):
                     return QLocale().toString(amount_ref)
                 else:
-                    return QLocale().toString(amount_ref, 'f', 2)
+                    return QLocale().toString(amount_ref, 'f', 6)
 
         if role == Qt.TextAlignmentRole:
             if source_index.column() == self.sourceModel().columns_types.index('amount'):
diff --git a/src/cutecoin/tests/__init__.py b/src/cutecoin/tests/__init__.py
new file mode 100644
index 0000000000000000000000000000000000000000..8b137891791fe96927ad78e64b0aad7bded08bdc
--- /dev/null
+++ b/src/cutecoin/tests/__init__.py
@@ -0,0 +1 @@
+
diff --git a/src/cutecoin/tests/all.py b/src/cutecoin/tests/all.py
new file mode 100644
index 0000000000000000000000000000000000000000..5531ab01fc7b28f8f51a90e8523a692d79df21f3
--- /dev/null
+++ b/src/cutecoin/tests/all.py
@@ -0,0 +1,4 @@
+import unittest
+
+# run all tests
+unittest.TextTestRunner().run(unittest.defaultTestLoader.discover(start_dir='cutecoin.tests', pattern='test_*'))
diff --git a/src/cutecoin/tests/main_window/__init__.py b/src/cutecoin/tests/main_window/__init__.py
new file mode 100644
index 0000000000000000000000000000000000000000..8b137891791fe96927ad78e64b0aad7bded08bdc
--- /dev/null
+++ b/src/cutecoin/tests/main_window/__init__.py
@@ -0,0 +1 @@
+
diff --git a/src/cutecoin/tests/main_window/test_main_window_dialogs.py b/src/cutecoin/tests/main_window/test_main_window_dialogs.py
new file mode 100644
index 0000000000000000000000000000000000000000..748ef886a1048eba81adb36f733c94746daf6059
--- /dev/null
+++ b/src/cutecoin/tests/main_window/test_main_window_dialogs.py
@@ -0,0 +1,79 @@
+# -*- coding: utf-8 -*-
+
+import sys
+import unittest
+import gc
+import PyQt5
+from PyQt5.QtWidgets import QApplication, QMenu
+from PyQt5.QtCore import QLocale, QTimer
+from cutecoin.gui.mainwindow import MainWindow
+from cutecoin.core.app import Application
+
+# Qapplication cause a core dumped when re-run in setup
+# set it as global var
+qapplication = QApplication(sys.argv)
+
+
+class MainWindowDialogsTest(unittest.TestCase):
+    def setUp(self):
+        QLocale.setDefault(QLocale("en_GB"))
+        self.application = Application(sys.argv)
+        self.main_window = MainWindow(self.application)
+
+    def test_action_about(self):
+        # select menu
+        self.main_window.actionAbout.trigger()
+        widgets = qapplication.topLevelWidgets()
+        for widget in widgets:
+            if isinstance(widget, PyQt5.QtWidgets.QDialog):
+                self.assertEqual(widget.objectName(), 'AboutPopup')
+                self.assertEqual(widget.isVisible(), True)
+                widget.close()
+                break
+
+    def test_action_add_account(self):
+        # asynchronous test, cause dialog is waiting user response
+        QTimer.singleShot(0, self._async_test_action_add_account)
+        # select menu
+        self.main_window.action_add_account.trigger()
+
+    def _async_test_action_add_account(self):
+        widgets = qapplication.topLevelWidgets()
+        for widget in widgets:
+            if isinstance(widget, PyQt5.QtWidgets.QDialog):
+                self.assertEqual(widget.objectName(), 'AccountConfigurationDialog')
+                self.assertEqual(widget.isVisible(), True)
+                widget.close()
+                break
+    #
+    # # fixme: require a app.current_account fixture
+    # # def test_action_configure_account(self):
+    # #     # asynchronous test, cause dialog is waiting user response
+    # #     QTimer.singleShot(0, self._async_test_action_configure_account)
+    # #     # select about menu
+    # #     self.main_window.action_configure_parameters.trigger()
+    # #
+    # # def _async_test_action_configure_account(self):
+    # #     widgets = qapplication.topLevelWidgets()
+    # #     for widget in widgets:
+    # #         if isinstance(widget, PyQt5.QtWidgets.QDialog):
+    # #             self.assertEqual(widget.objectName(), 'AccountConfigurationDialog')
+    # #             self.assertEqual(widget.isVisible(), True)
+    # #             widget.close()
+    # #             break
+    #
+
+    def test_action_export_account(self):
+        # select menu
+        self.main_window.action_export.trigger()
+
+        widgets = qapplication.topLevelWidgets()
+        for widget in widgets:
+            if isinstance(widget, PyQt5.QtWidgets.QFileDialog):
+                self.assertEqual(widget.objectName(), 'ExportFileDialog')
+                self.assertTrue(widget.isVisible())
+                widget.close()
+                break
+
+if __name__ == '__main__':
+    unittest.main()
diff --git a/src/cutecoin/tests/MainWindowTest.py b/src/cutecoin/tests/main_window/test_main_window_menus.py
similarity index 79%
rename from src/cutecoin/tests/MainWindowTest.py
rename to src/cutecoin/tests/main_window/test_main_window_menus.py
index deca0f8876dee2725af54c298839b66a475b38c5..0a221eac3ab3431d6eb80abe89dda5aaddd6187e 100644
--- a/src/cutecoin/tests/MainWindowTest.py
+++ b/src/cutecoin/tests/main_window/test_main_window_menus.py
@@ -14,7 +14,7 @@ from cutecoin.core.app import Application
 qapplication = QApplication(sys.argv)
 
 
-class MainWindowTest(unittest.TestCase):
+class MainWindowMenusTest(unittest.TestCase):
     def setUp(self):
         QLocale.setDefault(QLocale("en_GB"))
         self.application = Application(sys.argv)
@@ -64,19 +64,6 @@ class MainWindowTest(unittest.TestCase):
         self.assertEqual(actions[0].objectName(), 'actionTransfer_money')
         self.assertEqual(actions[1].objectName(), 'actionCertification')
 
-    def test_action_about(self):
-        # select about menu
-        self.main_window.actionAbout.trigger()
-        widgets = qapplication.topLevelWidgets()
-        dialog = None
-        for widget in widgets:
-            if isinstance(widget, PyQt5.QtWidgets.QDialog):
-                dialog = widget
-                break
-        self.assertEqual(dialog.objectName(), 'AboutPopup')
-        self.assertEqual(dialog.isVisible(), True)
 
 if __name__ == '__main__':
-    main_window_suite = unittest.TestLoader().loadTestsFromTestCase(MainWindowTest)
-    runner = unittest.TextTestRunner()
-    runner.run(main_window_suite)
+    unittest.main()