diff --git a/res/ui/accountConfigurationDialog.ui b/res/ui/accountConfigurationDialog.ui
index c7d28bc9a97629ae68431a17623a2e5e2eb70373..e1cfb9aa731770e7034a4af75889dde27a936873 100644
--- a/res/ui/accountConfigurationDialog.ui
+++ b/res/ui/accountConfigurationDialog.ui
@@ -138,7 +138,7 @@
    <sender>button_add_community</sender>
    <signal>clicked()</signal>
    <receiver>AccountConfigurationDialog</receiver>
-   <slot>open_add_community_dialog()</slot>
+   <slot>open_process_add_community()</slot>
    <hints>
     <hint type="sourcelabel">
      <x>109</x>
@@ -170,7 +170,7 @@
    <sender>list_communities</sender>
    <signal>doubleClicked(QModelIndex)</signal>
    <receiver>AccountConfigurationDialog</receiver>
-   <slot>open_edit_community_dialog(QModelIndex)</slot>
+   <slot>open_process_edit_community(QModelIndex)</slot>
    <hints>
     <hint type="sourcelabel">
      <x>199</x>
@@ -184,9 +184,9 @@
   </connection>
  </connections>
  <slots>
-  <slot>open_add_community_dialog()</slot>
+  <slot>open_process_add_community()</slot>
   <slot>key_changed(int)</slot>
   <slot>action_remove_community()</slot>
-  <slot>open_edit_community_dialog(QModelIndex)</slot>
+  <slot>open_process_edit_community(QModelIndex)</slot>
  </slots>
 </ui>
diff --git a/res/ui/communityConfigurationDialog.ui b/res/ui/communityConfigurationDialog.ui
index 28cdbae627d9442edfee300a8076183e73f3495b..2e440ce6120766dcc32293a009787aa84374e3da 100644
--- a/res/ui/communityConfigurationDialog.ui
+++ b/res/ui/communityConfigurationDialog.ui
@@ -10,6 +10,9 @@
     <height>300</height>
    </rect>
   </property>
+  <property name="contextMenuPolicy">
+   <enum>Qt::CustomContextMenu</enum>
+  </property>
   <property name="windowTitle">
    <string>Add a community</string>
   </property>
@@ -18,110 +21,226 @@
   </property>
   <layout class="QVBoxLayout" name="verticalLayout">
    <item>
-    <widget class="QGroupBox" name="groupBox_2">
-     <property name="title">
-      <string>Communities nodes</string>
+    <widget class="QStackedWidget" name="stacked_pages">
+     <property name="currentIndex">
+      <number>0</number>
      </property>
-     <layout class="QVBoxLayout" name="verticalLayout_3">
-      <item>
-       <widget class="QTreeView" name="tree_nodes">
-        <property name="contextMenuPolicy">
-         <enum>Qt::CustomContextMenu</enum>
-        </property>
-       </widget>
-      </item>
-      <item>
-       <layout class="QHBoxLayout" name="horizontalLayout_3">
-        <item>
-         <widget class="QLineEdit" name="server_edit">
-          <property name="text">
-           <string/>
-          </property>
-          <property name="placeholderText">
-           <string>Server</string>
-          </property>
-         </widget>
-        </item>
-        <item>
-         <widget class="QSpinBox" name="port_box">
-          <property name="minimum">
-           <number>1025</number>
-          </property>
-          <property name="maximum">
-           <number>99999</number>
-          </property>
-          <property name="value">
-           <number>8081</number>
-          </property>
-         </widget>
-        </item>
-        <item>
-         <widget class="QPushButton" name="add_button">
-          <property name="text">
-           <string>Add</string>
-          </property>
-         </widget>
-        </item>
-       </layout>
-      </item>
-     </layout>
+     <widget class="QWidget" name="page_init">
+      <layout class="QVBoxLayout" name="verticalLayout_4">
+       <item>
+        <spacer name="verticalSpacer_2">
+         <property name="orientation">
+          <enum>Qt::Vertical</enum>
+         </property>
+         <property name="sizeHint" stdset="0">
+          <size>
+           <width>20</width>
+           <height>40</height>
+          </size>
+         </property>
+        </spacer>
+       </item>
+       <item>
+        <widget class="QLabel" name="label">
+         <property name="text">
+          <string>Please enter the address of a node :</string>
+         </property>
+        </widget>
+       </item>
+       <item>
+        <layout class="QHBoxLayout" name="horizontalLayout">
+         <property name="rightMargin">
+          <number>5</number>
+         </property>
+         <item>
+          <widget class="QLineEdit" name="lineedit_server"/>
+         </item>
+         <item>
+          <widget class="QLabel" name="label_double_dot">
+           <property name="text">
+            <string>:</string>
+           </property>
+          </widget>
+         </item>
+         <item>
+          <widget class="QSpinBox" name="spinbox_port">
+           <property name="maximum">
+            <number>25000</number>
+           </property>
+           <property name="value">
+            <number>8081</number>
+           </property>
+          </widget>
+         </item>
+        </layout>
+       </item>
+       <item>
+        <layout class="QHBoxLayout" name="horizontalLayout_2"/>
+       </item>
+       <item>
+        <spacer name="verticalSpacer">
+         <property name="orientation">
+          <enum>Qt::Vertical</enum>
+         </property>
+         <property name="sizeHint" stdset="0">
+          <size>
+           <width>20</width>
+           <height>40</height>
+          </size>
+         </property>
+        </spacer>
+       </item>
+      </layout>
+     </widget>
+     <widget class="QWidget" name="page_add_nodes">
+      <layout class="QVBoxLayout" name="verticalLayout_2">
+       <item>
+        <widget class="QGroupBox" name="groupBox_2">
+         <property name="title">
+          <string>Communities nodes</string>
+         </property>
+         <layout class="QVBoxLayout" name="verticalLayout_3">
+          <item>
+           <widget class="QTreeView" name="tree_nodes">
+            <property name="contextMenuPolicy">
+             <enum>Qt::CustomContextMenu</enum>
+            </property>
+           </widget>
+          </item>
+          <item>
+           <layout class="QHBoxLayout" name="horizontalLayout_3">
+            <item>
+             <widget class="QLineEdit" name="lineedit_add_address">
+              <property name="text">
+               <string/>
+              </property>
+              <property name="placeholderText">
+               <string>Server</string>
+              </property>
+             </widget>
+            </item>
+            <item>
+             <widget class="QSpinBox" name="spinbox_add_port">
+              <property name="minimum">
+               <number>1025</number>
+              </property>
+              <property name="maximum">
+               <number>99999</number>
+              </property>
+              <property name="value">
+               <number>8081</number>
+              </property>
+             </widget>
+            </item>
+            <item>
+             <widget class="QPushButton" name="button_add">
+              <property name="text">
+               <string>Add</string>
+              </property>
+             </widget>
+            </item>
+           </layout>
+          </item>
+         </layout>
+        </widget>
+       </item>
+      </layout>
+     </widget>
+     <widget class="QWidget" name="page_wallets">
+      <layout class="QVBoxLayout" name="verticalLayout_5">
+       <item>
+        <widget class="QTabWidget" name="tabs_wallets">
+         <property name="currentIndex">
+          <number>-1</number>
+         </property>
+        </widget>
+       </item>
+      </layout>
+     </widget>
     </widget>
    </item>
    <item>
-    <widget class="QDialogButtonBox" name="button_box">
-     <property name="orientation">
-      <enum>Qt::Horizontal</enum>
-     </property>
-     <property name="standardButtons">
-      <set>QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set>
-     </property>
-    </widget>
+    <layout class="QHBoxLayout" name="horizontalLayout_4">
+     <item>
+      <widget class="QPushButton" name="button_previous">
+       <property name="enabled">
+        <bool>false</bool>
+       </property>
+       <property name="text">
+        <string>Previous</string>
+       </property>
+      </widget>
+     </item>
+     <item>
+      <spacer name="horizontalSpacer_2">
+       <property name="orientation">
+        <enum>Qt::Horizontal</enum>
+       </property>
+       <property name="sizeHint" stdset="0">
+        <size>
+         <width>40</width>
+         <height>20</height>
+        </size>
+       </property>
+      </spacer>
+     </item>
+     <item>
+      <widget class="QPushButton" name="button_next">
+       <property name="enabled">
+        <bool>true</bool>
+       </property>
+       <property name="text">
+        <string>Next</string>
+       </property>
+      </widget>
+     </item>
+    </layout>
    </item>
   </layout>
  </widget>
  <resources/>
  <connections>
   <connection>
-   <sender>button_box</sender>
-   <signal>accepted()</signal>
+   <sender>button_add</sender>
+   <signal>clicked()</signal>
    <receiver>CommunityConfigurationDialog</receiver>
-   <slot>accept()</slot>
+   <slot>add_node()</slot>
    <hints>
     <hint type="sourcelabel">
-     <x>248</x>
-     <y>254</y>
+     <x>337</x>
+     <y>236</y>
     </hint>
     <hint type="destinationlabel">
-     <x>157</x>
-     <y>274</y>
+     <x>199</x>
+     <y>149</y>
     </hint>
    </hints>
   </connection>
   <connection>
-   <sender>button_box</sender>
-   <signal>rejected()</signal>
+   <sender>tree_nodes</sender>
+   <signal>customContextMenuRequested(QPoint)</signal>
    <receiver>CommunityConfigurationDialog</receiver>
-   <slot>reject()</slot>
+   <slot>showContextMenu(QPoint)</slot>
    <hints>
     <hint type="sourcelabel">
-     <x>316</x>
-     <y>260</y>
+     <x>199</x>
+     <y>128</y>
     </hint>
     <hint type="destinationlabel">
-     <x>286</x>
-     <y>274</y>
+     <x>199</x>
+     <y>149</y>
     </hint>
    </hints>
   </connection>
   <connection>
-   <sender>add_button</sender>
+   <sender>button_next</sender>
    <signal>clicked()</signal>
    <receiver>CommunityConfigurationDialog</receiver>
-   <slot>add_node()</slot>
+   <slot>next()</slot>
    <hints>
     <hint type="sourcelabel">
-     <x>337</x>
-     <y>236</y>
+     <x>349</x>
+     <y>278</y>
     </hint>
     <hint type="destinationlabel">
      <x>199</x>
@@ -130,14 +249,14 @@
    </hints>
   </connection>
   <connection>
-   <sender>tree_nodes</sender>
-   <signal>customContextMenuRequested(QPoint)</signal>
+   <sender>button_previous</sender>
+   <signal>clicked()</signal>
    <receiver>CommunityConfigurationDialog</receiver>
-   <slot>showContextMenu(QPoint)</slot>
+   <slot>previous()</slot>
    <hints>
     <hint type="sourcelabel">
-     <x>199</x>
-     <y>128</y>
+     <x>49</x>
+     <y>278</y>
     </hint>
     <hint type="destinationlabel">
      <x>199</x>
@@ -149,5 +268,8 @@
  <slots>
   <slot>add_node()</slot>
   <slot>showContextMenu(QPoint)</slot>
+  <slot>check()</slot>
+  <slot>next()</slot>
+  <slot>previous()</slot>
  </slots>
 </ui>
diff --git a/res/ui/communityTabWidget.ui b/res/ui/communityTabWidget.ui
index a5681fcec66a1525847e326df1a423fcb7ee7e80..73c017090e437e16e690416b929db87548ad0ab5 100644
--- a/res/ui/communityTabWidget.ui
+++ b/res/ui/communityTabWidget.ui
@@ -29,47 +29,12 @@
     </layout>
    </item>
    <item>
-    <layout class="QVBoxLayout" name="verticalLayout">
-     <item>
-      <widget class="QLabel" name="label_2">
-       <property name="text">
-        <string>Last issuances</string>
-       </property>
-      </widget>
-     </item>
-     <item>
-      <widget class="QPushButton" name="button_issuance">
-       <property name="text">
-        <string>Issue money</string>
-       </property>
-      </widget>
-     </item>
-     <item>
-      <widget class="QListView" name="list_issuances"/>
-     </item>
-    </layout>
+    <layout class="QVBoxLayout" name="verticalLayout"/>
    </item>
   </layout>
  </widget>
  <resources/>
- <connections>
-  <connection>
-   <sender>button_issuance</sender>
-   <signal>clicked()</signal>
-   <receiver>CommunityTabWidget</receiver>
-   <slot>open_issuance_dialog()</slot>
-   <hints>
-    <hint type="sourcelabel">
-     <x>296</x>
-     <y>42</y>
-    </hint>
-    <hint type="destinationlabel">
-     <x>199</x>
-     <y>149</y>
-    </hint>
-   </hints>
-  </connection>
- </connections>
+ <connections/>
  <slots>
   <slot>open_issuance_dialog()</slot>
  </slots>
diff --git a/res/ui/issuanceDialog.ui b/res/ui/issuanceDialog.ui
deleted file mode 100644
index 82728b1207ec590364e6aa29639deb146d934a06..0000000000000000000000000000000000000000
--- a/res/ui/issuanceDialog.ui
+++ /dev/null
@@ -1,106 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<ui version="4.0">
- <class>IssuanceDialog</class>
- <widget class="QDialog" name="IssuanceDialog">
-  <property name="geometry">
-   <rect>
-    <x>0</x>
-    <y>0</y>
-    <width>400</width>
-    <height>300</height>
-   </rect>
-  </property>
-  <property name="windowTitle">
-   <string>Dialog</string>
-  </property>
-  <layout class="QVBoxLayout" name="verticalLayout">
-   <item>
-    <spacer name="verticalSpacer">
-     <property name="orientation">
-      <enum>Qt::Vertical</enum>
-     </property>
-     <property name="sizeHint" stdset="0">
-      <size>
-       <width>20</width>
-       <height>40</height>
-      </size>
-     </property>
-    </spacer>
-   </item>
-   <item>
-    <widget class="QLabel" name="label_total">
-     <property name="text">
-      <string>Total : </string>
-     </property>
-     <property name="alignment">
-      <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
-     </property>
-    </widget>
-   </item>
-   <item>
-    <widget class="QDialogButtonBox" name="button_box">
-     <property name="orientation">
-      <enum>Qt::Horizontal</enum>
-     </property>
-     <property name="standardButtons">
-      <set>QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set>
-     </property>
-    </widget>
-   </item>
-  </layout>
- </widget>
- <resources/>
- <connections>
-  <connection>
-   <sender>button_box</sender>
-   <signal>accepted()</signal>
-   <receiver>IssuanceDialog</receiver>
-   <slot>accept()</slot>
-   <hints>
-    <hint type="sourcelabel">
-     <x>248</x>
-     <y>254</y>
-    </hint>
-    <hint type="destinationlabel">
-     <x>157</x>
-     <y>274</y>
-    </hint>
-   </hints>
-  </connection>
-  <connection>
-   <sender>button_box</sender>
-   <signal>rejected()</signal>
-   <receiver>IssuanceDialog</receiver>
-   <slot>reject()</slot>
-   <hints>
-    <hint type="sourcelabel">
-     <x>316</x>
-     <y>260</y>
-    </hint>
-    <hint type="destinationlabel">
-     <x>286</x>
-     <y>274</y>
-    </hint>
-   </hints>
-  </connection>
-  <connection>
-   <sender>button_box</sender>
-   <signal>accepted()</signal>
-   <receiver>IssuanceDialog</receiver>
-   <slot>action_issue_coins()</slot>
-   <hints>
-    <hint type="sourcelabel">
-     <x>199</x>
-     <y>279</y>
-    </hint>
-    <hint type="destinationlabel">
-     <x>199</x>
-     <y>149</y>
-    </hint>
-   </hints>
-  </connection>
- </connections>
- <slots>
-  <slot>action_issue_coins()</slot>
- </slots>
-</ui>
diff --git a/src/cutecoin/core/__init__.py b/src/cutecoin/core/__init__.py
index 11ef6d81c8ba18d356613fc13a6d2fa760264949..c31390349a50a05e80fe754334ad6ce77f44f662 100644
--- a/src/cutecoin/core/__init__.py
+++ b/src/cutecoin/core/__init__.py
@@ -9,7 +9,7 @@ import logging
 import json
 
 from cutecoin.core import config
-from cutecoin.core.exceptions import KeyAlreadyUsed
+from cutecoin.tools.exceptions import KeyAlreadyUsed
 from cutecoin.models.account import Account
 
 
diff --git a/src/cutecoin/gui/communityTabWidget.py b/src/cutecoin/gui/communityTabWidget.py
index 1e26c34ee32121ac8d1172822b4d328118b2a334..e53a9c2d56ac0c3c9ddc7adf769adfffb5c577b8 100644
--- a/src/cutecoin/gui/communityTabWidget.py
+++ b/src/cutecoin/gui/communityTabWidget.py
@@ -7,8 +7,6 @@ Created on 2 févr. 2014
 import logging
 from PyQt5.QtWidgets import QWidget
 from cutecoin.models.community.membersListModel import MembersListModel
-from cutecoin.models.transaction.issuancesListModel import IssuancesListModel
-from cutecoin.gui.issuanceDialog import IssuanceDialog
 from cutecoin.gen_resources.communityTabWidget_uic import Ui_CommunityTabWidget
 
 
@@ -28,13 +26,3 @@ class CommunityTabWidget(QWidget, Ui_CommunityTabWidget):
         self.account = account
         #TODO: Rename to list:
         self.list_community_members.setModel(MembersListModel(community))
-        self.list_issuances.setModel(IssuancesListModel(account, community))
-        if self.account.issued_last_dividend(community):
-            self.button_issuance.setEnabled(False)
-        else:
-            self.button_issuance.setEnabled(True)
-
-    def open_issuance_dialog(self):
-        logging.debug("Display dialog")
-        dialog = IssuanceDialog(self.account, self.community)
-        dialog.exec_()
diff --git a/src/cutecoin/gui/configureAccountDialog.py b/src/cutecoin/gui/configureAccountDialog.py
index 09538544e4e76b113ca1c5e0b40fd8b645b103cf..434f1d42d23cecc76586c9029086650f2a4a4bdc 100644
--- a/src/cutecoin/gui/configureAccountDialog.py
+++ b/src/cutecoin/gui/configureAccountDialog.py
@@ -4,9 +4,9 @@ Created on 6 mars 2014
 @author: inso
 '''
 from cutecoin.gen_resources.accountConfigurationDialog_uic import Ui_AccountConfigurationDialog
-from cutecoin.gui.configureCommunityDialog import ConfigureCommunityDialog
+from cutecoin.gui.processConfigureCommunity import ProcessConfigureCommunity
 from cutecoin.models.account.communities.listModel import CommunitiesListModel
-from cutecoin.core.exceptions import KeyAlreadyUsed
+from cutecoin.tools.exceptions import KeyAlreadyUsed
 from cutecoin.models.account import Account
 from cutecoin.models.account import Communities
 from cutecoin.models.node import Node
@@ -59,21 +59,8 @@ class ConfigureAccountDialog(QDialog, Ui_AccountConfigurationDialog):
         self.list_communities.setModel(CommunitiesListModel(self.account))
         self.edit_account_name.setText(self.account.name)
 
-    def open_add_community_dialog(self):
-
-        text, ok = QInputDialog.getText(
-            self, 'Add a community', 'Enter a main node address you trust :')
-
-        if ok:
-            server, port = text.split(':')[0], int(text.split(':')[1])
-
-            dialog = ConfigureCommunityDialog(
-                self.account,
-                None,
-                Node(
-                    server,
-                    port))
-            dialog.button_box.accepted.connect(self.action_add_community)
+    def open_process_add_community(self):
+            dialog = ProcessConfigureCommunity(self.account, None)
             dialog.exec_()
 
     def action_add_community(self):
@@ -92,9 +79,9 @@ class ConfigureAccountDialog(QDialog, Ui_AccountConfigurationDialog):
     def action_edit_community(self):
         self.list_communities.setModel(CommunitiesListModel(self.account))
 
-    def open_edit_community_dialog(self, index):
+    def open_process_edit_community(self, index):
         community = self.account.communities.communities_list[index.row()]
-        dialog = ConfigureCommunityDialog(self.account, community)
+        dialog = ProcessConfigureCommunity(self.account, community)
         dialog.button_box.accepted.connect(self.action_edit_community)
         dialog.exec_()
 
diff --git a/src/cutecoin/gui/configureCommunityDialog.py b/src/cutecoin/gui/configureCommunityDialog.py
deleted file mode 100644
index 96eb6ecb601280e1914d7af7c9075b105f4ba4ee..0000000000000000000000000000000000000000
--- a/src/cutecoin/gui/configureCommunityDialog.py
+++ /dev/null
@@ -1,88 +0,0 @@
-'''
-Created on 8 mars 2014
-
-@author: inso
-'''
-import logging
-from cutecoin.gen_resources.communityConfigurationDialog_uic import Ui_CommunityConfigurationDialog
-from PyQt5.QtWidgets import QDialog, QErrorMessage, QMenu, QMessageBox
-from cutecoin.models.community.treeModel import CommunityTreeModel
-from cutecoin.models.node import Node
-from cutecoin.core.exceptions import NotMemberOfCommunityError
-
-
-class ConfigureCommunityDialog(QDialog, Ui_CommunityConfigurationDialog):
-
-    '''
-    classdocs
-    '''
-
-    def __init__(self, account, community, default_node=None):
-        '''
-        Constructor
-        '''
-        super(ConfigureCommunityDialog, self).__init__()
-        self.setupUi(self)
-        self.community = community
-        self.account = account
-        if self.community is None:
-            self.setWindowTitle("Add a community")
-            try:
-                default_node.trust = True
-                default_node.hoster = True
-                self.community = self.account.communities.add_community(
-                    default_node)
-                self.account.wallets.add_wallet(self.community)
-                self.tree_nodes.setModel(CommunityTreeModel(self.community))
-                # TODO: Ask for THT pull
-                msg_box = QMessageBox()
-                msg_box.setText("Add a community")
-                msg_box.setInformativeText(
-                    "Would you like to existing THT from this community ?")
-                msg_box.setStandardButtons(QMessageBox.Yes | QMessageBox.No)
-                msg_box.exec_()
-                if msg_box.clickedButton() == QMessageBox.Yes:
-                    self.account.pull_tht(self.community)
-            except NotMemberOfCommunityError as e:
-                QErrorMessage(self).showMessage(e.message)
-        else:
-            self.setWindowTitle(
-                "Configure community " +
-                self.community.currency)
-            self.tree_nodes.setModel(CommunityTreeModel(self.community))
-
-    def add_node(self):
-        '''
-        Add node slot
-        '''
-        server = self.edit_server.text()
-        port = self.box_port.value()
-        if self.community is not None:
-            self.community.nodes.append(Node(server, port, trust=True))
-            self.tree_nodes.setModel(CommunityTreeModel(self.community))
-
-    def showContextMenu(self, point):
-        menu = QMenu()
-        action = menu.addAction("Delete", self.removeNode)
-        if self.community is not None:
-            if len(self.community.nodes) == 1:
-                action.setEnabled(False)
-        menu.exec_(self.tree_nodes.mapToGlobal(point))
-
-    def remove_node(self):
-        for index in self.tree_nodes.selectedIndexes():
-            self.community.nodes.pop(index.row())
-
-        self.tree_nodes.setModel(CommunityTreeModel(self.community))
-
-    def accept(self):
-        reply = QMessageBox.question(
-            self,
-            "Trusts and hosters changed",
-            "Would you like to push THT to the community ?",
-            QMessageBox.Yes | QMessageBox.No)
-        if reply == QMessageBox.Yes:
-            logging.debug("Yes clicked")
-            self.account.push_tht(self.community)
-
-        self.close()
diff --git a/src/cutecoin/gui/issuanceDialog.py b/src/cutecoin/gui/issuanceDialog.py
deleted file mode 100644
index 31d41f8e842dcb623d8428edd458d5cf3f377f87..0000000000000000000000000000000000000000
--- a/src/cutecoin/gui/issuanceDialog.py
+++ /dev/null
@@ -1,94 +0,0 @@
-'''
-Created on 2 févr. 2014
-
-@author: inso
-'''
-import logging
-from math import pow
-
-from PyQt5.QtWidgets import QDialog, QVBoxLayout, QFrame, QSlider, QLabel, QDialogButtonBox
-from PyQt5.QtCore import Qt, QSignalMapper
-
-from cutecoin.models.coin import Coin
-
-from cutecoin.gen_resources.issuanceDialog_uic import Ui_IssuanceDialog
-
-
-class IssuanceDialog(QDialog, Ui_IssuanceDialog):
-
-    '''
-    classdocs
-    '''
-
-    def __init__(self, issuer, community):
-        '''
-        Constructor
-        '''
-        super(IssuanceDialog, self).__init__()
-        self.setupUi(self)
-        self.issuer = issuer
-        self.community = community
-        self.dividend = self.community.dividend()
-        self.coin_minimal_power = self.community.coin_minimal_power()
-        self.button_box.button(QDialogButtonBox.Ok).setEnabled(False)
-
-        self.sliders = []
-        self.sliders_labels = []
-        max_coin_power = 1
-        nmax = 0
-        # We look for the power of 10 which is directly higher than the
-        # dividend
-        while max_coin_power < self.dividend:
-            max_coin_power = pow(10, nmax)
-            nmax += 1
-
-        # N max is the power just before the one we found
-
-        logging.debug("Pow max : " + str(nmax))
-
-        for i in range(self.coinMinimalPower, nmax):
-            self.generateSliderFrame(i)
-
-    def generateSliderFrame(self, n):
-        frame = QFrame(self)
-        frame.setLayout(QVBoxLayout())
-
-        label = QLabel(frame)
-        frame.layout().addWidget(label)
-
-        slider = QSlider(Qt.Horizontal, frame)
-        slider.setMinimum(0)
-        slider.setMaximum(9)
-        slider.valueChanged.connect(self.refresh_total)
-
-        frame.layout().addWidget(slider)
-
-        label.setText("0 coins of " + str(pow(10, n)))
-
-        self.sliders_labels.append(label)
-        self.sliders.append(slider)
-
-        self.layout().insertWidget(n, frame)
-
-    def refresh_total(self):
-        n = 0
-        total = 0
-        for slider in self.sliders:
-            self.sliders_labels[n].setText(
-                str(slider.value()) + " coins of " + str(pow(10, n)))
-            self.total_label.setText("Total : " + str(total))
-            total += slider.value() * pow(10, n)
-            n += 1
-        self.total_label.setText("Total : " + str(total))
-        if total != self.dividend:
-            self.button_box.button(QDialogButtonBox.Ok).setEnabled(False)
-        else:
-            self.button_box.button(QDialogButtonBox.Ok).setEnabled(True)
-
-    def action_issue_coins(self):
-        coins = []
-        n = 0
-        for slider in self.sliders:
-            coins.append(str(slider.value()) + "," + str(n))
-            n += 1
-        self.issuer.issue_dividend(self.community, coins)
diff --git a/src/cutecoin/models/account/__init__.py b/src/cutecoin/models/account/__init__.py
index ad99bf5b734f6e1fceba144a8f077a48ffdada13..60ccc0dbf19ead1542c3185770ee76bd291e79ce 100644
--- a/src/cutecoin/models/account/__init__.py
+++ b/src/cutecoin/models/account/__init__.py
@@ -13,7 +13,7 @@ from cutecoin.models.account.communities import Communities
 from cutecoin.models.community import Community
 from cutecoin.models.transaction import Transaction
 from cutecoin.models.person import Person
-from cutecoin.core.exceptions import CommunityNotFoundError
+from cutecoin.tools.exceptions import CommunityNotFoundError
 
 
 class Account(object):
@@ -128,56 +128,6 @@ class Account(object):
             port=node.port)
         return transfer()
 
-    #TODO: Adapt to new WHT
-    def tht(self, community):
-        if community in self.communities.communities_list:
-            #tht = community.ucoinRequest(ucoin.wallets.tht(self.fingerprint()))
-            #return tht['entries']
-            return None
-        return None
-
-    def push_tht(self, community):
-        if community in self.communities.communities_list:
-            hosters_fg = []
-            trusts_fg = []
-            for trust in community.network.trusts():
-                peering = trust.peering()
-                logging.debug(peering)
-                trusts_fg.append(peering['fingerprint'])
-            for hoster in community.network.hosters():
-                logging.debug(peering)
-                peering = hoster.peering()
-                hosters_fg.append(peering['fingerprint'])
-            entry = {
-                'version': '1',
-                'currency': community.currency,
-                'fingerprint': self.fingerprint(),
-                'hosters': hosters_fg,
-                'trusts': trusts_fg
-            }
-            logging.debug(entry)
-            json_entry = json.JSONEncoder(indent=2).encode(entry)
-            gpg = gnupg.GPG()
-            signature = gpg.sign(json_entry, keyid=self.keyid, clearsign=True)
-
-            dataPost = {
-                'entry': entry,
-                'signature': str(signature)
-            }
-
-            #community.network.post(
-            #    ucoin.ucg.THT(
-            #        pgp_fingerprint=self.fingerprint()),
-            #    dataPost)
-        else:
-            raise CommunityNotFoundError(self.keyid, community.amendment_id())
-
-    def pull_tht(self, community):
-        if community in self.communities.communities_list:
-            community.pull_tht(self.fingerprint())
-        else:
-            raise CommunityNotFoundError(self.keyid, community.amendment_id())
-
     def quality(self, community):
         if community in self.communities.communities_list:
             return community.person_quality(self.fingerprint())
diff --git a/src/cutecoin/models/account/communities/__init__.py b/src/cutecoin/models/account/communities/__init__.py
index 201265d88bc295c0a925b9f5db8b7382a8a88e04..829ea4df1547629f0c978d1db1b4e7219bbbf5da 100644
--- a/src/cutecoin/models/account/communities/__init__.py
+++ b/src/cutecoin/models/account/communities/__init__.py
@@ -4,7 +4,6 @@ Created on 5 févr. 2014
 @author: inso
 '''
 from cutecoin.models.community import Community
-from cutecoin.core.exceptions import NotMemberOfCommunityError
 import ucoin
 import logging
 
diff --git a/src/cutecoin/models/community/treeModel.py b/src/cutecoin/models/community/treeModel.py
index 9f671ee927a56dd88a758b8c060151004b74e679..81c5ec791c8c61c5b4f6a5b2b259be13dbc880c9 100644
--- a/src/cutecoin/models/community/treeModel.py
+++ b/src/cutecoin/models/community/treeModel.py
@@ -26,7 +26,7 @@ class CommunityTreeModel(QAbstractItemModel):
         self.refresh_tree_nodes()
 
     def columnCount(self, parent):
-        return 3
+        return 1
 
     def data(self, index, role):
         if not index.isValid():
@@ -36,10 +36,6 @@ class CommunityTreeModel(QAbstractItemModel):
 
         if role == Qt.DisplayRole and index.column() == 0:
             return item.data(0)
-        elif role == Qt.CheckStateRole and index.column() == 1:
-            return Qt.Checked if item.trust else Qt.Unchecked
-        elif role == Qt.CheckStateRole and index.column() == 2:
-            return Qt.Checked if item.hoster else Qt.Unchecked
 
         return None
 
@@ -49,16 +45,10 @@ class CommunityTreeModel(QAbstractItemModel):
 
         if index.column() == 0:
             return Qt.ItemIsEnabled | Qt.ItemIsSelectable
-        else:
-            return Qt.ItemIsEnabled | Qt.ItemIsSelectable | Qt.ItemIsUserCheckable
 
     def headerData(self, section, orientation, role):
         if orientation == Qt.Horizontal and role == Qt.DisplayRole and section == 0:
             return self.root_item.data(0) + " nodes"
-        elif orientation == Qt.Horizontal and role == Qt.DisplayRole and section == 1:
-            return "Trust"
-        elif orientation == Qt.Horizontal and role == Qt.DisplayRole and section == 2:
-            return "Hoster"
         return None
 
     def index(self, row, column, parent):
@@ -101,17 +91,6 @@ class CommunityTreeModel(QAbstractItemModel):
 
     def setData(self, index, value, role=Qt.EditRole):
         if index.column() == 0:
-            return False
-
-        if role == Qt.EditRole:
-            return False
-        if role == Qt.CheckStateRole:
-            item = index.internalPointer()
-            if index.column() == 1:
-                item.trust = value
-            elif index.column() == 2:
-                item.host = value
-            self.dataChanged.emit(index, index)
             return True
 
     def refresh_tree_nodes(self):
@@ -120,7 +99,7 @@ class CommunityTreeModel(QAbstractItemModel):
             node_item = NodeItem(node, self.root_item)
             logging.debug(
                 "mainNode : " +
-                node.getText() +
+                node.get_text() +
                 " / " +
                 node_item.data(0))
             self.root_item.appendChild(node_item)
@@ -128,7 +107,7 @@ class CommunityTreeModel(QAbstractItemModel):
                 child_node_item = NodeItem(node, node_item)
                 logging.debug(
                     "\t node : " +
-                    node.getText() +
+                    node.get_text() +
                     " / " +
                     child_node_item.data(0))
                 node_item.appendChild(child_node_item)
diff --git a/src/cutecoin/models/community/trustsTreeModel.py b/src/cutecoin/models/community/trustsTreeModel.py
new file mode 100644
index 0000000000000000000000000000000000000000..3a217772ac322dc3501cb4d8eaf4104b23dce01b
--- /dev/null
+++ b/src/cutecoin/models/community/trustsTreeModel.py
@@ -0,0 +1,134 @@
+'''
+Created on 5 févr. 2014
+
+@author: inso
+'''
+
+from PyQt5.QtCore import QAbstractItemModel, QModelIndex, Qt
+from cutecoin.models.node.itemModel import NodeItem
+from cutecoin.models.community.itemModel import CommunityItemModel
+import logging
+
+
+class CommunityTrustsTreeModel(QAbstractItemModel):
+
+    '''
+    A Qt abstract item model to display nodes of a community
+    '''
+
+    def __init__(self, community):
+        '''
+        Constructor
+        '''
+        super(CommunityTrustsTreeModel, self).__init__(None)
+        self.community = community
+        self.root_item = CommunityItemModel(self.community)
+        self.refresh_tree_nodes()
+
+    def columnCount(self, parent):
+        return 3
+
+    def data(self, index, role):
+        if not index.isValid():
+            return None
+
+        item = index.internalPointer()
+
+        if role == Qt.DisplayRole and index.column() == 0:
+            return item.data(0)
+        elif role == Qt.CheckStateRole and index.column() == 1:
+            return Qt.Checked if item.trust else Qt.Unchecked
+        elif role == Qt.CheckStateRole and index.column() == 2:
+            return Qt.Checked if item.hoster else Qt.Unchecked
+
+        return None
+
+    def flags(self, index):
+        if not index.isValid():
+            return Qt.NoItemFlags
+
+        if index.column() == 0:
+            return Qt.ItemIsEnabled | Qt.ItemIsSelectable
+        else:
+            return Qt.ItemIsEnabled | Qt.ItemIsSelectable | Qt.ItemIsUserCheckable
+
+    def headerData(self, section, orientation, role):
+        if orientation == Qt.Horizontal and role == Qt.DisplayRole and section == 0:
+            return self.root_item.data(0) + " nodes"
+        elif orientation == Qt.Horizontal and role == Qt.DisplayRole and section == 1:
+            return "Trust"
+        elif orientation == Qt.Horizontal and role == Qt.DisplayRole and section == 2:
+            return "Hoster"
+        return None
+
+    def index(self, row, column, parent):
+        if not self.hasIndex(row, column, parent):
+            return QModelIndex()
+
+        if not parent.isValid():
+            parent_item = self.root_item
+        else:
+            parent_item = parent.internalPointer()
+
+        child_item = parent_item.child(row)
+        if child_item:
+            return self.createIndex(row, column, child_item)
+        else:
+            return QModelIndex()
+
+    def parent(self, index):
+        if not index.isValid():
+            return QModelIndex()
+
+        child_item = index.internalPointer()
+        parent_item = child_item.parent()
+
+        if parent_item == self.root_item:
+            return QModelIndex()
+
+        return self.createIndex(parent_item.row(), 0, parent_item)
+
+    def rowCount(self, parent):
+        if parent.column() > 0:
+            return 0
+
+        if not parent.isValid():
+            parent_item = self.root_item
+        else:
+            parent_item = parent.internalPointer()
+
+        return parent_item.childCount()
+
+    def setData(self, index, value, role=Qt.EditRole):
+        if index.column() == 0:
+            return False
+
+        if role == Qt.EditRole:
+            return False
+        if role == Qt.CheckStateRole:
+            item = index.internalPointer()
+            if index.column() == 1:
+                item.trust = value
+            elif index.column() == 2:
+                item.host = value
+            self.dataChanged.emit(index, index)
+            return True
+
+    def refresh_tree_nodes(self):
+        logging.debug("root : " + self.root_item.data(0))
+        for node in self.community.network.nodes:
+            node_item = NodeItem(node, self.root_item)
+            logging.debug(
+                "mainNode : " +
+                node.getText() +
+                " / " +
+                node_item.data(0))
+            self.root_item.appendChild(node_item)
+            for node in node.downstream_peers():
+                child_node_item = NodeItem(node, node_item)
+                logging.debug(
+                    "\t node : " +
+                    node.getText() +
+                    " / " +
+                    child_node_item.data(0))
+                node_item.appendChild(child_node_item)
diff --git a/src/cutecoin/models/node/itemModel.py b/src/cutecoin/models/node/itemModel.py
index ca9b4befb4d9445cbfd321ba4bcb98048c0be68e..b55f309cba8ae340e98ad7577add4fd2a0990390 100644
--- a/src/cutecoin/models/node/itemModel.py
+++ b/src/cutecoin/models/node/itemModel.py
@@ -9,7 +9,7 @@ class NodeItem(object):
 
     def __init__(self, main_node, community_item=None):
         self.community_item = community_item
-        self.main_node_text = main_node.getText()
+        self.main_node_text = main_node.get_text()
         self.trust = main_node.trust
         self.hoster = main_node.hoster
         self.node_items = []
diff --git a/src/cutecoin/models/person/__init__.py b/src/cutecoin/models/person/__init__.py
index cd6ff8b658ec1cf473c0b9166929ce44fef57ae7..720e6b553b4ed9d7cc0e431e8941aefe81000fd7 100644
--- a/src/cutecoin/models/person/__init__.py
+++ b/src/cutecoin/models/person/__init__.py
@@ -5,7 +5,7 @@ Created on 11 févr. 2014
 '''
 
 import ucoin
-from cutecoin.core.exceptions import PersonNotFoundError
+from cutecoin.tools.exceptions import PersonNotFoundError
 
 
 class Person(object):
diff --git a/src/cutecoin/models/transaction/issuancesListModel.py b/src/cutecoin/models/transaction/issuancesListModel.py
deleted file mode 100644
index 658c7faf7b4f93e5abe333336c688a41be049e8b..0000000000000000000000000000000000000000
--- a/src/cutecoin/models/transaction/issuancesListModel.py
+++ /dev/null
@@ -1,34 +0,0 @@
-'''
-Created on 5 févr. 2014
-
-@author: inso
-'''
-
-from PyQt5.QtCore import QAbstractListModel, Qt
-
-
-class IssuancesListModel(QAbstractListModel):
-
-    '''
-    A Qt abstract item model to display communities in a tree
-    '''
-
-    def __init__(self, account, community, parent=None):
-        '''
-        Constructor
-        '''
-        super(IssuancesListModel, self).__init__(parent)
-        self.issuances = account.last_issuances(community)
-
-    def rowCount(self, parent):
-        return len(self.issuances)
-
-    def data(self, index, role):
-
-        if role == Qt.DisplayRole:
-            row = index.row()
-            value = self.issuances[row].getText()
-            return value
-
-    def flags(self, index):
-        return Qt.ItemIsSelectable | Qt.ItemIsEnabled
diff --git a/src/cutecoin/models/wallet/__init__.py b/src/cutecoin/models/wallet/__init__.py
index 8eeca0ea94418c19d4b0c494a9f7a216d17ea309..e1e23ee846bcca2ed3c6be52bc738fd5d823008d 100644
--- a/src/cutecoin/models/wallet/__init__.py
+++ b/src/cutecoin/models/wallet/__init__.py
@@ -5,8 +5,11 @@ Created on 1 févr. 2014
 '''
 
 import ucoin
+import logging
 import gnupg
+import json
 from cutecoin.models.coin import Coin
+from cutecoin.tools.exceptions import CommunityNotFoundError
 
 
 class Wallet(object):
@@ -16,13 +19,14 @@ class Wallet(object):
     It's only used to sort coins.
     '''
 
-    def __init__(self, coins, community):
+    def __init__(self, fingerprint, coins, community, name="Main Wallet"):
         '''
         Constructor
         '''
         self.coins = coins
+        self.fingerprint = fingerprint
         self.community = community
-        self.name = "Main Wallet"
+        self.name = name
 
     @classmethod
     def create(cls, community):
@@ -45,9 +49,9 @@ class Wallet(object):
         return value
 
     # TODO: Refresh coins when changing current account
-    def refresh_coins(self, fingerprint):
+    def refresh_coins(self):
         data_list = self.community.network.request(
-            ucoin.hdc.coins.List({'pgp_fingerprint': fingerprint}))
+            ucoin.hdc.coins.List({'pgp_fingerprint': self.fingerprint}))
         for issuances in data_list['coins']:
             issuer = issuances['issuer']
             for coins_ids in issuances['ids']:
@@ -55,6 +59,57 @@ class Wallet(object):
                 coin = Coin.from_id(issuer + "-" + shortened_id)
                 self.coins.append(coin)
 
+
+    #TODO: Adapt to new WHT
+    def tht(self, community):
+        if community in self.communities.communities_list:
+            #tht = community.ucoinRequest(ucoin.wallets.tht(self.fingerprint()))
+            #return tht['entries']
+            return None
+        return None
+
+    def push_tht(self, community):
+        if community in self.communities.communities_list:
+            hosters_fg = []
+            trusts_fg = []
+            for trust in community.network.trusts():
+                peering = trust.peering()
+                logging.debug(peering)
+                trusts_fg.append(peering['fingerprint'])
+            for hoster in community.network.hosters():
+                logging.debug(peering)
+                peering = hoster.peering()
+                hosters_fg.append(peering['fingerprint'])
+            entry = {
+                'version': '1',
+                'currency': community.currency,
+                'fingerprint': self.fingerprint(),
+                'hosters': hosters_fg,
+                'trusts': trusts_fg
+            }
+            logging.debug(entry)
+            json_entry = json.JSONEncoder(indent=2).encode(entry)
+            gpg = gnupg.GPG()
+            signature = gpg.sign(json_entry, keyid=self.keyid, clearsign=True)
+
+            dataPost = {
+                'entry': entry,
+                'signature': str(signature)
+            }
+
+            #community.network.post(
+            #    ucoin.ucg.THT(
+            #        pgp_fingerprint=self.fingerprint()),
+            #    dataPost)
+        else:
+            raise CommunityNotFoundError(self.keyid, community.amendment_id())
+
+    def pull_tht(self, community):
+        if community in self.communities.communities_list:
+            community.pull_tht(self.fingerprint())
+        else:
+            raise CommunityNotFoundError(self.keyid, community.amendment_id())
+
     def get_text(self):
         return self.name + " : " + \
             str(self.value()) + " " + self.community.currency
diff --git a/src/cutecoin/core/exceptions.py b/src/cutecoin/tools/exceptions.py
similarity index 100%
rename from src/cutecoin/core/exceptions.py
rename to src/cutecoin/tools/exceptions.py