diff --git a/res/ui/addContactDialog.ui b/res/ui/addContactDialog.ui
index 0a42df89e7c32a265114c0f9aa8454f467d5d506..b9f2ad6148b07b47323af16a7acc34602175eaeb 100644
--- a/res/ui/addContactDialog.ui
+++ b/res/ui/addContactDialog.ui
@@ -60,7 +60,7 @@
     </layout>
    </item>
    <item>
-    <widget class="QDialogButtonBox" name="buttonBox">
+    <widget class="QDialogButtonBox" name="button_box">
      <property name="orientation">
       <enum>Qt::Horizontal</enum>
      </property>
@@ -74,7 +74,7 @@
  <resources/>
  <connections>
   <connection>
-   <sender>buttonBox</sender>
+   <sender>button_box</sender>
    <signal>accepted()</signal>
    <receiver>AddContactDialog</receiver>
    <slot>accept()</slot>
@@ -90,7 +90,7 @@
    </hints>
   </connection>
   <connection>
-   <sender>buttonBox</sender>
+   <sender>button_box</sender>
    <signal>rejected()</signal>
    <receiver>AddContactDialog</receiver>
    <slot>reject()</slot>
diff --git a/res/ui/transferDialog.ui b/res/ui/transferDialog.ui
index a8035cf87a0702d888e1cf8ed6d7fe27ad012027..90127cd5a5d0d86ae11ee594aa488866470b5298 100644
--- a/res/ui/transferDialog.ui
+++ b/res/ui/transferDialog.ui
@@ -104,15 +104,12 @@
          </widget>
         </item>
         <item>
-         <widget class="QLineEdit" name="edit_port">
-          <property name="sizePolicy">
-           <sizepolicy hsizetype="Minimum" vsizetype="Fixed">
-            <horstretch>0</horstretch>
-            <verstretch>0</verstretch>
-           </sizepolicy>
+         <widget class="QSpinBox" name="spinbox_port">
+          <property name="maximum">
+           <number>99999</number>
           </property>
-          <property name="placeholderText">
-           <string>Port</string>
+          <property name="value">
+           <number>8081</number>
           </property>
          </widget>
         </item>
diff --git a/src/cutecoin/gui/addContactDialog.py b/src/cutecoin/gui/addContactDialog.py
index 4d08264dd69185bb198c34aff9559c5273d0a45f..1946e1dc78f7f94d0d95013effe59a03a1483e6e 100644
--- a/src/cutecoin/gui/addContactDialog.py
+++ b/src/cutecoin/gui/addContactDialog.py
@@ -32,8 +32,8 @@ class AddContactDialog(QDialog, Ui_AddContactDialog):
         name = self.edit_name.text()
         fingerprint = self.edit_fingerprint.text()
         email = self.edit_email.text()
-        self.account.addContact(Person(name, fingerprint, email))
-        self.main_window.menu_contactsList.addAction(name)
+        self.account.add_contact(Person(name, fingerprint, email))
+        self.main_window.menu_contacts_list.addAction(name)
         self.close()
 
     def name_edited(self, new_name):
diff --git a/src/cutecoin/gui/transferMoneyDialog.py b/src/cutecoin/gui/transferMoneyDialog.py
index c7c2344cd0c0df2c9aec0a4622bae550e81ef94a..ba856a7a56030d160d6d5645015746ad5011b861 100644
--- a/src/cutecoin/gui/transferMoneyDialog.py
+++ b/src/cutecoin/gui/transferMoneyDialog.py
@@ -3,13 +3,9 @@ Created on 2 févr. 2014
 
 @author: inso
 '''
-import logging
-from math import pow
+from PyQt5.QtWidgets import QDialog, QErrorMessage
 
-from PyQt5.QtWidgets import QDialog, QFrame, QSlider, QLabel, QDialogButtonBox, QErrorMessage
 
-
-from cutecoin.models.coin import Coin
 from cutecoin.models.person import Person
 from cutecoin.models.node import Node
 from cutecoin.models.coin.listModel import CoinsListModel
@@ -30,13 +26,17 @@ class TransferMoneyDialog(QDialog, Ui_TransferMoneyDialog):
         super(TransferMoneyDialog, self).__init__()
         self.setupUi(self)
         self.sender = sender
+        self.wallet = sender.wallets[0]
         for wallet in sender.wallets:
             self.combo_wallets.addItem(wallet.get_text())
 
+        for trust in wallet.trusts():
+            self.combo_trusted_node.addItem(trust.get_text())
+
         for contact in sender.contacts:
             self.combo_contact.addItem(contact.name)
 
-        self.refresh_transaction(sender.wallets[0])
+        self.refresh_transaction()
 
     def remove_coins_from_transfer(self):
         selection = self.list_coins_sent.selectedIndexes()
@@ -47,26 +47,27 @@ class TransferMoneyDialog(QDialog, Ui_TransferMoneyDialog):
             coin = sent_coins[selected.row()]
             sent_coins.remove(coin)
             wallet_coins.append(coin)
-        self.list_wallet.setModel(CoinsListModel(wallet_coins))
-        self.list_coins_sent.setModel(CoinsListModel(new_wallet))
+        self.list_wallet.setModel(CoinsListModel(self.wallet, wallet_coins))
+        self.list_coins_sent.setModel(CoinsListModel(self.wallet, new_wallet))
 
     def add_coins_to_transfer(self):
         selection = self.list_wallet.selectedIndexes()
         wallet_coins = self.list_wallet.model().coins
         sent_coins = self.list_coins_sent.model().coins
-        new_wallet = wallet_coins
+        new_wallet_coins = wallet_coins
         for selected in selection:
             coin = wallet_coins[selected.row()]
-            new_wallet.remove(coin)
+            new_wallet_coins.remove(coin)
             sent_coins.append(coin)
-        self.list_wallet.setModel(CoinsListModel(new_wallet))
-        self.list_coins_sent.setModel(CoinsListModel(sent_coins))
+        self.list_wallet.setModel(CoinsListModel(self.wallet,
+                                                 new_wallet_coins))
+        self.list_coins_sent.setModel(CoinsListModel(self.wallet, sent_coins))
 
     def open_manage_wallet_coins(self):
         pass
 
     def accept(self):
-        sent_coins = self.list_coins_sent.model().toList()
+        sent_coins = self.list_coins_sent.model().to_list()
         recipient = None
 
         if self.radio_key_fingerprint.isChecked():
@@ -78,28 +79,28 @@ class TransferMoneyDialog(QDialog, Ui_TransferMoneyDialog):
         if self.radio_node_address.isChecked():
             node = Node.create(
                 self.edit_node_address.text(), int(
-                    self.edit_port.text()))
+                    self.spinbox_port.text()))
         else:
             # TODO: Manage trusted nodes
-            node = Node.create(
-                self.edit_node_address.text(), int(
-                    self.edit_port.text()))
+            node = self.wallet.trusts()[self.combo_trusted_node.currentIndex()]
 
         message = self.edit_message.text()
         # TODO: Transfer money, and validate the window if no error happened
-        if self.sender.transfer_coins(node, recipient, sent_coins, message):
-            self.close()
+        error = self.wallet.transfer_coins(node, recipient, sent_coins, message)
+        if error:
+            QErrorMessage(self).showMessage("Cannot transfer coins " + error)
         else:
-            QErrorMessage(self).showMessage("Cannot transfer coins.")
+            self.close()
 
     def change_displayed_wallet(self, index):
-        wallet = self.sender.wallets[index]
-        self.refresh_transaction(wallet)
+        self.wallet = self.sender.wallets[index]
+        self.refresh_transaction()
 
-    def refresh_transaction(self, wallet):
-        coins_sent_model = CoinsListModel([])
+    def refresh_transaction(self):
+        coins_sent_model = CoinsListModel(self.wallet, [])
         self.list_coins_sent.setModel(coins_sent_model)
-        wallet_coins_model = CoinsListModel(list(wallet.coins))
+        wallet_coins_model = CoinsListModel(self.wallet,
+                                            list(self.wallet.coins))
         self.list_wallet.setModel(wallet_coins_model)
 
     def recipient_mode_changed(self, fingerprint_toggled):
diff --git a/src/cutecoin/models/account/__init__.py b/src/cutecoin/models/account/__init__.py
index f34f993b9816325cbcb61358b35dda5e94f0b3c1..f043b20da33c0f9479507d06e1165e1012279ed4 100644
--- a/src/cutecoin/models/account/__init__.py
+++ b/src/cutecoin/models/account/__init__.py
@@ -30,6 +30,7 @@ class Account(object):
         self.keyid = keyid
         self.name = name
         self.communities = communities
+        print(len(communities))
         self.wallets = wallets
         self.contacts = contacts
 
@@ -86,17 +87,6 @@ class Account(object):
                 return k['fingerprint']
         return ""
 
-    def transfer_coins(self, node, recipient, coins, message):
-        transfer = ucoin.wrappers.transactions.RawTransfer(
-            self.fingerprint(),
-            recipient.fingerprint,
-            coins,
-            message,
-            keyid=self.keyid,
-            server=node.server,
-            port=node.port)
-        return transfer()
-
     def transactions_received(self):
         received = []
         for w in self.wallets:
diff --git a/src/cutecoin/models/account/communities/__init__.py b/src/cutecoin/models/account/communities/__init__.py
index bd172932ae4e4ef58b94c78f96399511d6d5b994..22241f288312ef4f27b5a79b7610dc7ad8657625 100644
--- a/src/cutecoin/models/account/communities/__init__.py
+++ b/src/cutecoin/models/account/communities/__init__.py
@@ -18,7 +18,7 @@ class Communities(object):
         '''
         Constructor
         '''
-        self._communities_list = []
+        self._communities_list = _communities_list
 
     @classmethod
     def create(cls):
diff --git a/src/cutecoin/models/account/wallets/__init__.py b/src/cutecoin/models/account/wallets/__init__.py
index e0432c9830b9f232ce57d35a4716b6d6e82cbf7b..0a9ae2395b0d3753f26e93fc02f5e730a5056cff 100644
--- a/src/cutecoin/models/account/wallets/__init__.py
+++ b/src/cutecoin/models/account/wallets/__init__.py
@@ -54,9 +54,8 @@ class Wallets(object):
         wallet = Wallet.create(keyid, community, node,
                                required_trusts, name)
         # We try to add already present nodes to the wallet
-        try:
-            present_nodes = wallet.get_nodes_in_peering(wallet.pull_wht())
-        except ValueError:
+        present_nodes = wallet.get_nodes_in_peering(wallet.pull_wht())
+        if present_nodes is None:
             present_nodes = []
 
         for present_node in present_nodes:
@@ -73,11 +72,12 @@ class Wallets(object):
         return Wallets([w for w in self._wallets_list if w.currency == currency])
 
     def request(self, request, get_args={}):
+        response = None
         for wallet in self._wallets_list:
             try:
                 response = wallet.request(request, get_args)
             except:
-                pass
+                continue
             return response
 
     def post(self, request, get_args={}):
@@ -85,7 +85,7 @@ class Wallets(object):
             try:
                 response = wallet.post(request, get_args)
             except:
-                pass
+                continue
             return response
 
     def jsonify(self):
diff --git a/src/cutecoin/models/coin/listModel.py b/src/cutecoin/models/coin/listModel.py
index 106a786b38ac705d258b989df208289999f3495a..51d620a94efd2a3c65291daf7c58a17f3c2e2288 100644
--- a/src/cutecoin/models/coin/listModel.py
+++ b/src/cutecoin/models/coin/listModel.py
@@ -13,12 +13,13 @@ class CoinsListModel(QAbstractListModel):
     A Qt abstract item model to display communities in a tree
     '''
 
-    def __init__(self, coins, parent=None):
+    def __init__(self, wallet, coins, parent=None):
         '''
         Constructor
         '''
         super(CoinsListModel, self).__init__(parent)
         self.coins = coins
+        self.wallet = wallet
 
     def rowCount(self, parent):
         return len(self.coins)
@@ -26,14 +27,14 @@ class CoinsListModel(QAbstractListModel):
     def data(self, index, role):
         if role == Qt.DisplayRole:
             row = index.row()
-            value = str(self.coins[row].value())
+            value = str(self.coins[row].value(self.wallet))
             return value
 
     def flags(self, index):
         return Qt.ItemIsSelectable | Qt.ItemIsEnabled
 
-    def toList(self):
+    def to_list(self):
         coins_list = []
         for c in self.coins:
-            coins_list.append(c.getId())
+            coins_list.append(c.get_id())
         return coins_list
diff --git a/src/cutecoin/models/community/__init__.py b/src/cutecoin/models/community/__init__.py
index eea03aa10e26450f4c66eb28a934128bcf27f1f8..cb7141182e694dc08c44a9dc6070421681cf6aaa 100644
--- a/src/cutecoin/models/community/__init__.py
+++ b/src/cutecoin/models/community/__init__.py
@@ -73,12 +73,19 @@ class Community(object):
         return int(current_amendment['number'])
 
     def person_quality(self, wallets, fingerprint):
-        if (fingerprint in self.voters_fingerprints(wallets)):
-            return "voter"
-        elif (fingerprint in self.members_fingerprints(wallets)):
-            return "member"
+        quality = 'nothing'
+        voter_req = ucoin.registry.community.voters.Current(fingerprint)
+        data = wallets.request(voter_req)
+        if data:
+            quality = 'voter'
         else:
-            return "nothing"
+            member_req = ucoin.registry.community.members.Current(fingerprint)
+            data = wallets.request(member_req)
+            if data:
+                membership = data['membership']
+                if membership['membership'] == 'IN':
+                    quality = 'member'
+        return quality
 
     def members_fingerprints(self, wallets):
         '''
@@ -87,7 +94,6 @@ class Community(object):
         memberships = wallets.request(
             ucoin.registry.community.Members())
         members = []
-        print(memberships)
         for m in memberships:
             members.append(m['membership']['issuer'])
         return members
diff --git a/src/cutecoin/models/transaction/__init__.py b/src/cutecoin/models/transaction/__init__.py
index 16f5dc7e597cfe4b6c3e5d8e2d79e1c7f42a92fa..33c28edff37a4d94c8fafebf7d8a92079b8e5cc9 100644
--- a/src/cutecoin/models/transaction/__init__.py
+++ b/src/cutecoin/models/transaction/__init__.py
@@ -33,7 +33,7 @@ class Transaction(object):
             transaction_data['recipient'],
             wallet)
 
-        return cls(Transaction(sender, tx_number, wallet, recipient))
+        return cls(sender, tx_number, wallet, recipient)
 
     def value(self):
         value = 0
@@ -41,7 +41,8 @@ class Transaction(object):
             ucoin.hdc.transactions.sender.View(self.sender.fingerprint,
                                                self.tx_number))
         for coin in trx_data['transaction']['coins']:
-            value += Coin.from_id(coin['id']).value()
+            coin = coin.split(':')[0]
+            value += Coin.from_id(self.wallet, coin).value(self.wallet)
         return value
 
     def currency(self):
@@ -53,3 +54,9 @@ class Transaction(object):
 
     def transaction_id(self):
         return self.sender_fingerprint + "-" + self.increment
+
+    def get_receiver_text(self):
+        return str(self.value()) + " from " + self.sender.name
+
+    def get_sender_text(self):
+        return str(self.value()) + " to " + self.recipient.name
diff --git a/src/cutecoin/models/transaction/receivedListModel.py b/src/cutecoin/models/transaction/receivedListModel.py
index 9bbe63445e4726e57d58a4d8e3fab81fd307d0ef..82c78f45b8b5bd1cb52b22fec3b57601acba494a 100644
--- a/src/cutecoin/models/transaction/receivedListModel.py
+++ b/src/cutecoin/models/transaction/receivedListModel.py
@@ -29,7 +29,7 @@ class ReceivedListModel(QAbstractListModel):
 
         if role == Qt.DisplayRole:
             row = index.row()
-            value = self.transactions[row].get_text()
+            value = self.transactions[row].get_receiver_text()
             return value
 
     def flags(self, index):
diff --git a/src/cutecoin/models/transaction/sentListModel.py b/src/cutecoin/models/transaction/sentListModel.py
index dc767c2aab3f69e16980fe6e46997378e1d52ed2..4e2e48a07457e1f19870e6f588b692f3a1bef375 100644
--- a/src/cutecoin/models/transaction/sentListModel.py
+++ b/src/cutecoin/models/transaction/sentListModel.py
@@ -29,7 +29,7 @@ class SentListModel(QAbstractListModel):
 
         if role == Qt.DisplayRole:
             row = index.row()
-            value = self.transactions[row].getText()
+            value = self.transactions[row].get_sender_text()
             return value
 
     def flags(self, index):
diff --git a/src/cutecoin/models/wallet/__init__.py b/src/cutecoin/models/wallet/__init__.py
index 57ea71402cba04ee60c7ee795a953406f811c308..47001b58afefb04dbc14a6ea0b723a6cba77b606 100644
--- a/src/cutecoin/models/wallet/__init__.py
+++ b/src/cutecoin/models/wallet/__init__.py
@@ -24,12 +24,12 @@ class Wallet(object):
     It's only used to sort coins.
     '''
 
-    def __init__(self, keyid, coins, currency,
+    def __init__(self, keyid, currency,
                  nodes, required_trusts, name):
         '''
         Constructor
         '''
-        self.coins = coins
+        self.coins = []
         self.keyid = keyid
         self.currency = currency
         self.name = name
@@ -41,14 +41,11 @@ class Wallet(object):
     def create(cls, keyid, currency, node, required_trusts, name):
         node.trust = True
         node.hoster = True
-        return cls(keyid, [], currency, [node], required_trusts, name)
+        return cls(keyid, currency, [node], required_trusts, name)
 
     @classmethod
     def load(cls, json_data):
-        coins = []
         nodes = []
-        for coin_data in json_data['coins']:
-            coins.append(Coin.from_id(coin_data['coin']))
 
         for node_data in json_data['nodes']:
             nodes.append(Node.load(node_data))
@@ -57,7 +54,7 @@ class Wallet(object):
         name = json_data['name']
         currency = json_data['currency']
         required_trusts = json_data['required_trusts']
-        return cls(keyid, coins, currency, nodes, required_trusts, name)
+        return cls(keyid, currency, nodes, required_trusts, name)
 
     def __eq__(self, other):
         return (self.community == other.community)
@@ -70,12 +67,27 @@ class Wallet(object):
 
     #TODO: Enhance this code. Loading the amendment each time we load a coin is bad
     def refresh_coins(self):
+        self.coins = []
         coins_list_request = ucoin.hdc.coins.List(self.fingerprint())
         data = self.request(coins_list_request)
         for coin_data in data['coins']:
             coin = Coin.from_id(self, coin_data)
             self.coins.append(coin)
 
+    def transfer_coins(self, node, recipient, coins, message):
+        transfer = ucoin.wrappers.transactions.RawTransfer(
+            self.fingerprint(),
+            recipient.fingerprint,
+            coins,
+            message,
+            keyid=self.keyid,
+            server=node.server,
+            port=node.port)
+
+        result = transfer()
+        if result is False:
+            return transfer.error
+
     def transactions_received(self):
         received = []
         transactions_data = self.request(
@@ -93,19 +105,22 @@ class Wallet(object):
         transactions_data = self.request(
             ucoin.hdc.transactions.sender.Last(
                 self.fingerprint(), 20))
-        for trx_data in transactions_data:
+        for trx_data in transactions_data['transactions']:
             # Small bug in ucoinpy library
             if not isinstance(trx_data, str):
                 sent.append(
                     Transaction.create(
-                        trx_data['value']['transaction']['sender'],
-                        trx_data['value']['transaction']['number'],
+                        trx_data['sender'],
+                        trx_data['number'],
                         self))
         return sent
 
     def pull_wht(self):
         wht = self.request(ucoin.network.Wallet(self.fingerprint()))
-        return wht['entry']
+        if wht is None:
+            return []
+        else:
+            return wht['entry']
 
     def push_wht(self):
         hosters_fg = []
@@ -172,18 +187,28 @@ Hosters:
         return nodes
 
     def request(self, request, get_args={}):
+        data = None
         for node in self.trusts():
             logging.debug("Trying to connect to : " + node.get_text())
             node.use(request)
-            return request.get(**get_args)
-        raise RuntimeError("Cannot connect to any node")
+            try:
+                data = request.get(**get_args)
+            except:
+                continue
+            return data
+        return None
 
     def post(self, request, get_args={}):
+        data = None
         for node in self.hosters():
             logging.debug("Trying to connect to : " + node.get_text())
             node.use(request)
-            return request.post(**get_args)
-        raise RuntimeError("Cannot connect to any node")
+            try:
+                data = request.post(**get_args)
+            except:
+                continue
+            return data
+        return None
 
     def trusts(self):
         return [node for node in self.nodes if node.trust]
@@ -227,7 +252,7 @@ Hosters:
         return data
 
     def jsonify(self):
-        return {'coins': self.jsonify_coins_list(),
+        return {'required_trusts': self.required_trusts,
                 'keyid': self.keyid,
                 'name': self.name,
                 'currency': self.currency,
diff --git a/src/cutecoin/models/wallet/listModel.py b/src/cutecoin/models/wallet/listModel.py
index 6197bed6aa514242c7bf19b965a39af3125f67ab..f311a26444be8f18b4c80feb5c52a6500bd756db 100644
--- a/src/cutecoin/models/wallet/listModel.py
+++ b/src/cutecoin/models/wallet/listModel.py
@@ -18,7 +18,8 @@ class WalletListModel(QAbstractListModel):
         Constructor
         '''
         super(WalletListModel, self).__init__(parent)
-        self.coins = wallet.coins
+        self.coins = list(wallet.coins)
+        self.wallet = wallet
 
     def rowCount(self, parent):
         return len(self.coins)
@@ -26,7 +27,7 @@ class WalletListModel(QAbstractListModel):
     def data(self, index, role):
         if role == Qt.DisplayRole:
             row = index.row()
-            value = str(self.coins[row].value())
+            value = str(self.coins[row].value(self.wallet))
             return value
 
     def flags(self, index):