diff --git a/.travis.yml b/.travis.yml
index c2bba1907b5c15bff1096903fbfb90737aa62c44..58f628c3441462d3d1b11fdf65f8ec7dfcba4670 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -51,13 +51,7 @@ install:
   - source activate test-environment
   - ldd $HOME/miniconda/envs/test-environment/lib/qt5/plugins/platforms/*.so
   - pip install coveralls
-  - pip install pylibscrypt
-  - pip install libnacl
-  - pip install requests
-  - pip install base58
-  - pip install quamash
-  - pip install asyncio
-  - pip install git+https://github.com/Insoleet/pretenders.git@develop
+  - pip install -r requirements.txt
   - python gen_resources.py
   - python gen_translations.py
   - python setup.py build
diff --git a/LICENSE b/LICENSE
index aaf9af5eea39f2b59cd3606e70351f8958280ab0..94a9ed024d3859793618152ea559a168bbcbb5e2 100644
--- a/LICENSE
+++ b/LICENSE
@@ -1,20 +1,674 @@
-The MIT License (MIT)
-
-Copyright (c) 2014 Insoleet
-
-Permission is hereby granted, free of charge, to any person obtaining a copy of
-this software and associated documentation files (the "Software"), to deal in
-the Software without restriction, including without limitation the rights to
-use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
-the Software, and to permit persons to whom the Software is furnished to do so,
-subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all
-copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
-FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
-COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
-IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+                    GNU GENERAL PUBLIC LICENSE
+                       Version 3, 29 June 2007
+
+ Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+                            Preamble
+
+  The GNU General Public License is a free, copyleft license for
+software and other kinds of works.
+
+  The licenses for most software and other practical works are designed
+to take away your freedom to share and change the works.  By contrast,
+the GNU General Public License is intended to guarantee your freedom to
+share and change all versions of a program--to make sure it remains free
+software for all its users.  We, the Free Software Foundation, use the
+GNU General Public License for most of our software; it applies also to
+any other work released this way by its authors.  You can apply it to
+your programs, too.
+
+  When we speak of free software, we are referring to freedom, not
+price.  Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+them if you wish), that you receive source code or can get it if you
+want it, that you can change the software or use pieces of it in new
+free programs, and that you know you can do these things.
+
+  To protect your rights, we need to prevent others from denying you
+these rights or asking you to surrender the rights.  Therefore, you have
+certain responsibilities if you distribute copies of the software, or if
+you modify it: responsibilities to respect the freedom of others.
+
+  For example, if you distribute copies of such a program, whether
+gratis or for a fee, you must pass on to the recipients the same
+freedoms that you received.  You must make sure that they, too, receive
+or can get the source code.  And you must show them these terms so they
+know their rights.
+
+  Developers that use the GNU GPL protect your rights with two steps:
+(1) assert copyright on the software, and (2) offer you this License
+giving you legal permission to copy, distribute and/or modify it.
+
+  For the developers' and authors' protection, the GPL clearly explains
+that there is no warranty for this free software.  For both users' and
+authors' sake, the GPL requires that modified versions be marked as
+changed, so that their problems will not be attributed erroneously to
+authors of previous versions.
+
+  Some devices are designed to deny users access to install or run
+modified versions of the software inside them, although the manufacturer
+can do so.  This is fundamentally incompatible with the aim of
+protecting users' freedom to change the software.  The systematic
+pattern of such abuse occurs in the area of products for individuals to
+use, which is precisely where it is most unacceptable.  Therefore, we
+have designed this version of the GPL to prohibit the practice for those
+products.  If such problems arise substantially in other domains, we
+stand ready to extend this provision to those domains in future versions
+of the GPL, as needed to protect the freedom of users.
+
+  Finally, every program is threatened constantly by software patents.
+States should not allow patents to restrict development and use of
+software on general-purpose computers, but in those that do, we wish to
+avoid the special danger that patents applied to a free program could
+make it effectively proprietary.  To prevent this, the GPL assures that
+patents cannot be used to render the program non-free.
+
+  The precise terms and conditions for copying, distribution and
+modification follow.
+
+                       TERMS AND CONDITIONS
+
+  0. Definitions.
+
+  "This License" refers to version 3 of the GNU General Public License.
+
+  "Copyright" also means copyright-like laws that apply to other kinds of
+works, such as semiconductor masks.
+
+  "The Program" refers to any copyrightable work licensed under this
+License.  Each licensee is addressed as "you".  "Licensees" and
+"recipients" may be individuals or organizations.
+
+  To "modify" a work means to copy from or adapt all or part of the work
+in a fashion requiring copyright permission, other than the making of an
+exact copy.  The resulting work is called a "modified version" of the
+earlier work or a work "based on" the earlier work.
+
+  A "covered work" means either the unmodified Program or a work based
+on the Program.
+
+  To "propagate" a work means to do anything with it that, without
+permission, would make you directly or secondarily liable for
+infringement under applicable copyright law, except executing it on a
+computer or modifying a private copy.  Propagation includes copying,
+distribution (with or without modification), making available to the
+public, and in some countries other activities as well.
+
+  To "convey" a work means any kind of propagation that enables other
+parties to make or receive copies.  Mere interaction with a user through
+a computer network, with no transfer of a copy, is not conveying.
+
+  An interactive user interface displays "Appropriate Legal Notices"
+to the extent that it includes a convenient and prominently visible
+feature that (1) displays an appropriate copyright notice, and (2)
+tells the user that there is no warranty for the work (except to the
+extent that warranties are provided), that licensees may convey the
+work under this License, and how to view a copy of this License.  If
+the interface presents a list of user commands or options, such as a
+menu, a prominent item in the list meets this criterion.
+
+  1. Source Code.
+
+  The "source code" for a work means the preferred form of the work
+for making modifications to it.  "Object code" means any non-source
+form of a work.
+
+  A "Standard Interface" means an interface that either is an official
+standard defined by a recognized standards body, or, in the case of
+interfaces specified for a particular programming language, one that
+is widely used among developers working in that language.
+
+  The "System Libraries" of an executable work include anything, other
+than the work as a whole, that (a) is included in the normal form of
+packaging a Major Component, but which is not part of that Major
+Component, and (b) serves only to enable use of the work with that
+Major Component, or to implement a Standard Interface for which an
+implementation is available to the public in source code form.  A
+"Major Component", in this context, means a major essential component
+(kernel, window system, and so on) of the specific operating system
+(if any) on which the executable work runs, or a compiler used to
+produce the work, or an object code interpreter used to run it.
+
+  The "Corresponding Source" for a work in object code form means all
+the source code needed to generate, install, and (for an executable
+work) run the object code and to modify the work, including scripts to
+control those activities.  However, it does not include the work's
+System Libraries, or general-purpose tools or generally available free
+programs which are used unmodified in performing those activities but
+which are not part of the work.  For example, Corresponding Source
+includes interface definition files associated with source files for
+the work, and the source code for shared libraries and dynamically
+linked subprograms that the work is specifically designed to require,
+such as by intimate data communication or control flow between those
+subprograms and other parts of the work.
+
+  The Corresponding Source need not include anything that users
+can regenerate automatically from other parts of the Corresponding
+Source.
+
+  The Corresponding Source for a work in source code form is that
+same work.
+
+  2. Basic Permissions.
+
+  All rights granted under this License are granted for the term of
+copyright on the Program, and are irrevocable provided the stated
+conditions are met.  This License explicitly affirms your unlimited
+permission to run the unmodified Program.  The output from running a
+covered work is covered by this License only if the output, given its
+content, constitutes a covered work.  This License acknowledges your
+rights of fair use or other equivalent, as provided by copyright law.
+
+  You may make, run and propagate covered works that you do not
+convey, without conditions so long as your license otherwise remains
+in force.  You may convey covered works to others for the sole purpose
+of having them make modifications exclusively for you, or provide you
+with facilities for running those works, provided that you comply with
+the terms of this License in conveying all material for which you do
+not control copyright.  Those thus making or running the covered works
+for you must do so exclusively on your behalf, under your direction
+and control, on terms that prohibit them from making any copies of
+your copyrighted material outside their relationship with you.
+
+  Conveying under any other circumstances is permitted solely under
+the conditions stated below.  Sublicensing is not allowed; section 10
+makes it unnecessary.
+
+  3. Protecting Users' Legal Rights From Anti-Circumvention Law.
+
+  No covered work shall be deemed part of an effective technological
+measure under any applicable law fulfilling obligations under article
+11 of the WIPO copyright treaty adopted on 20 December 1996, or
+similar laws prohibiting or restricting circumvention of such
+measures.
+
+  When you convey a covered work, you waive any legal power to forbid
+circumvention of technological measures to the extent such circumvention
+is effected by exercising rights under this License with respect to
+the covered work, and you disclaim any intention to limit operation or
+modification of the work as a means of enforcing, against the work's
+users, your or third parties' legal rights to forbid circumvention of
+technological measures.
+
+  4. Conveying Verbatim Copies.
+
+  You may convey verbatim copies of the Program's source code as you
+receive it, in any medium, provided that you conspicuously and
+appropriately publish on each copy an appropriate copyright notice;
+keep intact all notices stating that this License and any
+non-permissive terms added in accord with section 7 apply to the code;
+keep intact all notices of the absence of any warranty; and give all
+recipients a copy of this License along with the Program.
+
+  You may charge any price or no price for each copy that you convey,
+and you may offer support or warranty protection for a fee.
+
+  5. Conveying Modified Source Versions.
+
+  You may convey a work based on the Program, or the modifications to
+produce it from the Program, in the form of source code under the
+terms of section 4, provided that you also meet all of these conditions:
+
+    a) The work must carry prominent notices stating that you modified
+    it, and giving a relevant date.
+
+    b) The work must carry prominent notices stating that it is
+    released under this License and any conditions added under section
+    7.  This requirement modifies the requirement in section 4 to
+    "keep intact all notices".
+
+    c) You must license the entire work, as a whole, under this
+    License to anyone who comes into possession of a copy.  This
+    License will therefore apply, along with any applicable section 7
+    additional terms, to the whole of the work, and all its parts,
+    regardless of how they are packaged.  This License gives no
+    permission to license the work in any other way, but it does not
+    invalidate such permission if you have separately received it.
+
+    d) If the work has interactive user interfaces, each must display
+    Appropriate Legal Notices; however, if the Program has interactive
+    interfaces that do not display Appropriate Legal Notices, your
+    work need not make them do so.
+
+  A compilation of a covered work with other separate and independent
+works, which are not by their nature extensions of the covered work,
+and which are not combined with it such as to form a larger program,
+in or on a volume of a storage or distribution medium, is called an
+"aggregate" if the compilation and its resulting copyright are not
+used to limit the access or legal rights of the compilation's users
+beyond what the individual works permit.  Inclusion of a covered work
+in an aggregate does not cause this License to apply to the other
+parts of the aggregate.
+
+  6. Conveying Non-Source Forms.
+
+  You may convey a covered work in object code form under the terms
+of sections 4 and 5, provided that you also convey the
+machine-readable Corresponding Source under the terms of this License,
+in one of these ways:
+
+    a) Convey the object code in, or embodied in, a physical product
+    (including a physical distribution medium), accompanied by the
+    Corresponding Source fixed on a durable physical medium
+    customarily used for software interchange.
+
+    b) Convey the object code in, or embodied in, a physical product
+    (including a physical distribution medium), accompanied by a
+    written offer, valid for at least three years and valid for as
+    long as you offer spare parts or customer support for that product
+    model, to give anyone who possesses the object code either (1) a
+    copy of the Corresponding Source for all the software in the
+    product that is covered by this License, on a durable physical
+    medium customarily used for software interchange, for a price no
+    more than your reasonable cost of physically performing this
+    conveying of source, or (2) access to copy the
+    Corresponding Source from a network server at no charge.
+
+    c) Convey individual copies of the object code with a copy of the
+    written offer to provide the Corresponding Source.  This
+    alternative is allowed only occasionally and noncommercially, and
+    only if you received the object code with such an offer, in accord
+    with subsection 6b.
+
+    d) Convey the object code by offering access from a designated
+    place (gratis or for a charge), and offer equivalent access to the
+    Corresponding Source in the same way through the same place at no
+    further charge.  You need not require recipients to copy the
+    Corresponding Source along with the object code.  If the place to
+    copy the object code is a network server, the Corresponding Source
+    may be on a different server (operated by you or a third party)
+    that supports equivalent copying facilities, provided you maintain
+    clear directions next to the object code saying where to find the
+    Corresponding Source.  Regardless of what server hosts the
+    Corresponding Source, you remain obligated to ensure that it is
+    available for as long as needed to satisfy these requirements.
+
+    e) Convey the object code using peer-to-peer transmission, provided
+    you inform other peers where the object code and Corresponding
+    Source of the work are being offered to the general public at no
+    charge under subsection 6d.
+
+  A separable portion of the object code, whose source code is excluded
+from the Corresponding Source as a System Library, need not be
+included in conveying the object code work.
+
+  A "User Product" is either (1) a "consumer product", which means any
+tangible personal property which is normally used for personal, family,
+or household purposes, or (2) anything designed or sold for incorporation
+into a dwelling.  In determining whether a product is a consumer product,
+doubtful cases shall be resolved in favor of coverage.  For a particular
+product received by a particular user, "normally used" refers to a
+typical or common use of that class of product, regardless of the status
+of the particular user or of the way in which the particular user
+actually uses, or expects or is expected to use, the product.  A product
+is a consumer product regardless of whether the product has substantial
+commercial, industrial or non-consumer uses, unless such uses represent
+the only significant mode of use of the product.
+
+  "Installation Information" for a User Product means any methods,
+procedures, authorization keys, or other information required to install
+and execute modified versions of a covered work in that User Product from
+a modified version of its Corresponding Source.  The information must
+suffice to ensure that the continued functioning of the modified object
+code is in no case prevented or interfered with solely because
+modification has been made.
+
+  If you convey an object code work under this section in, or with, or
+specifically for use in, a User Product, and the conveying occurs as
+part of a transaction in which the right of possession and use of the
+User Product is transferred to the recipient in perpetuity or for a
+fixed term (regardless of how the transaction is characterized), the
+Corresponding Source conveyed under this section must be accompanied
+by the Installation Information.  But this requirement does not apply
+if neither you nor any third party retains the ability to install
+modified object code on the User Product (for example, the work has
+been installed in ROM).
+
+  The requirement to provide Installation Information does not include a
+requirement to continue to provide support service, warranty, or updates
+for a work that has been modified or installed by the recipient, or for
+the User Product in which it has been modified or installed.  Access to a
+network may be denied when the modification itself materially and
+adversely affects the operation of the network or violates the rules and
+protocols for communication across the network.
+
+  Corresponding Source conveyed, and Installation Information provided,
+in accord with this section must be in a format that is publicly
+documented (and with an implementation available to the public in
+source code form), and must require no special password or key for
+unpacking, reading or copying.
+
+  7. Additional Terms.
+
+  "Additional permissions" are terms that supplement the terms of this
+License by making exceptions from one or more of its conditions.
+Additional permissions that are applicable to the entire Program shall
+be treated as though they were included in this License, to the extent
+that they are valid under applicable law.  If additional permissions
+apply only to part of the Program, that part may be used separately
+under those permissions, but the entire Program remains governed by
+this License without regard to the additional permissions.
+
+  When you convey a copy of a covered work, you may at your option
+remove any additional permissions from that copy, or from any part of
+it.  (Additional permissions may be written to require their own
+removal in certain cases when you modify the work.)  You may place
+additional permissions on material, added by you to a covered work,
+for which you have or can give appropriate copyright permission.
+
+  Notwithstanding any other provision of this License, for material you
+add to a covered work, you may (if authorized by the copyright holders of
+that material) supplement the terms of this License with terms:
+
+    a) Disclaiming warranty or limiting liability differently from the
+    terms of sections 15 and 16 of this License; or
+
+    b) Requiring preservation of specified reasonable legal notices or
+    author attributions in that material or in the Appropriate Legal
+    Notices displayed by works containing it; or
+
+    c) Prohibiting misrepresentation of the origin of that material, or
+    requiring that modified versions of such material be marked in
+    reasonable ways as different from the original version; or
+
+    d) Limiting the use for publicity purposes of names of licensors or
+    authors of the material; or
+
+    e) Declining to grant rights under trademark law for use of some
+    trade names, trademarks, or service marks; or
+
+    f) Requiring indemnification of licensors and authors of that
+    material by anyone who conveys the material (or modified versions of
+    it) with contractual assumptions of liability to the recipient, for
+    any liability that these contractual assumptions directly impose on
+    those licensors and authors.
+
+  All other non-permissive additional terms are considered "further
+restrictions" within the meaning of section 10.  If the Program as you
+received it, or any part of it, contains a notice stating that it is
+governed by this License along with a term that is a further
+restriction, you may remove that term.  If a license document contains
+a further restriction but permits relicensing or conveying under this
+License, you may add to a covered work material governed by the terms
+of that license document, provided that the further restriction does
+not survive such relicensing or conveying.
+
+  If you add terms to a covered work in accord with this section, you
+must place, in the relevant source files, a statement of the
+additional terms that apply to those files, or a notice indicating
+where to find the applicable terms.
+
+  Additional terms, permissive or non-permissive, may be stated in the
+form of a separately written license, or stated as exceptions;
+the above requirements apply either way.
+
+  8. Termination.
+
+  You may not propagate or modify a covered work except as expressly
+provided under this License.  Any attempt otherwise to propagate or
+modify it is void, and will automatically terminate your rights under
+this License (including any patent licenses granted under the third
+paragraph of section 11).
+
+  However, if you cease all violation of this License, then your
+license from a particular copyright holder is reinstated (a)
+provisionally, unless and until the copyright holder explicitly and
+finally terminates your license, and (b) permanently, if the copyright
+holder fails to notify you of the violation by some reasonable means
+prior to 60 days after the cessation.
+
+  Moreover, your license from a particular copyright holder is
+reinstated permanently if the copyright holder notifies you of the
+violation by some reasonable means, this is the first time you have
+received notice of violation of this License (for any work) from that
+copyright holder, and you cure the violation prior to 30 days after
+your receipt of the notice.
+
+  Termination of your rights under this section does not terminate the
+licenses of parties who have received copies or rights from you under
+this License.  If your rights have been terminated and not permanently
+reinstated, you do not qualify to receive new licenses for the same
+material under section 10.
+
+  9. Acceptance Not Required for Having Copies.
+
+  You are not required to accept this License in order to receive or
+run a copy of the Program.  Ancillary propagation of a covered work
+occurring solely as a consequence of using peer-to-peer transmission
+to receive a copy likewise does not require acceptance.  However,
+nothing other than this License grants you permission to propagate or
+modify any covered work.  These actions infringe copyright if you do
+not accept this License.  Therefore, by modifying or propagating a
+covered work, you indicate your acceptance of this License to do so.
+
+  10. Automatic Licensing of Downstream Recipients.
+
+  Each time you convey a covered work, the recipient automatically
+receives a license from the original licensors, to run, modify and
+propagate that work, subject to this License.  You are not responsible
+for enforcing compliance by third parties with this License.
+
+  An "entity transaction" is a transaction transferring control of an
+organization, or substantially all assets of one, or subdividing an
+organization, or merging organizations.  If propagation of a covered
+work results from an entity transaction, each party to that
+transaction who receives a copy of the work also receives whatever
+licenses to the work the party's predecessor in interest had or could
+give under the previous paragraph, plus a right to possession of the
+Corresponding Source of the work from the predecessor in interest, if
+the predecessor has it or can get it with reasonable efforts.
+
+  You may not impose any further restrictions on the exercise of the
+rights granted or affirmed under this License.  For example, you may
+not impose a license fee, royalty, or other charge for exercise of
+rights granted under this License, and you may not initiate litigation
+(including a cross-claim or counterclaim in a lawsuit) alleging that
+any patent claim is infringed by making, using, selling, offering for
+sale, or importing the Program or any portion of it.
+
+  11. Patents.
+
+  A "contributor" is a copyright holder who authorizes use under this
+License of the Program or a work on which the Program is based.  The
+work thus licensed is called the contributor's "contributor version".
+
+  A contributor's "essential patent claims" are all patent claims
+owned or controlled by the contributor, whether already acquired or
+hereafter acquired, that would be infringed by some manner, permitted
+by this License, of making, using, or selling its contributor version,
+but do not include claims that would be infringed only as a
+consequence of further modification of the contributor version.  For
+purposes of this definition, "control" includes the right to grant
+patent sublicenses in a manner consistent with the requirements of
+this License.
+
+  Each contributor grants you a non-exclusive, worldwide, royalty-free
+patent license under the contributor's essential patent claims, to
+make, use, sell, offer for sale, import and otherwise run, modify and
+propagate the contents of its contributor version.
+
+  In the following three paragraphs, a "patent license" is any express
+agreement or commitment, however denominated, not to enforce a patent
+(such as an express permission to practice a patent or covenant not to
+sue for patent infringement).  To "grant" such a patent license to a
+party means to make such an agreement or commitment not to enforce a
+patent against the party.
+
+  If you convey a covered work, knowingly relying on a patent license,
+and the Corresponding Source of the work is not available for anyone
+to copy, free of charge and under the terms of this License, through a
+publicly available network server or other readily accessible means,
+then you must either (1) cause the Corresponding Source to be so
+available, or (2) arrange to deprive yourself of the benefit of the
+patent license for this particular work, or (3) arrange, in a manner
+consistent with the requirements of this License, to extend the patent
+license to downstream recipients.  "Knowingly relying" means you have
+actual knowledge that, but for the patent license, your conveying the
+covered work in a country, or your recipient's use of the covered work
+in a country, would infringe one or more identifiable patents in that
+country that you have reason to believe are valid.
+
+  If, pursuant to or in connection with a single transaction or
+arrangement, you convey, or propagate by procuring conveyance of, a
+covered work, and grant a patent license to some of the parties
+receiving the covered work authorizing them to use, propagate, modify
+or convey a specific copy of the covered work, then the patent license
+you grant is automatically extended to all recipients of the covered
+work and works based on it.
+
+  A patent license is "discriminatory" if it does not include within
+the scope of its coverage, prohibits the exercise of, or is
+conditioned on the non-exercise of one or more of the rights that are
+specifically granted under this License.  You may not convey a covered
+work if you are a party to an arrangement with a third party that is
+in the business of distributing software, under which you make payment
+to the third party based on the extent of your activity of conveying
+the work, and under which the third party grants, to any of the
+parties who would receive the covered work from you, a discriminatory
+patent license (a) in connection with copies of the covered work
+conveyed by you (or copies made from those copies), or (b) primarily
+for and in connection with specific products or compilations that
+contain the covered work, unless you entered into that arrangement,
+or that patent license was granted, prior to 28 March 2007.
+
+  Nothing in this License shall be construed as excluding or limiting
+any implied license or other defenses to infringement that may
+otherwise be available to you under applicable patent law.
+
+  12. No Surrender of Others' Freedom.
+
+  If conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License.  If you cannot convey a
+covered work so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you may
+not convey it at all.  For example, if you agree to terms that obligate you
+to collect a royalty for further conveying from those to whom you convey
+the Program, the only way you could satisfy both those terms and this
+License would be to refrain entirely from conveying the Program.
+
+  13. Use with the GNU Affero General Public License.
+
+  Notwithstanding any other provision of this License, you have
+permission to link or combine any covered work with a work licensed
+under version 3 of the GNU Affero General Public License into a single
+combined work, and to convey the resulting work.  The terms of this
+License will continue to apply to the part which is the covered work,
+but the special requirements of the GNU Affero General Public License,
+section 13, concerning interaction through a network will apply to the
+combination as such.
+
+  14. Revised Versions of this License.
+
+  The Free Software Foundation may publish revised and/or new versions of
+the GNU General Public License from time to time.  Such new versions will
+be similar in spirit to the present version, but may differ in detail to
+address new problems or concerns.
+
+  Each version is given a distinguishing version number.  If the
+Program specifies that a certain numbered version of the GNU General
+Public License "or any later version" applies to it, you have the
+option of following the terms and conditions either of that numbered
+version or of any later version published by the Free Software
+Foundation.  If the Program does not specify a version number of the
+GNU General Public License, you may choose any version ever published
+by the Free Software Foundation.
+
+  If the Program specifies that a proxy can decide which future
+versions of the GNU General Public License can be used, that proxy's
+public statement of acceptance of a version permanently authorizes you
+to choose that version for the Program.
+
+  Later license versions may give you additional or different
+permissions.  However, no additional obligations are imposed on any
+author or copyright holder as a result of your choosing to follow a
+later version.
+
+  15. Disclaimer of Warranty.
+
+  THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
+APPLICABLE LAW.  EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
+HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY
+OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
+THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+PURPOSE.  THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM
+IS WITH YOU.  SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
+ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
+
+  16. Limitation of Liability.
+
+  IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
+THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
+GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
+USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
+DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
+PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
+EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
+SUCH DAMAGES.
+
+  17. Interpretation of Sections 15 and 16.
+
+  If the disclaimer of warranty and limitation of liability provided
+above cannot be given local legal effect according to their terms,
+reviewing courts shall apply local law that most closely approximates
+an absolute waiver of all civil liability in connection with the
+Program, unless a warranty or assumption of liability accompanies a
+copy of the Program in return for a fee.
+
+                     END OF TERMS AND CONDITIONS
+
+            How to Apply These Terms to Your New Programs
+
+  If you develop a new program, and you want it to be of the greatest
+possible use to the public, the best way to achieve this is to make it
+free software which everyone can redistribute and change under these terms.
+
+  To do so, attach the following notices to the program.  It is safest
+to attach them to the start of each source file to most effectively
+state the exclusion of warranty; and each file should have at least
+the "copyright" line and a pointer to where the full notice is found.
+
+    <one line to give the program's name and a brief idea of what it does.>
+    Copyright (C) <year>  <name of author>
+
+    This program is free software: you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+Also add information on how to contact you by electronic and paper mail.
+
+  If the program does terminal interaction, make it output a short
+notice like this when it starts in an interactive mode:
+
+    <program>  Copyright (C) <year>  <name of author>
+    This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
+    This is free software, and you are welcome to redistribute it
+    under certain conditions; type `show c' for details.
+
+The hypothetical commands `show w' and `show c' should show the appropriate
+parts of the General Public License.  Of course, your program's commands
+might be different; for a GUI interface, you would use an "about box".
+
+  You should also get your employer (if you work as a programmer) or school,
+if any, to sign a "copyright disclaimer" for the program, if necessary.
+For more information on this, and how to apply and follow the GNU GPL, see
+<http://www.gnu.org/licenses/>.
+
+  The GNU General Public License does not permit incorporating your program
+into proprietary programs.  If your program is a subroutine library, you
+may consider it more useful to permit linking proprietary applications with
+the library.  If this is what you want to do, use the GNU Lesser General
+Public License instead of this License.  But first, please read
+<http://www.gnu.org/philosophy/why-not-lgpl.html>.
diff --git a/README.md b/README.md
index 7b6fdffe71a6afd103207106c37b0cc508def006..22245852ca0974073c4325da0437d9a8d06674ee 100644
--- a/README.md
+++ b/README.md
@@ -1,19 +1,11 @@
 <!-- Landscape | [![Code Health](https://landscape.io/github/ucoin-io/cutecoin/dev/landscape.svg?style=flat)](https://landscape.io/github/ucoin-io/cutecoin/dev) -->
 
-Coveralls | [![Coverage Status](https://coveralls.io/repos/ucoin-io/cutecoin/badge.svg?branch=dev)](https://coveralls.io/r/ucoin-io/cutecoin)
-
-Travis | [![Build Status](https://travis-ci.org/ucoin-io/cutecoin.svg?branch=travis)](https://travis-ci.org/ucoin-io/cutecoin)
-
-Appveyor | [![Build status](https://ci.appveyor.com/api/projects/status/0wmo0rk5mds5t3lr/branch/dev)](https://ci.appveyor.com/project/Insoleet/cutecoin/branch/dev)
-
-Weblate | [![Translation status](http://weblate.ucoin.io/widgets/cutecoin/-/svg-badge.svg)](http://weblate.ucoin.io/engage/cutecoin/?utm_source=widget)
-
 ![cutecoin logo](https://raw.github.com/ucoin-io/cutecoin/master/cutecoin.png)
 
-cutecoin
+Cutecoin [![Coverage Status](https://coveralls.io/repos/ucoin-io/cutecoin/badge.svg?branch=dev)](https://coveralls.io/r/ucoin-io/cutecoin) [![Build Status](https://travis-ci.org/ucoin-io/cutecoin.svg?branch=travis)](https://travis-ci.org/ucoin-io/cutecoin) [![Build status](https://ci.appveyor.com/api/projects/status/0wmo0rk5mds5t3lr/branch/dev)](https://ci.appveyor.com/project/Insoleet/cutecoin/branch/dev) [![Translation status](http://weblate.ucoin.io/widgets/cutecoin/-/svg-badge.svg)](http://weblate.ucoin.io/engage/cutecoin/?utm_source=widget)
 ========
 
-Qt Client for [Ucoin](http://www.ucoin.io) project.
+Qt Client for [uCoin](http://www.ucoin.io) project.
 
 
 ## Goal features
@@ -53,8 +45,11 @@ Qt Client for [Ucoin](http://www.ucoin.io) project.
   * Run __python3 setup.py build__ in cutecoin folder
   * The executable is generated in "build" folder, named "cutecoin"
 
-### How to download latest release
-  * Go to the [current release](https://github.com/ucoin-io/cutecoin/releases/tag/0.10.0)
-  * Download the package corresponding to your operating system
+### Download latest release
+  * Go to [current release](https://github.com/ucoin-io/cutecoin/release)
+  * Download corresponding package to your operating system
   * Unzip and start "cutecoin" :)
-  * Join our beta community by contacting us on ucoin forums : forum.ucoin.io
+  * Join our beta community by contacting us on [uCoin forum](http://forum.ucoin.io/)
+
+## License
+This software is distributed under [GNU GPLv3](https://raw.github.com/ucoin-io/cutecoin/dev/LICENSE).
diff --git a/appveyor.yml b/appveyor.yml
index e92970cf03e289905d3d52696a5cacc3a7c858e1..f1c1e4f6a36e12425ae5cab029a3e03aaf8ac2d9 100644
--- a/appveyor.yml
+++ b/appveyor.yml
@@ -35,22 +35,22 @@ install:
 build_script:
   - ".\\ci\\appveyor\\build.cmd"
 
-test_script:
+#test_script:
   - ".\\ci\\appveyor\\tests.cmd"
   - echo %errorlevel%
 
 artifacts:
   - path: build
     name: Cutecoin-win$(PYTHON_ARCH)
-
+# upload to releases
 deploy:
   release: Cutecoin $(APPVEYOR_REPO_TAG_NAME)
   provider: GitHub
   auth_token:
-    secure: wbzlh6nx1zY1J1avlB0C3hKGm1abFNHBdM60u/U09i5Nam//D6kazvnv5ZBKdR89 # your encrypted token from GitHub
-  artifact: Cutecoin-win$(PYTHON_ARCH)      # upload to releases
+    secure: wbzlh6nx1zY1J1avlB0C3hKGm1abFNHBdM60u/U09i5Nam//D6kazvnv5ZBKdR89
+  artifact: Cutecoin-win$(PYTHON_ARCH)
   draft: true
   prerelease: true
   on:
-    appveyor_repo_tag: true        # deploy on tag push only
+    appveyor_repo_tag: true
 
diff --git a/ci/appveyor/build.cmd b/ci/appveyor/build.cmd
index 79322896d4bb13d3a5c06a136fe680f9edb23fba..bd4410c0b09eb36a4b4391aff179bddf92770125 100644
--- a/ci/appveyor/build.cmd
+++ b/ci/appveyor/build.cmd
@@ -11,13 +11,7 @@ pyrcc5 -version
 
 lrelease -version
 
-pip install pylibscrypt
-pip install libnacl
-pip install requests
-pip install base58
-pip install quamash
-pip install asyncio
-pip install git+https://github.com/Insoleet/pretenders.git@develop
+pip install -r requirements.txt
 
 python gen_resources.py
 if %errorlevel% neq 0 exit /b 1s
@@ -26,4 +20,4 @@ python gen_translations.py
 if %errorlevel% neq 0 exit /b 1
 
 python setup.py build
-if %errorlevel% neq 0 exit /b 1
\ No newline at end of file
+if %errorlevel% neq 0 exit /b 1
diff --git a/doc/uml/api.png b/doc/uml/api.png
index a7e3336901352dc647ce916c06bc2eb880eae469..259a52ab048c4393ba1c7adcbab06ae694732ef5 100644
Binary files a/doc/uml/api.png and b/doc/uml/api.png differ
diff --git a/doc/uml/core-classes.png b/doc/uml/core-classes.png
index 000636eb518c8e441bb799c053286adc6ede60d0..810bd6cd7d5eca4fcf1e8cc22d532ca1899d76ca 100644
Binary files a/doc/uml/core-classes.png and b/doc/uml/core-classes.png differ
diff --git a/doc/uml/cutecoin.png b/doc/uml/cutecoin.png
index 59780e445fce620ad5f355c3d3f8ae1a95c92025..1a80c93cee49c91457f966685a13b0b277547d21 100644
Binary files a/doc/uml/cutecoin.png and b/doc/uml/cutecoin.png differ
diff --git a/doc/uml/gui-classes.png b/doc/uml/gui-classes.png
index 7df50d51d4ae74fb4f99c2b47eac4b31cc633b15..08d764e03f869566e321ebaa76e98baf0e28d800 100644
Binary files a/doc/uml/gui-classes.png and b/doc/uml/gui-classes.png differ
diff --git a/doc/uml/models-classes.png b/doc/uml/models-classes.png
index 54fec65a2ab178127054ae952f4b55b7e0afbc52..9fa40280c691de29c350ba64206f9bf2f17d5b41 100644
Binary files a/doc/uml/models-classes.png and b/doc/uml/models-classes.png differ
diff --git a/doc/uml/network.png b/doc/uml/network.png
index 853e39c21f10c5fabcb74d702194ce1822209727..6c327e5ff688c208b3de546486b68e501e9a67d8 100644
Binary files a/doc/uml/network.png and b/doc/uml/network.png differ
diff --git a/doc/uml/network.pu b/doc/uml/network.pu
index d89859f85bb60f8291a322f6bab241ccc3cd0a02..b43bc97e5b0c1b8c6d1c6f7d151276cb91fd2e5f 100644
--- a/doc/uml/network.pu
+++ b/doc/uml/network.pu
@@ -3,29 +3,13 @@
 Network -->o Node : Connect to node_received()
 Network -> Node : Starts network discovery
 activate Node
-Node -> QNetworkManager : HTTP GET peering/peers?leaves=true
-create QNetworkReply
-QNetworkManager -> QNetworkReply : Instantiate
-Node <- QNetworkManager : QNetworkReply
-Node -->o QNetworkReply : Connect to finished()
-Network <- Node
-deactivate Node
-... Request is processed ...
-Node <-- QNetworkReply : finished()
-destroy QNetworkReply
+Node -> ucoinpy : HTTP GET peering/peers?leaves=true
 alt "root" hash changed
 loop "for all leaves changed"
 activate Node
-Node -> QNetworkManager : HTTP GET peering/peers/leaf=leaf_hash
-create QNetworkReply
-QNetworkManager -> QNetworkReply : Instantiate
-Node <- QNetworkManager : QNetworkReply
-Node -->o QNetworkReply : Connect to finished()
+Node -> ucoinpy : HTTP GET peering/peers/leaf=leaf_hash
 end
 end
-... Requests is processed ...
-Node <-- QNetworkReply : finished()
-destroy QNetworkReply
 Network <-- Node : node_received()
 ref over Network
 New node is instanciated
diff --git a/doc/uml/requests.png b/doc/uml/requests.png
index d629a6789802e9eadb3f092a198497c02b4ddcc2..a2744a23295b33628ecbc049ff86d701549ad1a4 100644
Binary files a/doc/uml/requests.png and b/doc/uml/requests.png differ
diff --git a/doc/uml/requests.pu b/doc/uml/requests.pu
index 8ea91136f68aba9771cf9f438f89790f508b4341..ea824469889c4860069cdb067a413ceda3920848 100644
--- a/doc/uml/requests.pu
+++ b/doc/uml/requests.pu
@@ -1,49 +1,26 @@
 @startuml
 
-QModel -->o "Core Component" : Connect to data_changed()
-QModel -> "Core Component" : Data access
 activate "Core Component"
-"Core Component" -> Community : Request data
-Community -> Cache : Request cache
-ref over Cache
-Data is obsolete
-(new block mined
-since last caching)
+"Core Component" -> BmaAccess : Request data
+BmaAccess -> BmaAccess : Request cache
+ref over BmaAccess
+    Data is obsolete
+    (new block mined
+    since last caching)
 end ref
-Cache -> QNetworkManager : HTTP GET
-create QNetworkReply
-QNetworkManager -> QNetworkReply : Instantiate
-Cache <- QNetworkManager : QNetworkReply
-create ReceiverSlot
-Cache -> ReceiverSlot : Instantiate Slot
-QNetworkReply o<-- ReceiverSlot : Connect to finished()
-Community <- Cache : Cached data
-"Core Component" <- Community : Cached data
-"Core Component" -> "Core Component" : Compute data
-QModel <- "Core Component" : Data
-deactivate "Core Component"
-
-...Network request is processed...
-
-ReceiverSlot <-- QNetworkReply  : finished()
-activate ReceiverSlot
-ReceiverSlot -> Cache : Update cache data
-ReceiverSlot -> "Core Component" : emit data_changed()
-deactivate ReceiverSlot
-destroy ReceiverSlot
-destroy QNetworkReply
-|||
-QModel <-- "Core Component" : data_changed()
-QModel -> "Core Component" : Data access
-activate "Core Component"
-ref over "Core Component", Community
-Community is requested again,
-and last cached data are returned
-No new block mined, so no HTTP GET
-initialized between cache
-and QNetworkManager
+BmaAccess -> ucoinpy : HTTP GET
+alt Rollback
+BmaAccess -> BmaAccess : Find last block number rollbacked
+ref over BmaAccess
+    If the request is a bma/blockchain/Block, we check if the hash answered is the same
+    as our hash, in which case, we know that the rollback didn't reset blocks before
+    this one.
+    Blocks from this one to the current block are considered obsolete
 end ref
-QModel <- "Core Component" : Data
+end
+BmaAccess -> BmaAccess : Update cache data
+
+"Core Component" <- BmaAccess : Return data data
 deactivate "Core Component"
 
 
diff --git a/doc/uml/tx_lifecycle.png b/doc/uml/tx_lifecycle.png
index ff35f12c2605e32c5e03428e10e77b0ddfb9e1e1..3c852325045ab309c6477d203d8b8831d11278ea 100644
Binary files a/doc/uml/tx_lifecycle.png and b/doc/uml/tx_lifecycle.png differ
diff --git a/doc/uml/tx_lifecycle.pu b/doc/uml/tx_lifecycle.pu
index 03d66941a7598cbc1c785fe07a003eca92b4c279..690ea7bb5f68b3b3efe486379eedc60961e6fa56 100644
--- a/doc/uml/tx_lifecycle.pu
+++ b/doc/uml/tx_lifecycle.pu
@@ -1,10 +1 @@
-@startuml
-
-[*] --> To_send
-To_send --> Awaiting : Broadcasted at B
-Awaiting --> Validated : Registered in [B; B+15]
-Awaiting --> Refused : Not registered in [B; B+15]
-Refused --> To_send : Send back order
-Refused --> Dropped : Drop order
-
-@enduml
\ No newline at end of file
+@startuml

note "With B a Block\nWith W the Median fork window\nWith Cur the current block of the main branch\nWith T a time" as N1
state Local_Tx {
 [*] --> To_send : Signed locally
 To_send : B = none
 To_send --> Awaiting : Node answered\n200 OK to POST
 Awaiting : Time = Cur.MedianTime
 Awaiting --> Refused : Not registered in [T; T+W*MedianTime]
 Refused --> To_send : Send back
 Refused --> [*] : Drop
}
state Registered {
 [*] --> Validating : Posted\nsin the blockchain
 Validating : B = Block containing the Tx
 Awaiting --> Validating : Found in the blockchain
 Validating --> Validated : Cur-B > W
 Validated --> Validating : Blockchain\nrollback\ntx in fork window
 Validated --> Awaiting : Blockchain\nrollback\ntx local removed
 Validated --> [*] : Blockchain\nrollback\ntx removed
 Validating --> [*] : Blockchain\nrollback\ntx removed
}

@enduml
\ No newline at end of file
diff --git a/lib/ucoinpy/__init__.py b/lib/ucoinpy/__init__.py
deleted file mode 100644
index 3b1345bc8e6afcb68399f864af138a40ab4cbe0f..0000000000000000000000000000000000000000
--- a/lib/ucoinpy/__init__.py
+++ /dev/null
@@ -1,23 +0,0 @@
-#
-# This program is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program.  If not, see <http://www.gnu.org/licenses/>.
-#
-# Authors:
-# Caner Candan <caner@candan.fr>, http://caner.candan.fr
-#
-
-PROTOCOL_VERSION="1"
-
-MANAGED_API=["BASIC_MERKLED_API"]
-
-from . import api, documents, key
\ No newline at end of file
diff --git a/lib/ucoinpy/api/bma/__init__.py b/lib/ucoinpy/api/bma/__init__.py
deleted file mode 100644
index d126a82a74357e4acacdc898e432b48b9f4270c1..0000000000000000000000000000000000000000
--- a/lib/ucoinpy/api/bma/__init__.py
+++ /dev/null
@@ -1,144 +0,0 @@
-#
-# This program is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program.  If not, see <http://www.gnu.org/licenses/>.
-#
-# Authors:
-# Caner Candan <caner@candan.fr>, http://caner.candan.fr
-#
-
-
-__all__ = ['api']
-
-__author__      = 'Caner Candan'
-__version__     = '0.10.0'
-__nonsense__    = 'uCoin'
-
-import requests, logging, json
-# import pylibscrypt
-
-logger = logging.getLogger("ucoin")
-
-
-class ConnectionHandler(object):
-    """Helper class used by other API classes to ease passing server connection information."""
-
-    def __init__(self, server, port):
-        """
-        Arguments:
-        - `server`: server hostname
-        - `port`: port number
-        """
-
-        self.server = server
-        self.port = port
-
-    def __str__(self):
-        return 'connection info: %s:%d' % (self.server, self.port)
-
-
-class API(object):
-    """APIRequest is a class used as an interface. The intermediate derivated classes are the modules and the leaf classes are the API requests."""
-
-    def __init__(self, connection_handler, module):
-        """
-        Asks a module in order to create the url used then by derivated classes.
-
-        Arguments:
-        - `module`: module name
-        - `connection_handler`: connection handler
-        """
-
-        self.module = module
-        self.connection_handler = connection_handler
-        self.headers = {}
-
-    def reverse_url(self, path):
-        """
-        Reverses the url using self.url and path given in parameter.
-
-        Arguments:
-        - `path`: the request path
-        """
-
-        server, port = self.connection_handler.server, self.connection_handler.port
-
-        url = 'http://%s:%d/%s' % (server, port, self.module)
-        return url + path
-
-    def get(self, **kwargs):
-        """wrapper of overloaded __get__ method."""
-
-        return self.__get__(**kwargs)
-
-    def post(self, **kwargs):
-        """wrapper of overloaded __post__ method."""
-
-        logger.debug('do some work with')
-
-        data = self.__post__(**kwargs)
-
-        logger.debug('and send back')
-
-        return data
-
-    def __get__(self, **kwargs):
-        """interface purpose for GET request"""
-
-        pass
-
-    def __post__(self, **kwargs):
-        """interface purpose for POST request"""
-
-        pass
-
-    def requests_get(self, path, **kwargs):
-        """
-        Requests GET wrapper in order to use API parameters.
-
-        Arguments:
-        - `path`: the request path
-        """
-
-        response = requests.get(self.reverse_url(path), params=kwargs,
-                                headers=self.headers, timeout=15)
-
-        if response.status_code != 200:
-            raise ValueError('status code != 200 => %d (%s)' % (response.status_code, response.text))
-
-        return response
-
-    def requests_post(self, path, **kwargs):
-        """
-        Requests POST wrapper in order to use API parameters.
-
-        Arguments:
-        - `path`: the request path
-        """
-        if 'self_' in kwargs:
-            kwargs['self'] = kwargs.pop('self_')
-
-        logging.debug("POST : {0}".format(kwargs))
-        response = requests.post(self.reverse_url(path), data=kwargs, headers=self.headers,
-                                 timeout=15)
-
-        if response.status_code != 200:
-            raise ValueError('status code != 200 => %d (%s)' % (response.status_code, response.text))
-
-        return response
-
-    def merkle_easy_parser(self, path, begin=None, end=None):
-        root = self.requests_get(path, leaves='true').json()
-        for leaf in root['leaves'][begin:end]:
-            yield self.requests_get(path, leaf=leaf).json()['leaf']
-
-from . import network, blockchain, tx, wot, node
diff --git a/lib/ucoinpy/api/bma/blockchain/__init__.py b/lib/ucoinpy/api/bma/blockchain/__init__.py
deleted file mode 100644
index f594d7f1b91aaaeb0717d6a2d77ca469478e275e..0000000000000000000000000000000000000000
--- a/lib/ucoinpy/api/bma/blockchain/__init__.py
+++ /dev/null
@@ -1,158 +0,0 @@
-#
-# This program is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program.  If not, see <http://www.gnu.org/licenses/>.
-#
-# Authors:
-# Caner Candan <caner@candan.fr>, http://caner.candan.fr
-#
-
-from .. import API, logging
-
-logger = logging.getLogger("ucoin/blockchain")
-
-
-class Blockchain(API):
-    def __init__(self, connection_handler, module='blockchain'):
-        super(Blockchain, self).__init__(connection_handler, module)
-
-
-class Parameters(Blockchain):
-    """GET the blockchain parameters used by this node."""
-
-    def __get__(self, **kwargs):
-        return self.requests_get('/parameters', **kwargs).json()
-
-
-class Membership(Blockchain):
-    """GET/POST a Membership document."""
-    def __init__(self, connection_handler, search=None):
-        super().__init__(connection_handler)
-        self.search = search
-
-    def __post__(self, **kwargs):
-        assert 'membership' in kwargs
-
-        return self.requests_post('/membership', **kwargs).json()
-
-    def __get__(self, **kwargs):
-        assert self.search is not None
-        return self.requests_get('/memberships/%s' % self.search, **kwargs).json()
-
-
-class Block(Blockchain):
-    """GET/POST a block from/to the blockchain."""
-
-    def __init__(self, connection_handler, number=None):
-        """
-        Use the number parameter in order to select a block number.
-
-        Arguments:
-        - `number`: block number to select
-        """
-
-        super(Block, self).__init__(connection_handler)
-
-        self.number = number
-
-    def __get__(self, **kwargs):
-        assert self.number is not None
-        return self.requests_get('/block/%d' % self.number, **kwargs).json()
-
-    def __post__(self, **kwargs):
-        assert 'block' in kwargs
-        assert 'signature' in kwargs
-
-        return self.requests_post('/block', **kwargs).json()
-
-
-class Current(Blockchain):
-    """GET, same as block/[number], but return last accepted block."""
-
-    def __get__(self, **kwargs):
-        return self.requests_get('/current', **kwargs).json()
-
-
-class Hardship(Blockchain):
-    """GET hardship level for given member's fingerprint for writing next block."""
-
-    def __init__(self, connection_handler, fingerprint):
-        """
-        Use the number parameter in order to select a block number.
-
-        Arguments:
-        - `fingerprint`: member fingerprint
-        """
-
-        super(Hardship, self).__init__(connection_handler)
-
-        self.fingerprint = fingerprint
-
-    def __get__(self, **kwargs):
-        assert self.fingerprint is not None
-        return self.requests_get('/hardship/%s' % self.fingerprint.upper(), **kwargs).json()
-
-
-class Newcomers(Blockchain):
-    """GET, return block numbers containing newcomers."""
-
-    def __get__(self, **kwargs):
-        return self.requests_get('/with/newcomers', **kwargs).json()
-
-
-class Certifications(Blockchain):
-    """GET, return block numbers containing certifications."""
-
-    def __get__(self, **kwargs):
-        return self.requests_get('/with/certs', **kwargs).json()
-
-
-class Joiners(Blockchain):
-    """GET, return block numbers containing joiners."""
-
-    def __get__(self, **kwargs):
-        return self.requests_get('/with/joiners', **kwargs).json()
-
-
-class Actives(Blockchain):
-    """GET, return block numbers containing actives."""
-
-    def __get__(self, **kwargs):
-        return self.requests_get('/with/actives', **kwargs).json()
-
-
-class Leavers(Blockchain):
-    """GET, return block numbers containing leavers."""
-
-    def __get__(self, **kwargs):
-        return self.requests_get('/with/leavers', **kwargs).json()
-
-
-class Excluded(Blockchain):
-    """GET, return block numbers containing excluded."""
-
-    def __get__(self, **kwargs):
-        return self.requests_get('/with/excluded', **kwargs).json()
-
-
-class UD(Blockchain):
-    """GET, return block numbers containing universal dividend."""
-
-    def __get__(self, **kwargs):
-        return self.requests_get('/with/ud', **kwargs).json()
-
-
-class TX(Blockchain):
-    """GET, return block numbers containing transactions."""
-
-    def __get__(self, **kwargs):
-        return self.requests_get('/with/tx', **kwargs).json()
diff --git a/lib/ucoinpy/api/bma/network/__init__.py b/lib/ucoinpy/api/bma/network/__init__.py
deleted file mode 100644
index 3d6c73ec6eebd9d0f96f32c94457c0b4084e3685..0000000000000000000000000000000000000000
--- a/lib/ucoinpy/api/bma/network/__init__.py
+++ /dev/null
@@ -1,35 +0,0 @@
-#
-# This program is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program.  If not, see <http://www.gnu.org/licenses/>.
-#
-# Authors:
-# Caner Candan <caner@candan.fr>, http://caner.candan.fr
-#
-
-from .. import API, logging
-
-logger = logging.getLogger("ucoin/network")
-
-
-class Network(API):
-    def __init__(self, connection_handler, module='network'):
-        super(Network, self).__init__(connection_handler, module)
-
-
-class Peering(Network):
-    """GET peering information about a peer."""
-
-    def __get__(self, **kwargs):
-        return self.requests_get('/peering', **kwargs).json()
-
-from . import peering
diff --git a/lib/ucoinpy/api/bma/network/peering/__init__.py b/lib/ucoinpy/api/bma/network/peering/__init__.py
deleted file mode 100644
index 3ad7cde34997eed39cced842659f2af92b0fe37d..0000000000000000000000000000000000000000
--- a/lib/ucoinpy/api/bma/network/peering/__init__.py
+++ /dev/null
@@ -1,51 +0,0 @@
-#
-# This program is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program.  If not, see <http://www.gnu.org/licenses/>.
-#
-# Authors:
-# Caner Candan <caner@candan.fr>, http://caner.candan.fr
-#
-
-from .. import Network, logging
-
-logger = logging.getLogger("ucoin/network/peering")
-
-
-class Base(Network):
-    def __init__(self, connection_handler):
-        super(Base, self).__init__(connection_handler, 'network/peering')
-
-
-class Peers(Base):
-    """GET peering entries of every node inside the currency network."""
-
-    def __get__(self, **kwargs):
-        """creates a generator with one peering entry per iteration."""
-
-        return self.merkle_easy_parser('/peers')
-
-    def __post__(self, **kwargs):
-        assert 'entry' in kwargs
-        assert 'signature' in kwargs
-
-        return self.requests_post('/peers', **kwargs).json()
-
-
-class Status(Base):
-    """POST a network status document to this node in order notify of its status."""
-
-    def __post__(self, **kwargs):
-        assert 'status' in kwargs
-        assert 'signature' in kwargs
-
-        return self.requests_post('/status', **kwargs).json()
diff --git a/lib/ucoinpy/api/bma/node/__init__.py b/lib/ucoinpy/api/bma/node/__init__.py
deleted file mode 100644
index f2b040f23e8300f16687016225c5f413ad5c9ebf..0000000000000000000000000000000000000000
--- a/lib/ucoinpy/api/bma/node/__init__.py
+++ /dev/null
@@ -1,37 +0,0 @@
-#
-# This program is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program.  If not, see <http://www.gnu.org/licenses/>.
-#
-# Authors:
-# Caner Candan <caner@candan.fr>, http://caner.candan.fr
-#
-
-from .. import API, logging
-
-logger = logging.getLogger("ucoin/node")
-
-
-class Node(API):
-    def __init__(self, connection_handler, module='node'):
-        super(Node, self).__init__(connection_handler, module)
-
-
-class Summary(Node):
-    """GET Certification data over a member."""
-
-    def __init__(self, connection_handler, module='node'):
-        super(Summary, self).__init__(connection_handler, module)
-
-    def __get__(self, **kwargs):
-        return self.requests_get('/summary', **kwargs).json()
-
diff --git a/lib/ucoinpy/api/bma/tx/__init__.py b/lib/ucoinpy/api/bma/tx/__init__.py
deleted file mode 100644
index 0242efaec698c54a9f53307b5cd0931101477ec0..0000000000000000000000000000000000000000
--- a/lib/ucoinpy/api/bma/tx/__init__.py
+++ /dev/null
@@ -1,46 +0,0 @@
-#
-# This program is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program.  If not, see <http://www.gnu.org/licenses/>.
-#
-# Authors:
-# Caner Candan <caner@candan.fr>, http://caner.candan.fr
-#
-
-from .. import API, logging
-
-logger = logging.getLogger("ucoin/tx")
-
-
-class Tx(API):
-    def __init__(self, connection_handler, module='tx'):
-        super(Tx, self).__init__(connection_handler, module)
-
-
-class Process(Tx):
-    """POST a transaction."""
-
-    def __post__(self, **kwargs):
-        assert 'transaction' in kwargs
-
-        return self.requests_post('/process', **kwargs).json()
-
-
-class Sources(Tx):
-    """Get transaction sources."""
-    def __init__(self, connection_handler, pubkey, module='tx'):
-        super(Tx, self).__init__(connection_handler, module)
-        self.pubkey = pubkey
-
-    def __get__(self, **kwargs):
-        assert self.pubkey is not None
-        return self.requests_get('/sources/%s' % self.pubkey, **kwargs).json()
diff --git a/lib/ucoinpy/api/bma/wot/__init__.py b/lib/ucoinpy/api/bma/wot/__init__.py
deleted file mode 100644
index ea9b9a236959a0def6cc9e28daac73a1df6f1446..0000000000000000000000000000000000000000
--- a/lib/ucoinpy/api/bma/wot/__init__.py
+++ /dev/null
@@ -1,99 +0,0 @@
-#
-# This program is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program.  If not, see <http://www.gnu.org/licenses/>.
-#
-# Authors:
-# Caner Candan <caner@candan.fr>, http://caner.candan.fr
-#
-
-from .. import API, logging
-
-logger = logging.getLogger("ucoin/wot")
-
-
-class WOT(API):
-    def __init__(self, connection_handler, module='wot'):
-        super(WOT, self).__init__(connection_handler, module)
-
-
-class Add(WOT):
-    """POST Public key data."""
-
-    def __post__(self, **kwargs):
-        assert 'pubkey' in kwargs
-        assert 'self_' in kwargs
-        assert 'other' in kwargs
-
-        return self.requests_post('/add', **kwargs).json()
-
-
-class Revoke(WOT):
-    """POST Public key data."""
-
-    def __post__(self, **kwargs):
-        assert 'pubkey' in kwargs
-        assert 'self_' in kwargs
-
-        return self.requests_post('/revoke', **kwargs).json()
-
-
-class Lookup(WOT):
-    """GET Public key data."""
-
-    def __init__(self, connection_handler, search, module='wot'):
-        super(WOT, self).__init__(connection_handler, module)
-
-        self.search = search
-
-    def __get__(self, **kwargs):
-        assert self.search is not None
-
-        return self.requests_get('/lookup/%s' % self.search, **kwargs).json()
-
-
-class CertifiersOf(WOT):
-    """GET Certification data over a member."""
-
-    def __init__(self, connection_handler, search, module='wot'):
-        super(WOT, self).__init__(connection_handler, module)
-
-        self.search = search
-
-    def __get__(self, **kwargs):
-        assert self.search is not None
-
-        return self.requests_get('/certifiers-of/%s' % self.search, **kwargs).json()
-
-
-class CertifiedBy(WOT):
-    """GET Certification data from a member."""
-
-    def __init__(self, connection_handler, search, module='wot'):
-        super(WOT, self).__init__(connection_handler, module)
-
-        self.search = search
-
-    def __get__(self, **kwargs):
-        assert self.search is not None
-
-        return self.requests_get('/certified-by/%s' % self.search, **kwargs).json()
-
-
-class Members(WOT):
-    """GET List all current members of the Web of Trust."""
-
-    def __init__(self, connection_handler, module='wot'):
-        super(WOT, self).__init__(connection_handler, module)
-
-    def __get__(self, **kwargs):
-        return self.requests_get('/members', **kwargs).json()
diff --git a/lib/ucoinpy/documents/__init__.py b/lib/ucoinpy/documents/__init__.py
deleted file mode 100644
index 9763c366155f445dd55be9022f8d2cacf381036a..0000000000000000000000000000000000000000
--- a/lib/ucoinpy/documents/__init__.py
+++ /dev/null
@@ -1,44 +0,0 @@
-"""
-Created on 3 déc. 2014
-
-@author: inso
-"""
-import base58
-import base64
-import re
-import logging
-from ..key import Base58Encoder
-
-class Document:
-    re_version = re.compile("Version: ([0-9]+)\n")
-    re_currency = re.compile("Currency: ([^\n]+)\n")
-    re_signature = re.compile("([A-Za-z0-9+/]+(?:=|==)?)\n")
-
-    def __init__(self, version, currency, signatures):
-        self.version = version
-        self.currency = currency
-        if signatures:
-            self.signatures = [s for s in signatures if s is not None]
-        else:
-            self.signatures = []
-
-    def sign(self, keys):
-        """
-        Sign the current document.
-        Warning : current signatures will be replaced with the new ones.
-        """
-        self.signatures = []
-        for key in keys:
-            signing = base64.b64encode(key.signature(bytes(self.raw(), 'ascii')))
-            logging.debug("Signature : \n{0}".format(signing.decode("ascii")))
-            self.signatures.append(signing.decode("ascii"))
-
-    def signed_raw(self):
-        """
-        If keys are None, returns the raw + current signatures
-        If keys are present, returns the raw signed by these keys
-        """
-        raw = self.raw()
-        signed = "\n".join(self.signatures)
-        signed_raw = raw + signed + "\n"
-        return signed_raw
diff --git a/lib/ucoinpy/documents/block.py b/lib/ucoinpy/documents/block.py
deleted file mode 100644
index 00ce0f779ce1fc9cef56a5f5b41ecabedf6bd2bd..0000000000000000000000000000000000000000
--- a/lib/ucoinpy/documents/block.py
+++ /dev/null
@@ -1,298 +0,0 @@
-"""
-Created on 2 déc. 2014
-
-@author: inso
-"""
-
-from .. import PROTOCOL_VERSION
-from . import Document
-from .certification import SelfCertification, Certification
-from .membership import Membership
-from .transaction import Transaction
-
-import re
-import logging
-
-
-class Block(Document):
-    """
-Version: VERSION
-Type: Block
-Currency: CURRENCY
-Nonce: NONCE
-Number: BLOCK_NUMBER
-PoWMin: NUMBER_OF_ZEROS
-Time: GENERATED_ON
-MedianTime: MEDIAN_DATE
-UniversalDividend: DIVIDEND_AMOUNT
-Issuer: ISSUER_KEY
-PreviousHash: PREVIOUS_HASH
-PreviousIssuer: PREVIOUS_ISSUER_KEY
-Parameters: PARAMETERS
-MembersCount: WOT_MEM_COUNT
-Identities:
-PUBLIC_KEY:SIGNATURE:TIMESTAMP:USER_ID
-...
-Joiners:
-PUBLIC_KEY:SIGNATURE:NUMBER:HASH:TIMESTAMP:USER_ID
-...
-Actives:
-PUBLIC_KEY:SIGNATURE:NUMBER:HASH:TIMESTAMP:USER_ID
-...
-Leavers:
-PUBLIC_KEY:SIGNATURE:NUMBER:HASH:TIMESTAMP:USER_ID
-...
-Excluded:
-PUBLIC_KEY
-...
-Certifications:
-PUBKEY_FROM:PUBKEY_TO:BLOCK_NUMBER:SIGNATURE
-...
-Transactions:
-COMPACT_TRANSACTION
-...
-BOTTOM_SIGNATURE
-    """
-
-    re_type = re.compile("Type: (Block)\n")
-    re_noonce = re.compile("Nonce: ([0-9]+)\n")
-    re_number = re.compile("Number: ([0-9]+)\n")
-    re_powmin = re.compile("PoWMin: ([0-9]+)\n")
-    re_time = re.compile("Time: ([0-9]+)\n")
-    re_mediantime = re.compile("MedianTime: ([0-9]+)\n")
-    re_universaldividend = re.compile("UniversalDividend: ([0-9]+)\n")
-    re_issuer = re.compile("Issuer: ([1-9A-Za-z][^OIl]{42,45})\n")
-    re_previoushash = re.compile("PreviousHash: ([0-9a-fA-F]{5,40})\n")
-    re_previousissuer = re.compile("PreviousIssuer: ([1-9A-Za-z][^OIl]{42,45})\n")
-    re_parameters = re.compile("Parameters: ([0-9]+\.[0-9]+):([0-9]+):([0-9]+):([0-9]+):\
-([0-9]+):([0-9]+):([0-9]+):([0-9]+):([0-9]+):([0-9]+):([0-9]+):([0-9]+):([0-9]+):\
-([0-9]+\.[0-9]+)\n")
-    re_memberscount = re.compile("MembersCount: ([0-9]+)\n")
-    re_identities = re.compile("Identities:\n")
-    re_joiners = re.compile("Joiners:\n")
-    re_actives = re.compile("Actives:\n")
-    re_leavers = re.compile("Leavers:\n")
-    re_excluded = re.compile("Excluded:\n")
-    re_exclusion = re.compile("([1-9A-Za-z][^OIl]{42,45})\n")
-    re_certifications = re.compile("Certifications:\n")
-    re_transactions = re.compile("Transactions:\n")
-
-    Empty_Hash = "DA39A3EE5E6B4B0D3255BFEF95601890AFD80709"
-
-    def __init__(self, version, currency, noonce, number, powmin, time,
-                 mediantime, ud, issuer, prev_hash, prev_issuer,
-                 parameters, members_count, identities, joiners,
-                 actives, leavers, excluded, certifications,
-                 transactions, signature):
-        """
-        Constructor
-        """
-        super().__init__(version, currency, [signature])
-        self.noonce = noonce
-        self.number = number
-        self.powmin = powmin
-        self.time = time
-        self.mediantime = mediantime
-        self.ud = ud
-        self.issuer = issuer
-        self.prev_hash = prev_hash
-        self.prev_issuer = prev_issuer
-        self.parameters = parameters
-        self.members_count = members_count
-        self.identities = identities
-        self.joiners = joiners
-        self.actives = actives
-        self.leavers = leavers
-        self.excluded = excluded
-        self.certifications = certifications
-        self.transactions = transactions
-
-    @classmethod
-    def from_signed_raw(cls, raw):
-        lines = raw.splitlines(True)
-        n = 0
-
-        version = int(Block.re_version.match(lines[n]).group(1))
-        n = n + 1
-
-        Block.re_type.match(lines[n]).group(1)
-        n = n + 1
-
-        currency = Block.re_currency.match(lines[n]).group(1)
-        n = n + 1
-
-        noonce = int(Block.re_noonce.match(lines[n]).group(1))
-        n = n + 1
-
-        number = int(Block.re_number.match(lines[n]).group(1))
-        n = n + 1
-
-        powmin = int(Block.re_powmin.match(lines[n]).group(1))
-        n = n + 1
-
-        time = int(Block.re_time.match(lines[n]).group(1))
-        n = n + 1
-
-        mediantime = int(Block.re_mediantime.match(lines[n]).group(1))
-        n = n + 1
-
-        ud = Block.re_universaldividend.match(lines[n])
-        if ud is not None:
-            ud = int(ud.group(1))
-            n = n + 1
-
-        issuer = Block.re_issuer.match(lines[n]).group(1)
-        n = n + 1
-
-        prev_hash = None
-        prev_issuer = None
-        if number > 0:
-            prev_hash = Block.re_previoushash.match(lines[n]).group(1)
-            n = n + 1
-
-            prev_issuer = Block.re_previousissuer.match(lines[n]).group(1)
-            n = n + 1
-
-        parameters = None
-        if number == 0:
-            parameters = Block.re_parameters.match(lines[n]).groups()
-            n = n + 1
-
-        members_count = int(Block.re_memberscount.match(lines[n]).group(1))
-        n = n + 1
-
-        identities = []
-        joiners = []
-        actives = []
-        leavers = []
-        excluded = []
-        certifications = []
-        transactions = []
-
-        if Block.re_identities.match(lines[n]) is not None:
-            n = n + 1
-            while Block.re_joiners.match(lines[n]) is None:
-                selfcert = SelfCertification.from_inline(version, currency, lines[n])
-                identities.append(selfcert)
-                n = n + 1
-
-        if Block.re_joiners.match(lines[n]):
-            n = n + 1
-            while Block.re_actives.match(lines[n]) is None:
-                membership = Membership.from_inline(version, currency, "IN", lines[n])
-                joiners.append(membership)
-                n = n + 1
-
-        if Block.re_actives.match(lines[n]):
-            n = n + 1
-            while Block.re_leavers.match(lines[n]) is None:
-                membership = Membership.from_inline(version, currency, "IN", lines[n])
-                actives.append(membership)
-                n = n + 1
-
-        if Block.re_leavers.match(lines[n]):
-            n = n + 1
-            while Block.re_excluded.match(lines[n]) is None:
-                membership = Membership.from_inline(version, currency, "OUT", lines[n])
-                leavers.append(membership)
-                n = n + 1
-
-        if Block.re_excluded.match(lines[n]):
-            n = n + 1
-            while Block.re_certifications.match(lines[n]) is None:
-                membership = Block.re_exclusion.match(lines[n]).group(1)
-                excluded.append(membership)
-                n = n + 1
-
-        if Block.re_certifications.match(lines[n]):
-            n = n + 1
-            while Block.re_transactions.match(lines[n]) is None:
-                certification = Certification.from_inline(version, currency,
-                                                          prev_hash, lines[n])
-                certifications.append(certification)
-                n = n + 1
-
-        if Block.re_transactions.match(lines[n]):
-            n = n + 1
-            while not Block.re_signature.match(lines[n]):
-                tx_lines = ""
-                header_data = Transaction.re_header.match(lines[n])
-                version = int(header_data.group(1))
-                issuers_num = int(header_data.group(2))
-                inputs_num = int(header_data.group(3))
-                outputs_num = int(header_data.group(4))
-                has_comment = int(header_data.group(5))
-                tx_max = n+issuers_num*2+inputs_num+outputs_num+has_comment+1
-                for i in range(n, tx_max):
-                    tx_lines += lines[n]
-                    n = n + 1
-                transaction = Transaction.from_compact(currency, tx_lines)
-                transactions.append(transaction)
-
-        signature = Block.re_signature.match(lines[n]).group(1)
-
-        return cls(version, currency, noonce, number, powmin, time,
-                   mediantime, ud, issuer, prev_hash, prev_issuer,
-                   parameters, members_count, identities, joiners,
-                   actives, leavers, excluded, certifications,
-                   transactions, signature)
-
-    def raw(self):
-        doc = """Version: {0}
-Type: Block
-Currency: {1}
-Nonce: {2}
-Number: {3}
-PoWMin: {4}
-Time: {5}
-MedianTime: {6}
-""".format(self.version,
-                      self.currency,
-                      self.noonce,
-                      self.number,
-                      self.powmin,
-                      self.time,
-                      self.mediantime)
-        if self.ud:
-            doc += "UniversalDividend: {0}\n".format(self.ud)
-
-        doc += "Issuer: {0}\n".format(self.issuer)
-
-        if self.number == 0:
-            str_params = ":".join(self.parameters)
-            doc += "Parameters: {0}\n".format(str_params)
-        else:
-            doc += "PreviousHash: {0}\n\
-PreviousIssuer: {1}\n".format(self.prev_hash, self.prev_issuer)
-
-        doc += "MembersCount: {0}\n".format(self.members_count)
-
-        doc += "Identities:\n"
-        for identity in self.identities:
-            doc += "{0}\n".format(identity.inline())
-
-        doc += "Joiners:\n"
-        for joiner in self.joiners:
-            doc += "{0}\n".format(joiner.inline())
-
-        doc += "Actives:\n"
-        for active in self.actives:
-            doc += "{0}\n".format(active.inline())
-
-        doc += "Leavers:\n"
-        for leaver in self.leavers:
-            doc += "{0]\n".format(leaver.inline())
-
-        doc += "Excluded:\n"
-        for exclude in self.excluded:
-            doc += "{0}\n".format(exclude)
-
-        doc += "Certifications:\n"
-        for cert in self.certifications:
-            doc += "{0}\n".format(cert.inline())
-
-        doc += "Transactions:\n"
-        for transaction in self.transactions:
-            doc += "{0}\n".format(transaction.compact())
-
-        return doc
\ No newline at end of file
diff --git a/lib/ucoinpy/documents/certification.py b/lib/ucoinpy/documents/certification.py
deleted file mode 100644
index d7e79adb550dcc1ce15c10dc20fa7e0629c40758..0000000000000000000000000000000000000000
--- a/lib/ucoinpy/documents/certification.py
+++ /dev/null
@@ -1,132 +0,0 @@
-"""
-Created on 2 déc. 2014
-
-@author: inso
-"""
-import re
-import base64
-import logging
-
-from . import Document
-
-
-class SelfCertification(Document):
-    """
-    A document discribing a self certification.
-    """
-
-    re_inline = re.compile("([1-9A-Za-z][^OIl]{42,45}):([A-Za-z0-9+/]+(?:=|==)?):([0-9]+):([^\n]+)\n")
-    re_uid = re.compile("UID:([^\n]+)\n")
-    re_timestamp = re.compile("META:TS:([0-9]+)\n")
-
-    def __init__(self, version, currency, pubkey, ts, uid, signature):
-        if signature:
-            super().__init__(version, currency, [signature])
-        else:
-            super().__init__(version, currency, [])
-        self.pubkey = pubkey
-        self.timestamp = ts
-        self.uid = uid
-
-    @classmethod
-    def from_inline(cls, version, currency, inline):
-        selfcert_data = SelfCertification.re_inline.match(inline)
-        pubkey = selfcert_data.group(1)
-        signature = selfcert_data.group(2)
-        ts = int(selfcert_data.group(3))
-        uid = selfcert_data.group(4)
-        return cls(version, currency, pubkey, ts, uid, signature)
-
-    def raw(self):
-        return """UID:{0}
-META:TS:{1}
-""".format(self.uid, self.timestamp)
-
-    def inline(self):
-        return "{0}:{1}:{2}:{3}".format(self.pubkey, self.signatures[0],
-                                    self.timestamp, self.uid)
-
-
-class Certification(Document):
-    """
-    A document describing a certification.
-    """
-
-    re_inline = re.compile("([1-9A-Za-z][^OIl]{42,45}):\
-([1-9A-Za-z][^OIl]{42,45}):([0-9]+):([A-Za-z0-9+/]+(?:=|==)?)\n")
-    re_timestamp = re.compile("META:TS:([0-9]+)-([0-9a-fA-F]{5,40})\n")
-
-    def __init__(self, version, currency, pubkey_from, pubkey_to,
-                 blocknumber, blockhash, signature):
-        """
-        Constructor
-        """
-        super().__init__(version, currency, [signature])
-        self.pubkey_from = pubkey_from
-        self.pubkey_to = pubkey_to
-        self.blockhash = blockhash
-        self.blocknumber = blocknumber
-
-    @classmethod
-    def from_inline(cls, version, currency, blockhash, inline):
-        cert_data = Certification.re_inline.match(inline)
-        pubkey_from = cert_data.group(1)
-        pubkey_to = cert_data.group(2)
-        blocknumber = int(cert_data.group(3))
-        if blocknumber == 0:
-            blockhash = "DA39A3EE5E6B4B0D3255BFEF95601890AFD80709"
-        signature = cert_data.group(4)
-        return cls(version, currency, pubkey_from, pubkey_to,
-                   blockhash, blocknumber, signature)
-
-    def raw(self, selfcert):
-        return """{0}META:TS:{1}-{2}
-""".format(selfcert.signed_raw(), self.blocknumber, self.blockhash)
-
-
-    def sign(self, selfcert, keys):
-        """
-        Sign the current document.
-        Warning : current signatures will be replaced with the new ones.
-        """
-        self.signatures = []
-        for key in keys:
-            signing = base64.b64encode(key.signature(bytes(self.raw(selfcert), 'ascii')))
-            logging.debug("Signature : \n{0}".format(signing.decode("ascii")))
-            self.signatures.append(signing.decode("ascii"))
-
-    def signed_raw(self, selfcert):
-        raw = self.raw(selfcert)
-        signed = "\n".join(self.signatures)
-        signed_raw = raw + signed + "\n"
-        return signed_raw
-
-    def inline(self):
-        return "{0}:{1}:{2}:{3}".format(self.pubkey_from, self.pubkey_to,
-                                        self.blocknumber, self.signatures[0])
-
-
-class Revocation(Document):
-    """
-    A document describing a self-revocation.
-    """
-    def __init__(self, version, currency, signature):
-        """
-        Constructor
-        """
-        super().__init__(version, currency, [signature])
-
-    def raw(self, selfcert):
-        return """{0}META:REVOKE
-""".format(selfcert.signed_raw())
-
-    def sign(self, selfcert, keys):
-        """
-        Sign the current document.
-        Warning : current signatures will be replaced with the new ones.
-        """
-        self.signatures = []
-        for key in keys:
-            signing = base64.b64encode(key.signature(bytes(self.raw(selfcert), 'ascii')))
-            self.signatures.append(signing.decode("ascii"))
-
diff --git a/lib/ucoinpy/documents/membership.py b/lib/ucoinpy/documents/membership.py
deleted file mode 100644
index 570110e29772f1ed473f02a5c788cc4505cbe2ca..0000000000000000000000000000000000000000
--- a/lib/ucoinpy/documents/membership.py
+++ /dev/null
@@ -1,122 +0,0 @@
-"""
-Created on 2 déc. 2014
-
-@author: inso
-"""
-from .. import PROTOCOL_VERSION
-from . import Document
-
-import re
-
-
-class Membership(Document):
-    """
-    This is a utility class to generate membership documents :
-    Version: VERSION
-    Type: Membership
-    Currency: CURRENCY_NAME
-    Issuer: ISSUER
-    Block: NUMBER-HASH
-    Membership: MEMBERSHIP_TYPE
-    UserID: USER_ID
-    CertTS: CERTIFICATION_TS
-    """
-
-    # PUBLIC_KEY:SIGNATURE:NUMBER:HASH:TIMESTAMP:USER_ID
-    re_inline = re.compile("([1-9A-Za-z][^OIl]{42,45}):([A-Za-z0-9+/]+(?:=|==)?):\
-([0-9]+):([0-9a-fA-F]{5,40}):([0-9]+):([^\n]+)\n")
-    re_type = re.compile("Type: (Membership)")
-    re_issuer = re.compile("Issuer: ([1-9A-Za-z][^OIl]{42,45})\n")
-    re_block = re.compile("Block: ([0-9]+)-([0-9a-fA-F]{5,40})\n")
-    re_membership_type = re.compile("Membership: (IN|OUT)")
-    re_userid = re.compile("UserID: ([^\n]+)\n")
-    re_certts = re.compile("CertTS: ([0-9]+)\n")
-
-
-
-    def __init__(self, version, currency, issuer, block_number, block_hash,
-                 membership_type, uid, cert_ts, signature):
-        """
-        Constructor
-        """
-        super().__init__(version, currency, [signature])
-        self.issuer = issuer
-        self.block_number = block_number
-        self.block_hash = block_hash
-        self.membership_type = membership_type
-        self.uid = uid
-        self.cert_ts = cert_ts
-
-    @classmethod
-    def from_inline(cls, version, currency, membership_type, inline):
-        data = Membership.re_inline.match(inline)
-        issuer = data.group(1)
-        signature = data.group(2)
-        block_number = int(data.group(3))
-        block_hash = data.group(4)
-        cert_ts = int(data.group(5))
-        uid = data.group(6)
-        return cls(version, currency, issuer, block_number,
-                   block_hash, membership_type, uid, cert_ts, signature)
-
-    @classmethod
-    def from_signed_raw(cls, raw, signature=None):
-        lines = raw.splitlines(True)
-        n = 0
-
-        version = int(Membership.re_version.match(lines[n]).group(1))
-        n = n + 1
-
-        Membership.re_type.match(lines[n]).group(1)
-        n = n + 1
-
-        currency = Membership.re_currency.match(lines[n]).group(1)
-        n = n + 1
-
-        issuer = Membership.re_issuer.match(lines[n]).group(1)
-        n = n + 1
-
-        blockid = Membership.re_block.match(lines[n])
-        blocknumber = int(blockid.group(1))
-        blockhash = blockid.group(2)
-        n = n + 1
-
-        membership_type = Membership.re_membership_type.match(lines[n]).group(1)
-        n = n + 1
-
-        uid = Membership.re_userid.match(lines[n]).group(1)
-        n = n + 1
-
-        cert_ts = int(Membership.re_certts.match(lines[n]).group(1))
-        n = n + 1
-
-        signature = Membership.re_signature.match(lines[n]).group(1)
-        n = n + 1
-
-        return cls(version, currency, issuer, blocknumber, blockhash,
-                   membership_type, uid, cert_ts, signature)
-
-    def raw(self):
-        return """Version: {0}
-Type: Membership
-Currency: {1}
-Issuer: {2}
-Block: {3}-{4}
-Membership: {5}
-UserID: {6}
-CertTS: {7}
-""".format(self.version,
-                      self.currency,
-                      self.issuer,
-                      self.block_number, self.block_hash,
-                      self.membership_type,
-                      self.uid,
-                      self.cert_ts)
-
-    def inline(self):
-        return "{0}:{1}:{2}:{3}:{4}:{5}".format(self.issuer,
-                                        self.signatures[0],
-                                        self.block_number,
-                                        self.block_hash,
-                                        self.cert_ts,
-                                        self.uid)
diff --git a/lib/ucoinpy/documents/peer.py b/lib/ucoinpy/documents/peer.py
deleted file mode 100644
index 6ca7606c6429b7521318720b0336649676a70dd6..0000000000000000000000000000000000000000
--- a/lib/ucoinpy/documents/peer.py
+++ /dev/null
@@ -1,154 +0,0 @@
-"""
-Created on 2 déc. 2014
-
-@author: inso
-"""
-
-import re
-
-from ..api.bma import ConnectionHandler
-from . import Document
-from .. import PROTOCOL_VERSION, MANAGED_API
-
-
-class Peer(Document):
-    """
-    Version: VERSION
-    Type: Peer
-    Currency: CURRENCY_NAME
-    PublicKey: NODE_PUBLICKEY
-    Block: BLOCK
-    Endpoints:
-    END_POINT_1
-    END_POINT_2
-    END_POINT_3
-    [...]
-    """
-
-    re_type = re.compile("Type: (Peer)")
-    re_pubkey = re.compile("PublicKey: ([1-9A-Za-z][^OIl]{42,45})\n")
-    re_block = re.compile("Block: ([0-9]+-[0-9a-fA-F]{5,40})\n")
-    re_endpoints = re.compile("Endpoints:\n")
-
-    def __init__(self, version, currency, pubkey, blockid,
-                 endpoints, signature):
-        super().__init__(version, currency, [signature])
-
-        self.pubkey = pubkey
-        self.blockid = blockid
-        self.endpoints = endpoints
-
-    @classmethod
-    def from_signed_raw(cls, raw):
-        lines = raw.splitlines(True)
-        n = 0
-
-        version = int(Peer.re_version.match(lines[n]).group(1))
-        n = n + 1
-
-        Peer.re_type.match(lines[n]).group(1)
-        n = n + 1
-
-        currency = Peer.re_currency.match(lines[n]).group(1)
-        n = n + 1
-
-        pubkey = Peer.re_pubkey.match(lines[n]).group(1)
-        n = n + 1
-
-        blockid = Peer.re_block.match(lines[n]).group(1)
-        n = n + 1
-
-        Peer.re_endpoints.match(lines[n])
-        n = n + 1
-
-        endpoints = []
-        while not Peer.re_signature.match(lines[n]):
-            endpoint = Endpoint.from_inline(lines[n])
-            endpoints.append(endpoint)
-            n = n + 1
-
-        signature = Peer.re_signature.match(lines[n]).group(1)
-
-        return cls(version, currency, pubkey, blockid, endpoints, signature)
-
-    def raw(self):
-        doc = """Version: {0}
-Type: Peer
-Currency: {1}
-PublicKey: {2}
-Block: {3}
-Endpoints:
-""".format(self.version, self.currency, self.pubkey, self.blockid)
-
-        for endpoint in self.endpoints:
-            doc += "{0}\n".format(endpoint.inline())
-
-        doc += "{0}\n".format(self.signatures[0])
-        return doc
-
-
-class Endpoint():
-    """
-    Describing endpoints
-    """
-
-    @staticmethod
-    def from_inline(inline):
-        for api in MANAGED_API:
-            if (inline.startswith(api)):
-                if (api == "BASIC_MERKLED_API"):
-                    return BMAEndpoint.from_inline(inline)
-        return UnknownEndpoint.from_inline(inline)
-
-
-class UnknownEndpoint(Endpoint):
-
-    def __init__(self, api, properties):
-        self.api = api
-        self.properties = properties
-
-    @classmethod
-    def from_inline(cls, inline):
-        api = inline.split()[0]
-        properties = inline.split()[1:]
-        return cls(api, properties)
-
-    def inline(self):
-        doc = self.api
-        for p in self.properties:
-            doc += " {0}".format(p)
-        return doc
-
-
-class BMAEndpoint(Endpoint):
-    re_inline = re.compile('^BASIC_MERKLED_API(?: ([a-z0-9-_.]*(?:.[a-zA-Z])))?(?: ((?:[0-9.]{1,4}){4}))?(?: ((?:[0-9a-f:]{4,5}){4,8}))?(?: ([0-9]+))$')
-
-    @classmethod
-    def from_inline(cls, inline):
-        m = BMAEndpoint.re_inline.match(inline)
-        server = m.group(1)
-        ipv4 = m.group(2)
-        ipv6 = m.group(3)
-        port = int(m.group(4))
-        return cls(server, ipv4, ipv6, port)
-
-    def __init__(self, server, ipv4, ipv6, port):
-        self.server = server
-        self.ipv4 = ipv4
-        self.ipv6 = ipv6
-        self.port = port
-
-    def inline(self):
-        return "BASIC_MERKLED_API{DNS}{IPv4}{IPv6}{PORT}" \
-                    .format(DNS=(" {0}".format(self.server) if self.server else ""),
-                            IPv4=(" {0}".format(self.ipv4) if self.ipv4 else ""),
-                            IPv6=(" {0}".format(self.ipv6) if self.ipv6 else ""),
-                            PORT=(" {0}".format(self.port) if self.port else ""))
-
-    def conn_handler(self):
-        if self.server:
-            return ConnectionHandler(self.server, self.port)
-        elif self.ipv4:
-            return ConnectionHandler(self.ipv4, self.port)
-        else:
-            return ConnectionHandler(self.ipv6, self.port)
diff --git a/lib/ucoinpy/documents/status.py b/lib/ucoinpy/documents/status.py
deleted file mode 100644
index f11e7542c338f57831f6972f11a260a10d0d0254..0000000000000000000000000000000000000000
--- a/lib/ucoinpy/documents/status.py
+++ /dev/null
@@ -1,81 +0,0 @@
-"""
-Created on 2 déc. 2014
-
-@author: inso
-"""
-
-import re
-from . import Document
-
-
-class Status(Document):
-    """
-    Version: VERSION
-    Type: Status
-    Currency: CURRENCY_NAME
-    Status: STATUS
-    Block: BLOCK
-    From: SENDER
-    To: RECIPIENT
-    """
-
-    re_type = re.compile("Type: (Status)")
-    re_status = re.compile("Status: (NEW|NEW_BACK|UP|UP_BACK|DOWN)")
-    re_block = re.compile("Block: ([0-9]+-[0-9a-fA-F]{5,40})\n")
-    re_from = re.compile("From: ([1-9A-Za-z][^OIl]{42,45})\n")
-    re_to = re.compile("To: ([1-9A-Za-z][^OIl]{42,45})\n")
-
-    def __init__(self, version, currency, status, blockid, sender,
-                 recipient, signature):
-        """
-        Constructor
-        """
-        super().__init__(version, currency, [signature])
-
-        self.status = status
-        self.blockid = blockid
-        self.sender = sender
-        self.recipient = recipient
-
-    @classmethod
-    def from_signed_raw(cls, raw):
-        lines = raw.splitlines(True)
-        n = 0
-
-        version = int(Status.re_version.match(lines[n]).group(1))
-        n = n + 1
-
-        Status.re_type.match(lines[n]).group(1)
-        n = n + 1
-
-        currency = Status.re_currency.match(lines[n]).group(1)
-        n = n + 1
-
-        status = Status.re_status.match(lines[n]).group(1)
-        n = n + 1
-
-        blockid = Status.re_block.match(lines[n]).group(1)
-        n = n + 1
-
-        sender = Status.re_from.match(lines[n]).group(1)
-        n = n + 1
-
-        recipient = Status.re_to.match(lines[n]).group(1)
-        n = n + 1
-
-        signature = Status.re_signature.match(lines[n]).group(1)
-        n = n + 1
-
-        return cls(version, currency, status, blockid,
-                   sender, recipient, signature)
-
-    def raw(self):
-        return """Version: {0}
-Type: Status
-Currency: {1}
-Status: {2}
-Block: {3}
-From: {4}
-To: {5}
-""".format(self.version, self.currency, self.status,
-           self.blockid, self.sender, self.recipient)
diff --git a/lib/ucoinpy/documents/transaction.py b/lib/ucoinpy/documents/transaction.py
deleted file mode 100644
index 0a9d40d21b797cd1dfd7f35bcaac230c73170c6a..0000000000000000000000000000000000000000
--- a/lib/ucoinpy/documents/transaction.py
+++ /dev/null
@@ -1,298 +0,0 @@
-"""
-Created on 2 déc. 2014
-
-@author: inso
-"""
-
-from . import Document
-import re
-import logging
-
-class Transaction(Document):
-    """
-Document format :
-Version: VERSION
-Type: Transaction
-Currency: CURRENCY_NAME
-Issuers:
-PUBLIC_KEY
-...
-Inputs:
-INDEX:SOURCE:NUMBER:FINGERPRINT:AMOUNT
-...
-Outputs:
-PUBLIC_KEY:AMOUNT
-...
-Comment: COMMENT
-...
-
-
-Compact format :
-TX:VERSION:NB_ISSUERS:NB_INPUTS:NB_OUTPUTS:HAS_COMMENT
-PUBLIC_KEY:INDEX
-...
-INDEX:SOURCE:FINGERPRINT:AMOUNT
-...
-PUBLIC_KEY:AMOUNT
-...
-COMMENT
-SIGNATURE
-...
-    """
-
-    re_type = re.compile("Type: (Transaction)\n")
-    re_header = re.compile("TX:([0-9]+):([0-9]+):([0-9]+):([0-9]+):(0|1)\n")
-    re_issuers = re.compile("Issuers:\n")
-    re_inputs = re.compile("Inputs:\n")
-    re_outputs = re.compile("Outputs:\n")
-    re_compact_comment = re.compile("([^\n]+)\n")
-    re_comment = re.compile("Comment: ([^\n]*)\n")
-    re_pubkey = re.compile("([1-9A-Za-z][^OIl]{42,45})\n")
-
-    def __init__(self, version, currency, issuers, inputs, outputs,
-                 comment, signatures):
-        """
-        Constructor
-        """
-        super().__init__(version, currency, signatures)
-
-        self.issuers = issuers
-        self.inputs = inputs
-        self.outputs = outputs
-        self.comment = comment
-
-    @classmethod
-    def from_compact(cls, currency, compact):
-        lines = compact.splitlines(True)
-        n = 0
-
-        header_data = Transaction.re_header.match(lines[n])
-        version = int(header_data.group(1))
-        issuers_num = int(header_data.group(2))
-        inputs_num = int(header_data.group(3))
-        outputs_num = int(header_data.group(4))
-        has_comment = int(header_data.group(5))
-        n = n + 1
-
-        issuers = []
-        inputs = []
-        outputs = []
-        signatures = []
-        for i in range(0, issuers_num):
-            issuer = Transaction.re_pubkey.match(lines[n]).group(1)
-            issuers.append(issuer)
-            n = n + 1
-
-        for i in range(0, inputs_num):
-            input_source = InputSource.from_inline(lines[n])
-            inputs.append(input_source)
-            n = n + 1
-
-        for i in range(0, outputs_num):
-            output_source = OutputSource.from_inline(lines[n])
-            outputs.append(output_source)
-            n = n + 1
-
-        comment = ""
-        if has_comment == 1:
-            comment = Transaction.re_compact_comment.match(lines[n]).group(1)
-            n = n + 1
-
-        while n < len(lines):
-            signatures.append(Transaction.re_signature.match(lines[n]).group(1))
-            n = n + 1
-
-        return cls(version, currency, issuers, inputs, outputs, comment, signatures)
-
-    @classmethod
-    def from_signed_raw(cls, raw):
-        lines = raw.splitlines(True)
-        n = 0
-
-        version = int(Transaction.re_version.match(lines[n]).group(1))
-        n = n + 1
-
-        Transaction.re_type.match(lines[n]).group(1)
-        n = n + 1
-
-        currency = Transaction.re_currency.match(lines[n]).group(1)
-        n = n + 1
-
-        issuers = []
-        inputs = []
-        outputs = []
-        signatures = []
-
-        if Transaction.re_issuers.match(lines[n]):
-            n = n + 1
-            while Transaction.re_inputs.match(lines[n]) is None:
-                issuer = Transaction.re_pubkey.match(lines[n]).group(1)
-                issuers.append(issuer)
-                n = n + 1
-
-        if Transaction.re_inputs.match(lines[n]):
-            n = n + 1
-            while Transaction.re_outputs.match(lines[n]) is None:
-                input_source = InputSource.from_inline(lines[n])
-                inputs.append(input_source)
-                n = n + 1
-
-        if Transaction.re_outputs.match(lines[n]) is not None:
-            n = n + 1
-            while not Transaction.re_comment.match(lines[n]):
-                output = OutputSource.from_inline(lines[n])
-                outputs.append(output)
-                n = n + 1
-
-        comment = Transaction.re_comment.match(lines[n]).group(1)
-        n = n + 1
-
-        if Transaction.re_signature.match(lines[n]) is not None:
-            while n < len(lines):
-                sign = Transaction.re_signature.match(lines[n]).group(1)
-                signatures.append(sign)
-                n = n + 1
-
-        return cls(version, currency, issuers, inputs, outputs,
-                   comment, signatures)
-
-    def raw(self):
-        doc = """Version: {0}
-Type: Transaction
-Currency: {1}
-Issuers:
-""".format(self.version,
-                   self.currency)
-
-        for p in self.issuers:
-            doc += "{0}\n".format(p)
-
-        doc += "Inputs:\n"
-        for i in self.inputs:
-            doc += "{0}\n".format(i.inline())
-
-        doc += "Outputs:\n"
-        for o in self.outputs:
-            doc += "{0}\n".format(o.inline())
-
-        doc += "Comment: "
-        doc += "{0}\n".format(self.comment)
-
-        return doc
-
-    def compact(self):
-        """
-        Return a transaction in its compact format.
-        """
-        """TX:VERSION:NB_ISSUERS:NB_INPUTS:NB_OUTPUTS:HAS_COMMENT
-PUBLIC_KEY:INDEX
-...
-INDEX:SOURCE:FINGERPRINT:AMOUNT
-...
-PUBLIC_KEY:AMOUNT
-...
-COMMENT
-"""
-        doc = "TX:{0}:{1}:{2}:{3}:{4}\n".format(self.version,
-                                              len(self.issuers),
-                                              len(self.inputs),
-                                              len(self.outputs),
-                                              '1' if self.comment != "" else '0')
-        for pubkey in self.issuers:
-            doc += "{0}\n".format(pubkey)
-        for i in self.inputs:
-            doc += "{0}\n".format(i.compact())
-        for o in self.outputs:
-            doc += "{0}\n".format(o.inline())
-        if self.comment != "":
-            doc += "{0}\n".format(self.comment)
-        for s in self.signatures:
-            doc += "{0}\n".format(s)
-
-        return doc
-
-
-class SimpleTransaction(Transaction):
-    """
-As transaction class, but for only one issuer.
-...
-    """
-    def __init__(self, version, currency, issuer,
-                 single_input, outputs, comment, signature):
-        """
-        Constructor
-        """
-        super().__init__(version, currency, [issuer], [single_input],
-              outputs, comment, [signature])
-
-
-class InputSource():
-    """
-    A Transaction INPUT
-
-    Compact :
-    INDEX:SOURCE:FINGERPRINT:AMOUNT
-    """
-    re_inline = re.compile("([0-9]+):(D|T):([0-9]+):\
-([0-9a-fA-F]{5,40}):([0-9]+)\n")
-    re_compact = re.compile("([0-9]+):(D|T):([0-9a-fA-F]{5,40}):([0-9]+)\n")
-
-    def __init__(self, index, source, number, txhash, amount):
-        self.index = index
-        self.source = source
-        self.number = number
-        self.txhash = txhash
-        self.amount = amount
-
-    @classmethod
-    def from_inline(cls, inline):
-        data = InputSource.re_inline.match(inline)
-        index = int(data.group(1))
-        source = data.group(2)
-        number = int(data.group(3))
-        txhash = data.group(4)
-        amount = int(data.group(5))
-        return cls(index, source, number, txhash, amount)
-
-    @classmethod
-    def from_bma(cls, bma_data):
-        index = None
-        source = bma_data['type']
-        number = bma_data['number']
-        txhash = bma_data['fingerprint']
-        amount = bma_data['amount']
-        return cls(index, source, number, txhash, amount)
-
-    def inline(self):
-        return "{0}:{1}:{2}:{3}:{4}".format(self.index,
-                                            self.source,
-                                            self.number,
-                                            self.txhash,
-                                            self.amount)
-
-    def compact(self):
-        return "{0}:{1}:{2}:{3}".format(self.index,
-                                        self.source,
-                                        self.txhash,
-                                        self.amount)
-
-
-class OutputSource():
-    """
-    A Transaction OUTPUT
-    """
-    re_inline = re.compile("([1-9A-Za-z][^OIl]{42,45}):([0-9]+)")
-
-    def __init__(self, pubkey, amount):
-        self.pubkey = pubkey
-        self.amount = amount
-
-    @classmethod
-    def from_inline(cls, inline):
-        data = OutputSource.re_inline.match(inline)
-        pubkey = data.group(1)
-        amount = int(data.group(2))
-        return cls(pubkey, amount)
-
-    def inline(self):
-        return "{0}:{1}".format(self.pubkey, self.amount)
diff --git a/lib/ucoinpy/key/__init__.py b/lib/ucoinpy/key/__init__.py
deleted file mode 100644
index f0813ef87b1962e027593dd312548c61d78c2f5d..0000000000000000000000000000000000000000
--- a/lib/ucoinpy/key/__init__.py
+++ /dev/null
@@ -1,44 +0,0 @@
-"""
-Ucoin public and private keys
-
-@author: inso
-"""
-
-import base58
-import base64
-from pylibscrypt import scrypt
-from libnacl.sign import Signer as NaclSigningKey
-
-
-SEED_LENGTH = 32  # Length of the key
-crypto_sign_BYTES = 64
-SCRYPT_PARAMS = {'N': 4096,
-                 'r': 16,
-                 'p': 1
-                 }
-
-def _ensure_bytes(data):
-    if isinstance(data, str):
-        return bytes(data, 'utf-8')
-
-    return data
-
-class SigningKey(NaclSigningKey):
-    def __init__(self, salt, password):
-        salt = _ensure_bytes(salt)
-        password = _ensure_bytes(password)
-        seed = scrypt(password, salt,
-                    SCRYPT_PARAMS['N'], SCRYPT_PARAMS['r'], SCRYPT_PARAMS['p'],
-                    SEED_LENGTH)
-
-        super().__init__(seed)
-        self.pubkey = Base58Encoder.encode(self.vk)
-
-class Base58Encoder(object):
-    @staticmethod
-    def encode(data):
-        return base58.b58encode(data)
-
-    @staticmethod
-    def decode(data):
-        return base58.b58decode(data)
diff --git a/lib/ucoinpy/key/hdwallet.py b/lib/ucoinpy/key/hdwallet.py
deleted file mode 100644
index 1a135d7da916fb4155d1fb8116859ec753d2e91d..0000000000000000000000000000000000000000
--- a/lib/ucoinpy/key/hdwallet.py
+++ /dev/null
@@ -1,378 +0,0 @@
-"""
-HD Wallet inspired from Bip32 wallets.
-
-@author: inso
-"""
-"""
-import os
-import hmac
-import hashlib
-import ed25519
-import struct
-import base58
-import base64
-
-from hashlib import sha256
-from ecdsa.curves import SECP256k1
-from ecdsa.ecdsa import int_to_string, string_to_int
-from ecdsa.numbertheory import square_root_mod_prime as sqrt_mod
-
-MIN_ENTROPY_LEN = 128        # bits
-HDWALLET_HARDENED    = 0x80000000 # choose from hardened set of child keys
-CURVE_GEN       = ecdsa.ecdsa.generator_secp256k1
-CURVE_ORDER     = CURVE_GEN.order()
-FIELD_ORDER     = SECP256k1.curve.p()
-INFINITY        = ecdsa.ellipticcurve.INFINITY
-
-
-class HDWalletKey(object):
-
-    # Static initializers to create from entropy or external formats
-    #
-    @staticmethod
-    def fromEntropy(entropy, public=False):
-        "Create a HDWallet using supplied entropy >= MIN_ENTROPY_LEN"
-        if entropy == None:
-            entropy = os.urandom(MIN_ENTROPY_LEN/8) # Python doesn't have os.random()
-        if not len(entropy) >= MIN_ENTROPY_LEN/8:
-            raise ValueError("Initial entropy %i must be at least %i bits" %
-                                (len(entropy), MIN_ENTROPY_LEN))
-        I = hmac.new("UCoin seed", entropy, hashlib.sha512).digest()
-
-        Il, Ir = I[:32], I[32:]
-        # FIXME test Il for 0 or less than SECP256k1 prime field order
-        key = HDWalletKey(secret=Il, chain=Ir, depth=0, index=0, fpr='\0\0\0\0', public=False)
-        if public:
-            key.SetPublic()
-        return key
-
-    @staticmethod
-    def fromExtendedKey(xkey, public=False):
-        """
-        Create a HDWallet by importing from extended private or public key string
-
-        If public is True, return a public-only key regardless of input type.
-        """
-        # Sanity checks
-        raw = base58.b58decode_check(xkey)
-        # To fix
-        #if len(raw) != 78:
-        #    raise ValueError("extended key format wrong length")
-
-        # Verify address version/type
-        #version = raw[:4]
-        #if version == EX_MAIN_PRIVATE:
-        #    raise ValueError("unknown extended key version")
-
-        # Extract remaining fields
-        depth = ord(raw[4])
-        fpr = raw[5:9]
-        child = struct.unpack(">L", raw[9:13])[0]
-        chain = raw[13:45]
-        secret = raw[45:78]
-
-        # Extract private key or public key point
-        if keytype == 'xprv':
-            secret = secret[1:]
-        else:
-            # Recover public curve point from compressed key
-            lsb = ord(secret[0]) & 1
-            x = string_to_int(secret[1:])
-            ys = (x**3+7) % FIELD_ORDER # y^2 = x^3 + 7 mod p
-            y = sqrt_mod(ys, FIELD_ORDER)
-            if y & 1 != lsb:
-                y = FIELD_ORDER-y
-            point = ecdsa.ellipticcurve.Point(SECP256k1.curve, x, y)
-            secret = ecdsa.VerifyingKey.from_public_point(point, curve=SECP256k1)
-
-        is_pubkey = (keytype == 'xpub')
-        key = HDWalletKey(secret=secret, chain=chain, depth=depth, index=child,
-                          fpr=fpr, public=is_pubkey)
-        if not is_pubkey and public:
-            key = key.SetPublic()
-        return key
-
-
-    # Normal class initializer
-    def __init__(self, secret, chain, depth, index, fpr, public=False):
-        """
-        Create a public or private BIP32Key using key material and chain code.
-
-        secret   This is the source material to generate the keypair, either a
-                 32-byte string representation of a private key, or the ECDSA
-                 library object representing a public key.
-
-        chain    This is a 32-byte string representation of the chain code
-
-        depth    Child depth; parent increments its own by one when assigning this
-
-        index    Child index
-
-        fpr      Parent fingerprint
-
-        public   If true, this keypair will only contain a public key and can only create
-                 a public key chain.
-        """
-
-        self.public = public
-        if public is False:
-            self.k = ed25519.SigningKey(base58.b58decode(secret))
-            self.K = self.k.get_verifying_key()
-        else:
-            self.k = None
-            self.K = secret
-
-        self.C = chain
-        self.depth = depth
-        self.index = index
-        self.parent_fpr = fpr
-
-    # Internal methods not intended to be called externally
-    def _hmac(self, data):
-        """
-        Calculate the HMAC-SHA512 of input data using the chain code as key.
-
-        Returns a tuple of the left and right halves of the HMAC
-        """
-        I = hmac.new(self.C, data, hashlib.sha512).digest()
-        return (I[:32], I[32:])
-
-    def _CKDpriv(self, i):
-        """
-        Create a child key of index 'i'.
-
-        If the most significant bit of 'i' is set, then select from the
-        hardened key set, otherwise, select a regular child key.
-
-        Returns a BIP32Key constructed with the child key parameters,
-        or None if i index would result in an invalid key.
-        """
-        # Index as bytes, BE
-        i_str = struct.pack(">L", i)
-
-        # Data to HMAC
-        if i & HDWALLET_HARDENED:
-            data = b'\0' + self.k.to_string() + i_str
-        else:
-            data = self.PublicKey() + i_str
-        # Get HMAC of data
-        (Il, Ir) = self._hmac(data)
-
-        # Construct new key material from Il and current private key
-        Il_int = string_to_int(Il)
-        if Il_int > CURVE_ORDER:
-            return None
-        pvt_int = string_to_int(self.k.to_string())
-        k_int = (Il_int + pvt_int) % CURVE_ORDER
-        if (k_int == 0):
-            return None
-        secret = (b'\0'*32 + int_to_string(k_int))[-32:]
-
-        # Construct and return a new BIP32Key
-        return HDWalletKey(secret=secret, chain=Ir, depth=self.depth+1,
-                           index=i, fpr=self.Fingerprint(), public=False)
-
-    def _CKDpub(self, i):
-        """
-        Create a publicly derived child key of index 'i'.
-
-        If the most significant bit of 'i' is set, this is
-        an error.
-
-        Returns a HDWalletKey constructed with the child key parameters,
-        or None if index would result in invalid key.
-        """
-
-        if i & HDWALLET_HARDENED:
-            raise Exception("Cannot create a hardened child key using public child derivation")
-
-        # Data to HMAC.  Same as CKDpriv() for public child key.
-        data = self.PublicKey() + struct.pack(">L", i)
-
-        # Get HMAC of data
-        (Il, Ir) = self.hmac(data)
-
-        # Construct curve point Il*G+K
-        Il_int = string_to_int(Il)
-        if Il_int >= CURVE_ORDER:
-            return None
-        point = Il_int*CURVE_GEN + self.K.pubkey.point
-        if point == INFINITY:
-            return None
-
-        # Retrieve public key based on curve point
-        K_i = ed25519.VerifyingKey.from_public_point(point, curve=SECP256k1)
-
-        # Construct and return a new BIP32Key
-        return HDWalletKey(secret=K_i, chain=Ir, depth=self.depth, index=i, fpr=self.Fingerprint(), public=True)
-
-
-    # Public methods
-    #
-    def ChildKey(self, i):
-        """
-        Create and return a child key of this one at index 'i'.
-
-        The index 'i' should be summed with BIP32_HARDEN to indicate
-        to use the private derivation algorithm.
-        """
-        if self.public is False:
-            return self.CKDpriv(i)
-        else:
-            return self.CKDpub(i)
-
-
-    def SetPublic(self):
-        "Convert a private BIP32Key into a public one"
-        self.k = None
-        self.public = True
-
-
-    def PrivateKey(self):
-        "Return private key as string"
-        if self.public:
-            raise Exception("Publicly derived deterministic keys have no private half")
-        else:
-            return self.k.to_string()
-
-
-    def PublicKey(self):
-        "Return compressed public key encoding"
-        if self.K.pubkey.point.y() & 1:
-            ck = b'\3'+int_to_string(self.K.pubkey.point.x())
-        else:
-            ck = b'\2'+int_to_string(self.K.pubkey.point.x())
-        return ck
-
-
-    def ChainCode(self):
-        "Return chain code as string"
-        return self.C
-
-
-    def Identifier(self):
-        "Return key identifier as string"
-        cK = self.PublicKey()
-        return hashlib.new('ripemd160', sha256(cK).digest()).digest()
-
-
-    def Fingerprint(self):
-        "Return key fingerprint as string"
-        return self.Identifier()[:4]
-
-
-    def Address(self):
-        "Return compressed public key address"
-        vh160 = '\x00'+self.Identifier()
-        return Base58.check_encode(vh160)
-
-
-    def WalletImportFormat(self):
-        "Returns private key encoded for wallet import"
-        if self.public:
-            raise Exception("Publicly derived deterministic keys have no private half")
-        raw = '\x80' + self.k.to_string() + '\x01' # Always compressed
-        return Base58.check_encode(raw)
-
-
-    def ExtendedKey(self, private=True, encoded=True):
-        "Return extended private or public key as string, optionally Base58 encoded"
-        if self.public is True and private is True:
-            raise Exception("Cannot export an extended private key from a public-only deterministic key")
-        version = EX_MAIN_PRIVATE if private else EX_MAIN_PUBLIC
-        depth = chr(self.depth)
-        fpr = self.parent_fpr
-        child = struct.pack('>L', self.index)
-        chain = self.C
-        if self.public is True or private is False:
-            data = self.PublicKey()
-        else:
-            data = '\x00' + self.PrivateKey()
-        raw = version+depth+fpr+child+chain+data
-        if not encoded:
-            return raw
-        else:
-            return Base58.check_encode(raw)
-
-    # Debugging methods
-    #
-    def dump(self):
-        "Dump key fields mimicking the BIP0032 test vector format"
-        print "   * Identifier"
-        print "     * (hex):      ", self.Identifier().encode('hex')
-        print "     * (fpr):      ", self.Fingerprint().encode('hex')
-        print "     * (main addr):", self.Address()
-        if self.public is False:
-            print "   * Secret key"
-            print "     * (hex):      ", self.PrivateKey().encode('hex')
-            print "     * (wif):      ", self.WalletImportFormat()
-        print "   * Public key"
-        print "     * (hex):      ", self.PublicKey().encode('hex')
-        print "   * Chain code"
-        print "     * (hex):      ", self.C.encode('hex')
-        print "   * Serialized"
-        print "     * (pub hex):  ", self.ExtendedKey(private=False, encoded=False).encode('hex')
-        print "     * (prv hex):  ", self.ExtendedKey(private=True, encoded=False).encode('hex')
-        print "     * (pub b58):  ", self.ExtendedKey(private=False, encoded=True)
-        print "     * (prv b58):  ", self.ExtendedKey(private=True, encoded=True)
-
-
-if __name__ == "__main__":
-    import sys
-
-    # BIP0032 Test vector 1
-    entropy='000102030405060708090A0B0C0D0E0F'.decode('hex')
-    m = BIP32Key.fromEntropy(entropy)
-    print "Test vector 1:"
-    print "Master (hex):", entropy.encode('hex')
-    print "* [Chain m]"
-    m.dump()
-
-    print "* [Chain m/0h]"
-    m = m.ChildKey(0+BIP32_HARDEN)
-    m.dump()
-
-    print "* [Chain m/0h/1]"
-    m = m.ChildKey(1)
-    m.dump()
-
-    print "* [Chain m/0h/1/2h]"
-    m = m.ChildKey(2+BIP32_HARDEN)
-    m.dump()
-
-    print "* [Chain m/0h/1/2h/2]"
-    m = m.ChildKey(2)
-    m.dump()
-
-    print "* [Chain m/0h/1/2h/2/1000000000]"
-    m = m.ChildKey(1000000000)
-    m.dump()
-
-    # BIP0032 Test vector 2
-    entropy = 'fffcf9f6f3f0edeae7e4e1dedbd8d5d2cfccc9c6c3c0bdbab7b4b1aeaba8a5a29f9c999693908d8a8784817e7b7875726f6c696663605d5a5754514e4b484542'.decode('hex')
-    m = BIP32Key.fromEntropy(entropy)
-    print "Test vector 2:"
-    print "Master (hex):", entropy.encode('hex')
-    print "* [Chain m]"
-    m.dump()
-
-    print "* [Chain m/0]"
-    m = m.ChildKey(0)
-    m.dump()
-
-    print "* [Chain m/0/2147483647h]"
-    m = m.ChildKey(2147483647+BIP32_HARDEN)
-    m.dump()
-
-    print "* [Chain m/0/2147483647h/1]"
-    m = m.ChildKey(1)
-    m.dump()
-
-    print "* [Chain m/0/2147483647h/1/2147483646h]"
-    m = m.ChildKey(2147483646+BIP32_HARDEN)
-    m.dump()
-
-    print "* [Chain m/0/2147483647h/1/2147483646h/2]"
-    m = m.ChildKey(2)
-    m.dump()
-"""
\ No newline at end of file
diff --git a/requirements.txt b/requirements.txt
new file mode 100644
index 0000000000000000000000000000000000000000..cd01f840b879c9e116ca7a2031242fb452397a10
--- /dev/null
+++ b/requirements.txt
@@ -0,0 +1,3 @@
+pretenders
+ucoinpy
+git+https://github.com/Insoleet/quamash.git@sockets_only
\ No newline at end of file
diff --git a/res/i18n/ts/de_DE.ts b/res/i18n/ts/de_DE.ts
index ed55983e5aa4a7b86cab38d37d1179df215f53d7..88574acb9a68ad0f90ac54ee5a3992a00a603963 100644
--- a/res/i18n/ts/de_DE.ts
+++ b/res/i18n/ts/de_DE.ts
@@ -1,15 +1,14 @@
-<?xml version='1.0' encoding='utf-8'?>
-<!DOCTYPE TS>
-<TS version="2.0" language="de_DE" sourcelanguage="">
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS><TS version="2.0" language="de_DE" sourcelanguage="">
 <context>
     <name>AboutPopup</name>
     <message>
-        <location filename="../../ui/about.ui" line="14"></location>
+        <location filename="../../ui/about.ui" line="14"/>
         <source>About</source>
         <translation>Über</translation>
     </message>
     <message>
-        <location filename="../../ui/about.ui" line="22"></location>
+        <location filename="../../ui/about.ui" line="22"/>
         <source>label</source>
         <translation>Label</translation>
     </message>
@@ -17,334 +16,367 @@
 <context>
     <name>Account</name>
     <message>
-        <location filename="../../../src/cutecoin/core/account.py" line="101"></location>
+        <location filename="../../../src/cutecoin/core/account.py" line="101"/>
         <source>Units</source>
         <translation type="obsolete">Einheiten</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/core/account.py" line="101"></location>
+        <location filename="../../../src/cutecoin/core/account.py" line="101"/>
         <source>UD {0}</source>
         <translation type="obsolete">UD {0}</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/core/account.py" line="101"></location>
+        <location filename="../../../src/cutecoin/core/account.py" line="101"/>
         <source>UD</source>
         <translation type="obsolete">UD</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/core/account.py" line="101"></location>
+        <location filename="../../../src/cutecoin/core/account.py" line="101"/>
         <source>Q0 {0}</source>
         <translation type="obsolete">Q0 {0}</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/core/account.py" line="101"></location>
+        <location filename="../../../src/cutecoin/core/account.py" line="101"/>
         <source>Quant Z-sum</source>
         <translation type="obsolete">Quant Z-Summe</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/core/account.py" line="101"></location>
+        <location filename="../../../src/cutecoin/core/account.py" line="101"/>
         <source>R0 {0}</source>
         <translation type="obsolete">R0 {0}</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/core/account.py" line="101"></location>
+        <location filename="../../../src/cutecoin/core/account.py" line="101"/>
         <source>Relat Z-sum</source>
         <translation type="obsolete">Relative Z-Summe</translation>
     </message>
+    <message>
+        <location filename="../../../src/cutecoin/core/account.py" line="509"/>
+        <source>Could not find user self certification.</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>AccountConfigurationDialog</name>
     <message>
-        <location filename="../../ui/account_cfg.ui" line="14"></location>
+        <location filename="../../ui/account_cfg.ui" line="14"/>
         <source>Add an account</source>
         <translation>Konto hinzufügen</translation>
     </message>
     <message>
-        <location filename="../../ui/account_cfg.ui" line="30"></location>
+        <location filename="../../ui/account_cfg.ui" line="30"/>
         <source>Account parameters</source>
         <translation>Konto-Parameter</translation>
     </message>
     <message>
-        <location filename="../../ui/account_cfg.ui" line="51"></location>
+        <location filename="../../ui/account_cfg.ui" line="51"/>
         <source>Account name (uid)</source>
         <translation>Name des Kontos (uid)</translation>
     </message>
     <message>
-        <location filename="../../ui/account_cfg.ui" line="68"></location>
+        <location filename="../../ui/account_cfg.ui" line="68"/>
         <source>Wallets</source>
         <translation type="obsolete">Wallets</translation>
     </message>
     <message>
-        <location filename="../../ui/account_cfg.ui" line="84"></location>
+        <location filename="../../ui/account_cfg.ui" line="84"/>
         <source>Delete account</source>
         <translation>Konto löschen</translation>
     </message>
     <message>
-        <location filename="../../ui/account_cfg.ui" line="113"></location>
+        <location filename="../../ui/account_cfg.ui" line="113"/>
         <source>Key parameters</source>
         <translation>Schlüssel-Parameter</translation>
     </message>
     <message>
-        <location filename="../../ui/account_cfg.ui" line="143"></location>
+        <location filename="../../ui/account_cfg.ui" line="143"/>
         <source>CryptoID</source>
         <translation>CryptoID</translation>
     </message>
     <message>
-        <location filename="../../ui/account_cfg.ui" line="153"></location>
+        <location filename="../../ui/account_cfg.ui" line="153"/>
         <source>Your password</source>
         <translation>Ihr Passwort</translation>
     </message>
     <message>
-        <location filename="../../ui/account_cfg.ui" line="166"></location>
+        <location filename="../../ui/account_cfg.ui" line="166"/>
         <source>Please repeat your password</source>
         <translation>Bitte geben Sie Ihr Passwort erneut ein</translation>
     </message>
     <message>
-        <location filename="../../ui/account_cfg.ui" line="185"></location>
+        <location filename="../../ui/account_cfg.ui" line="185"/>
         <source>Show public key</source>
         <translation>Public-Key anzeigen</translation>
     </message>
     <message>
-        <location filename="../../ui/account_cfg.ui" line="242"></location>
+        <location filename="../../ui/account_cfg.ui" line="242"/>
         <source>Communities membership</source>
         <translation type="obsolete">Mitgliedschaft in Communities</translation>
     </message>
     <message>
-        <location filename="../../ui/account_cfg.ui" line="230"></location>
+        <location filename="../../ui/account_cfg.ui" line="230"/>
         <source>Add a community</source>
         <translation>Community hinzufügen</translation>
     </message>
     <message>
-        <location filename="../../ui/account_cfg.ui" line="237"></location>
+        <location filename="../../ui/account_cfg.ui" line="237"/>
         <source>Remove selected community</source>
         <translation>Ausgewählte Community entfernen</translation>
     </message>
     <message>
-        <location filename="../../ui/account_cfg.ui" line="261"></location>
+        <location filename="../../ui/account_cfg.ui" line="261"/>
         <source>Previous</source>
         <translation>Zurück</translation>
     </message>
     <message>
-        <location filename="../../ui/account_cfg.ui" line="281"></location>
+        <location filename="../../ui/account_cfg.ui" line="281"/>
         <source>Next</source>
         <translation>Weiter</translation>
     </message>
     <message>
-        <location filename="../../ui/account_cfg.ui" line="215"></location>
+        <location filename="../../ui/account_cfg.ui" line="215"/>
         <source>Communities</source>
         <translation>Gemeinschaften</translation>
     </message>
 </context>
+<context>
+    <name>Application</name>
+    <message>
+        <location filename="../../../src/cutecoin/core/app.py" line="76"/>
+        <source>Warning : Your membership is expiring soon.</source>
+        <translation type="unfinished">Warnung: Ihre Mitgliedschaft läuft bald ab.</translation>
+    </message>
+    <message>
+        <location filename="../../../src/cutecoin/core/app.py" line="81"/>
+        <source>Warning : Your could miss certifications soon.</source>
+        <translation type="unfinished">Warnung: In Kürze könnten Sie Zertifizierungen verpassen.</translation>
+    </message>
+</context>
 <context>
     <name>CertificationDialog</name>
     <message>
-        <location filename="../../../src/cutecoin/gui/certification.py" line="65"></location>
+        <location filename="../../../src/cutecoin/gui/certification.py" line="79"/>
         <source>Certification</source>
         <translation>Zertifizierung</translation>
     </message>
     <message>
-        <location filename="../../ui/certification.ui" line="20"></location>
+        <location filename="../../ui/certification.ui" line="20"/>
         <source>Community</source>
         <translation>Gemeinschaft</translation>
     </message>
     <message>
-        <location filename="../../ui/certification.ui" line="32"></location>
+        <location filename="../../ui/certification.ui" line="32"/>
         <source>Certify user</source>
         <translation>Nutzer zertifizieren</translation>
     </message>
     <message>
-        <location filename="../../ui/certification.ui" line="40"></location>
+        <location filename="../../ui/certification.ui" line="40"/>
         <source>Contact</source>
         <translation>Kontakt</translation>
     </message>
     <message>
-        <location filename="../../ui/certification.ui" line="61"></location>
+        <location filename="../../ui/certification.ui" line="61"/>
         <source>User public key</source>
         <translation>Öffentlicher Schlüssel des Nutzers</translation>
     </message>
     <message>
-        <location filename="../../ui/certification.ui" line="80"></location>
+        <location filename="../../ui/certification.ui" line="80"/>
         <source>Key</source>
         <translation>Schlüssel</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/certification.py" line="65"></location>
+        <location filename="../../../src/cutecoin/gui/certification.py" line="65"/>
         <source>Success certifying {0} from {1}</source>
-        <translation>{0} von {1} erfolgreich zertifiziert</translation>
+        <translation type="obsolete">{0} von {1} erfolgreich zertifiziert</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/certification.py" line="75"></location>
+        <location filename="../../../src/cutecoin/gui/certification.py" line="75"/>
         <source>Error</source>
-        <translation>Fehler</translation>
+        <translation type="obsolete">Fehler</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/certification.py" line="77"></location>
+        <location filename="../../../src/cutecoin/gui/certification.py" line="77"/>
         <source>Ok</source>
         <translation type="obsolete">OK</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/certification.py" line="97"></location>
+        <location filename="../../../src/cutecoin/gui/certification.py" line="107"/>
         <source>Not a member</source>
         <translation>Kein Mitglied</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/certification.py" line="75"></location>
+        <location filename="../../../src/cutecoin/gui/certification.py" line="75"/>
         <source>{0} : {1}</source>
-        <translation>{0} : {1}</translation>
+        <translation type="obsolete">{0} : {1}</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/certification.py" line="94"></location>
+        <location filename="../../../src/cutecoin/gui/certification.py" line="104"/>
         <source>&amp;Ok</source>
         <translation>&amp;Ok</translation>
     </message>
+    <message>
+        <location filename="../../../src/cutecoin/gui/certification.py" line="70"/>
+        <source>Success sending certification</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../../src/cutecoin/gui/certification.py" line="79"/>
+        <source>Could not broadcast certification : {0}</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>CommunityConfigurationDialog</name>
     <message>
-        <location filename="../../ui/community_cfg.ui" line="17"></location>
+        <location filename="../../ui/community_cfg.ui" line="17"/>
         <source>Add a community</source>
         <translation>Community hinzufügen</translation>
     </message>
     <message>
-        <location filename="../../ui/community_cfg.ui" line="46"></location>
+        <location filename="../../ui/community_cfg.ui" line="46"/>
         <source>Please enter the address of a node :</source>
         <translation>Bitte geben Sie die Adresse eines Knotens (node) ein:</translation>
     </message>
     <message>
-        <location filename="../../ui/community_cfg.ui" line="61"></location>
+        <location filename="../../ui/community_cfg.ui" line="61"/>
         <source>:</source>
         <translation>:</translation>
     </message>
     <message>
-        <location filename="../../ui/community_cfg.ui" line="145"></location>
+        <location filename="../../ui/community_cfg.ui" line="162"/>
         <source>Communities nodes</source>
         <translation>Gemeinschaften-Knoten</translation>
     </message>
     <message>
-        <location filename="../../ui/community_cfg.ui" line="163"></location>
+        <location filename="../../ui/community_cfg.ui" line="180"/>
         <source>Server</source>
         <translation>Server</translation>
     </message>
     <message>
-        <location filename="../../ui/community_cfg.ui" line="183"></location>
+        <location filename="../../ui/community_cfg.ui" line="200"/>
         <source>Add</source>
         <translation>Hinzufügen</translation>
     </message>
     <message>
-        <location filename="../../ui/community_cfg.ui" line="204"></location>
+        <location filename="../../ui/community_cfg.ui" line="221"/>
         <source>Previous</source>
         <translation>Zurück</translation>
     </message>
     <message>
-        <location filename="../../ui/community_cfg.ui" line="227"></location>
+        <location filename="../../ui/community_cfg.ui" line="244"/>
         <source>Next</source>
         <translation>Weiter</translation>
     </message>
     <message>
-        <location filename="../../ui/community_cfg.ui" line="98"></location>
+        <location filename="../../ui/community_cfg.ui" line="98"/>
         <source>Check node connectivity</source>
         <translation type="obsolete">Überprüfen Sie Knoten-Konnektivität</translation>
     </message>
     <message>
-        <location filename="../../ui/community_cfg.ui" line="98"></location>
+        <location filename="../../ui/community_cfg.ui" line="98"/>
         <source>Register your account</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../ui/community_cfg.ui" line="115"></location>
+        <location filename="../../ui/community_cfg.ui" line="115"/>
         <source>Connect using your account</source>
         <translation type="unfinished"></translation>
     </message>
+    <message>
+        <location filename="../../ui/community_cfg.ui" line="132"/>
+        <source>Connect as a guest</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>CommunityTabWidget</name>
     <message>
-        <location filename="../../ui/community_tab.ui" line="17"></location>
+        <location filename="../../ui/community_tab.ui" line="17"/>
         <source>communityTabWidget</source>
         <translation type="obsolete">communityTabWidget</translation>
     </message>
     <message>
-        <location filename="../../ui/community_tab.ui" line="40"></location>
+        <location filename="../../ui/community_tab.ui" line="40"/>
         <source>Identities</source>
         <translation type="obsolete">Identitäten</translation>
     </message>
     <message>
-        <location filename="../../ui/community_tab.ui" line="53"></location>
+        <location filename="../../ui/community_tab.ui" line="53"/>
         <source>Research a pubkey, an uid...</source>
         <translation type="obsolete">Nach öffentlichem Schlüssel oder uid suchen…</translation>
     </message>
     <message>
-        <location filename="../../ui/community_tab.ui" line="60"></location>
+        <location filename="../../ui/community_tab.ui" line="60"/>
         <source>Search</source>
         <translation type="obsolete">Suchen</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/community_tab.py" line="58"></location>
+        <location filename="../../../src/cutecoin/gui/community_tab.py" line="58"/>
         <source>Web of Trust</source>
         <translation type="obsolete">Web of Trust</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/community_tab.py" line="59"></location>
+        <location filename="../../../src/cutecoin/gui/community_tab.py" line="59"/>
         <source>Members</source>
         <translation type="obsolete">Mitglieder</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/community_tab.py" line="62"></location>
+        <location filename="../../../src/cutecoin/gui/community_tab.py" line="62"/>
         <source>Direct connections</source>
         <translation type="obsolete">Direkte Verbindungen</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/community_tab.py" line="102"></location>
+        <location filename="../../../src/cutecoin/gui/community_tab.py" line="102"/>
         <source>Informations</source>
         <translation type="obsolete">Informationen</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/community_tab.py" line="105"></location>
+        <location filename="../../../src/cutecoin/gui/community_tab.py" line="105"/>
         <source>Add as contact</source>
         <translation type="obsolete">Als Kontakt hinzufügen</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/community_tab.py" line="109"></location>
+        <location filename="../../../src/cutecoin/gui/community_tab.py" line="109"/>
         <source>Send money</source>
         <translation type="obsolete">Geld schicken</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/community_tab.py" line="113"></location>
+        <location filename="../../../src/cutecoin/gui/community_tab.py" line="113"/>
         <source>Certify identity</source>
         <translation type="obsolete">Identität zertifizieren</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/community_tab.py" line="117"></location>
+        <location filename="../../../src/cutecoin/gui/community_tab.py" line="117"/>
         <source>View in Web of Trust</source>
         <translation type="obsolete">Im Web of Trust anschauen</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/community_tab.py" line="76"></location>
+        <location filename="../../../src/cutecoin/gui/community_tab.py" line="76"/>
         <source>Membership</source>
         <translation type="obsolete">Mitgliedschaft</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/community_tab.py" line="76"></location>
+        <location filename="../../../src/cutecoin/gui/community_tab.py" line="76"/>
         <source>Success sending Membership demand</source>
         <translation type="obsolete">Mitglieds-Antrag erfolgreich versandt</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/community_tab.py" line="82"></location>
+        <location filename="../../../src/cutecoin/gui/community_tab.py" line="82"/>
         <source>Revoke</source>
         <translation type="obsolete">Widerruf</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/community_tab.py" line="82"></location>
+        <location filename="../../../src/cutecoin/gui/community_tab.py" line="82"/>
         <source>Success sending Revoke demand</source>
         <translation type="obsolete">Widerruf-Antrag erfolgreich versandt</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/community_tab.py" line="88"></location>
+        <location filename="../../../src/cutecoin/gui/community_tab.py" line="88"/>
         <source>Self Certification</source>
         <translation type="obsolete">Selbstzertifizierung</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/community_tab.py" line="88"></location>
+        <location filename="../../../src/cutecoin/gui/community_tab.py" line="88"/>
         <source>Success sending Self Certification document</source>
         <translation type="obsolete">Selbstzertifizierung erfolgreich versandt</translation>
     </message>
@@ -352,130 +384,140 @@
 <context>
     <name>CommunityTile</name>
     <message>
-        <location filename="../../../src/cutecoin/gui/community_tile.py" line="46"></location>
+        <location filename="../../../src/cutecoin/gui/community_tile.py" line="77"/>
         <source>Member</source>
         <translation>Mitglied</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/community_tile.py" line="47"></location>
+        <location filename="../../../src/cutecoin/gui/community_tile.py" line="78"/>
         <source>Non-Member</source>
         <translation>Nichtmitglied</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/community_tile.py" line="58"></location>
+        <location filename="../../../src/cutecoin/gui/community_tile.py" line="89"/>
         <source>members</source>
         <translation>Mitglieder</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/community_tile.py" line="58"></location>
+        <location filename="../../../src/cutecoin/gui/community_tile.py" line="89"/>
         <source>Monetary mass</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/community_tile.py" line="58"></location>
+        <location filename="../../../src/cutecoin/gui/community_tile.py" line="89"/>
         <source>Status</source>
         <translation>Status</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/community_tile.py" line="58"></location>
+        <location filename="../../../src/cutecoin/gui/community_tile.py" line="89"/>
         <source>Balance</source>
         <translation>Gleichgewicht</translation>
     </message>
+    <message>
+        <location filename="../../../src/cutecoin/gui/community_tile.py" line="108"/>
+        <source>Not connected</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../../src/cutecoin/gui/community_tile.py" line="121"/>
+        <source>Community not initialized</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>CommunityWidget</name>
     <message>
-        <location filename="../../ui/community_view.ui" line="14"></location>
+        <location filename="../../ui/community_view.ui" line="14"/>
         <source>Form</source>
         <translation type="unfinished">Form</translation>
     </message>
     <message>
-        <location filename="../../ui/community_view.ui" line="59"></location>
+        <location filename="../../ui/community_view.ui" line="59"/>
         <source>Send money</source>
         <translation type="unfinished">Geld schicken</translation>
     </message>
     <message>
-        <location filename="../../ui/community_view.ui" line="76"></location>
+        <location filename="../../ui/community_view.ui" line="76"/>
         <source>Certification</source>
         <translation type="unfinished">Zertifizierung</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/community_view.py" line="227"></location>
+        <location filename="../../../src/cutecoin/gui/community_view.py" line="282"/>
         <source>Renew membership</source>
         <translation>Mitgliedschaft erneuern</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/community_view.py" line="44"></location>
+        <location filename="../../../src/cutecoin/gui/community_view.py" line="44"/>
         <source>Warning : Your membership is expiring soon.</source>
-        <translation>Warnung: Ihre Mitgliedschaft läuft bald ab.</translation>
+        <translation type="obsolete">Warnung: Ihre Mitgliedschaft läuft bald ab.</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/community_view.py" line="46"></location>
+        <location filename="../../../src/cutecoin/gui/community_view.py" line="46"/>
         <source>Warning : Your could miss certifications soon.</source>
-        <translation type="unfinished">Warnung: In Kürze könnten Sie Zertifizierungen verpassen.</translation>
+        <translation type="obsolete">Warnung: In Kürze könnten Sie Zertifizierungen verpassen.</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/community_view.py" line="63"></location>
+        <location filename="../../../src/cutecoin/gui/community_view.py" line="65"/>
         <source>Transactions</source>
         <translation type="unfinished">Transaktionen</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/community_view.py" line="67"></location>
+        <location filename="../../../src/cutecoin/gui/community_view.py" line="69"/>
         <source>Web of Trust</source>
         <translation type="unfinished">Web of Trust</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/community_view.py" line="71"></location>
+        <location filename="../../../src/cutecoin/gui/community_view.py" line="73"/>
         <source>Search Identities</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/community_view.py" line="75"></location>
+        <location filename="../../../src/cutecoin/gui/community_view.py" line="77"/>
         <source>Network</source>
         <translation type="unfinished">Netzwerk</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/community_view.py" line="154"></location>
+        <location filename="../../../src/cutecoin/gui/community_view.py" line="177"/>
         <source>Membership expiration</source>
         <translation type="unfinished">Ablauf der Mitgliedschaft</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/community_view.py" line="154"></location>
+        <location filename="../../../src/cutecoin/gui/community_view.py" line="177"/>
         <source>&lt;b&gt;Warning : Membership expiration in {0} days&lt;/b&gt;</source>
         <translation type="unfinished">&lt;b&gt;Warnung: Ihre Mitgliedschaft läuft in {0} Tagen aus.&lt;/b&gt;</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/community_view.py" line="162"></location>
+        <location filename="../../../src/cutecoin/gui/community_view.py" line="188"/>
         <source>Certifications number</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/community_view.py" line="162"></location>
+        <location filename="../../../src/cutecoin/gui/community_view.py" line="188"/>
         <source>&lt;b&gt;Warning : You are certified by only {0} persons, need {1}&lt;/b&gt;</source>
         <translation type="unfinished">&lt;b&gt;Warnung: Sie wurden nur von {0} Personen zertifiziert, benötigt werden {1}&lt;/b&gt;</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/community_view.py" line="189"></location>
+        <location filename="../../../src/cutecoin/gui/community_view.py" line="221"/>
         <source> Block {0}</source>
         <translation type="unfinished"> Block {0}</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/community_view.py" line="211"></location>
+        <location filename="../../../src/cutecoin/gui/community_view.py" line="263"/>
         <source> - Median fork window : {0}</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/community_view.py" line="232"></location>
+        <location filename="../../../src/cutecoin/gui/community_view.py" line="288"/>
         <source>Send membership demand</source>
         <translation type="unfinished">Mitgliedschaft beantragen</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/community_view.py" line="298"></location>
+        <location filename="../../../src/cutecoin/gui/community_view.py" line="334"/>
         <source>Warning</source>
         <translation type="unfinished">Warnung</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/community_view.py" line="259"></location>
+        <location filename="../../../src/cutecoin/gui/community_view.py" line="334"/>
         <source>Are you sure ?
 Sending a leaving demand  cannot be canceled.
 The process to join back the community later will have to be done again.</source>
@@ -484,99 +526,129 @@ Ein Austrittsgesuch kann nicht zurückgenommen werden.
 Um der Community später wieder beizutreten, müssen Sie den Aufnahmeprozess vollständig neu durchlaufen.</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/community_view.py" line="272"></location>
+        <location filename="../../../src/cutecoin/gui/community_view.py" line="272"/>
         <source>Are you sure ?
 Publishing your UID can be canceled by Revoke UID.</source>
-        <translation type="unfinished">Sind Sie sich sicher?
+        <translation type="obsolete">Sind Sie sich sicher?
 Die Veröffentlichung der UID kann durch Widerruf der UID rückgängig gemacht werden.</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/community_view.py" line="283"></location>
+        <location filename="../../../src/cutecoin/gui/community_view.py" line="283"/>
         <source>UID Publishing</source>
-        <translation type="unfinished">UID-Veröffentlichung</translation>
+        <translation type="obsolete">UID-Veröffentlichung</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/community_view.py" line="283"></location>
+        <location filename="../../../src/cutecoin/gui/community_view.py" line="368"/>
         <source>Success publishing your UID</source>
         <translation type="unfinished">UID erfolgreich veröffentlicht</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/community_view.py" line="286"></location>
+        <location filename="../../../src/cutecoin/gui/community_view.py" line="286"/>
         <source>Publish UID error</source>
-        <translation type="unfinished">Fehler bei der Veröffentlichung der UID</translation>
+        <translation type="obsolete">Fehler bei der Veröffentlichung der UID</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/community_view.py" line="289"></location>
+        <location filename="../../../src/cutecoin/gui/community_view.py" line="289"/>
         <source>Network error</source>
-        <translation type="unfinished">Netzwerk-Fehler</translation>
+        <translation type="obsolete">Netzwerk-Fehler</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/community_view.py" line="289"></location>
-        <source>Couldn't connect to network : {0}</source>
-        <translation type="unfinished">Konnte keine Verbindung zum Netzwerk herstellen: {0}</translation>
+        <location filename="../../../src/cutecoin/gui/community_view.py" line="289"/>
+        <source>Couldn&apos;t connect to network : {0}</source>
+        <translation type="obsolete">Konnte keine Verbindung zum Netzwerk herstellen: {0}</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/community_view.py" line="293"></location>
+        <location filename="../../../src/cutecoin/gui/community_view.py" line="293"/>
         <source>Error</source>
-        <translation type="unfinished">Fehler</translation>
+        <translation type="obsolete">Fehler</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/community_view.py" line="298"></location>
+        <location filename="../../../src/cutecoin/gui/community_view.py" line="298"/>
         <source>Are you sure ?
 Revoking your UID can only success if it is not already validated by the network.</source>
-        <translation type="unfinished">Sind Sie sich sicher?
+        <translation type="obsolete">Sind Sie sich sicher?
 Sie können die UID nur widerrufen, wenn sie noch nicht vom Netzwerk validiert wurde.</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/community_view.py" line="313"></location>
+        <location filename="../../../src/cutecoin/gui/community_view.py" line="388"/>
         <source>Membership</source>
         <translation type="unfinished">Mitgliedschaft</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/community_view.py" line="313"></location>
+        <location filename="../../../src/cutecoin/gui/community_view.py" line="322"/>
         <source>Success sending Membership demand</source>
         <translation type="unfinished">Mitglieds-Antrag erfolgreich versandt</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/community_view.py" line="319"></location>
+        <location filename="../../../src/cutecoin/gui/community_view.py" line="354"/>
         <source>Revoke</source>
         <translation type="unfinished">Widerruf</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/community_view.py" line="319"></location>
+        <location filename="../../../src/cutecoin/gui/community_view.py" line="348"/>
         <source>Success sending Revoke demand</source>
         <translation type="unfinished">Widerruf-Antrag erfolgreich versandt</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/community_view.py" line="325"></location>
+        <location filename="../../../src/cutecoin/gui/community_view.py" line="325"/>
         <source>Self Certification</source>
-        <translation type="unfinished">Selbstzertifizierung</translation>
+        <translation type="obsolete">Selbstzertifizierung</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/community_view.py" line="325"></location>
+        <location filename="../../../src/cutecoin/gui/community_view.py" line="325"/>
         <source>Success sending Self Certification document</source>
-        <translation type="unfinished">Selbstzertifizierung erfolgreich versandt</translation>
+        <translation type="obsolete">Selbstzertifizierung erfolgreich versandt</translation>
+    </message>
+    <message>
+        <location filename="../../../src/cutecoin/gui/community_view.py" line="81"/>
+        <source>Show informations</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../../src/cutecoin/gui/community_view.py" line="85"/>
+        <source>Informations</source>
+        <translation type="unfinished">Informationen</translation>
+    </message>
+    <message>
+        <location filename="../../../src/cutecoin/gui/community_view.py" line="98"/>
+        <source>Publish UID</source>
+        <translation type="unfinished">UID veröffentlichen</translation>
+    </message>
+    <message>
+        <location filename="../../../src/cutecoin/gui/community_view.py" line="392"/>
+        <source>Revoke UID</source>
+        <translation type="unfinished">UID widerrufen</translation>
+    </message>
+    <message>
+        <location filename="../../../src/cutecoin/gui/community_view.py" line="394"/>
+        <source>UID</source>
+        <translation type="unfinished">UID</translation>
+    </message>
+    <message>
+        <location filename="../../../src/cutecoin/gui/community_view.py" line="388"/>
+        <source>Your UID was revoked successfully.</source>
+        <translation type="unfinished"></translation>
     </message>
 </context>
 <context>
     <name>ConfigureContactDialog</name>
     <message>
-        <location filename="../../ui/contact.ui" line="14"></location>
+        <location filename="../../ui/contact.ui" line="14"/>
         <source>Add a contact</source>
         <translation>Kontakt hinzufügen</translation>
     </message>
     <message>
-        <location filename="../../ui/contact.ui" line="22"></location>
+        <location filename="../../ui/contact.ui" line="22"/>
         <source>Name</source>
         <translation>Name</translation>
     </message>
     <message>
-        <location filename="../../ui/contact.ui" line="36"></location>
+        <location filename="../../ui/contact.ui" line="36"/>
         <source>Pubkey</source>
         <translation>Öffentlicher Schlüssel</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/contact.py" line="52"></location>
+        <location filename="../../../src/cutecoin/gui/contact.py" line="52"/>
         <source>Contact already exists</source>
         <translation>Kontakt ist schon vorhanden</translation>
     </message>
@@ -584,22 +656,22 @@ Sie können die UID nur widerrufen, wenn sie noch nicht vom Netzwerk validiert w
 <context>
     <name>CreateWalletDialog</name>
     <message>
-        <location filename="../../ui/create_wallet.ui" line="14"></location>
+        <location filename="../../ui/create_wallet.ui" line="14"/>
         <source>Create a new wallet</source>
         <translation>Neue Wallet erstellen</translation>
     </message>
     <message>
-        <location filename="../../ui/create_wallet.ui" line="45"></location>
+        <location filename="../../ui/create_wallet.ui" line="45"/>
         <source>Wallet name :</source>
         <translation>Wallet-Name:</translation>
     </message>
     <message>
-        <location filename="../../ui/create_wallet.ui" line="83"></location>
+        <location filename="../../ui/create_wallet.ui" line="83"/>
         <source>Previous</source>
         <translation>Zurück</translation>
     </message>
     <message>
-        <location filename="../../ui/create_wallet.ui" line="103"></location>
+        <location filename="../../ui/create_wallet.ui" line="103"/>
         <source>Next</source>
         <translation>Weiter</translation>
     </message>
@@ -607,62 +679,62 @@ Sie können die UID nur widerrufen, wenn sie noch nicht vom Netzwerk validiert w
 <context>
     <name>CurrencyTabWidget</name>
     <message>
-        <location filename="../../ui/currency_tab.ui" line="14"></location>
+        <location filename="../../ui/currency_tab.ui" line="14"/>
         <source>Form</source>
         <translation>Formular</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/currency_tab.py" line="44"></location>
+        <location filename="../../../src/cutecoin/gui/currency_tab.py" line="44"/>
         <source>Warning : Your membership is expiring soon.</source>
         <translation type="obsolete">Warnung: Ihre Mitgliedschaft läuft bald ab.</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/currency_tab.py" line="46"></location>
+        <location filename="../../../src/cutecoin/gui/currency_tab.py" line="46"/>
         <source>Warning : Your could miss certifications soon.</source>
         <translation type="obsolete">Warnung: In Kürze könnten Sie Zertifizierungen verpassen.</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/currency_tab.py" line="73"></location>
+        <location filename="../../../src/cutecoin/gui/currency_tab.py" line="73"/>
         <source>Wallets</source>
         <translation type="obsolete">Wallets</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/currency_tab.py" line="77"></location>
+        <location filename="../../../src/cutecoin/gui/currency_tab.py" line="77"/>
         <source>Transactions</source>
         <translation type="obsolete">Transaktionen</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/currency_tab.py" line="81"></location>
+        <location filename="../../../src/cutecoin/gui/currency_tab.py" line="81"/>
         <source>Community</source>
         <translation type="obsolete">Community</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/currency_tab.py" line="89"></location>
+        <location filename="../../../src/cutecoin/gui/currency_tab.py" line="89"/>
         <source>Informations</source>
         <translation type="obsolete">Informationen</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/currency_tab.py" line="85"></location>
+        <location filename="../../../src/cutecoin/gui/currency_tab.py" line="85"/>
         <source>Network</source>
         <translation type="obsolete">Netzwerk</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/currency_tab.py" line="125"></location>
+        <location filename="../../../src/cutecoin/gui/currency_tab.py" line="125"/>
         <source>Membership expiration</source>
         <translation type="obsolete">Ablauf der Mitgliedschaft</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/currency_tab.py" line="125"></location>
+        <location filename="../../../src/cutecoin/gui/currency_tab.py" line="125"/>
         <source>&lt;b&gt;Warning : Membership expiration in {0} days&lt;/b&gt;</source>
         <translation type="obsolete">&lt;b&gt;Warnung: Ihre Mitgliedschaft läuft in {0} Tagen aus.&lt;/b&gt;</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/currency_tab.py" line="132"></location>
+        <location filename="../../../src/cutecoin/gui/currency_tab.py" line="132"/>
         <source>&lt;b&gt;Warning : You are certified by only {0} persons, need {1}&lt;/b&gt;</source>
         <translation type="obsolete">&lt;b&gt;Warnung: Sie wurden nur von {0} Personen zertifiziert, benötigt werden {1}&lt;/b&gt;</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/currency_tab.py" line="163"></location>
+        <location filename="../../../src/cutecoin/gui/currency_tab.py" line="163"/>
         <source> Block {0}</source>
         <translation type="obsolete"> Block {0}</translation>
     </message>
@@ -670,22 +742,22 @@ Sie können die UID nur widerrufen, wenn sie noch nicht vom Netzwerk validiert w
 <context>
     <name>DialogMember</name>
     <message>
-        <location filename="../../ui/member.ui" line="14"></location>
+        <location filename="../../ui/member.ui" line="14"/>
         <source>Informations</source>
         <translation>Informationen</translation>
     </message>
     <message>
-        <location filename="../../ui/member.ui" line="34"></location>
+        <location filename="../../ui/member.ui" line="34"/>
         <source>Member</source>
         <translation>Mitglied</translation>
     </message>
     <message>
-        <location filename="../../ui/member.ui" line="65"></location>
+        <location filename="../../ui/member.ui" line="65"/>
         <source>uid</source>
         <translation>uid</translation>
     </message>
     <message>
-        <location filename="../../ui/member.ui" line="72"></location>
+        <location filename="../../ui/member.ui" line="72"/>
         <source>properties</source>
         <translation>Eigenschaften</translation>
     </message>
@@ -693,27 +765,27 @@ Sie können die UID nur widerrufen, wenn sie noch nicht vom Netzwerk validiert w
 <context>
     <name>HistoryTableModel</name>
     <message>
-        <location filename="../../../src/cutecoin/models/txhistory.py" line="199"></location>
+        <location filename="../../../src/cutecoin/models/txhistory.py" line="206"/>
         <source>Date</source>
         <translation>Datum</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/models/txhistory.py" line="199"></location>
+        <location filename="../../../src/cutecoin/models/txhistory.py" line="206"/>
         <source>UID/Public key</source>
         <translation>UID/öffentlicher Schlüssel</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/models/txhistory.py" line="199"></location>
+        <location filename="../../../src/cutecoin/models/txhistory.py" line="206"/>
         <source>Payment</source>
         <translation>Zahlung</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/models/txhistory.py" line="199"></location>
+        <location filename="../../../src/cutecoin/models/txhistory.py" line="206"/>
         <source>Deposit</source>
         <translation>Einzahlung</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/models/txhistory.py" line="199"></location>
+        <location filename="../../../src/cutecoin/models/txhistory.py" line="206"/>
         <source>Comment</source>
         <translation>Kommentar</translation>
     </message>
@@ -721,37 +793,37 @@ Sie können die UID nur widerrufen, wenn sie noch nicht vom Netzwerk validiert w
 <context>
     <name>HomeScreenWidget</name>
     <message>
-        <location filename="../../ui/homescreen.ui" line="20"></location>
+        <location filename="../../ui/homescreen.ui" line="20"/>
         <source>Form</source>
         <translation type="obsolete">Form</translation>
     </message>
     <message>
-        <location filename="../../ui/homescreen.ui" line="49"></location>
+        <location filename="../../ui/homescreen.ui" line="49"/>
         <source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
         <translation type="obsolete">&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</translation>
     </message>
     <message>
-        <location filename="../../ui/homescreen.ui" line="67"></location>
+        <location filename="../../ui/homescreen.ui" line="67"/>
         <source>Create a new account</source>
         <translation type="obsolete">Neues Konto anlegen</translation>
     </message>
     <message>
-        <location filename="../../ui/homescreen.ui" line="100"></location>
+        <location filename="../../ui/homescreen.ui" line="100"/>
         <source>Import an existing account</source>
         <translation type="obsolete">Vorhandenes Konto importieren</translation>
     </message>
     <message>
-        <location filename="../../ui/homescreen.ui" line="127"></location>
+        <location filename="../../ui/homescreen.ui" line="127"/>
         <source>Get to know more about ucoin</source>
         <translation type="obsolete">Erstmal mehr über ucoin erfahren</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/homescreen.py" line="35"></location>
+        <location filename="../../../src/cutecoin/gui/homescreen.py" line="35"/>
         <source>Please get the latest release {version}</source>
         <translation type="obsolete">Bitte laden Sie die neueste Version {version} herunter</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/homescreen.py" line="39"></location>
+        <location filename="../../../src/cutecoin/gui/homescreen.py" line="39"/>
         <source>
             &lt;h1&gt;Welcome to Cutecoin {version}&lt;/h1&gt;
             &lt;h2&gt;{version_info}&lt;/h2&gt;
@@ -764,7 +836,7 @@ Sie können die UID nur widerrufen, wenn sie noch nicht vom Netzwerk validiert w
             </translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/homescreen.py" line="72"></location>
+        <location filename="../../../src/cutecoin/gui/homescreen.py" line="72"/>
         <source>Connected as {0}</source>
         <translation type="unfinished"></translation>
     </message>
@@ -772,37 +844,37 @@ Sie können die UID nur widerrufen, wenn sie noch nicht vom Netzwerk validiert w
 <context>
     <name>HomescreenWidget</name>
     <message>
-        <location filename="../../ui/homescreen.ui" line="20"></location>
+        <location filename="../../ui/homescreen.ui" line="20"/>
         <source>Form</source>
         <translation type="unfinished">Form</translation>
     </message>
     <message>
-        <location filename="../../ui/homescreen.ui" line="47"></location>
+        <location filename="../../ui/homescreen.ui" line="47"/>
         <source>Connected as</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../ui/homescreen.ui" line="54"></location>
+        <location filename="../../ui/homescreen.ui" line="54"/>
         <source>Add a community</source>
         <translation type="unfinished">Community hinzufügen</translation>
     </message>
     <message>
-        <location filename="../../ui/homescreen.ui" line="71"></location>
+        <location filename="../../ui/homescreen.ui" line="71"/>
         <source>Disconnect</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../ui/homescreen.ui" line="119"></location>
-        <source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;&lt;span style=" font-size:12pt; font-weight:600;"&gt;Not Connected&lt;/span&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
+        <location filename="../../ui/homescreen.ui" line="119"/>
+        <source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;&lt;span style=&quot; font-size:12pt; font-weight:600;&quot;&gt;Not Connected&lt;/span&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../ui/homescreen.ui" line="126"></location>
+        <location filename="../../ui/homescreen.ui" line="126"/>
         <source>Connect</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../ui/homescreen.ui" line="149"></location>
+        <location filename="../../ui/homescreen.ui" line="149"/>
         <source>New account</source>
         <translation type="unfinished"></translation>
     </message>
@@ -810,17 +882,17 @@ Sie können die UID nur widerrufen, wenn sie noch nicht vom Netzwerk validiert w
 <context>
     <name>IdentitiesTab</name>
     <message>
-        <location filename="../../ui/identities_tab.ui" line="14"></location>
+        <location filename="../../ui/identities_tab.ui" line="14"/>
         <source>Form</source>
         <translation type="unfinished">Form</translation>
     </message>
     <message>
-        <location filename="../../ui/identities_tab.ui" line="25"></location>
+        <location filename="../../ui/identities_tab.ui" line="25"/>
         <source>Research a pubkey, an uid...</source>
         <translation type="unfinished">Nach öffentlichem Schlüssel oder uid suchen…</translation>
     </message>
     <message>
-        <location filename="../../ui/identities_tab.ui" line="32"></location>
+        <location filename="../../ui/identities_tab.ui" line="32"/>
         <source>Search</source>
         <translation type="unfinished">Suchen</translation>
     </message>
@@ -828,65 +900,70 @@ Sie können die UID nur widerrufen, wenn sie noch nicht vom Netzwerk validiert w
 <context>
     <name>IdentitiesTabWidget</name>
     <message>
-        <location filename="../../../src/cutecoin/gui/identities_tab.py" line="56"></location>
+        <location filename="../../../src/cutecoin/gui/identities_tab.py" line="63"/>
         <source>Members</source>
         <translation type="unfinished">Mitglieder</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/identities_tab.py" line="59"></location>
+        <location filename="../../../src/cutecoin/gui/identities_tab.py" line="66"/>
         <source>Direct connections</source>
         <translation type="unfinished">Direkte Verbindungen</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/identities_tab.py" line="98"></location>
+        <location filename="../../../src/cutecoin/gui/identities_tab.py" line="109"/>
         <source>Informations</source>
         <translation type="unfinished">Informationen</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/identities_tab.py" line="101"></location>
+        <location filename="../../../src/cutecoin/gui/identities_tab.py" line="112"/>
         <source>Add as contact</source>
         <translation type="unfinished">Als Kontakt hinzufügen</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/identities_tab.py" line="105"></location>
+        <location filename="../../../src/cutecoin/gui/identities_tab.py" line="116"/>
         <source>Send money</source>
         <translation type="unfinished">Geld schicken</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/identities_tab.py" line="109"></location>
+        <location filename="../../../src/cutecoin/gui/identities_tab.py" line="120"/>
         <source>Certify identity</source>
         <translation type="unfinished">Identität zertifizieren</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/identities_tab.py" line="113"></location>
+        <location filename="../../../src/cutecoin/gui/identities_tab.py" line="124"/>
         <source>View in Web of Trust</source>
         <translation type="unfinished">Im Web of Trust anschauen</translation>
     </message>
+    <message>
+        <location filename="../../../src/cutecoin/gui/identities_tab.py" line="128"/>
+        <source>Copy pubkey</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>IdentitiesTableModel</name>
     <message>
-        <location filename="../../../src/cutecoin/models/identities.py" line="89"></location>
+        <location filename="../../../src/cutecoin/models/identities.py" line="90"/>
         <source>UID</source>
         <translation>UID</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/models/identities.py" line="90"></location>
+        <location filename="../../../src/cutecoin/models/identities.py" line="91"/>
         <source>Pubkey</source>
         <translation>Öffentlicher Schlüssel</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/models/identities.py" line="91"></location>
+        <location filename="../../../src/cutecoin/models/identities.py" line="92"/>
         <source>Renewed</source>
         <translation>Erneuert</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/models/identities.py" line="92"></location>
+        <location filename="../../../src/cutecoin/models/identities.py" line="93"/>
         <source>Expiration</source>
         <translation>Ablaufdatum</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/models/identities.py" line="93"></location>
+        <location filename="../../../src/cutecoin/models/identities.py" line="94"/>
         <source>Validation</source>
         <translation>Validierungs</translation>
     </message>
@@ -894,57 +971,57 @@ Sie können die UID nur widerrufen, wenn sie noch nicht vom Netzwerk validiert w
 <context>
     <name>ImportAccountDialog</name>
     <message>
-        <location filename="../../ui/import_account.ui" line="14"></location>
+        <location filename="../../ui/import_account.ui" line="14"/>
         <source>Import an account</source>
         <translation>Ein Konto importieren</translation>
     </message>
     <message>
-        <location filename="../../ui/import_account.ui" line="25"></location>
+        <location filename="../../ui/import_account.ui" line="25"/>
         <source>Import a file</source>
         <translation>Eine Datei importieren</translation>
     </message>
     <message>
-        <location filename="../../ui/import_account.ui" line="36"></location>
+        <location filename="../../ui/import_account.ui" line="36"/>
         <source>Name of the account :</source>
         <translation>Name des Kontos:</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/import_account.py" line="34"></location>
+        <location filename="../../../src/cutecoin/gui/import_account.py" line="34"/>
         <source>Error</source>
         <translation>Fehler</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/import_account.py" line="38"></location>
+        <location filename="../../../src/cutecoin/gui/import_account.py" line="38"/>
         <source>Account import</source>
         <translation>Konto-Import</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/import_account.py" line="38"></location>
+        <location filename="../../../src/cutecoin/gui/import_account.py" line="38"/>
         <source>Account imported succefully !</source>
         <translation>Konto erfolgreich importiert!</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/import_account.py" line="43"></location>
+        <location filename="../../../src/cutecoin/gui/import_account.py" line="43"/>
         <source>Import an account file</source>
         <translation>Eine Konten-Datei importieren</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/import_account.py" line="43"></location>
+        <location filename="../../../src/cutecoin/gui/import_account.py" line="43"/>
         <source>All account files (*.acc)</source>
         <translation>Alle Konten-Dateien (*.acc)</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/import_account.py" line="58"></location>
+        <location filename="../../../src/cutecoin/gui/import_account.py" line="58"/>
         <source>Please enter a name</source>
         <translation>Bitte einen Namen eingeben</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/import_account.py" line="63"></location>
+        <location filename="../../../src/cutecoin/gui/import_account.py" line="63"/>
         <source>Name already exists</source>
         <translation>Name ist schon vorhanden</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/import_account.py" line="67"></location>
+        <location filename="../../../src/cutecoin/gui/import_account.py" line="67"/>
         <source>File is not an account format</source>
         <translation>Die Datei liegt nicht im Konten-Format vor</translation>
     </message>
@@ -952,279 +1029,279 @@ Sie können die UID nur widerrufen, wenn sie noch nicht vom Netzwerk validiert w
 <context>
     <name>InformationsTabWidget</name>
     <message>
-        <location filename="../../ui/informations_tab.ui" line="14"></location>
+        <location filename="../../ui/informations_tab.ui" line="14"/>
         <source>Form</source>
         <translation>Formular</translation>
     </message>
     <message>
-        <location filename="../../ui/informations_tab.ui" line="52"></location>
+        <location filename="../../ui/informations_tab.ui" line="52"/>
         <source>General</source>
         <translation>Allgemein</translation>
     </message>
     <message>
-        <location filename="../../ui/informations_tab.ui" line="61"></location>
+        <location filename="../../ui/informations_tab.ui" line="61"/>
         <source>label_general</source>
-        <translation type="unfinished">label_general</translation>
+        <translation type="obsolete">label_general</translation>
     </message>
     <message>
-        <location filename="../../ui/informations_tab.ui" line="77"></location>
+        <location filename="../../ui/informations_tab.ui" line="77"/>
         <source>Rules</source>
         <translation>Regeln</translation>
     </message>
     <message>
-        <location filename="../../ui/informations_tab.ui" line="83"></location>
+        <location filename="../../ui/informations_tab.ui" line="83"/>
         <source>label_rules</source>
-        <translation type="unfinished">label_rules</translation>
+        <translation type="obsolete">label_rules</translation>
     </message>
     <message>
-        <location filename="../../ui/informations_tab.ui" line="96"></location>
+        <location filename="../../ui/informations_tab.ui" line="96"/>
         <source>Money</source>
         <translation>Geld</translation>
     </message>
     <message>
-        <location filename="../../ui/informations_tab.ui" line="102"></location>
+        <location filename="../../ui/informations_tab.ui" line="102"/>
         <source>label_money</source>
-        <translation type="unfinished">label_money</translation>
+        <translation type="obsolete">label_money</translation>
     </message>
     <message>
-        <location filename="../../ui/informations_tab.ui" line="115"></location>
+        <location filename="../../ui/informations_tab.ui" line="115"/>
         <source>WoT</source>
         <translation>WoT</translation>
     </message>
     <message>
-        <location filename="../../ui/informations_tab.ui" line="121"></location>
+        <location filename="../../ui/informations_tab.ui" line="121"/>
         <source>label_wot</source>
-        <translation type="unfinished">label_wot</translation>
+        <translation type="obsolete">label_wot</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="86"></location>
+        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="103"/>
         <source>Universal Dividend UD(t) in</source>
         <translation>Universelle Dividende (UD)(t) in</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="86"></location>
+        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="103"/>
         <source>Members N(t)</source>
         <translation>Mitglieder N(t)</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="86"></location>
+        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="103"/>
         <source>Next UD date and time (t+1)</source>
         <translation>Datum und Zeit der nächsten UD (t+1)</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="158"></location>
+        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="175"/>
         <source>No Universal Dividend created yet.</source>
         <translation>Noch keine universelle Dividende erhalten.</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="133"></location>
+        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="150"/>
         <source>
-                &lt;table cellpadding="5"&gt;
-                &lt;tr&gt;&lt;td align="right"&gt;&lt;b&gt;{:}&lt;/b&gt;&lt;/td&gt;&lt;td&gt;{:}&lt;/td&gt;&lt;/tr&gt;
-                &lt;tr&gt;&lt;td align="right"&gt;&lt;b&gt;{:}&lt;/b&gt;&lt;/td&gt;&lt;td&gt;{:}&lt;/td&gt;&lt;/tr&gt;
-                &lt;tr&gt;&lt;td align="right"&gt;&lt;b&gt;{:}&lt;/b&gt;&lt;/td&gt;&lt;td&gt;{:}&lt;/td&gt;&lt;/tr&gt;
+                &lt;table cellpadding=&quot;5&quot;&gt;
+                &lt;tr&gt;&lt;td align=&quot;right&quot;&gt;&lt;b&gt;{:}&lt;/b&gt;&lt;/td&gt;&lt;td&gt;{:}&lt;/td&gt;&lt;/tr&gt;
+                &lt;tr&gt;&lt;td align=&quot;right&quot;&gt;&lt;b&gt;{:}&lt;/b&gt;&lt;/td&gt;&lt;td&gt;{:}&lt;/td&gt;&lt;/tr&gt;
+                &lt;tr&gt;&lt;td align=&quot;right&quot;&gt;&lt;b&gt;{:}&lt;/b&gt;&lt;/td&gt;&lt;td&gt;{:}&lt;/td&gt;&lt;/tr&gt;
                 &lt;/table&gt;
                 </source>
         <translation>
-                &lt;table cellpadding="5"&gt;
-                &lt;tr&gt;&lt;td align="right"&gt;&lt;b&gt;{:}&lt;/b&gt;&lt;/td&gt;&lt;td&gt;{:}&lt;/td&gt;&lt;/tr&gt;
-                &lt;tr&gt;&lt;td align="right"&gt;&lt;b&gt;{:}&lt;/b&gt;&lt;/td&gt;&lt;td&gt;{:}&lt;/td&gt;&lt;/tr&gt;
-                &lt;tr&gt;&lt;td align="right"&gt;&lt;b&gt;{:}&lt;/b&gt;&lt;/td&gt;&lt;td&gt;{:}&lt;/td&gt;&lt;/tr&gt;
+                &lt;table cellpadding=&quot;5&quot;&gt;
+                &lt;tr&gt;&lt;td align=&quot;right&quot;&gt;&lt;b&gt;{:}&lt;/b&gt;&lt;/td&gt;&lt;td&gt;{:}&lt;/td&gt;&lt;/tr&gt;
+                &lt;tr&gt;&lt;td align=&quot;right&quot;&gt;&lt;b&gt;{:}&lt;/b&gt;&lt;/td&gt;&lt;td&gt;{:}&lt;/td&gt;&lt;/tr&gt;
+                &lt;tr&gt;&lt;td align=&quot;right&quot;&gt;&lt;b&gt;{:}&lt;/b&gt;&lt;/td&gt;&lt;td&gt;{:}&lt;/td&gt;&lt;/tr&gt;
                 &lt;/table&gt;
                 </translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="133"></location>
+        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="150"/>
         <source>{:2.0%} / {:} days</source>
         <translation>{:2.0%} / {:} Tage</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="133"></location>
+        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="150"/>
         <source>Fundamental growth (c) / Delta time (dt)</source>
         <translation>Effektives Wachstum (c) / Delta Zeit (dt)</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="133"></location>
+        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="150"/>
         <source>Universal Dividend (formula)</source>
         <translation>Universelle Dividende (Formel)</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="133"></location>
+        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="150"/>
         <source>{:} = MAX {{ {:} {:} ; {:2.0%} &amp;#215; {:} {:} / {:} }}</source>
         <translation>{:} = MAX {{ {:} {:} ; {:2.0%} &amp;#215; {:} {:} / {:} }}</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="133"></location>
+        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="150"/>
         <source>Universal Dividend (computed)</source>
         <translation>Universelle Dividende (errechnet)</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="161"></location>
+        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="178"/>
         <source>
-            &lt;table cellpadding="5"&gt;
-            &lt;tr&gt;&lt;td align="right"&gt;&lt;b&gt;{:2.0%} / {:} days&lt;/b&gt;&lt;/td&gt;&lt;td&gt;{:}&lt;/td&gt;&lt;/tr&gt;
-            &lt;tr&gt;&lt;td align="right"&gt;&lt;b&gt;{:}&lt;/b&gt;&lt;/td&gt;&lt;td&gt;{:} {:}&lt;/td&gt;&lt;/tr&gt;
-            &lt;tr&gt;&lt;td align="right"&gt;&lt;b&gt;{:}&lt;/b&gt;&lt;/td&gt;&lt;td&gt;{:}&lt;/td&gt;&lt;/tr&gt;
-            &lt;tr&gt;&lt;td align="right"&gt;&lt;b&gt;{:}&lt;/b&gt;&lt;/td&gt;&lt;td&gt;{:}&lt;/td&gt;&lt;/tr&gt;
-            &lt;tr&gt;&lt;td align="right"&gt;&lt;b&gt;{:}&lt;/b&gt;&lt;/td&gt;&lt;td&gt;{:}&lt;/td&gt;&lt;/tr&gt;
-            &lt;tr&gt;&lt;td align="right"&gt;&lt;b&gt;{:}&lt;/b&gt;&lt;/td&gt;&lt;td&gt;{:}&lt;/td&gt;&lt;/tr&gt;
-            &lt;tr&gt;&lt;td align="right"&gt;&lt;b&gt;{:}&lt;/b&gt;&lt;/td&gt;&lt;td&gt;{:}&lt;/td&gt;&lt;/tr&gt;
-            &lt;tr&gt;&lt;td align="right"&gt;&lt;b&gt;{:2.0%}&lt;/b&gt;&lt;/td&gt;&lt;td&gt;{:}&lt;/td&gt;&lt;/tr&gt;
+            &lt;table cellpadding=&quot;5&quot;&gt;
+            &lt;tr&gt;&lt;td align=&quot;right&quot;&gt;&lt;b&gt;{:2.0%} / {:} days&lt;/b&gt;&lt;/td&gt;&lt;td&gt;{:}&lt;/td&gt;&lt;/tr&gt;
+            &lt;tr&gt;&lt;td align=&quot;right&quot;&gt;&lt;b&gt;{:}&lt;/b&gt;&lt;/td&gt;&lt;td&gt;{:} {:}&lt;/td&gt;&lt;/tr&gt;
+            &lt;tr&gt;&lt;td align=&quot;right&quot;&gt;&lt;b&gt;{:}&lt;/b&gt;&lt;/td&gt;&lt;td&gt;{:}&lt;/td&gt;&lt;/tr&gt;
+            &lt;tr&gt;&lt;td align=&quot;right&quot;&gt;&lt;b&gt;{:}&lt;/b&gt;&lt;/td&gt;&lt;td&gt;{:}&lt;/td&gt;&lt;/tr&gt;
+            &lt;tr&gt;&lt;td align=&quot;right&quot;&gt;&lt;b&gt;{:}&lt;/b&gt;&lt;/td&gt;&lt;td&gt;{:}&lt;/td&gt;&lt;/tr&gt;
+            &lt;tr&gt;&lt;td align=&quot;right&quot;&gt;&lt;b&gt;{:}&lt;/b&gt;&lt;/td&gt;&lt;td&gt;{:}&lt;/td&gt;&lt;/tr&gt;
+            &lt;tr&gt;&lt;td align=&quot;right&quot;&gt;&lt;b&gt;{:}&lt;/b&gt;&lt;/td&gt;&lt;td&gt;{:}&lt;/td&gt;&lt;/tr&gt;
+            &lt;tr&gt;&lt;td align=&quot;right&quot;&gt;&lt;b&gt;{:2.0%}&lt;/b&gt;&lt;/td&gt;&lt;td&gt;{:}&lt;/td&gt;&lt;/tr&gt;
             &lt;/table&gt;
             </source>
         <translation>
-            &lt;table cellpadding="5"&gt;
-            &lt;tr&gt;&lt;td align="right"&gt;&lt;b&gt;{:2.0%} / {:} Tage&lt;/b&gt;&lt;/td&gt;&lt;td&gt;{:}&lt;/td&gt;&lt;/tr&gt;
-            &lt;tr&gt;&lt;td align="right"&gt;&lt;b&gt;{:}&lt;/b&gt;&lt;/td&gt;&lt;td&gt;{:} {:}&lt;/td&gt;&lt;/tr&gt;
-            &lt;tr&gt;&lt;td align="right"&gt;&lt;b&gt;{:}&lt;/b&gt;&lt;/td&gt;&lt;td&gt;{:}&lt;/td&gt;&lt;/tr&gt;
-            &lt;tr&gt;&lt;td align="right"&gt;&lt;b&gt;{:}&lt;/b&gt;&lt;/td&gt;&lt;td&gt;{:}&lt;/td&gt;&lt;/tr&gt;
-            &lt;tr&gt;&lt;td align="right"&gt;&lt;b&gt;{:}&lt;/b&gt;&lt;/td&gt;&lt;td&gt;{:}&lt;/td&gt;&lt;/tr&gt;
-            &lt;tr&gt;&lt;td align="right"&gt;&lt;b&gt;{:}&lt;/b&gt;&lt;/td&gt;&lt;td&gt;{:}&lt;/td&gt;&lt;/tr&gt;
-            &lt;tr&gt;&lt;td align="right"&gt;&lt;b&gt;{:}&lt;/b&gt;&lt;/td&gt;&lt;td&gt;{:}&lt;/td&gt;&lt;/tr&gt;
-            &lt;tr&gt;&lt;td align="right"&gt;&lt;b&gt;{:2.0%}&lt;/b&gt;&lt;/td&gt;&lt;td&gt;{:}&lt;/td&gt;&lt;/tr&gt;
+            &lt;table cellpadding=&quot;5&quot;&gt;
+            &lt;tr&gt;&lt;td align=&quot;right&quot;&gt;&lt;b&gt;{:2.0%} / {:} Tage&lt;/b&gt;&lt;/td&gt;&lt;td&gt;{:}&lt;/td&gt;&lt;/tr&gt;
+            &lt;tr&gt;&lt;td align=&quot;right&quot;&gt;&lt;b&gt;{:}&lt;/b&gt;&lt;/td&gt;&lt;td&gt;{:} {:}&lt;/td&gt;&lt;/tr&gt;
+            &lt;tr&gt;&lt;td align=&quot;right&quot;&gt;&lt;b&gt;{:}&lt;/b&gt;&lt;/td&gt;&lt;td&gt;{:}&lt;/td&gt;&lt;/tr&gt;
+            &lt;tr&gt;&lt;td align=&quot;right&quot;&gt;&lt;b&gt;{:}&lt;/b&gt;&lt;/td&gt;&lt;td&gt;{:}&lt;/td&gt;&lt;/tr&gt;
+            &lt;tr&gt;&lt;td align=&quot;right&quot;&gt;&lt;b&gt;{:}&lt;/b&gt;&lt;/td&gt;&lt;td&gt;{:}&lt;/td&gt;&lt;/tr&gt;
+            &lt;tr&gt;&lt;td align=&quot;right&quot;&gt;&lt;b&gt;{:}&lt;/b&gt;&lt;/td&gt;&lt;td&gt;{:}&lt;/td&gt;&lt;/tr&gt;
+            &lt;tr&gt;&lt;td align=&quot;right&quot;&gt;&lt;b&gt;{:}&lt;/b&gt;&lt;/td&gt;&lt;td&gt;{:}&lt;/td&gt;&lt;/tr&gt;
+            &lt;tr&gt;&lt;td align=&quot;right&quot;&gt;&lt;b&gt;{:2.0%}&lt;/b&gt;&lt;/td&gt;&lt;td&gt;{:}&lt;/td&gt;&lt;/tr&gt;
             &lt;/table&gt;
             </translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="161"></location>
+        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="178"/>
         <source>Fundamental growth (c)</source>
         <translation>Effektives Wachstum (c)</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="161"></location>
+        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="178"/>
         <source>Initial Universal Dividend UD(0) in</source>
         <translation>Initiale universelle Dividende UD(0) in</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="161"></location>
+        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="178"/>
         <source>Time period (dt) in days (86400 seconds) between two UD</source>
         <translation>Zeitraum (dt) in Tagen (86400 Sekunden) zwischen zwei UDs</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="161"></location>
+        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="178"/>
         <source>Number of blocks used for calculating median time</source>
         <translation>Anzahl der Blöcke zur Berechnung des Zeit-Medians</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="161"></location>
+        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="178"/>
         <source>The average time in seconds for writing 1 block (wished time)</source>
         <translation>Durchschnittliche Zeit zum Schreiben eines Blocks in Sekunden (erhoffte Zeit)</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="161"></location>
+        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="178"/>
         <source>The number of blocks required to evaluate again PoWMin value</source>
         <translation>Anzahl der Blöcke, die mindesten gegen den POWMin-Wert validiert werden müssen</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="161"></location>
+        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="178"/>
         <source>The number of previous blocks to check for personalized difficulty</source>
         <translation>Anzahl vorhergehender Blöcke, um den individuellen Schwierigkeitsgrad zu erhalten</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="161"></location>
+        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="178"/>
         <source>The percent of previous issuers to reach for personalized difficulty</source>
         <translation type="unfinished">Prozentsatz vorhergehender Emittenten, der erreicht werden muss, um den persönlichen Schwierigkeitsgrad zu erhalten</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="196"></location>
+        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="213"/>
         <source>
-            &lt;table cellpadding="5"&gt;
-            &lt;tr&gt;&lt;td align="right"&gt;&lt;b&gt;{:}&lt;/b&gt;&lt;/td&gt;&lt;td&gt;{:}&lt;/td&gt;&lt;/tr&gt;
-            &lt;tr&gt;&lt;td align="right"&gt;&lt;b&gt;{:}&lt;/b&gt;&lt;/td&gt;&lt;td&gt;{:}&lt;/td&gt;&lt;/tr&gt;
-            &lt;tr&gt;&lt;td align="right"&gt;&lt;b&gt;{:}&lt;/b&gt;&lt;/td&gt;&lt;td&gt;{:}&lt;/td&gt;&lt;/tr&gt;
-            &lt;tr&gt;&lt;td align="right"&gt;&lt;b&gt;{:}&lt;/b&gt;&lt;/td&gt;&lt;td&gt;{:}&lt;/td&gt;&lt;/tr&gt;
-            &lt;tr&gt;&lt;td align="right"&gt;&lt;b&gt;{:}&lt;/b&gt;&lt;/td&gt;&lt;td&gt;{:}&lt;/td&gt;&lt;/tr&gt;
-            &lt;tr&gt;&lt;td align="right"&gt;&lt;b&gt;{:}&lt;/b&gt;&lt;/td&gt;&lt;td&gt;{:}&lt;/td&gt;&lt;/tr&gt;
+            &lt;table cellpadding=&quot;5&quot;&gt;
+            &lt;tr&gt;&lt;td align=&quot;right&quot;&gt;&lt;b&gt;{:}&lt;/b&gt;&lt;/td&gt;&lt;td&gt;{:}&lt;/td&gt;&lt;/tr&gt;
+            &lt;tr&gt;&lt;td align=&quot;right&quot;&gt;&lt;b&gt;{:}&lt;/b&gt;&lt;/td&gt;&lt;td&gt;{:}&lt;/td&gt;&lt;/tr&gt;
+            &lt;tr&gt;&lt;td align=&quot;right&quot;&gt;&lt;b&gt;{:}&lt;/b&gt;&lt;/td&gt;&lt;td&gt;{:}&lt;/td&gt;&lt;/tr&gt;
+            &lt;tr&gt;&lt;td align=&quot;right&quot;&gt;&lt;b&gt;{:}&lt;/b&gt;&lt;/td&gt;&lt;td&gt;{:}&lt;/td&gt;&lt;/tr&gt;
+            &lt;tr&gt;&lt;td align=&quot;right&quot;&gt;&lt;b&gt;{:}&lt;/b&gt;&lt;/td&gt;&lt;td&gt;{:}&lt;/td&gt;&lt;/tr&gt;
+            &lt;tr&gt;&lt;td align=&quot;right&quot;&gt;&lt;b&gt;{:}&lt;/b&gt;&lt;/td&gt;&lt;td&gt;{:}&lt;/td&gt;&lt;/tr&gt;
             &lt;/table&gt;
             </source>
         <translation>
-            &lt;table cellpadding="5"&gt;
-            &lt;tr&gt;&lt;td align="right"&gt;&lt;b&gt;{:}&lt;/b&gt;&lt;/td&gt;&lt;td&gt;{:}&lt;/td&gt;&lt;/tr&gt;
-            &lt;tr&gt;&lt;td align="right"&gt;&lt;b&gt;{:}&lt;/b&gt;&lt;/td&gt;&lt;td&gt;{:}&lt;/td&gt;&lt;/tr&gt;
-            &lt;tr&gt;&lt;td align="right"&gt;&lt;b&gt;{:}&lt;/b&gt;&lt;/td&gt;&lt;td&gt;{:}&lt;/td&gt;&lt;/tr&gt;
-            &lt;tr&gt;&lt;td align="right"&gt;&lt;b&gt;{:}&lt;/b&gt;&lt;/td&gt;&lt;td&gt;{:}&lt;/td&gt;&lt;/tr&gt;
-            &lt;tr&gt;&lt;td align="right"&gt;&lt;b&gt;{:}&lt;/b&gt;&lt;/td&gt;&lt;td&gt;{:}&lt;/td&gt;&lt;/tr&gt;
-            &lt;tr&gt;&lt;td align="right"&gt;&lt;b&gt;{:}&lt;/b&gt;&lt;/td&gt;&lt;td&gt;{:}&lt;/td&gt;&lt;/tr&gt;
+            &lt;table cellpadding=&quot;5&quot;&gt;
+            &lt;tr&gt;&lt;td align=&quot;right&quot;&gt;&lt;b&gt;{:}&lt;/b&gt;&lt;/td&gt;&lt;td&gt;{:}&lt;/td&gt;&lt;/tr&gt;
+            &lt;tr&gt;&lt;td align=&quot;right&quot;&gt;&lt;b&gt;{:}&lt;/b&gt;&lt;/td&gt;&lt;td&gt;{:}&lt;/td&gt;&lt;/tr&gt;
+            &lt;tr&gt;&lt;td align=&quot;right&quot;&gt;&lt;b&gt;{:}&lt;/b&gt;&lt;/td&gt;&lt;td&gt;{:}&lt;/td&gt;&lt;/tr&gt;
+            &lt;tr&gt;&lt;td align=&quot;right&quot;&gt;&lt;b&gt;{:}&lt;/b&gt;&lt;/td&gt;&lt;td&gt;{:}&lt;/td&gt;&lt;/tr&gt;
+            &lt;tr&gt;&lt;td align=&quot;right&quot;&gt;&lt;b&gt;{:}&lt;/b&gt;&lt;/td&gt;&lt;td&gt;{:}&lt;/td&gt;&lt;/tr&gt;
+            &lt;tr&gt;&lt;td align=&quot;right&quot;&gt;&lt;b&gt;{:}&lt;/b&gt;&lt;/td&gt;&lt;td&gt;{:}&lt;/td&gt;&lt;/tr&gt;
             &lt;/table&gt;
             </translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="196"></location>
+        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="213"/>
         <source>Minimum delay between 2 identical certifications (in days)</source>
         <translation>Minimale Frist (in Tagen) zwischen zwei identischen Zertifizierungen</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="196"></location>
+        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="213"/>
         <source>Maximum age of a valid signature (in days)</source>
         <translation>Maximales Alter einer validen Unterschrift (in Tagen)</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="196"></location>
+        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="213"/>
         <source>Minimum quantity of signatures to be part of the WoT</source>
         <translation>Mindestanzahl an Unterschriften, um ein Teil des WoT zu werden</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="196"></location>
+        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="213"/>
         <source>Minimum quantity of valid made certifications to be part of the WoT for distance rule</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="196"></location>
+        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="213"/>
         <source>Maximum age of a valid membership (in days)</source>
         <translation>Höchstalter eines gültigen Mitgliedschaft (in Tagen)</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="196"></location>
+        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="213"/>
         <source>Maximum distance between each WoT member and a newcomer</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="86"></location>
+        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="103"/>
         <source>
-                &lt;table cellpadding="5"&gt;
-                &lt;tr&gt;&lt;td align="right"&gt;&lt;b&gt;{:}&lt;/b&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;{:} {:}&lt;/td&gt;&lt;/tr&gt;
-                &lt;tr&gt;&lt;td align="right"&gt;&lt;b&gt;{:}&lt;/b&gt;&lt;/td&gt;&lt;td&gt;{:} {:}&lt;/td&gt;&lt;/tr&gt;
-                &lt;tr&gt;&lt;td align="right"&gt;&lt;b&gt;{:}&lt;/b&gt;&lt;/td&gt;&lt;td&gt;{:}&lt;/td&gt;&lt;/tr&gt;
-                &lt;tr&gt;&lt;td align="right"&gt;&lt;b&gt;{:}&lt;/b&gt;&lt;/td&gt;&lt;td&gt;{:} {:}&lt;/td&gt;&lt;/tr&gt;
-                &lt;tr&gt;&lt;td align="right"&gt;&lt;b&gt;{:2.2%} / {:} days&lt;/b&gt;&lt;/td&gt;&lt;td&gt;{:}&lt;/td&gt;&lt;/tr&gt;
-                &lt;tr&gt;&lt;td align="right"&gt;&lt;b&gt;{:}&lt;/b&gt;&lt;/td&gt;&lt;td&gt;{:}&lt;/td&gt;&lt;/tr&gt;
-                &lt;tr&gt;&lt;td align="right"&gt;&lt;b&gt;{:}&lt;/b&gt;&lt;/td&gt;&lt;td&gt;{:}&lt;/td&gt;&lt;/tr&gt;
+                &lt;table cellpadding=&quot;5&quot;&gt;
+                &lt;tr&gt;&lt;td align=&quot;right&quot;&gt;&lt;b&gt;{:}&lt;/b&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;{:} {:}&lt;/td&gt;&lt;/tr&gt;
+                &lt;tr&gt;&lt;td align=&quot;right&quot;&gt;&lt;b&gt;{:}&lt;/b&gt;&lt;/td&gt;&lt;td&gt;{:} {:}&lt;/td&gt;&lt;/tr&gt;
+                &lt;tr&gt;&lt;td align=&quot;right&quot;&gt;&lt;b&gt;{:}&lt;/b&gt;&lt;/td&gt;&lt;td&gt;{:}&lt;/td&gt;&lt;/tr&gt;
+                &lt;tr&gt;&lt;td align=&quot;right&quot;&gt;&lt;b&gt;{:}&lt;/b&gt;&lt;/td&gt;&lt;td&gt;{:} {:}&lt;/td&gt;&lt;/tr&gt;
+                &lt;tr&gt;&lt;td align=&quot;right&quot;&gt;&lt;b&gt;{:2.2%} / {:} days&lt;/b&gt;&lt;/td&gt;&lt;td&gt;{:}&lt;/td&gt;&lt;/tr&gt;
+                &lt;tr&gt;&lt;td align=&quot;right&quot;&gt;&lt;b&gt;{:}&lt;/b&gt;&lt;/td&gt;&lt;td&gt;{:}&lt;/td&gt;&lt;/tr&gt;
+                &lt;tr&gt;&lt;td align=&quot;right&quot;&gt;&lt;b&gt;{:}&lt;/b&gt;&lt;/td&gt;&lt;td&gt;{:}&lt;/td&gt;&lt;/tr&gt;
                 &lt;/table&gt;
                 </source>
         <translation>
-                &lt;table cellpadding="5"&gt;
-                &lt;tr&gt;&lt;td align="right"&gt;&lt;b&gt;{:}&lt;/b&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;{:} {:}&lt;/td&gt;&lt;/tr&gt;
-                &lt;tr&gt;&lt;td align="right"&gt;&lt;b&gt;{:}&lt;/b&gt;&lt;/td&gt;&lt;td&gt;{:} {:}&lt;/td&gt;&lt;/tr&gt;
-                &lt;tr&gt;&lt;td align="right"&gt;&lt;b&gt;{:}&lt;/b&gt;&lt;/td&gt;&lt;td&gt;{:}&lt;/td&gt;&lt;/tr&gt;
-                &lt;tr&gt;&lt;td align="right"&gt;&lt;b&gt;{:}&lt;/b&gt;&lt;/td&gt;&lt;td&gt;{:} {:}&lt;/td&gt;&lt;/tr&gt;
-                &lt;tr&gt;&lt;td align="right"&gt;&lt;b&gt;{:2.2%} / {:} tage&lt;/b&gt;&lt;/td&gt;&lt;td&gt;{:}&lt;/td&gt;&lt;/tr&gt;
-                &lt;tr&gt;&lt;td align="right"&gt;&lt;b&gt;{:}&lt;/b&gt;&lt;/td&gt;&lt;td&gt;{:}&lt;/td&gt;&lt;/tr&gt;
-                &lt;tr&gt;&lt;td align="right"&gt;&lt;b&gt;{:}&lt;/b&gt;&lt;/td&gt;&lt;td&gt;{:}&lt;/td&gt;&lt;/tr&gt;
+                &lt;table cellpadding=&quot;5&quot;&gt;
+                &lt;tr&gt;&lt;td align=&quot;right&quot;&gt;&lt;b&gt;{:}&lt;/b&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;{:} {:}&lt;/td&gt;&lt;/tr&gt;
+                &lt;tr&gt;&lt;td align=&quot;right&quot;&gt;&lt;b&gt;{:}&lt;/b&gt;&lt;/td&gt;&lt;td&gt;{:} {:}&lt;/td&gt;&lt;/tr&gt;
+                &lt;tr&gt;&lt;td align=&quot;right&quot;&gt;&lt;b&gt;{:}&lt;/b&gt;&lt;/td&gt;&lt;td&gt;{:}&lt;/td&gt;&lt;/tr&gt;
+                &lt;tr&gt;&lt;td align=&quot;right&quot;&gt;&lt;b&gt;{:}&lt;/b&gt;&lt;/td&gt;&lt;td&gt;{:} {:}&lt;/td&gt;&lt;/tr&gt;
+                &lt;tr&gt;&lt;td align=&quot;right&quot;&gt;&lt;b&gt;{:2.2%} / {:} tage&lt;/b&gt;&lt;/td&gt;&lt;td&gt;{:}&lt;/td&gt;&lt;/tr&gt;
+                &lt;tr&gt;&lt;td align=&quot;right&quot;&gt;&lt;b&gt;{:}&lt;/b&gt;&lt;/td&gt;&lt;td&gt;{:}&lt;/td&gt;&lt;/tr&gt;
+                &lt;tr&gt;&lt;td align=&quot;right&quot;&gt;&lt;b&gt;{:}&lt;/b&gt;&lt;/td&gt;&lt;td&gt;{:}&lt;/td&gt;&lt;/tr&gt;
                 &lt;/table&gt;
                 </translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="86"></location>
+        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="103"/>
         <source>Monetary Mass M(t-1) in</source>
         <translation>Geldversorgung M(t-1) im</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="86"></location>
+        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="103"/>
         <source>Monetary Mass per member M(t-1)/N(t) in</source>
         <translation>Geldmenge pro Mitglied M(t-1)/N(t) im</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="86"></location>
+        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="103"/>
         <source>Actual growth c = UD(t)/[M(t-1)/N(t)]</source>
         <translation>Tatsächliche Wachstum : c = UD(t) / [ M(t-1) / N(t) ]</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="86"></location>
+        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="103"/>
         <source>Last UD date and time (t)</source>
         <translation>Letzte UD Datum und Uhrzeit (t)</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="133"></location>
+        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="150"/>
         <source>UD(t+1) = MAX { UD(t) ; c &amp;#215; M(t) / N(t+1) }</source>
         <translation>UD(t+1) = MAX { UD(t) ; c &amp;#215; M(t) / N(t+1) }</translation>
     </message>
@@ -1232,127 +1309,127 @@ Sie können die UID nur widerrufen, wenn sie noch nicht vom Netzwerk validiert w
 <context>
     <name>MainWindow</name>
     <message>
-        <location filename="../../ui/mainwindow.ui" line="30"></location>
+        <location filename="../../ui/mainwindow.ui" line="30"/>
         <source>Fi&amp;le</source>
         <translation type="unfinished">&amp;Datei</translation>
     </message>
     <message>
-        <location filename="../../ui/mainwindow.ui" line="131"></location>
+        <location filename="../../ui/mainwindow.ui" line="131"/>
         <source>Account</source>
         <translation>Account</translation>
     </message>
     <message>
-        <location filename="../../ui/mainwindow.ui" line="55"></location>
+        <location filename="../../ui/mainwindow.ui" line="55"/>
         <source>&amp;Contacts</source>
         <translation type="obsolete">&amp;Kontakte</translation>
     </message>
     <message>
-        <location filename="../../ui/mainwindow.ui" line="50"></location>
+        <location filename="../../ui/mainwindow.ui" line="50"/>
         <source>&amp;Open</source>
         <translation type="unfinished">&amp;öffnen</translation>
     </message>
     <message>
-        <location filename="../../ui/mainwindow.ui" line="65"></location>
+        <location filename="../../ui/mainwindow.ui" line="65"/>
         <source>&amp;Help</source>
         <translation>&amp;Helfen</translation>
     </message>
     <message>
-        <location filename="../../ui/mainwindow.ui" line="76"></location>
+        <location filename="../../ui/mainwindow.ui" line="76"/>
         <source>Manage accounts</source>
         <translation>Konten verwalten</translation>
     </message>
     <message>
-        <location filename="../../ui/mainwindow.ui" line="81"></location>
+        <location filename="../../ui/mainwindow.ui" line="81"/>
         <source>Configure trustable nodes</source>
         <translation>Konfigurieren Sie vertrauenswürdige Knoten</translation>
     </message>
     <message>
-        <location filename="../../ui/mainwindow.ui" line="97"></location>
+        <location filename="../../ui/mainwindow.ui" line="97"/>
         <source>&amp;Add a contact</source>
         <translation type="obsolete">&amp;Hinzufügen eines Kontakts</translation>
     </message>
     <message>
-        <location filename="../../ui/mainwindow.ui" line="106"></location>
+        <location filename="../../ui/mainwindow.ui" line="106"/>
         <source>Send a message</source>
         <translation>Eine Nachricht schicken</translation>
     </message>
     <message>
-        <location filename="../../ui/mainwindow.ui" line="111"></location>
+        <location filename="../../ui/mainwindow.ui" line="111"/>
         <source>Send money</source>
         <translation type="unfinished">Geld schicken</translation>
     </message>
     <message>
-        <location filename="../../ui/mainwindow.ui" line="116"></location>
+        <location filename="../../ui/mainwindow.ui" line="116"/>
         <source>Remove contact</source>
         <translation>Kontakt löschen</translation>
     </message>
     <message>
-        <location filename="../../ui/mainwindow.ui" line="121"></location>
+        <location filename="../../ui/mainwindow.ui" line="121"/>
         <source>Save</source>
         <translation>Speichern</translation>
     </message>
     <message>
-        <location filename="../../ui/mainwindow.ui" line="126"></location>
+        <location filename="../../ui/mainwindow.ui" line="126"/>
         <source>&amp;Quit</source>
         <translation>&amp;Beenden</translation>
     </message>
     <message>
-        <location filename="../../ui/mainwindow.ui" line="136"></location>
+        <location filename="../../ui/mainwindow.ui" line="136"/>
         <source>&amp;Transfer money</source>
         <translation type="unfinished">&amp;Geld überweisen</translation>
     </message>
     <message>
-        <location filename="../../ui/mainwindow.ui" line="141"></location>
+        <location filename="../../ui/mainwindow.ui" line="141"/>
         <source>&amp;Configure</source>
         <translation>&amp;Konfigurieren</translation>
     </message>
     <message>
-        <location filename="../../ui/mainwindow.ui" line="146"></location>
+        <location filename="../../ui/mainwindow.ui" line="146"/>
         <source>&amp;Import</source>
         <translation>&amp;Import</translation>
     </message>
     <message>
-        <location filename="../../ui/mainwindow.ui" line="151"></location>
+        <location filename="../../ui/mainwindow.ui" line="151"/>
         <source>&amp;Export</source>
         <translation>&amp;Export</translation>
     </message>
     <message>
-        <location filename="../../ui/mainwindow.ui" line="167"></location>
+        <location filename="../../ui/mainwindow.ui" line="167"/>
         <source>&amp;Certification</source>
         <translation type="obsolete">Zertifizierung</translation>
     </message>
     <message>
-        <location filename="../../ui/mainwindow.ui" line="161"></location>
+        <location filename="../../ui/mainwindow.ui" line="161"/>
         <source>&amp;Set as default</source>
         <translation type="unfinished">&amp;Als Standard einstellen</translation>
     </message>
     <message>
-        <location filename="../../ui/mainwindow.ui" line="166"></location>
+        <location filename="../../ui/mainwindow.ui" line="166"/>
         <source>A&amp;bout</source>
         <translation>&amp;Über</translation>
     </message>
     <message>
-        <location filename="../../ui/mainwindow.ui" line="171"></location>
+        <location filename="../../ui/mainwindow.ui" line="171"/>
         <source>&amp;Preferences</source>
         <translation>%Voreinstellungen</translation>
     </message>
     <message>
-        <location filename="../../ui/mainwindow.ui" line="176"></location>
+        <location filename="../../ui/mainwindow.ui" line="176"/>
         <source>&amp;Add account</source>
         <translation>&amp;Konto hinzufügen</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/mainwindow.py" line="211"></location>
+        <location filename="../../../src/cutecoin/gui/mainwindow.py" line="211"/>
         <source>Latest release : {version}</source>
         <translation>Neueste Version : {version}</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/mainwindow.py" line="218"></location>
+        <location filename="../../../src/cutecoin/gui/mainwindow.py" line="218"/>
         <source>Download link</source>
         <translation>Download link</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/mainwindow.py" line="225"></location>
+        <location filename="../../../src/cutecoin/gui/mainwindow.py" line="225"/>
         <source>
         &lt;h1&gt;Cutecoin&lt;/h1&gt;
 
@@ -1369,7 +1446,7 @@ Sie können die UID nur widerrufen, wenn sie noch nicht vom Netzwerk validiert w
         &lt;p&gt;vit&lt;/p&gt;
         &lt;p&gt;canercandan&lt;/p&gt;
         </source>
-        <translation>
+        <translation type="obsolete">
         &lt;h1&gt;Cutecoin&lt;/h1&gt;
 
         &lt;p&gt;Python/Qt uCoin client&lt;/p&gt;
@@ -1387,104 +1464,125 @@ Sie können die UID nur widerrufen, wenn sie noch nicht vom Netzwerk validiert w
         </translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/mainwindow.py" line="250"></location>
+        <location filename="../../../src/cutecoin/gui/mainwindow.py" line="251"/>
         <source>Please get the latest release {version}</source>
         <translation type="unfinished">Bitte laden Sie die neueste Version {version} herunter</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/mainwindow.py" line="285"></location>
+        <location filename="../../../src/cutecoin/gui/mainwindow.py" line="283"/>
         <source>Edit</source>
         <translation>Bearbeiten</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/mainwindow.py" line="288"></location>
+        <location filename="../../../src/cutecoin/gui/mainwindow.py" line="286"/>
         <source>Delete</source>
         <translation>Löschen</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/mainwindow.py" line="305"></location>
+        <location filename="../../../src/cutecoin/gui/mainwindow.py" line="303"/>
         <source>CuteCoin {0}</source>
         <translation>CuteCoin {0}</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/mainwindow.py" line="332"></location>
+        <location filename="../../../src/cutecoin/gui/mainwindow.py" line="330"/>
         <source>CuteCoin {0} - Account : {1}</source>
         <translation>CuteCoin {0} - Konto : {1}</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/mainwindow.py" line="350"></location>
+        <location filename="../../../src/cutecoin/gui/mainwindow.py" line="348"/>
         <source>Export an account</source>
         <translation>Konto exportieren</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/mainwindow.py" line="351"></location>
+        <location filename="../../../src/cutecoin/gui/mainwindow.py" line="349"/>
         <source>All account files (*.acc)</source>
         <translation type="unfinished">Alle Konten-Dateien (*.acc)</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/mainwindow.py" line="352"></location>
+        <location filename="../../../src/cutecoin/gui/mainwindow.py" line="350"/>
         <source>Export</source>
         <translation>Export</translation>
     </message>
     <message>
-        <location filename="../../ui/mainwindow.ui" line="40"></location>
+        <location filename="../../ui/mainwindow.ui" line="40"/>
         <source>Acco&amp;unt</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../ui/mainwindow.ui" line="44"></location>
+        <location filename="../../ui/mainwindow.ui" line="44"/>
         <source>Co&amp;ntacts</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../ui/mainwindow.ui" line="86"></location>
+        <location filename="../../ui/mainwindow.ui" line="86"/>
         <source>A&amp;dd a contact</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../ui/mainwindow.ui" line="156"></location>
+        <location filename="../../ui/mainwindow.ui" line="156"/>
         <source>C&amp;ertification</source>
         <translation type="unfinished"></translation>
     </message>
+    <message>
+        <location filename="../../../src/cutecoin/gui/mainwindow.py" line="225"/>
+        <source>
+        &lt;h1&gt;Cutecoin&lt;/h1&gt;
+
+        &lt;p&gt;Python/Qt uCoin client&lt;/p&gt;
+
+        &lt;p&gt;Version : {:}&lt;/p&gt;
+        {new_version_text}
+
+        &lt;p&gt;License : GPLv3&lt;/p&gt;
+
+        &lt;p&gt;&lt;b&gt;Authors&lt;/b&gt;&lt;/p&gt;
+
+        &lt;p&gt;inso&lt;/p&gt;
+        &lt;p&gt;vit&lt;/p&gt;
+        &lt;p&gt;Moul&lt;/p&gt;
+        &lt;p&gt;canercandan&lt;/p&gt;
+        </source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>MemberDialog</name>
     <message>
-        <location filename="../../../src/cutecoin/gui/member.py" line="46"></location>
+        <location filename="../../../src/cutecoin/gui/member.py" line="46"/>
         <source>not a member</source>
         <translation>Kein Mitglied</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/member.py" line="60"></location>
+        <location filename="../../../src/cutecoin/gui/member.py" line="60"/>
         <source>
-            &lt;table cellpadding="5"&gt;
-            &lt;tr&gt;&lt;td align="right"&gt;&lt;b&gt;{:}&lt;/b&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;{:}&lt;/td&gt;&lt;/tr&gt;
-            &lt;tr&gt;&lt;td align="right"&gt;&lt;b&gt;{:}&lt;/b&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;{:}&lt;/td&gt;&lt;/tr&gt;
+            &lt;table cellpadding=&quot;5&quot;&gt;
+            &lt;tr&gt;&lt;td align=&quot;right&quot;&gt;&lt;b&gt;{:}&lt;/b&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;{:}&lt;/td&gt;&lt;/tr&gt;
+            &lt;tr&gt;&lt;td align=&quot;right&quot;&gt;&lt;b&gt;{:}&lt;/b&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;{:}&lt;/td&gt;&lt;/tr&gt;
             </source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/member.py" line="64"></location>
+        <location filename="../../../src/cutecoin/gui/member.py" line="64"/>
         <source>Public key</source>
         <translation>Einen öffentlichen Schlüssel</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/member.py" line="64"></location>
+        <location filename="../../../src/cutecoin/gui/member.py" line="64"/>
         <source>Join date</source>
         <translation>Registriert seit</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/member.py" line="87"></location>
-        <source>&lt;tr&gt;&lt;td align="right"&gt;&lt;b&gt;{:}&lt;/b&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;{:}&lt;/td&gt;&lt;/tr&gt;</source>
-        <translation>&lt;tr&gt;&lt;td align="right"&gt;&lt;b&gt;{:}&lt;/b&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;{:}&lt;/td&gt;&lt;/tr&gt;</translation>
+        <location filename="../../../src/cutecoin/gui/member.py" line="87"/>
+        <source>&lt;tr&gt;&lt;td align=&quot;right&quot;&gt;&lt;b&gt;{:}&lt;/b&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;{:}&lt;/td&gt;&lt;/tr&gt;</source>
+        <translation>&lt;tr&gt;&lt;td align=&quot;right&quot;&gt;&lt;b&gt;{:}&lt;/b&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;{:}&lt;/td&gt;&lt;/tr&gt;</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/member.py" line="73"></location>
+        <location filename="../../../src/cutecoin/gui/member.py" line="73"/>
         <source>Distance</source>
         <translation>Abstand</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/member.py" line="80"></location>
+        <location filename="../../../src/cutecoin/gui/member.py" line="80"/>
         <source>Path</source>
         <translation type="unfinished">Weg</translation>
     </message>
@@ -1492,62 +1590,62 @@ Sie können die UID nur widerrufen, wenn sie noch nicht vom Netzwerk validiert w
 <context>
     <name>NetworkFilterProxyModel</name>
     <message>
-        <location filename="../../../src/cutecoin/models/network.py" line="47"></location>
+        <location filename="../../../src/cutecoin/models/network.py" line="48"/>
         <source>Address</source>
         <translation>Anschrift</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/models/network.py" line="48"></location>
+        <location filename="../../../src/cutecoin/models/network.py" line="49"/>
         <source>Port</source>
         <translation>Port</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/models/network.py" line="49"></location>
+        <location filename="../../../src/cutecoin/models/network.py" line="50"/>
         <source>Block</source>
         <translation>Block</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/models/network.py" line="51"></location>
+        <location filename="../../../src/cutecoin/models/network.py" line="52"/>
         <source>UID</source>
         <translation>UID</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/models/network.py" line="52"></location>
+        <location filename="../../../src/cutecoin/models/network.py" line="53"/>
         <source>Member</source>
         <translation>Mitglied</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/models/network.py" line="53"></location>
+        <location filename="../../../src/cutecoin/models/network.py" line="54"/>
         <source>Pubkey</source>
         <translation type="unfinished">Öffentlicher Schlüssel</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/models/network.py" line="54"></location>
+        <location filename="../../../src/cutecoin/models/network.py" line="55"/>
         <source>Software</source>
         <translation>Software</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/models/network.py" line="55"></location>
+        <location filename="../../../src/cutecoin/models/network.py" line="56"/>
         <source>Version</source>
         <translation>Version</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/models/network.py" line="68"></location>
+        <location filename="../../../src/cutecoin/models/network.py" line="69"/>
         <source>yes</source>
         <translation>ja</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/models/network.py" line="68"></location>
+        <location filename="../../../src/cutecoin/models/network.py" line="69"/>
         <source>no</source>
         <translation>nein</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/models/network.py" line="68"></location>
+        <location filename="../../../src/cutecoin/models/network.py" line="69"/>
         <source>offline</source>
         <translation>offline</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/models/network.py" line="50"></location>
+        <location filename="../../../src/cutecoin/models/network.py" line="51"/>
         <source>Hash</source>
         <translation>Hash</translation>
     </message>
@@ -1555,22 +1653,22 @@ Sie können die UID nur widerrufen, wenn sie noch nicht vom Netzwerk validiert w
 <context>
     <name>NetworkTabWidget</name>
     <message>
-        <location filename="../../ui/network_tab.ui" line="14"></location>
+        <location filename="../../ui/network_tab.ui" line="14"/>
         <source>Form</source>
         <translation>Formular</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/network_tab.py" line="68"></location>
+        <location filename="../../../src/cutecoin/gui/network_tab.py" line="70"/>
         <source>Unset root node</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/network_tab.py" line="74"></location>
+        <location filename="../../../src/cutecoin/gui/network_tab.py" line="76"/>
         <source>Set as root node</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/network_tab.py" line="80"></location>
+        <location filename="../../../src/cutecoin/gui/network_tab.py" line="82"/>
         <source>Open in browser</source>
         <translation>Im Browser öffnen</translation>
     </message>
@@ -1578,22 +1676,22 @@ Sie können die UID nur widerrufen, wenn sie noch nicht vom Netzwerk validiert w
 <context>
     <name>NetworkTableModel</name>
     <message>
-        <location filename="../../../src/cutecoin/models/network.py" line="135"></location>
+        <location filename="../../../src/cutecoin/models/network.py" line="136"/>
         <source>Online</source>
         <translation>Online</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/models/network.py" line="136"></location>
+        <location filename="../../../src/cutecoin/models/network.py" line="137"/>
         <source>Offline</source>
         <translation>Offline</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/models/network.py" line="137"></location>
+        <location filename="../../../src/cutecoin/models/network.py" line="138"/>
         <source>Unsynchronized</source>
         <translation>Unsynchronisierten</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/models/network.py" line="138"></location>
+        <location filename="../../../src/cutecoin/models/network.py" line="139"/>
         <source>Corrupted</source>
         <translation>Beschädigt</translation>
     </message>
@@ -1601,171 +1699,156 @@ Sie können die UID nur widerrufen, wenn sie noch nicht vom Netzwerk validiert w
 <context>
     <name>PasswordAskerDialog</name>
     <message>
-        <location filename="../../ui/password_asker.ui" line="14"></location>
+        <location filename="../../ui/password_asker.ui" line="14"/>
         <source>Password</source>
         <translation>Passwort</translation>
     </message>
     <message>
-        <location filename="../../ui/password_asker.ui" line="23"></location>
+        <location filename="../../ui/password_asker.ui" line="23"/>
         <source>Please enter your account password</source>
         <translation>Bitte geben Sie Ihre Account-Passwort</translation>
     </message>
     <message>
-        <location filename="../../ui/password_asker.ui" line="32"></location>
+        <location filename="../../ui/password_asker.ui" line="32"/>
         <source>Remember my password during this session</source>
         <translation>Passwort speichern während dieser Sitzung</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/password_asker.py" line="65"></location>
+        <location filename="../../../src/cutecoin/gui/password_asker.py" line="66"/>
         <source>Bad password</source>
         <translation type="unfinished">Ein falsches Kennwort</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/password_asker.py" line="65"></location>
+        <location filename="../../../src/cutecoin/gui/password_asker.py" line="66"/>
         <source>Non printable characters in password</source>
         <translation type="unfinished">Nicht druckbare Zeichen in das Kennwort</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/password_asker.py" line="71"></location>
+        <location filename="../../../src/cutecoin/gui/password_asker.py" line="72"/>
         <source>Failed to get private key</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/password_asker.py" line="71"></location>
+        <location filename="../../../src/cutecoin/gui/password_asker.py" line="72"/>
         <source>Wrong password typed. Cannot open the private key</source>
-        <translation type="unfinished">Mot de passe incorrect est entré. Impossible d'ouvrir la clé privée</translation>
+        <translation type="unfinished">Mot de passe incorrect est entré. Impossible d&apos;ouvrir la clé privée</translation>
     </message>
 </context>
 <context>
     <name>PreferencesDialog</name>
     <message>
-        <location filename="../../../src/cutecoin/gui/preferences.py" line="83"></location>
+        <location filename="../../ui/preferences.ui" line="14"/>
         <source>Preferences</source>
         <translation>Einstellungen</translation>
     </message>
     <message>
-        <location filename="../../ui/preferences.ui" line="115"></location>
+        <location filename="../../ui/preferences.ui" line="115"/>
         <source>Default account</source>
         <translation type="unfinished">Standardkonto</translation>
     </message>
     <message>
-        <location filename="../../ui/preferences.ui" line="215"></location>
+        <location filename="../../ui/preferences.ui" line="215"/>
         <source>Language</source>
         <translation>Sprache</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/preferences.py" line="83"></location>
-        <source>A restart is needed to apply your new preferences.</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../../ui/preferences.ui" line="129"></location>
+        <location filename="../../ui/preferences.ui" line="129"/>
         <source>Default &amp;referential</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../ui/preferences.ui" line="166"></location>
+        <location filename="../../ui/preferences.ui" line="166"/>
         <source>Enable expert mode</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../ui/preferences.ui" line="201"></location>
+        <location filename="../../ui/preferences.ui" line="201"/>
         <source>Digits after commas </source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../ui/preferences.ui" line="249"></location>
+        <location filename="../../ui/preferences.ui" line="249"/>
         <source>Maximize Window at Startup</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../ui/preferences.ui" line="276"></location>
+        <location filename="../../ui/preferences.ui" line="276"/>
         <source>Enable notifications</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../ui/preferences.ui" line="106"></location>
-        <source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;&lt;span style=" font-size:16pt; font-weight:600;"&gt;General settings&lt;/span&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
+        <location filename="../../ui/preferences.ui" line="106"/>
+        <source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;&lt;span style=&quot; font-size:16pt; font-weight:600;&quot;&gt;General settings&lt;/span&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../ui/preferences.ui" line="192"></location>
-        <source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;&lt;span style=" font-size:16pt; font-weight:600;"&gt;Display settings&lt;/span&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
+        <location filename="../../ui/preferences.ui" line="192"/>
+        <source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;&lt;span style=&quot; font-size:16pt; font-weight:600;&quot;&gt;Display settings&lt;/span&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../ui/preferences.ui" line="303"></location>
+        <location filename="../../ui/preferences.ui" line="303"/>
         <source>Use International System of Units</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../ui/preferences.ui" line="329"></location>
-        <source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;&lt;span style=" font-size:16pt; font-weight:600;"&gt;Network settings&lt;/span&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
+        <location filename="../../ui/preferences.ui" line="329"/>
+        <source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;&lt;span style=&quot; font-size:16pt; font-weight:600;&quot;&gt;Network settings&lt;/span&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../ui/preferences.ui" line="336"></location>
-        <source>Use a proxy server</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../../ui/preferences.ui" line="348"></location>
-        <source>Proxy type : </source>
+        <location filename="../../ui/preferences.ui" line="345"/>
+        <source>Proxy server address : </source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../ui/preferences.ui" line="356"></location>
-        <source>HTTP</source>
-        <translation type="unfinished"></translation>
+        <location filename="../../ui/preferences.ui" line="355"/>
+        <source>:</source>
+        <translation type="unfinished">:</translation>
     </message>
     <message>
-        <location filename="../../ui/preferences.ui" line="361"></location>
-        <source>SOCKS5</source>
+        <location filename="../../ui/preferences.ui" line="336"/>
+        <source>Use a http proxy server</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../ui/preferences.ui" line="386"></location>
-        <source>Proxy server address : </source>
+        <location filename="../../ui/preferences.ui" line="379"/>
+        <source>Automatically refresh identities informations</source>
         <translation type="unfinished"></translation>
     </message>
-    <message>
-        <location filename="../../ui/preferences.ui" line="396"></location>
-        <source>:</source>
-        <translation type="unfinished">:</translation>
-    </message>
 </context>
 <context>
     <name>ProcessConfigureAccount</name>
     <message>
-        <location filename="../../../src/cutecoin/gui/process_cfg_account.py" line="158"></location>
+        <location filename="../../../src/cutecoin/gui/process_cfg_account.py" line="158"/>
         <source>New account</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/process_cfg_account.py" line="165"></location>
+        <location filename="../../../src/cutecoin/gui/process_cfg_account.py" line="165"/>
         <source>Configure {0}</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/process_cfg_account.py" line="180"></location>
+        <location filename="../../../src/cutecoin/gui/process_cfg_account.py" line="180"/>
         <source>Ok</source>
         <translation type="unfinished">OK</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/process_cfg_account.py" line="238"></location>
+        <location filename="../../../src/cutecoin/gui/process_cfg_account.py" line="238"/>
         <source>Error</source>
         <translation type="unfinished">Fehler</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/process_cfg_account.py" line="215"></location>
+        <location filename="../../../src/cutecoin/gui/process_cfg_account.py" line="215"/>
         <source>Warning</source>
         <translation type="unfinished">Warnung</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/process_cfg_account.py" line="215"></location>
+        <location filename="../../../src/cutecoin/gui/process_cfg_account.py" line="215"/>
         <source>This action will delete your account locally.
 Please note your key parameters (salt and password) if you wish to recover it later.
-Your account won't be removed from the networks it joined.
+Your account won&apos;t be removed from the networks it joined.
 Are you sure ?</source>
         <translation type="unfinished"></translation>
     </message>
@@ -1773,27 +1856,27 @@ Are you sure ?</source>
 <context>
     <name>ProcessConfigureCommunity</name>
     <message>
-        <location filename="../../../src/cutecoin/gui/process_cfg_community.py" line="206"></location>
+        <location filename="../../../src/cutecoin/gui/process_cfg_community.py" line="221"/>
         <source>Configure community {0}</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/process_cfg_community.py" line="209"></location>
+        <location filename="../../../src/cutecoin/gui/process_cfg_community.py" line="224"/>
         <source>Add a community</source>
         <translation type="unfinished">Community hinzufügen</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/process_cfg_community.py" line="243"></location>
+        <location filename="../../../src/cutecoin/gui/process_cfg_community.py" line="258"/>
         <source>Error</source>
         <translation type="unfinished">Fehler</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/process_cfg_community.py" line="272"></location>
+        <location filename="../../../src/cutecoin/gui/process_cfg_community.py" line="287"/>
         <source>Delete</source>
         <translation type="unfinished">Löschen</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/process_cfg_community.py" line="204"></location>
+        <location filename="../../../src/cutecoin/gui/process_cfg_community.py" line="204"/>
         <source>UID Publishing</source>
         <translation type="obsolete">UID-Veröffentlichung</translation>
     </message>
@@ -1801,17 +1884,17 @@ Are you sure ?</source>
 <context>
     <name>Quantitative</name>
     <message>
-        <location filename="../../../src/cutecoin/core/money/quantitative.py" line="5"></location>
+        <location filename="../../../src/cutecoin/core/money/quantitative.py" line="5"/>
         <source>Units</source>
         <translation type="unfinished">Einheiten</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/core/money/quantitative.py" line="7"></location>
+        <location filename="../../../src/cutecoin/core/money/quantitative.py" line="7"/>
         <source>{0}</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/core/money/quantitative.py" line="6"></location>
+        <location filename="../../../src/cutecoin/core/money/quantitative.py" line="6"/>
         <source>{0} {1}{2}</source>
         <translation type="unfinished"></translation>
     </message>
@@ -1819,17 +1902,17 @@ Are you sure ?</source>
 <context>
     <name>QuantitativeZSum</name>
     <message>
-        <location filename="../../../src/cutecoin/core/money/quant_zerosum.py" line="6"></location>
+        <location filename="../../../src/cutecoin/core/money/quant_zerosum.py" line="6"/>
         <source>Quant Z-sum</source>
         <translation type="unfinished">Quant Z-Summe</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/core/money/quant_zerosum.py" line="7"></location>
+        <location filename="../../../src/cutecoin/core/money/quant_zerosum.py" line="7"/>
         <source>{0} Q0 {1}</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/core/money/quant_zerosum.py" line="8"></location>
+        <location filename="../../../src/cutecoin/core/money/quant_zerosum.py" line="8"/>
         <source>Q0 {0}</source>
         <translation type="unfinished">Q0 {0}</translation>
     </message>
@@ -1837,17 +1920,17 @@ Are you sure ?</source>
 <context>
     <name>Relative</name>
     <message>
-        <location filename="../../../src/cutecoin/core/money/relative.py" line="5"></location>
+        <location filename="../../../src/cutecoin/core/money/relative.py" line="5"/>
         <source>UD</source>
         <translation type="unfinished">UD</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/core/money/relative.py" line="6"></location>
+        <location filename="../../../src/cutecoin/core/money/relative.py" line="6"/>
         <source>{0} {1}UD {2}</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/core/money/relative.py" line="7"></location>
+        <location filename="../../../src/cutecoin/core/money/relative.py" line="7"/>
         <source>UD {0}</source>
         <translation type="unfinished">UD {0}</translation>
     </message>
@@ -1855,17 +1938,17 @@ Are you sure ?</source>
 <context>
     <name>RelativeZSum</name>
     <message>
-        <location filename="../../../src/cutecoin/core/money/relative_zerosum.py" line="6"></location>
+        <location filename="../../../src/cutecoin/core/money/relative_zerosum.py" line="6"/>
         <source>Relat Z-sum</source>
         <translation type="unfinished">Relative Z-Summe</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/core/money/relative_zerosum.py" line="7"></location>
+        <location filename="../../../src/cutecoin/core/money/relative_zerosum.py" line="7"/>
         <source>{0} R0 {1}</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/core/money/relative_zerosum.py" line="8"></location>
+        <location filename="../../../src/cutecoin/core/money/relative_zerosum.py" line="8"/>
         <source>R0 {0}</source>
         <translation type="unfinished">R0 {0}</translation>
     </message>
@@ -1873,7 +1956,7 @@ Are you sure ?</source>
 <context>
     <name>Scene</name>
     <message>
-        <location filename="../../../src/cutecoin/gui/views/wot.py" line="157"></location>
+        <location filename="../../../src/cutecoin/gui/views/wot.py" line="158"/>
         <source>Certification expires at {0}</source>
         <translation type="unfinished"></translation>
     </message>
@@ -1881,50 +1964,57 @@ Are you sure ?</source>
 <context>
     <name>StepPageInit</name>
     <message>
-        <location filename="../../../src/cutecoin/gui/process_cfg_community.py" line="67"></location>
+        <location filename="../../../src/cutecoin/gui/process_cfg_community.py" line="93"/>
         <source>Could not find your identity on the network.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/process_cfg_community.py" line="100"></location>
-        <source>Could not connect.</source>
+        <location filename="../../../src/cutecoin/gui/process_cfg_community.py" line="123"/>
+        <source>Broadcasting identity...</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/process_cfg_community.py" line="92"></location>
-        <source>Broadcasting identity...</source>
+        <location filename="../../../src/cutecoin/gui/process_cfg_community.py" line="127"/>
+        <source>UID broadcast</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/process_cfg_community.py" line="98"></location>
-        <source>Pubkey already exists on the network</source>
+        <location filename="../../../src/cutecoin/gui/process_cfg_community.py" line="127"/>
+        <source>Identity broadcasted to the network</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/process_cfg_community.py" line="110"></location>
-        <source>UID broadcast</source>
+        <location filename="../../../src/cutecoin/gui/process_cfg_community.py" line="134"/>
+        <source>Error</source>
+        <translation type="unfinished">Fehler</translation>
+    </message>
+    <message>
+        <location filename="../../../src/cutecoin/gui/process_cfg_community.py" line="95"/>
+        <source>Your pubkey or UID is different on the network.
+    Yours : {0}, the network : {1}</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/process_cfg_community.py" line="110"></location>
-        <source>Identity broadcasted to the network</source>
+        <location filename="../../../src/cutecoin/gui/process_cfg_community.py" line="134"/>
+        <source>{0}</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/process_cfg_community.py" line="124"></location>
-        <source>Error</source>
-        <translation type="unfinished">Fehler</translation>
+        <location filename="../../../src/cutecoin/gui/process_cfg_community.py" line="138"/>
+        <source>Your pubkey or UID was already found on the network.
+Yours : {0}, the network : {1}</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/process_cfg_community.py" line="124"></location>
-        <source>{0} : {1}</source>
+        <location filename="../../../src/cutecoin/gui/process_cfg_community.py" line="141"/>
+        <source>Your account already exists on the network</source>
         <translation type="unfinished"></translation>
     </message>
 </context>
 <context>
     <name>Toast</name>
     <message>
-        <location filename="../../ui/toast.ui" line="14"></location>
+        <location filename="../../ui/toast.ui" line="14"/>
         <source>MainWindow</source>
         <translation type="unfinished"></translation>
     </message>
@@ -1932,73 +2022,73 @@ Are you sure ?</source>
 <context>
     <name>TransactionsTabWidget</name>
     <message>
-        <location filename="../../../src/cutecoin/gui/transactions_tab.py" line="127"></location>
+        <location filename="../../../src/cutecoin/gui/transactions_tab.py" line="127"/>
         <source>&lt;b&gt;Balance&lt;/b&gt; {:} {:}</source>
         <translation type="obsolete">&lt;b&gt;&lt;/b&gt; {:} {:}</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/transactions_tab.py" line="151"></location>
+        <location filename="../../../src/cutecoin/gui/transactions_tab.py" line="170"/>
         <source>Actions</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/transactions_tab.py" line="166"></location>
+        <location filename="../../../src/cutecoin/gui/transactions_tab.py" line="185"/>
         <source>Send again</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/transactions_tab.py" line="171"></location>
+        <location filename="../../../src/cutecoin/gui/transactions_tab.py" line="190"/>
         <source>Cancel</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/transactions_tab.py" line="177"></location>
+        <location filename="../../../src/cutecoin/gui/transactions_tab.py" line="196"/>
         <source>Informations</source>
         <translation type="unfinished">Informationen</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/transactions_tab.py" line="182"></location>
+        <location filename="../../../src/cutecoin/gui/transactions_tab.py" line="201"/>
         <source>Add as contact</source>
         <translation type="unfinished">Als Kontakt hinzufügen</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/transactions_tab.py" line="187"></location>
+        <location filename="../../../src/cutecoin/gui/transactions_tab.py" line="206"/>
         <source>Send money</source>
         <translation type="unfinished">Geld schicken</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/transactions_tab.py" line="193"></location>
+        <location filename="../../../src/cutecoin/gui/transactions_tab.py" line="212"/>
         <source>View in Web of Trust</source>
         <translation type="unfinished">Im Web of Trust anschauen</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/transactions_tab.py" line="198"></location>
+        <location filename="../../../src/cutecoin/gui/transactions_tab.py" line="217"/>
         <source>Copy pubkey to clipboard</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/transactions_tab.py" line="276"></location>
+        <location filename="../../../src/cutecoin/gui/transactions_tab.py" line="283"/>
         <source>Warning</source>
         <translation type="unfinished">Warnung</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/transactions_tab.py" line="276"></location>
+        <location filename="../../../src/cutecoin/gui/transactions_tab.py" line="283"/>
         <source>Are you sure ?
 This money transfer will be removed and not sent.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/transactions_tab.py" line="118"></location>
+        <location filename="../../../src/cutecoin/gui/transactions_tab.py" line="135"/>
         <source>Received {0} {1} from {2} transfers</source>
         <translation type="unfinished">{0} {1} von {2} Transfers eingegangen</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/transactions_tab.py" line="122"></location>
+        <location filename="../../../src/cutecoin/gui/transactions_tab.py" line="139"/>
         <source>New transactions received</source>
         <translation type="unfinished">Neue Transaktionen eingegangen</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/transactions_tab.py" line="137"></location>
+        <location filename="../../../src/cutecoin/gui/transactions_tab.py" line="155"/>
         <source>{:}</source>
         <translation type="unfinished"></translation>
     </message>
@@ -2006,143 +2096,143 @@ This money transfer will be removed and not sent.</source>
 <context>
     <name>TransferMoneyDialog</name>
     <message>
-        <location filename="../../ui/transfer.ui" line="14"></location>
+        <location filename="../../ui/transfer.ui" line="14"/>
         <source>Transfer money</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../ui/transfer.ui" line="20"></location>
+        <location filename="../../ui/transfer.ui" line="20"/>
         <source>Community</source>
         <translation type="unfinished">Community</translation>
     </message>
     <message>
-        <location filename="../../ui/transfer.ui" line="32"></location>
+        <location filename="../../ui/transfer.ui" line="32"/>
         <source>Transfer money to</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../ui/transfer.ui" line="40"></location>
+        <location filename="../../ui/transfer.ui" line="40"/>
         <source>Contact</source>
-        <translation type="unfinished">Kontakt</translation>
+        <translation type="obsolete">Kontakt</translation>
     </message>
     <message>
-        <location filename="../../ui/transfer.ui" line="80"></location>
+        <location filename="../../ui/transfer.ui" line="80"/>
         <source>Key</source>
         <translation type="unfinished">Schlüssel</translation>
     </message>
     <message>
-        <location filename="../../ui/transfer.ui" line="148"></location>
+        <location filename="../../ui/transfer.ui" line="148"/>
         <source> UD</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../ui/transfer.ui" line="166"></location>
+        <location filename="../../ui/transfer.ui" line="166"/>
         <source>Transaction message</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/transfer.py" line="77"></location>
+        <location filename="../../../src/cutecoin/gui/transfer.py" line="106"/>
         <source>Money transfer</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/transfer.py" line="77"></location>
+        <location filename="../../../src/cutecoin/gui/transfer.py" line="106"/>
         <source>No amount. Please give the transfert amount</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/transfer.py" line="111"></location>
+        <location filename="../../../src/cutecoin/gui/transfer.py" line="111"/>
         <source>Error</source>
-        <translation type="unfinished">Fehler</translation>
+        <translation type="obsolete">Fehler</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/transfer.py" line="99"></location>
+        <location filename="../../../src/cutecoin/gui/transfer.py" line="137"/>
         <source>Transfer</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/transfer.py" line="99"></location>
+        <location filename="../../../src/cutecoin/gui/transfer.py" line="124"/>
         <source>Success sending money to {0}</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/transfer.py" line="111"></location>
-        <source>{0} : {1}</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../../ui/transfer.ui" line="61"></location>
+        <location filename="../../ui/transfer.ui" line="61"/>
         <source>&amp;Recipient public key</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../ui/transfer.ui" line="106"></location>
+        <location filename="../../ui/transfer.ui" line="106"/>
         <source>Wallet</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../ui/transfer.ui" line="125"></location>
+        <location filename="../../ui/transfer.ui" line="125"/>
         <source>Available money : </source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../ui/transfer.ui" line="134"></location>
+        <location filename="../../ui/transfer.ui" line="134"/>
         <source>Amount</source>
         <translation type="unfinished"></translation>
     </message>
+    <message>
+        <location filename="../../ui/transfer.ui" line="40"/>
+        <source>Con&amp;tact</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>TxFilterProxyModel</name>
     <message>
-        <location filename="../../../src/cutecoin/models/txhistory.py" line="158"></location>
-        <source>{0} / {1} validations</source>
+        <location filename="../../../src/cutecoin/models/txhistory.py" line="165"/>
+        <source>{0} / {1} confirmations</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/models/txhistory.py" line="162"></location>
-        <source>Validating... {0} %</source>
+        <location filename="../../../src/cutecoin/models/txhistory.py" line="169"/>
+        <source>Confirming... {0} %</source>
         <translation type="unfinished"></translation>
     </message>
 </context>
 <context>
     <name>WalletsTab</name>
     <message>
-        <location filename="../../ui/wallets_tab.ui" line="14"></location>
+        <location filename="../../ui/wallets_tab.ui" line="14"/>
         <source>Form</source>
         <translation type="unfinished">Form</translation>
     </message>
     <message>
-        <location filename="../../ui/wallets_tab.ui" line="34"></location>
+        <location filename="../../ui/wallets_tab.ui" line="34"/>
         <source>Balance</source>
         <translation></translation>
     </message>
     <message>
-        <location filename="../../ui/wallets_tab.ui" line="47"></location>
+        <location filename="../../ui/wallets_tab.ui" line="47"/>
         <source>label_balance</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../ui/wallets_tab.ui" line="86"></location>
+        <location filename="../../ui/wallets_tab.ui" line="86"/>
         <source>Publish UID</source>
         <translation type="obsolete">UID veröffentlichen</translation>
     </message>
     <message>
-        <location filename="../../ui/wallets_tab.ui" line="93"></location>
+        <location filename="../../ui/wallets_tab.ui" line="93"/>
         <source>Revoke UID</source>
         <translation type="obsolete">UID widerrufen</translation>
     </message>
     <message>
-        <location filename="../../ui/wallets_tab.ui" line="100"></location>
+        <location filename="../../ui/wallets_tab.ui" line="100"/>
         <source>Renew membership</source>
         <translation type="obsolete">Mitgliedschaft erneuern</translation>
     </message>
     <message>
-        <location filename="../../ui/wallets_tab.ui" line="107"></location>
+        <location filename="../../ui/wallets_tab.ui" line="107"/>
         <source>Send leaving demand</source>
         <translation type="obsolete">Austritts-Gesuch senden</translation>
     </message>
     <message>
-        <location filename="../../ui/wallets_tab.ui" line="57"></location>
+        <location filename="../../ui/wallets_tab.ui" line="57"/>
         <source>label_balance_range</source>
         <translation type="unfinished"></translation>
     </message>
@@ -2150,39 +2240,39 @@ This money transfer will be removed and not sent.</source>
 <context>
     <name>WalletsTabWidget</name>
     <message>
-        <location filename="../../../src/cutecoin/gui/wallets_tab.py" line="86"></location>
+        <location filename="../../../src/cutecoin/gui/wallets_tab.py" line="86"/>
         <source>
-                &lt;table cellpadding="5"&gt;
-                &lt;tr&gt;&lt;td align="right"&gt;&lt;b&gt;{:}&lt;/b&gt;&lt;/td&gt;&lt;td&gt;{:}&lt;/td&gt;&lt;/tr&gt;
-                &lt;tr&gt;&lt;td align="right"&gt;&lt;b&gt;{:}&lt;/b&gt;&lt;/td&gt;&lt;td&gt;{:}&lt;/td&gt;&lt;/tr&gt;
-                &lt;tr&gt;&lt;td align="right"&gt;&lt;b&gt;{:}&lt;/b&gt;&lt;/td&gt;&lt;td&gt;{:}&lt;/td&gt;&lt;/tr&gt;
+                &lt;table cellpadding=&quot;5&quot;&gt;
+                &lt;tr&gt;&lt;td align=&quot;right&quot;&gt;&lt;b&gt;{:}&lt;/b&gt;&lt;/td&gt;&lt;td&gt;{:}&lt;/td&gt;&lt;/tr&gt;
+                &lt;tr&gt;&lt;td align=&quot;right&quot;&gt;&lt;b&gt;{:}&lt;/b&gt;&lt;/td&gt;&lt;td&gt;{:}&lt;/td&gt;&lt;/tr&gt;
+                &lt;tr&gt;&lt;td align=&quot;right&quot;&gt;&lt;b&gt;{:}&lt;/b&gt;&lt;/td&gt;&lt;td&gt;{:}&lt;/td&gt;&lt;/tr&gt;
                 &lt;/table&gt;
                 </source>
         <translation type="obsolete">
-                &lt;table cellpadding="5"&gt;
-                &lt;tr&gt;&lt;td align="right"&gt;&lt;b&gt;{:}&lt;/b&gt;&lt;/td&gt;&lt;td&gt;{:}&lt;/td&gt;&lt;/tr&gt;
-                &lt;tr&gt;&lt;td align="right"&gt;&lt;b&gt;{:}&lt;/b&gt;&lt;/td&gt;&lt;td&gt;{:}&lt;/td&gt;&lt;/tr&gt;
-                &lt;tr&gt;&lt;td align="right"&gt;&lt;b&gt;{:}&lt;/b&gt;&lt;/td&gt;&lt;td&gt;{:}&lt;/td&gt;&lt;/tr&gt;
+                &lt;table cellpadding=&quot;5&quot;&gt;
+                &lt;tr&gt;&lt;td align=&quot;right&quot;&gt;&lt;b&gt;{:}&lt;/b&gt;&lt;/td&gt;&lt;td&gt;{:}&lt;/td&gt;&lt;/tr&gt;
+                &lt;tr&gt;&lt;td align=&quot;right&quot;&gt;&lt;b&gt;{:}&lt;/b&gt;&lt;/td&gt;&lt;td&gt;{:}&lt;/td&gt;&lt;/tr&gt;
+                &lt;tr&gt;&lt;td align=&quot;right&quot;&gt;&lt;b&gt;{:}&lt;/b&gt;&lt;/td&gt;&lt;td&gt;{:}&lt;/td&gt;&lt;/tr&gt;
                 &lt;/table&gt;
                 </translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/wallets_tab.py" line="88"></location>
+        <location filename="../../../src/cutecoin/gui/wallets_tab.py" line="88"/>
         <source>Membership</source>
         <translation type="obsolete">Mitgliedschaft</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/wallets_tab.py" line="124"></location>
+        <location filename="../../../src/cutecoin/gui/wallets_tab.py" line="124"/>
         <source>Not a member</source>
         <translation type="obsolete">Kein Mitglied</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/wallets_tab.py" line="305"></location>
+        <location filename="../../../src/cutecoin/gui/wallets_tab.py" line="305"/>
         <source>Warning</source>
         <translation type="obsolete">Warnung</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/wallets_tab.py" line="266"></location>
+        <location filename="../../../src/cutecoin/gui/wallets_tab.py" line="266"/>
         <source>Are you sure ?
 Sending a leaving demand  cannot be canceled.
 The process to join back the community later will have to be done again.</source>
@@ -2191,51 +2281,51 @@ Ein Austrittsgesuch kann nicht zurückgenommen werden.
 Um der Community später wieder beizutreten, müssen Sie den Aufnahmeprozess vollständig neu durchlaufen.</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/wallets_tab.py" line="279"></location>
+        <location filename="../../../src/cutecoin/gui/wallets_tab.py" line="279"/>
         <source>Are you sure ?
 Publishing your UID can be canceled by Revoke UID.</source>
         <translation type="obsolete">Sind Sie sich sicher?
 Die Veröffentlichung der UID kann durch Widerruf der UID rückgängig gemacht werden.</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/wallets_tab.py" line="290"></location>
+        <location filename="../../../src/cutecoin/gui/wallets_tab.py" line="290"/>
         <source>UID Publishing</source>
         <translation type="obsolete">UID-Veröffentlichung</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/wallets_tab.py" line="290"></location>
+        <location filename="../../../src/cutecoin/gui/wallets_tab.py" line="290"/>
         <source>Success publishing your UID</source>
         <translation type="obsolete">UID erfolgreich veröffentlicht</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/wallets_tab.py" line="293"></location>
+        <location filename="../../../src/cutecoin/gui/wallets_tab.py" line="293"/>
         <source>Publish UID error</source>
         <translation type="obsolete">Fehler bei der Veröffentlichung der UID</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/wallets_tab.py" line="296"></location>
+        <location filename="../../../src/cutecoin/gui/wallets_tab.py" line="296"/>
         <source>Network error</source>
         <translation type="obsolete">Netzwerk-Fehler</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/wallets_tab.py" line="296"></location>
-        <source>Couldn't connect to network : {0}</source>
+        <location filename="../../../src/cutecoin/gui/wallets_tab.py" line="296"/>
+        <source>Couldn&apos;t connect to network : {0}</source>
         <translation type="obsolete">Konnte keine Verbindung zum Netzwerk herstellen: {0}</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/wallets_tab.py" line="305"></location>
+        <location filename="../../../src/cutecoin/gui/wallets_tab.py" line="305"/>
         <source>Are you sure ?
 Revoking your UID can only success if it is not already validated by the network.</source>
         <translation type="obsolete">Sind Sie sich sicher?
 Sie können die UID nur widerrufen, wenn sie noch nicht vom Netzwerk validiert wurde.</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/wallets_tab.py" line="321"></location>
+        <location filename="../../../src/cutecoin/gui/wallets_tab.py" line="321"/>
         <source>Renew membership</source>
         <translation type="obsolete">Mitgliedschaft erneuern</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/wallets_tab.py" line="328"></location>
+        <location filename="../../../src/cutecoin/gui/wallets_tab.py" line="328"/>
         <source>Send membership demand</source>
         <translation type="obsolete">Mitgliedschaft beantragen</translation>
     </message>
@@ -2243,17 +2333,17 @@ Sie können die UID nur widerrufen, wenn sie noch nicht vom Netzwerk validiert w
 <context>
     <name>WalletsTableModel</name>
     <message>
-        <location filename="../../../src/cutecoin/models/wallets.py" line="72"></location>
+        <location filename="../../../src/cutecoin/models/wallets.py" line="72"/>
         <source>Name</source>
         <translation type="unfinished">Name</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/models/wallets.py" line="72"></location>
+        <location filename="../../../src/cutecoin/models/wallets.py" line="72"/>
         <source>Amount</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/models/wallets.py" line="72"></location>
+        <location filename="../../../src/cutecoin/models/wallets.py" line="72"/>
         <source>Pubkey</source>
         <translation type="unfinished">Öffentlicher Schlüssel</translation>
     </message>
@@ -2261,86 +2351,91 @@ Sie können die UID nur widerrufen, wenn sie noch nicht vom Netzwerk validiert w
 <context>
     <name>WoT.Node</name>
     <message>
-        <location filename="../../../src/cutecoin/gui/views/wot.py" line="290"></location>
+        <location filename="../../../src/cutecoin/gui/views/wot.py" line="294"/>
         <source>Informations</source>
         <translation type="unfinished">Informationen</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/views/wot.py" line="295"></location>
+        <location filename="../../../src/cutecoin/gui/views/wot.py" line="299"/>
         <source>Add as contact</source>
         <translation type="unfinished">Als Kontakt hinzufügen</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/views/wot.py" line="300"></location>
+        <location filename="../../../src/cutecoin/gui/views/wot.py" line="304"/>
         <source>Send money</source>
         <translation type="unfinished">Geld schicken</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/views/wot.py" line="305"></location>
+        <location filename="../../../src/cutecoin/gui/views/wot.py" line="309"/>
         <source>Certify identity</source>
         <translation type="unfinished">Identität zertifizieren</translation>
     </message>
+    <message>
+        <location filename="../../../src/cutecoin/gui/views/wot.py" line="314"/>
+        <source>Copy pubkey</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>WotTabWidget</name>
     <message>
-        <location filename="../../ui/wot_tab.ui" line="14"></location>
+        <location filename="../../ui/wot_tab.ui" line="14"/>
         <source>Form</source>
         <translation type="unfinished">Form</translation>
     </message>
     <message>
-        <location filename="../../ui/wot_tab.ui" line="33"></location>
+        <location filename="../../ui/wot_tab.ui" line="33"/>
         <source>Center the view on me</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/wot_tab.py" line="33"></location>
+        <location filename="../../../src/cutecoin/gui/wot_tab.py" line="37"/>
         <source>Research a pubkey, an uid...</source>
         <translation type="unfinished">Nach öffentlichem Schlüssel oder uid suchen…</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/wot_tab.py" line="123"></location>
+        <location filename="../../../src/cutecoin/gui/wot_tab.py" line="141"/>
         <source>
-                    &lt;table cellpadding="5"&gt;
-                    &lt;tr&gt;&lt;td align="right"&gt;&lt;b&gt;{:}&lt;/b&gt;&lt;/td&gt;&lt;td&gt;{:}&lt;/td&gt;&lt;/tr&gt;
-                    &lt;tr&gt;&lt;td align="right"&gt;&lt;b&gt;{:}&lt;/b&gt;&lt;/td&gt;&lt;td&gt;{:}&lt;/td&gt;&lt;/tr&gt;
-                    &lt;tr&gt;&lt;td align="right"&gt;&lt;b&gt;{:}&lt;/b&gt;&lt;/td&gt;&lt;td&gt;{:}&lt;/td&gt;&lt;/tr&gt;
+                    &lt;table cellpadding=&quot;5&quot;&gt;
+                    &lt;tr&gt;&lt;td align=&quot;right&quot;&gt;&lt;b&gt;{:}&lt;/b&gt;&lt;/td&gt;&lt;td&gt;{:}&lt;/td&gt;&lt;/tr&gt;
+                    &lt;tr&gt;&lt;td align=&quot;right&quot;&gt;&lt;b&gt;{:}&lt;/b&gt;&lt;/td&gt;&lt;td&gt;{:}&lt;/td&gt;&lt;/tr&gt;
+                    &lt;tr&gt;&lt;td align=&quot;right&quot;&gt;&lt;b&gt;{:}&lt;/b&gt;&lt;/td&gt;&lt;td&gt;{:}&lt;/td&gt;&lt;/tr&gt;
                     &lt;/table&gt;
                     </source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/wot_tab.py" line="105"></location>
+        <location filename="../../../src/cutecoin/gui/wot_tab.py" line="123"/>
         <source>Membership</source>
         <translation type="unfinished">Mitgliedschaft</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/wot_tab.py" line="123"></location>
+        <location filename="../../../src/cutecoin/gui/wot_tab.py" line="141"/>
         <source>Last renewal on {:}, expiration on {:}</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/wot_tab.py" line="141"></location>
+        <location filename="../../../src/cutecoin/gui/wot_tab.py" line="159"/>
         <source>Your web of trust</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/wot_tab.py" line="141"></location>
+        <location filename="../../../src/cutecoin/gui/wot_tab.py" line="159"/>
         <source>Certified by {:} members; Certifier of {:} members</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/wot_tab.py" line="141"></location>
+        <location filename="../../../src/cutecoin/gui/wot_tab.py" line="159"/>
         <source>Not a member</source>
         <translation type="unfinished">Kein Mitglied</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/wot_tab.py" line="141"></location>
+        <location filename="../../../src/cutecoin/gui/wot_tab.py" line="159"/>
         <source>
-                &lt;table cellpadding="5"&gt;
-                &lt;tr&gt;&lt;td align="right"&gt;&lt;b&gt;{:}&lt;/b&gt;&lt;/td&gt;&lt;td&gt;{:}&lt;/td&gt;&lt;/tr&gt;
-                &lt;tr&gt;&lt;td align="right"&gt;&lt;b&gt;{:}&lt;/b&gt;&lt;/td&gt;&lt;/tr&gt;
-                &lt;tr&gt;&lt;td align="right"&gt;&lt;b&gt;{:}&lt;/b&gt;&lt;/td&gt;&lt;td&gt;{:}&lt;/td&gt;&lt;/tr&gt;
+                &lt;table cellpadding=&quot;5&quot;&gt;
+                &lt;tr&gt;&lt;td align=&quot;right&quot;&gt;&lt;b&gt;{:}&lt;/b&gt;&lt;/td&gt;&lt;td&gt;{:}&lt;/td&gt;&lt;/tr&gt;
+                &lt;tr&gt;&lt;td align=&quot;right&quot;&gt;&lt;b&gt;{:}&lt;/b&gt;&lt;/td&gt;&lt;/tr&gt;
+                &lt;tr&gt;&lt;td align=&quot;right&quot;&gt;&lt;b&gt;{:}&lt;/b&gt;&lt;/td&gt;&lt;td&gt;{:}&lt;/td&gt;&lt;/tr&gt;
                 &lt;/table&gt;
                 </source>
         <translation type="unfinished"></translation>
@@ -2349,32 +2444,32 @@ Sie können die UID nur widerrufen, wenn sie noch nicht vom Netzwerk validiert w
 <context>
     <name>self.config_dialog</name>
     <message>
-        <location filename="../../../src/cutecoin/gui/process_cfg_community.py" line="170"></location>
+        <location filename="../../../src/cutecoin/gui/process_cfg_community.py" line="185"/>
         <source>Ok</source>
         <translation type="unfinished">OK</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/process_cfg_account.py" line="68"></location>
+        <location filename="../../../src/cutecoin/gui/process_cfg_account.py" line="68"/>
         <source>Forbidden : salt is too short</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/process_cfg_account.py" line="72"></location>
+        <location filename="../../../src/cutecoin/gui/process_cfg_account.py" line="72"/>
         <source>Forbidden : password is too short</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/process_cfg_account.py" line="76"></location>
+        <location filename="../../../src/cutecoin/gui/process_cfg_account.py" line="76"/>
         <source>Forbidden : Invalid characters in salt field</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/process_cfg_account.py" line="80"></location>
+        <location filename="../../../src/cutecoin/gui/process_cfg_account.py" line="80"/>
         <source>Forbidden : Invalid characters in password field</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/process_cfg_account.py" line="86"></location>
+        <location filename="../../../src/cutecoin/gui/process_cfg_account.py" line="86"/>
         <source>Error : passwords are different</source>
         <translation type="unfinished"></translation>
     </message>
@@ -2382,33 +2477,33 @@ Sie können die UID nur widerrufen, wenn sie noch nicht vom Netzwerk validiert w
 <context>
     <name>transactionsTabWidget</name>
     <message>
-        <location filename="../../ui/transactions_tab.ui" line="14"></location>
+        <location filename="../../ui/transactions_tab.ui" line="14"/>
         <source>Form</source>
         <translation type="unfinished">Form</translation>
     </message>
     <message>
-        <location filename="../../ui/transactions_tab.ui" line="63"></location>
+        <location filename="../../ui/transactions_tab.ui" line="63"/>
         <source>dd/MM/yyyy</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../ui/transactions_tab.ui" line="90"></location>
+        <location filename="../../ui/transactions_tab.ui" line="90"/>
         <source>Deposit:</source>
         <translation type="obsolete">Lagerstätte:</translation>
     </message>
     <message>
-        <location filename="../../ui/transactions_tab.ui" line="100"></location>
+        <location filename="../../ui/transactions_tab.ui" line="100"/>
         <source>Balance:</source>
         <translation type="obsolete">Kontostand:</translation>
     </message>
     <message>
-        <location filename="../../ui/transactions_tab.ui" line="20"></location>
+        <location filename="../../ui/transactions_tab.ui" line="20"/>
         <source>Balance</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../ui/transactions_tab.ui" line="33"></location>
-        <source>label_balance</source>
+        <location filename="../../ui/transactions_tab.ui" line="33"/>
+        <source>loading...</source>
         <translation type="unfinished"></translation>
     </message>
 </context>
diff --git a/res/i18n/ts/es_ES.ts b/res/i18n/ts/es_ES.ts
index 90997b619c5ba7d08d602511ee3dd70d5406cb6b..02a8622f29c066da065f5102531e243be7bef391 100644
--- a/res/i18n/ts/es_ES.ts
+++ b/res/i18n/ts/es_ES.ts
@@ -50,6 +50,11 @@
         <source>Relat Z-sum</source>
         <translation type="obsolete">Relat. Z-Σ</translation>
     </message>
+    <message>
+        <location filename="../../../src/cutecoin/core/account.py" line="509"/>
+        <source>Could not find user self certification.</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>AccountConfigurationDialog</name>
@@ -134,10 +139,23 @@
         <translation>Comunidades</translation>
     </message>
 </context>
+<context>
+    <name>Application</name>
+    <message>
+        <location filename="../../../src/cutecoin/core/app.py" line="76"/>
+        <source>Warning : Your membership is expiring soon.</source>
+        <translation type="unfinished">Advertencia: Su membresía expira pronto.</translation>
+    </message>
+    <message>
+        <location filename="../../../src/cutecoin/core/app.py" line="81"/>
+        <source>Warning : Your could miss certifications soon.</source>
+        <translation type="unfinished">Advertencia: Tu podía faltar certificaciones pronto.</translation>
+    </message>
+</context>
 <context>
     <name>CertificationDialog</name>
     <message>
-        <location filename="../../../src/cutecoin/gui/certification.py" line="65"/>
+        <location filename="../../../src/cutecoin/gui/certification.py" line="79"/>
         <source>Certification</source>
         <translation>Certificatión</translation>
     </message>
@@ -169,12 +187,12 @@
     <message>
         <location filename="../../../src/cutecoin/gui/certification.py" line="65"/>
         <source>Success certifying {0} from {1}</source>
-        <translation>Éxisto certificar {0} de {1}</translation>
+        <translation type="obsolete">Éxisto certificar {0} de {1}</translation>
     </message>
     <message>
         <location filename="../../../src/cutecoin/gui/certification.py" line="75"/>
         <source>Error</source>
-        <translation>Error</translation>
+        <translation type="obsolete">Error</translation>
     </message>
     <message>
         <location filename="../../../src/cutecoin/gui/certification.py" line="77"/>
@@ -182,20 +200,30 @@
         <translation type="obsolete">Ok</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/certification.py" line="97"/>
+        <location filename="../../../src/cutecoin/gui/certification.py" line="107"/>
         <source>Not a member</source>
         <translation>No es un miembro</translation>
     </message>
     <message>
         <location filename="../../../src/cutecoin/gui/certification.py" line="75"/>
         <source>{0} : {1}</source>
-        <translation>{0} : {1}</translation>
+        <translation type="obsolete">{0} : {1}</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/certification.py" line="94"/>
+        <location filename="../../../src/cutecoin/gui/certification.py" line="104"/>
         <source>&amp;Ok</source>
         <translation type="unfinished"></translation>
     </message>
+    <message>
+        <location filename="../../../src/cutecoin/gui/certification.py" line="70"/>
+        <source>Success sending certification</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../../src/cutecoin/gui/certification.py" line="79"/>
+        <source>Could not broadcast certification : {0}</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>CommunityConfigurationDialog</name>
@@ -215,27 +243,27 @@
         <translation>:</translation>
     </message>
     <message>
-        <location filename="../../ui/community_cfg.ui" line="145"/>
+        <location filename="../../ui/community_cfg.ui" line="162"/>
         <source>Communities nodes</source>
         <translation>Comunidades nodos</translation>
     </message>
     <message>
-        <location filename="../../ui/community_cfg.ui" line="163"/>
+        <location filename="../../ui/community_cfg.ui" line="180"/>
         <source>Server</source>
         <translation>Servidor</translation>
     </message>
     <message>
-        <location filename="../../ui/community_cfg.ui" line="183"/>
+        <location filename="../../ui/community_cfg.ui" line="200"/>
         <source>Add</source>
         <translation>Añadir</translation>
     </message>
     <message>
-        <location filename="../../ui/community_cfg.ui" line="204"/>
+        <location filename="../../ui/community_cfg.ui" line="221"/>
         <source>Previous</source>
         <translation>Anterior</translation>
     </message>
     <message>
-        <location filename="../../ui/community_cfg.ui" line="227"/>
+        <location filename="../../ui/community_cfg.ui" line="244"/>
         <source>Next</source>
         <translation>Siguiente</translation>
     </message>
@@ -254,6 +282,11 @@
         <source>Connect using your account</source>
         <translation type="unfinished"></translation>
     </message>
+    <message>
+        <location filename="../../ui/community_cfg.ui" line="132"/>
+        <source>Connect as a guest</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>CommunityTabWidget</name>
@@ -351,35 +384,45 @@
 <context>
     <name>CommunityTile</name>
     <message>
-        <location filename="../../../src/cutecoin/gui/community_tile.py" line="46"/>
+        <location filename="../../../src/cutecoin/gui/community_tile.py" line="77"/>
         <source>Member</source>
         <translation type="unfinished">Miembro</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/community_tile.py" line="47"/>
+        <location filename="../../../src/cutecoin/gui/community_tile.py" line="78"/>
         <source>Non-Member</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/community_tile.py" line="58"/>
+        <location filename="../../../src/cutecoin/gui/community_tile.py" line="89"/>
         <source>members</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/community_tile.py" line="58"/>
+        <location filename="../../../src/cutecoin/gui/community_tile.py" line="89"/>
         <source>Monetary mass</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/community_tile.py" line="58"/>
+        <location filename="../../../src/cutecoin/gui/community_tile.py" line="89"/>
         <source>Status</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/community_tile.py" line="58"/>
+        <location filename="../../../src/cutecoin/gui/community_tile.py" line="89"/>
         <source>Balance</source>
         <translation type="unfinished">Saldo</translation>
     </message>
+    <message>
+        <location filename="../../../src/cutecoin/gui/community_tile.py" line="108"/>
+        <source>Not connected</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../../src/cutecoin/gui/community_tile.py" line="121"/>
+        <source>Community not initialized</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>CommunityWidget</name>
@@ -399,82 +442,82 @@
         <translation type="unfinished">Certificatión</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/community_view.py" line="227"/>
+        <location filename="../../../src/cutecoin/gui/community_view.py" line="282"/>
         <source>Renew membership</source>
         <translation type="unfinished">Renovar la membresía</translation>
     </message>
     <message>
         <location filename="../../../src/cutecoin/gui/community_view.py" line="44"/>
         <source>Warning : Your membership is expiring soon.</source>
-        <translation type="unfinished">Advertencia: Su membresía expira pronto.</translation>
+        <translation type="obsolete">Advertencia: Su membresía expira pronto.</translation>
     </message>
     <message>
         <location filename="../../../src/cutecoin/gui/community_view.py" line="46"/>
         <source>Warning : Your could miss certifications soon.</source>
-        <translation type="unfinished">Advertencia: Tu podía faltar certificaciones pronto.</translation>
+        <translation type="obsolete">Advertencia: Tu podía faltar certificaciones pronto.</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/community_view.py" line="63"/>
+        <location filename="../../../src/cutecoin/gui/community_view.py" line="65"/>
         <source>Transactions</source>
         <translation type="unfinished">Transacciones</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/community_view.py" line="67"/>
+        <location filename="../../../src/cutecoin/gui/community_view.py" line="69"/>
         <source>Web of Trust</source>
         <translation type="unfinished">Anillo de Confianza</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/community_view.py" line="71"/>
+        <location filename="../../../src/cutecoin/gui/community_view.py" line="73"/>
         <source>Search Identities</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/community_view.py" line="75"/>
+        <location filename="../../../src/cutecoin/gui/community_view.py" line="77"/>
         <source>Network</source>
         <translation type="unfinished">Red</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/community_view.py" line="154"/>
+        <location filename="../../../src/cutecoin/gui/community_view.py" line="177"/>
         <source>Membership expiration</source>
         <translation type="unfinished">Membresía expira</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/community_view.py" line="154"/>
+        <location filename="../../../src/cutecoin/gui/community_view.py" line="177"/>
         <source>&lt;b&gt;Warning : Membership expiration in {0} days&lt;/b&gt;</source>
         <translation type="unfinished">&lt;b&gt;Advertencia : Expiración la membresía en {0} días&lt;/b&gt;</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/community_view.py" line="162"/>
+        <location filename="../../../src/cutecoin/gui/community_view.py" line="188"/>
         <source>Certifications number</source>
         <translation type="unfinished">Número de certificaciones</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/community_view.py" line="162"/>
+        <location filename="../../../src/cutecoin/gui/community_view.py" line="188"/>
         <source>&lt;b&gt;Warning : You are certified by only {0} persons, need {1}&lt;/b&gt;</source>
         <translation type="unfinished">&lt;b&gt;Advertencia : Usted está certificado por sólo {0} personas, necesitará {1}&lt;/b&gt;</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/community_view.py" line="189"/>
+        <location filename="../../../src/cutecoin/gui/community_view.py" line="221"/>
         <source> Block {0}</source>
         <translation type="unfinished"> Bloque {0}</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/community_view.py" line="211"/>
+        <location filename="../../../src/cutecoin/gui/community_view.py" line="263"/>
         <source> - Median fork window : {0}</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/community_view.py" line="232"/>
+        <location filename="../../../src/cutecoin/gui/community_view.py" line="288"/>
         <source>Send membership demand</source>
         <translation type="unfinished">Enviar una solicitud de membresía</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/community_view.py" line="298"/>
+        <location filename="../../../src/cutecoin/gui/community_view.py" line="334"/>
         <source>Warning</source>
         <translation type="unfinished">Advertencia</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/community_view.py" line="259"/>
+        <location filename="../../../src/cutecoin/gui/community_view.py" line="334"/>
         <source>Are you sure ?
 Sending a leaving demand  cannot be canceled.
 The process to join back the community later will have to be done again.</source>
@@ -486,75 +529,100 @@ El proceso de volver a unirse a la comunidad más adelante tendrá que ser hecho
         <location filename="../../../src/cutecoin/gui/community_view.py" line="272"/>
         <source>Are you sure ?
 Publishing your UID can be canceled by Revoke UID.</source>
-        <translation type="unfinished">¿ Estas seguro ?↵
+        <translation type="obsolete">¿ Estas seguro ?↵
 Publicar su UID puede ser cancelada por Revocar UID.</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/community_view.py" line="283"/>
-        <source>UID Publishing</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../../../src/cutecoin/gui/community_view.py" line="283"/>
+        <location filename="../../../src/cutecoin/gui/community_view.py" line="368"/>
         <source>Success publishing your UID</source>
         <translation type="unfinished">Éxito con la publicación de su UID</translation>
     </message>
     <message>
         <location filename="../../../src/cutecoin/gui/community_view.py" line="286"/>
         <source>Publish UID error</source>
-        <translation type="unfinished">Error de publicación del UID</translation>
+        <translation type="obsolete">Error de publicación del UID</translation>
     </message>
     <message>
         <location filename="../../../src/cutecoin/gui/community_view.py" line="289"/>
         <source>Network error</source>
-        <translation type="unfinished">Error de red</translation>
+        <translation type="obsolete">Error de red</translation>
     </message>
     <message>
         <location filename="../../../src/cutecoin/gui/community_view.py" line="289"/>
         <source>Couldn&apos;t connect to network : {0}</source>
-        <translation type="unfinished">No se pudo conectar a la red : {0}</translation>
+        <translation type="obsolete">No se pudo conectar a la red : {0}</translation>
     </message>
     <message>
         <location filename="../../../src/cutecoin/gui/community_view.py" line="293"/>
         <source>Error</source>
-        <translation type="unfinished">Error</translation>
+        <translation type="obsolete">Error</translation>
     </message>
     <message>
         <location filename="../../../src/cutecoin/gui/community_view.py" line="298"/>
         <source>Are you sure ?
 Revoking your UID can only success if it is not already validated by the network.</source>
-        <translation type="unfinished">¿ Estas seguro ?
+        <translation type="obsolete">¿ Estas seguro ?
 Revocar de su UID sólo puede éxito si no está ya validado por la red.</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/community_view.py" line="313"/>
+        <location filename="../../../src/cutecoin/gui/community_view.py" line="388"/>
         <source>Membership</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/community_view.py" line="313"/>
+        <location filename="../../../src/cutecoin/gui/community_view.py" line="322"/>
         <source>Success sending Membership demand</source>
         <translation type="unfinished">Éxito de enviar una solicitud de afiliación</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/community_view.py" line="319"/>
+        <location filename="../../../src/cutecoin/gui/community_view.py" line="354"/>
         <source>Revoke</source>
         <translation type="unfinished">Revocar</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/community_view.py" line="319"/>
+        <location filename="../../../src/cutecoin/gui/community_view.py" line="348"/>
         <source>Success sending Revoke demand</source>
         <translation type="unfinished">Éxito enviar Revocar una solicitud</translation>
     </message>
     <message>
         <location filename="../../../src/cutecoin/gui/community_view.py" line="325"/>
         <source>Self Certification</source>
-        <translation type="unfinished">Auto-certificación</translation>
+        <translation type="obsolete">Auto-certificación</translation>
     </message>
     <message>
         <location filename="../../../src/cutecoin/gui/community_view.py" line="325"/>
         <source>Success sending Self Certification document</source>
-        <translation type="unfinished">Éxito enviar Documento de auto-certificación</translation>
+        <translation type="obsolete">Éxito enviar Documento de auto-certificación</translation>
+    </message>
+    <message>
+        <location filename="../../../src/cutecoin/gui/community_view.py" line="81"/>
+        <source>Show informations</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../../src/cutecoin/gui/community_view.py" line="85"/>
+        <source>Informations</source>
+        <translation type="unfinished">Informaciones</translation>
+    </message>
+    <message>
+        <location filename="../../../src/cutecoin/gui/community_view.py" line="98"/>
+        <source>Publish UID</source>
+        <translation type="unfinished">Publicar UID</translation>
+    </message>
+    <message>
+        <location filename="../../../src/cutecoin/gui/community_view.py" line="392"/>
+        <source>Revoke UID</source>
+        <translation type="unfinished">Revocar UID</translation>
+    </message>
+    <message>
+        <location filename="../../../src/cutecoin/gui/community_view.py" line="394"/>
+        <source>UID</source>
+        <translation type="unfinished">UID</translation>
+    </message>
+    <message>
+        <location filename="../../../src/cutecoin/gui/community_view.py" line="388"/>
+        <source>Your UID was revoked successfully.</source>
+        <translation type="unfinished"></translation>
     </message>
 </context>
 <context>
@@ -697,27 +765,27 @@ Revocar de su UID sólo puede éxito si no está ya validado por la red.</transl
 <context>
     <name>HistoryTableModel</name>
     <message>
-        <location filename="../../../src/cutecoin/models/txhistory.py" line="199"/>
+        <location filename="../../../src/cutecoin/models/txhistory.py" line="206"/>
         <source>Date</source>
         <translation>Fecha</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/models/txhistory.py" line="199"/>
+        <location filename="../../../src/cutecoin/models/txhistory.py" line="206"/>
         <source>UID/Public key</source>
         <translation>UID/Clave pública</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/models/txhistory.py" line="199"/>
+        <location filename="../../../src/cutecoin/models/txhistory.py" line="206"/>
         <source>Payment</source>
         <translation>Pago</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/models/txhistory.py" line="199"/>
+        <location filename="../../../src/cutecoin/models/txhistory.py" line="206"/>
         <source>Deposit</source>
         <translation>Deposito</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/models/txhistory.py" line="199"/>
+        <location filename="../../../src/cutecoin/models/txhistory.py" line="206"/>
         <source>Comment</source>
         <translation type="unfinished">Comentario</translation>
     </message>
@@ -832,65 +900,70 @@ Revocar de su UID sólo puede éxito si no está ya validado por la red.</transl
 <context>
     <name>IdentitiesTabWidget</name>
     <message>
-        <location filename="../../../src/cutecoin/gui/identities_tab.py" line="56"/>
+        <location filename="../../../src/cutecoin/gui/identities_tab.py" line="63"/>
         <source>Members</source>
         <translation type="unfinished">Miembros</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/identities_tab.py" line="59"/>
+        <location filename="../../../src/cutecoin/gui/identities_tab.py" line="66"/>
         <source>Direct connections</source>
         <translation type="unfinished">Conexiones directas</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/identities_tab.py" line="98"/>
+        <location filename="../../../src/cutecoin/gui/identities_tab.py" line="109"/>
         <source>Informations</source>
         <translation type="unfinished">Informaciones</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/identities_tab.py" line="101"/>
+        <location filename="../../../src/cutecoin/gui/identities_tab.py" line="112"/>
         <source>Add as contact</source>
         <translation type="unfinished">Añadir como contacto</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/identities_tab.py" line="105"/>
+        <location filename="../../../src/cutecoin/gui/identities_tab.py" line="116"/>
         <source>Send money</source>
         <translation type="unfinished">Enviar dinero</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/identities_tab.py" line="109"/>
+        <location filename="../../../src/cutecoin/gui/identities_tab.py" line="120"/>
         <source>Certify identity</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/identities_tab.py" line="113"/>
+        <location filename="../../../src/cutecoin/gui/identities_tab.py" line="124"/>
         <source>View in Web of Trust</source>
         <translation type="unfinished"></translation>
     </message>
+    <message>
+        <location filename="../../../src/cutecoin/gui/identities_tab.py" line="128"/>
+        <source>Copy pubkey</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>IdentitiesTableModel</name>
     <message>
-        <location filename="../../../src/cutecoin/models/identities.py" line="89"/>
+        <location filename="../../../src/cutecoin/models/identities.py" line="90"/>
         <source>UID</source>
         <translation>UID</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/models/identities.py" line="90"/>
+        <location filename="../../../src/cutecoin/models/identities.py" line="91"/>
         <source>Pubkey</source>
         <translation>Clave pública</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/models/identities.py" line="91"/>
+        <location filename="../../../src/cutecoin/models/identities.py" line="92"/>
         <source>Renewed</source>
         <translation>Renovado</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/models/identities.py" line="92"/>
+        <location filename="../../../src/cutecoin/models/identities.py" line="93"/>
         <source>Expiration</source>
         <translation>Caducidad</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/models/identities.py" line="93"/>
+        <location filename="../../../src/cutecoin/models/identities.py" line="94"/>
         <source>Validation</source>
         <translation>Validación</translation>
     </message>
@@ -968,7 +1041,7 @@ Revocar de su UID sólo puede éxito si no está ya validado por la red.</transl
     <message>
         <location filename="../../ui/informations_tab.ui" line="61"/>
         <source>label_general</source>
-        <translation>label_general</translation>
+        <translation type="obsolete">label_general</translation>
     </message>
     <message>
         <location filename="../../ui/informations_tab.ui" line="77"/>
@@ -978,7 +1051,7 @@ Revocar de su UID sólo puede éxito si no está ya validado por la red.</transl
     <message>
         <location filename="../../ui/informations_tab.ui" line="83"/>
         <source>label_rules</source>
-        <translation>label_rules</translation>
+        <translation type="obsolete">label_rules</translation>
     </message>
     <message>
         <location filename="../../ui/informations_tab.ui" line="96"/>
@@ -988,7 +1061,7 @@ Revocar de su UID sólo puede éxito si no está ya validado por la red.</transl
     <message>
         <location filename="../../ui/informations_tab.ui" line="102"/>
         <source>label_money</source>
-        <translation>label_money</translation>
+        <translation type="obsolete">label_money</translation>
     </message>
     <message>
         <location filename="../../ui/informations_tab.ui" line="115"/>
@@ -998,30 +1071,30 @@ Revocar de su UID sólo puede éxito si no está ya validado por la red.</transl
     <message>
         <location filename="../../ui/informations_tab.ui" line="121"/>
         <source>label_wot</source>
-        <translation>label_wot</translation>
+        <translation type="obsolete">label_wot</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="86"/>
+        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="103"/>
         <source>Universal Dividend UD(t) in</source>
         <translation>Dividendo Universales DU(t) en</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="86"/>
+        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="103"/>
         <source>Members N(t)</source>
         <translation>Miembros N(t)</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="86"/>
+        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="103"/>
         <source>Next UD date and time (t+1)</source>
         <translation>Siguiente DU fecha y tiempo ( t+1 )</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="158"/>
+        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="175"/>
         <source>No Universal Dividend created yet.</source>
         <translation>Dividendo Universales no se ha creado.</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="133"/>
+        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="150"/>
         <source>
                 &lt;table cellpadding=&quot;5&quot;&gt;
                 &lt;tr&gt;&lt;td align=&quot;right&quot;&gt;&lt;b&gt;{:}&lt;/b&gt;&lt;/td&gt;&lt;td&gt;{:}&lt;/td&gt;&lt;/tr&gt;
@@ -1038,32 +1111,32 @@ Revocar de su UID sólo puede éxito si no está ya validado por la red.</transl
                 </translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="133"/>
+        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="150"/>
         <source>{:2.0%} / {:} days</source>
         <translation>{:2.0%} / {:} día</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="133"/>
+        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="150"/>
         <source>Fundamental growth (c) / Delta time (dt)</source>
         <translation>Crecimiento fundamental (c) / Delta tiempo (dt)</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="133"/>
+        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="150"/>
         <source>Universal Dividend (formula)</source>
         <translation>Dividendo Universales ( fórmula )</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="133"/>
+        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="150"/>
         <source>{:} = MAX {{ {:} {:} ; {:2.0%} &amp;#215; {:} {:} / {:} }}</source>
         <translation>{:} = MAX {{ {:} {:} ; {:2.0%} &amp;#215; {:} {:} / {:} }}</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="133"/>
+        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="150"/>
         <source>Universal Dividend (computed)</source>
         <translation>Dividendo Universales (computarizada)</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="161"/>
+        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="178"/>
         <source>
             &lt;table cellpadding=&quot;5&quot;&gt;
             &lt;tr&gt;&lt;td align=&quot;right&quot;&gt;&lt;b&gt;{:2.0%} / {:} days&lt;/b&gt;&lt;/td&gt;&lt;td&gt;{:}&lt;/td&gt;&lt;/tr&gt;
@@ -1090,47 +1163,47 @@ Revocar de su UID sólo puede éxito si no está ya validado por la red.</transl
             </translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="161"/>
+        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="178"/>
         <source>Fundamental growth (c)</source>
         <translation>Crecimiento fundamental (c)</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="161"/>
+        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="178"/>
         <source>Initial Universal Dividend UD(0) in</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="161"/>
+        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="178"/>
         <source>Time period (dt) in days (86400 seconds) between two UD</source>
         <translation>Un período de tiempo ( dt ) en días ( 86400 segundos ) entre dos DU</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="161"/>
+        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="178"/>
         <source>Number of blocks used for calculating median time</source>
         <translation>El número de bloques utilizados para calcular la mediana del tiempo</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="161"/>
+        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="178"/>
         <source>The average time in seconds for writing 1 block (wished time)</source>
         <translation>El promedio de tiempo en segundos para escribir 1 bloque (el tiempo de espera)</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="161"/>
+        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="178"/>
         <source>The number of blocks required to evaluate again PoWMin value</source>
         <translation>El número de bloques requerido para evaluar de nuevo el valor PoWMin</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="161"/>
+        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="178"/>
         <source>The number of previous blocks to check for personalized difficulty</source>
         <translation>El número de bloques anteriores para comprobar en una dificultad a medida</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="161"/>
+        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="178"/>
         <source>The percent of previous issuers to reach for personalized difficulty</source>
         <translation>El porcentaje de los emisores anteriores para llegar a la dificultad personalizada</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="196"/>
+        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="213"/>
         <source>
             &lt;table cellpadding=&quot;5&quot;&gt;
             &lt;tr&gt;&lt;td align=&quot;right&quot;&gt;&lt;b&gt;{:}&lt;/b&gt;&lt;/td&gt;&lt;td&gt;{:}&lt;/td&gt;&lt;/tr&gt;
@@ -1153,37 +1226,37 @@ Revocar de su UID sólo puede éxito si no está ya validado por la red.</transl
             </translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="196"/>
+        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="213"/>
         <source>Minimum delay between 2 identical certifications (in days)</source>
         <translation>Tiempo mínimo entre 2 certificaciones idénticas (en días)</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="196"/>
+        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="213"/>
         <source>Maximum age of a valid signature (in days)</source>
         <translation>La edad máxima de una firma válida (en días)</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="196"/>
+        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="213"/>
         <source>Minimum quantity of signatures to be part of the WoT</source>
         <translation>La cantidad mínima de firmas para ser incluido en la AdC</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="196"/>
+        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="213"/>
         <source>Minimum quantity of valid made certifications to be part of the WoT for distance rule</source>
         <translation>La cantidad mínima de certificados válidos para ser parte de la Anillo de Confianza bajo el imperio de la distancia</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="196"/>
+        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="213"/>
         <source>Maximum age of a valid membership (in days)</source>
         <translation>La edad máxima de una membresía válida (en días)</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="196"/>
+        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="213"/>
         <source>Maximum distance between each WoT member and a newcomer</source>
         <translation>La distancia máxima entre cada miembro de la AdC y un recién llegado</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="86"/>
+        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="103"/>
         <source>
                 &lt;table cellpadding=&quot;5&quot;&gt;
                 &lt;tr&gt;&lt;td align=&quot;right&quot;&gt;&lt;b&gt;{:}&lt;/b&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;{:} {:}&lt;/td&gt;&lt;/tr&gt;
@@ -1208,27 +1281,27 @@ Revocar de su UID sólo puede éxito si no está ya validado por la red.</transl
                 </translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="86"/>
+        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="103"/>
         <source>Monetary Mass M(t-1) in</source>
         <translation>Oferta monetaria M(t-1) en</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="86"/>
+        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="103"/>
         <source>Monetary Mass per member M(t-1)/N(t) in</source>
         <translation>Oferta monetaria por cada miembro M(t-1) / N(t) en</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="86"/>
+        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="103"/>
         <source>Actual growth c = UD(t)/[M(t-1)/N(t)]</source>
         <translation>Crecimiento actual c = UD( t ) / [ M( t-1 ) / N( t ) ]</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="86"/>
+        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="103"/>
         <source>Last UD date and time (t)</source>
         <translation>última DU fecha y tiempo ( t )</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="133"/>
+        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="150"/>
         <source>UD(t+1) = MAX { UD(t) ; c &amp;#215; M(t) / N(t+1) }</source>
         <translation>DU(t+1) = MAX { DU(t) ; c &amp;#215; M(t) / N(t+1) }</translation>
     </message>
@@ -1373,7 +1446,7 @@ Revocar de su UID sólo puede éxito si no está ya validado por la red.</transl
         &lt;p&gt;vit&lt;/p&gt;
         &lt;p&gt;canercandan&lt;/p&gt;
         </source>
-        <translation>
+        <translation type="obsolete">
         &lt;h1&gt;CuteCoin&lt;/h1&gt;
 
         &lt;p&gt;Python / Qt uCoin cliente&lt;/p&gt;
@@ -1391,42 +1464,42 @@ Revocar de su UID sólo puede éxito si no está ya validado por la red.</transl
         </translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/mainwindow.py" line="250"/>
+        <location filename="../../../src/cutecoin/gui/mainwindow.py" line="251"/>
         <source>Please get the latest release {version}</source>
         <translation>Por favor, obtener la última versión {version}</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/mainwindow.py" line="285"/>
+        <location filename="../../../src/cutecoin/gui/mainwindow.py" line="283"/>
         <source>Edit</source>
         <translation>Editar</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/mainwindow.py" line="288"/>
+        <location filename="../../../src/cutecoin/gui/mainwindow.py" line="286"/>
         <source>Delete</source>
         <translation>Borrar</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/mainwindow.py" line="305"/>
+        <location filename="../../../src/cutecoin/gui/mainwindow.py" line="303"/>
         <source>CuteCoin {0}</source>
         <translation>CuteCoin {0}</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/mainwindow.py" line="332"/>
+        <location filename="../../../src/cutecoin/gui/mainwindow.py" line="330"/>
         <source>CuteCoin {0} - Account : {1}</source>
         <translation>CuteCoin {0} - Cuenta : {1}</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/mainwindow.py" line="350"/>
+        <location filename="../../../src/cutecoin/gui/mainwindow.py" line="348"/>
         <source>Export an account</source>
         <translation>Exportar una cuenta</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/mainwindow.py" line="351"/>
+        <location filename="../../../src/cutecoin/gui/mainwindow.py" line="349"/>
         <source>All account files (*.acc)</source>
         <translation>Archivos de cuentas (*.acc)</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/mainwindow.py" line="352"/>
+        <location filename="../../../src/cutecoin/gui/mainwindow.py" line="350"/>
         <source>Export</source>
         <translation>Exportar</translation>
     </message>
@@ -1450,6 +1523,27 @@ Revocar de su UID sólo puede éxito si no está ya validado por la red.</transl
         <source>C&amp;ertification</source>
         <translation type="unfinished"></translation>
     </message>
+    <message>
+        <location filename="../../../src/cutecoin/gui/mainwindow.py" line="225"/>
+        <source>
+        &lt;h1&gt;Cutecoin&lt;/h1&gt;
+
+        &lt;p&gt;Python/Qt uCoin client&lt;/p&gt;
+
+        &lt;p&gt;Version : {:}&lt;/p&gt;
+        {new_version_text}
+
+        &lt;p&gt;License : GPLv3&lt;/p&gt;
+
+        &lt;p&gt;&lt;b&gt;Authors&lt;/b&gt;&lt;/p&gt;
+
+        &lt;p&gt;inso&lt;/p&gt;
+        &lt;p&gt;vit&lt;/p&gt;
+        &lt;p&gt;Moul&lt;/p&gt;
+        &lt;p&gt;canercandan&lt;/p&gt;
+        </source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>MemberDialog</name>
@@ -1500,62 +1594,62 @@ Revocar de su UID sólo puede éxito si no está ya validado por la red.</transl
 <context>
     <name>NetworkFilterProxyModel</name>
     <message>
-        <location filename="../../../src/cutecoin/models/network.py" line="47"/>
+        <location filename="../../../src/cutecoin/models/network.py" line="48"/>
         <source>Address</source>
         <translation>Dirección</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/models/network.py" line="48"/>
+        <location filename="../../../src/cutecoin/models/network.py" line="49"/>
         <source>Port</source>
         <translation>Puerto</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/models/network.py" line="49"/>
+        <location filename="../../../src/cutecoin/models/network.py" line="50"/>
         <source>Block</source>
         <translation>Bloque</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/models/network.py" line="51"/>
+        <location filename="../../../src/cutecoin/models/network.py" line="52"/>
         <source>UID</source>
         <translation>UID</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/models/network.py" line="52"/>
+        <location filename="../../../src/cutecoin/models/network.py" line="53"/>
         <source>Member</source>
         <translation>Miembro</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/models/network.py" line="53"/>
+        <location filename="../../../src/cutecoin/models/network.py" line="54"/>
         <source>Pubkey</source>
         <translation>Clave pública</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/models/network.py" line="54"/>
+        <location filename="../../../src/cutecoin/models/network.py" line="55"/>
         <source>Software</source>
         <translation>Software</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/models/network.py" line="55"/>
+        <location filename="../../../src/cutecoin/models/network.py" line="56"/>
         <source>Version</source>
         <translation>Versión</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/models/network.py" line="68"/>
+        <location filename="../../../src/cutecoin/models/network.py" line="69"/>
         <source>yes</source>
         <translation>sí</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/models/network.py" line="68"/>
+        <location filename="../../../src/cutecoin/models/network.py" line="69"/>
         <source>no</source>
         <translation>no</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/models/network.py" line="68"/>
+        <location filename="../../../src/cutecoin/models/network.py" line="69"/>
         <source>offline</source>
         <translation>Desconectado</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/models/network.py" line="50"/>
+        <location filename="../../../src/cutecoin/models/network.py" line="51"/>
         <source>Hash</source>
         <translation>Hash</translation>
     </message>
@@ -1568,17 +1662,17 @@ Revocar de su UID sólo puede éxito si no está ya validado por la red.</transl
         <translation>Forma</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/network_tab.py" line="68"/>
+        <location filename="../../../src/cutecoin/gui/network_tab.py" line="70"/>
         <source>Unset root node</source>
         <translation type="unfinished">Desactivar el nodo raíz</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/network_tab.py" line="74"/>
+        <location filename="../../../src/cutecoin/gui/network_tab.py" line="76"/>
         <source>Set as root node</source>
         <translation type="unfinished">Activar como nodo raíz</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/network_tab.py" line="80"/>
+        <location filename="../../../src/cutecoin/gui/network_tab.py" line="82"/>
         <source>Open in browser</source>
         <translation>Abrir en un explorador</translation>
     </message>
@@ -1586,22 +1680,22 @@ Revocar de su UID sólo puede éxito si no está ya validado por la red.</transl
 <context>
     <name>NetworkTableModel</name>
     <message>
-        <location filename="../../../src/cutecoin/models/network.py" line="135"/>
+        <location filename="../../../src/cutecoin/models/network.py" line="136"/>
         <source>Online</source>
         <translation>En línea</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/models/network.py" line="136"/>
+        <location filename="../../../src/cutecoin/models/network.py" line="137"/>
         <source>Offline</source>
         <translation type="unfinished">Desconectado</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/models/network.py" line="137"/>
+        <location filename="../../../src/cutecoin/models/network.py" line="138"/>
         <source>Unsynchronized</source>
         <translation>No sincronizado</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/models/network.py" line="138"/>
+        <location filename="../../../src/cutecoin/models/network.py" line="139"/>
         <source>Corrupted</source>
         <translation>Corrupto</translation>
     </message>
@@ -1624,22 +1718,22 @@ Revocar de su UID sólo puede éxito si no está ya validado por la red.</transl
         <translation>Recordar mi contraseña durante esta sesión</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/password_asker.py" line="65"/>
+        <location filename="../../../src/cutecoin/gui/password_asker.py" line="66"/>
         <source>Bad password</source>
         <translation>Contraseña incorrecta</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/password_asker.py" line="65"/>
+        <location filename="../../../src/cutecoin/gui/password_asker.py" line="66"/>
         <source>Non printable characters in password</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/password_asker.py" line="71"/>
+        <location filename="../../../src/cutecoin/gui/password_asker.py" line="72"/>
         <source>Failed to get private key</source>
         <translation>No se puede obtener la clave privada</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/password_asker.py" line="71"/>
+        <location filename="../../../src/cutecoin/gui/password_asker.py" line="72"/>
         <source>Wrong password typed. Cannot open the private key</source>
         <translation>Contraseña incorrecta. No se puede abrir la clave privada</translation>
     </message>
@@ -1647,7 +1741,7 @@ Revocar de su UID sólo puede éxito si no está ya validado por la red.</transl
 <context>
     <name>PreferencesDialog</name>
     <message>
-        <location filename="../../../src/cutecoin/gui/preferences.py" line="83"/>
+        <location filename="../../ui/preferences.ui" line="14"/>
         <source>Preferences</source>
         <translation>Preferencias</translation>
     </message>
@@ -1664,7 +1758,7 @@ Revocar de su UID sólo puede éxito si no está ya validado por la red.</transl
     <message>
         <location filename="../../../src/cutecoin/gui/preferences.py" line="83"/>
         <source>A restart is needed to apply your new preferences.</source>
-        <translation>Se necesita un reinicio para aplicar sus nuevas preferencias.</translation>
+        <translation type="obsolete">Se necesita un reinicio para aplicar sus nuevas preferencias.</translation>
     </message>
     <message>
         <location filename="../../ui/preferences.ui" line="129"/>
@@ -1714,33 +1808,43 @@ Revocar de su UID sólo puede éxito si no está ya validado por la red.</transl
     <message>
         <location filename="../../ui/preferences.ui" line="336"/>
         <source>Use a proxy server</source>
-        <translation>Utilizar un servidor proxy</translation>
+        <translation type="obsolete">Utilizar un servidor proxy</translation>
     </message>
     <message>
         <location filename="../../ui/preferences.ui" line="348"/>
         <source>Proxy type : </source>
-        <translation>Tipo de proxy : </translation>
+        <translation type="obsolete">Tipo de proxy : </translation>
     </message>
     <message>
         <location filename="../../ui/preferences.ui" line="356"/>
         <source>HTTP</source>
-        <translation>HTTP</translation>
+        <translation type="obsolete">HTTP</translation>
     </message>
     <message>
         <location filename="../../ui/preferences.ui" line="361"/>
         <source>SOCKS5</source>
-        <translation>SOCKS5</translation>
+        <translation type="obsolete">SOCKS5</translation>
     </message>
     <message>
-        <location filename="../../ui/preferences.ui" line="386"/>
+        <location filename="../../ui/preferences.ui" line="345"/>
         <source>Proxy server address : </source>
         <translation type="unfinished">Dirección del servidor proxy : </translation>
     </message>
     <message>
-        <location filename="../../ui/preferences.ui" line="396"/>
+        <location filename="../../ui/preferences.ui" line="355"/>
         <source>:</source>
         <translation>:</translation>
     </message>
+    <message>
+        <location filename="../../ui/preferences.ui" line="336"/>
+        <source>Use a http proxy server</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../ui/preferences.ui" line="379"/>
+        <source>Automatically refresh identities informations</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>ProcessConfigureAccount</name>
@@ -1794,22 +1898,22 @@ Su cuenta no será retirado de las redes a las que se unieron.
 <context>
     <name>ProcessConfigureCommunity</name>
     <message>
-        <location filename="../../../src/cutecoin/gui/process_cfg_community.py" line="206"/>
+        <location filename="../../../src/cutecoin/gui/process_cfg_community.py" line="221"/>
         <source>Configure community {0}</source>
         <translation>Configurar comunidad {0}</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/process_cfg_community.py" line="209"/>
+        <location filename="../../../src/cutecoin/gui/process_cfg_community.py" line="224"/>
         <source>Add a community</source>
         <translation>Añadir una comunidad</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/process_cfg_community.py" line="243"/>
+        <location filename="../../../src/cutecoin/gui/process_cfg_community.py" line="258"/>
         <source>Error</source>
         <translation>Error</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/process_cfg_community.py" line="272"/>
+        <location filename="../../../src/cutecoin/gui/process_cfg_community.py" line="287"/>
         <source>Delete</source>
         <translation>Borrar</translation>
     </message>
@@ -1927,7 +2031,7 @@ Would you like to publish the key ?</source>
 <context>
     <name>Scene</name>
     <message>
-        <location filename="../../../src/cutecoin/gui/views/wot.py" line="157"/>
+        <location filename="../../../src/cutecoin/gui/views/wot.py" line="158"/>
         <source>Certification expires at {0}</source>
         <translation>Certificación expira a {0}</translation>
     </message>
@@ -1935,44 +2039,56 @@ Would you like to publish the key ?</source>
 <context>
     <name>StepPageInit</name>
     <message>
-        <location filename="../../../src/cutecoin/gui/process_cfg_community.py" line="67"/>
+        <location filename="../../../src/cutecoin/gui/process_cfg_community.py" line="93"/>
         <source>Could not find your identity on the network.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/process_cfg_community.py" line="100"/>
-        <source>Could not connect.</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../../../src/cutecoin/gui/process_cfg_community.py" line="92"/>
+        <location filename="../../../src/cutecoin/gui/process_cfg_community.py" line="123"/>
         <source>Broadcasting identity...</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/process_cfg_community.py" line="98"/>
-        <source>Pubkey already exists on the network</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../../../src/cutecoin/gui/process_cfg_community.py" line="110"/>
+        <location filename="../../../src/cutecoin/gui/process_cfg_community.py" line="127"/>
         <source>UID broadcast</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/process_cfg_community.py" line="110"/>
+        <location filename="../../../src/cutecoin/gui/process_cfg_community.py" line="127"/>
         <source>Identity broadcasted to the network</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/process_cfg_community.py" line="124"/>
+        <location filename="../../../src/cutecoin/gui/process_cfg_community.py" line="134"/>
         <source>Error</source>
         <translation type="unfinished">Error</translation>
     </message>
     <message>
         <location filename="../../../src/cutecoin/gui/process_cfg_community.py" line="124"/>
         <source>{0} : {1}</source>
-        <translation type="unfinished">{0} : {1}</translation>
+        <translation type="obsolete">{0} : {1}</translation>
+    </message>
+    <message>
+        <location filename="../../../src/cutecoin/gui/process_cfg_community.py" line="95"/>
+        <source>Your pubkey or UID is different on the network.
+    Yours : {0}, the network : {1}</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../../src/cutecoin/gui/process_cfg_community.py" line="134"/>
+        <source>{0}</source>
+        <translation type="unfinished">{0}</translation>
+    </message>
+    <message>
+        <location filename="../../../src/cutecoin/gui/process_cfg_community.py" line="138"/>
+        <source>Your pubkey or UID was already found on the network.
+Yours : {0}, the network : {1}</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../../src/cutecoin/gui/process_cfg_community.py" line="141"/>
+        <source>Your account already exists on the network</source>
+        <translation type="unfinished"></translation>
     </message>
 </context>
 <context>
@@ -2001,69 +2117,69 @@ Would you like to publish the key ?</source>
         <translation type="obsolete">&lt;b&gt;Saldo&lt;/b&gt; {:} {:}</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/transactions_tab.py" line="151"/>
+        <location filename="../../../src/cutecoin/gui/transactions_tab.py" line="170"/>
         <source>Actions</source>
         <translation>Acción</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/transactions_tab.py" line="166"/>
+        <location filename="../../../src/cutecoin/gui/transactions_tab.py" line="185"/>
         <source>Send again</source>
         <translation>Enviar de nuevo</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/transactions_tab.py" line="171"/>
+        <location filename="../../../src/cutecoin/gui/transactions_tab.py" line="190"/>
         <source>Cancel</source>
         <translation>Cancelar</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/transactions_tab.py" line="177"/>
+        <location filename="../../../src/cutecoin/gui/transactions_tab.py" line="196"/>
         <source>Informations</source>
         <translation>Informaciones</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/transactions_tab.py" line="182"/>
+        <location filename="../../../src/cutecoin/gui/transactions_tab.py" line="201"/>
         <source>Add as contact</source>
         <translation>Añadir como contacto</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/transactions_tab.py" line="187"/>
+        <location filename="../../../src/cutecoin/gui/transactions_tab.py" line="206"/>
         <source>Send money</source>
         <translation>Enviar dinero</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/transactions_tab.py" line="193"/>
+        <location filename="../../../src/cutecoin/gui/transactions_tab.py" line="212"/>
         <source>View in Web of Trust</source>
         <translation>Ver en el Anillo de Confianza</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/transactions_tab.py" line="198"/>
+        <location filename="../../../src/cutecoin/gui/transactions_tab.py" line="217"/>
         <source>Copy pubkey to clipboard</source>
         <translation>Copiare la clave pública al portapapeles</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/transactions_tab.py" line="276"/>
+        <location filename="../../../src/cutecoin/gui/transactions_tab.py" line="283"/>
         <source>Warning</source>
         <translation>Advertencia</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/transactions_tab.py" line="276"/>
+        <location filename="../../../src/cutecoin/gui/transactions_tab.py" line="283"/>
         <source>Are you sure ?
 This money transfer will be removed and not sent.</source>
         <translation>¿ Estas seguro ?
 Esta transferencia de dinero será eliminado y no se ha enviado.</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/transactions_tab.py" line="118"/>
+        <location filename="../../../src/cutecoin/gui/transactions_tab.py" line="135"/>
         <source>Received {0} {1} from {2} transfers</source>
         <translation>Recibido {0} {1} de {2} transferencias</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/transactions_tab.py" line="122"/>
+        <location filename="../../../src/cutecoin/gui/transactions_tab.py" line="139"/>
         <source>New transactions received</source>
         <translation>Nuevos transacciones recibidas</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/transactions_tab.py" line="137"/>
+        <location filename="../../../src/cutecoin/gui/transactions_tab.py" line="155"/>
         <source>{:}</source>
         <translation type="unfinished">{:}</translation>
     </message>
@@ -2088,7 +2204,7 @@ Esta transferencia de dinero será eliminado y no se ha enviado.</translation>
     <message>
         <location filename="../../ui/transfer.ui" line="40"/>
         <source>Contact</source>
-        <translation>Contacto</translation>
+        <translation type="obsolete">Contacto</translation>
     </message>
     <message>
         <location filename="../../ui/transfer.ui" line="80"/>
@@ -2106,34 +2222,34 @@ Esta transferencia de dinero será eliminado y no se ha enviado.</translation>
         <translation>Mensaje de transacción</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/transfer.py" line="77"/>
+        <location filename="../../../src/cutecoin/gui/transfer.py" line="106"/>
         <source>Money transfer</source>
         <translation>Transferencia de dinero</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/transfer.py" line="77"/>
+        <location filename="../../../src/cutecoin/gui/transfer.py" line="106"/>
         <source>No amount. Please give the transfert amount</source>
         <translation>Ninguna cantidad. Indique el monto de la transferencia</translation>
     </message>
     <message>
         <location filename="../../../src/cutecoin/gui/transfer.py" line="111"/>
         <source>Error</source>
-        <translation>Error</translation>
+        <translation type="obsolete">Error</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/transfer.py" line="99"/>
+        <location filename="../../../src/cutecoin/gui/transfer.py" line="137"/>
         <source>Transfer</source>
         <translation>Transferir</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/transfer.py" line="99"/>
+        <location filename="../../../src/cutecoin/gui/transfer.py" line="124"/>
         <source>Success sending money to {0}</source>
         <translation>Éxito enviar dinero a {0}</translation>
     </message>
     <message>
         <location filename="../../../src/cutecoin/gui/transfer.py" line="111"/>
         <source>{0} : {1}</source>
-        <translation>{0} : {1}</translation>
+        <translation type="obsolete">{0} : {1}</translation>
     </message>
     <message>
         <location filename="../../ui/transfer.ui" line="61"/>
@@ -2155,18 +2271,33 @@ Esta transferencia de dinero será eliminado y no se ha enviado.</translation>
         <source>Amount</source>
         <translation>Cantidad</translation>
     </message>
+    <message>
+        <location filename="../../ui/transfer.ui" line="40"/>
+        <source>Con&amp;tact</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>TxFilterProxyModel</name>
     <message>
         <location filename="../../../src/cutecoin/models/txhistory.py" line="158"/>
         <source>{0} / {1} validations</source>
-        <translation>{0} / {1} validaciones</translation>
+        <translation type="obsolete">{0} / {1} validaciones</translation>
     </message>
     <message>
         <location filename="../../../src/cutecoin/models/txhistory.py" line="162"/>
         <source>Validating... {0} %</source>
-        <translation>Validación... {0} %</translation>
+        <translation type="obsolete">Validación... {0} %</translation>
+    </message>
+    <message>
+        <location filename="../../../src/cutecoin/models/txhistory.py" line="165"/>
+        <source>{0} / {1} confirmations</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../../src/cutecoin/models/txhistory.py" line="169"/>
+        <source>Confirming... {0} %</source>
+        <translation type="unfinished"></translation>
     </message>
 </context>
 <context>
@@ -2399,25 +2530,30 @@ Revocar de su UID sólo puede éxito si no está ya validado por la red.</transl
 <context>
     <name>WoT.Node</name>
     <message>
-        <location filename="../../../src/cutecoin/gui/views/wot.py" line="290"/>
+        <location filename="../../../src/cutecoin/gui/views/wot.py" line="294"/>
         <source>Informations</source>
         <translation>Informaciones</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/views/wot.py" line="295"/>
+        <location filename="../../../src/cutecoin/gui/views/wot.py" line="299"/>
         <source>Add as contact</source>
         <translation>Añadir como contacto</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/views/wot.py" line="300"/>
+        <location filename="../../../src/cutecoin/gui/views/wot.py" line="304"/>
         <source>Send money</source>
         <translation>Enviar dinero</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/views/wot.py" line="305"/>
+        <location filename="../../../src/cutecoin/gui/views/wot.py" line="309"/>
         <source>Certify identity</source>
         <translation>Certificar la identidad</translation>
     </message>
+    <message>
+        <location filename="../../../src/cutecoin/gui/views/wot.py" line="314"/>
+        <source>Copy pubkey</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>WotTabWidget</name>
@@ -2432,12 +2568,12 @@ Revocar de su UID sólo puede éxito si no está ya validado por la red.</transl
         <translation>Centrar la vista en mí</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/wot_tab.py" line="33"/>
+        <location filename="../../../src/cutecoin/gui/wot_tab.py" line="37"/>
         <source>Research a pubkey, an uid...</source>
         <translation type="unfinished">Investicar a clave pública, identificatión del usuario…</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/wot_tab.py" line="123"/>
+        <location filename="../../../src/cutecoin/gui/wot_tab.py" line="141"/>
         <source>
                     &lt;table cellpadding=&quot;5&quot;&gt;
                     &lt;tr&gt;&lt;td align=&quot;right&quot;&gt;&lt;b&gt;{:}&lt;/b&gt;&lt;/td&gt;&lt;td&gt;{:}&lt;/td&gt;&lt;/tr&gt;
@@ -2454,32 +2590,32 @@ Revocar de su UID sólo puede éxito si no está ya validado por la red.</transl
                     </translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/wot_tab.py" line="105"/>
+        <location filename="../../../src/cutecoin/gui/wot_tab.py" line="123"/>
         <source>Membership</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/wot_tab.py" line="123"/>
+        <location filename="../../../src/cutecoin/gui/wot_tab.py" line="141"/>
         <source>Last renewal on {:}, expiration on {:}</source>
         <translation type="unfinished">Última renovación en {:}, caducidad en {:}</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/wot_tab.py" line="141"/>
+        <location filename="../../../src/cutecoin/gui/wot_tab.py" line="159"/>
         <source>Your web of trust</source>
         <translation type="unfinished">Su Anillo de Confianza ( AdC )</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/wot_tab.py" line="141"/>
+        <location filename="../../../src/cutecoin/gui/wot_tab.py" line="159"/>
         <source>Certified by {:} members; Certifier of {:} members</source>
         <translation type="unfinished">Certificado por: {} miembros; Certificador de {:} miembros</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/wot_tab.py" line="141"/>
+        <location filename="../../../src/cutecoin/gui/wot_tab.py" line="159"/>
         <source>Not a member</source>
         <translation type="unfinished">No es un miembro</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/wot_tab.py" line="141"/>
+        <location filename="../../../src/cutecoin/gui/wot_tab.py" line="159"/>
         <source>
                 &lt;table cellpadding=&quot;5&quot;&gt;
                 &lt;tr&gt;&lt;td align=&quot;right&quot;&gt;&lt;b&gt;{:}&lt;/b&gt;&lt;/td&gt;&lt;td&gt;{:}&lt;/td&gt;&lt;/tr&gt;
@@ -2500,7 +2636,7 @@ Revocar de su UID sólo puede éxito si no está ya validado por la red.</transl
 <context>
     <name>self.config_dialog</name>
     <message>
-        <location filename="../../../src/cutecoin/gui/process_cfg_community.py" line="170"/>
+        <location filename="../../../src/cutecoin/gui/process_cfg_community.py" line="185"/>
         <source>Ok</source>
         <translation type="unfinished">Ok</translation>
     </message>
@@ -2565,7 +2701,12 @@ Revocar de su UID sólo puede éxito si no está ya validado por la red.</transl
     <message>
         <location filename="../../ui/transactions_tab.ui" line="33"/>
         <source>label_balance</source>
-        <translation type="unfinished">label_balance</translation>
+        <translation type="obsolete">label_balance</translation>
+    </message>
+    <message>
+        <location filename="../../ui/transactions_tab.ui" line="33"/>
+        <source>loading...</source>
+        <translation type="unfinished"></translation>
     </message>
 </context>
 </TS>
diff --git a/res/i18n/ts/fr_FR.ts b/res/i18n/ts/fr_FR.ts
index 7c4574bfd3a43122883de5620b3749f94d1227f6..ba9c1614f13d4dd690beb0cf8556de0ff3f16a20 100644
--- a/res/i18n/ts/fr_FR.ts
+++ b/res/i18n/ts/fr_FR.ts
@@ -1,15 +1,47 @@
-<?xml version='1.0' encoding='utf-8'?>
-<!DOCTYPE TS>
-<TS version="2.0" language="fr_FR" sourcelanguage="en">
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS><TS version="2.0" language="fr_FR" sourcelanguage="en">
+<context>
+    <name>@default</name>
+    <message>
+        <location filename="../../../src/cutecoin/core/account.py" line="61"/>
+        <source>ud {0}</source>
+        <translation type="obsolete">du {0}</translation>
+    </message>
+    <message>
+        <location filename="../../../src/cutecoin/gui/views/wot.py" line="285"/>
+        <source>Informations</source>
+        <translation type="obsolete">Informations</translation>
+    </message>
+    <message>
+        <location filename="../../../src/cutecoin/gui/views/wot.py" line="289"/>
+        <source>Add as contact</source>
+        <translation type="obsolete">Ajouter comme contact</translation>
+    </message>
+    <message>
+        <location filename="../../../src/cutecoin/gui/views/wot.py" line="293"/>
+        <source>Send money</source>
+        <translation type="obsolete">Envoyer de l&apos;argent</translation>
+    </message>
+    <message>
+        <location filename="../../../src/cutecoin/gui/community_tab.py" line="310"/>
+        <source>Renew membership</source>
+        <translation type="obsolete">Renouveller le statut de membre</translation>
+    </message>
+    <message>
+        <location filename="../../../src/cutecoin/gui/views/wot.py" line="297"/>
+        <source>Certify identity</source>
+        <translation type="obsolete">Certifier cette identité</translation>
+    </message>
+</context>
 <context>
     <name>AboutPopup</name>
     <message>
-        <location filename="../../ui/about.ui" line="14"></location>
+        <location filename="../../ui/about.ui" line="14"/>
         <source>About</source>
-        <translation>À propos</translation>
+        <translation>A propos</translation>
     </message>
     <message>
-        <location filename="../../ui/about.ui" line="22"></location>
+        <location filename="../../ui/about.ui" line="22"/>
         <source>label</source>
         <translation></translation>
     </message>
@@ -17,566 +49,735 @@
 <context>
     <name>Account</name>
     <message>
-        <location filename="../../../src/cutecoin/core/account.py" line="101"></location>
+        <location filename="../../../src/cutecoin/core/account.py" line="61"/>
+        <source>ud {0}</source>
+        <translation type="obsolete">du {0}</translation>
+    </message>
+    <message>
+        <location filename="../../../src/cutecoin/core/account.py" line="101"/>
         <source>Units</source>
         <translation type="obsolete">Unités</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/core/account.py" line="101"></location>
+        <location filename="../../../src/cutecoin/core/account.py" line="101"/>
         <source>UD</source>
         <translation type="obsolete">DU</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/core/account.py" line="101"></location>
+        <location filename="../../../src/cutecoin/core/account.py" line="101"/>
         <source>Quant Z-sum</source>
         <translation type="obsolete">Quant. som. 0</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/core/account.py" line="101"></location>
+        <location filename="../../../src/cutecoin/core/account.py" line="101"/>
         <source>Relat Z-sum</source>
         <translation type="obsolete">Rel. som. 0</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/core/account.py" line="101"></location>
+        <location filename="../../../src/cutecoin/core/account.py" line="101"/>
         <source>UD {0}</source>
         <translation type="obsolete">DU {0}</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/core/account.py" line="101"></location>
+        <location filename="../../../src/cutecoin/core/account.py" line="101"/>
         <source>Q0 {0}</source>
         <translation type="obsolete">Q0 {0}</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/core/account.py" line="101"></location>
+        <location filename="../../../src/cutecoin/core/account.py" line="101"/>
         <source>R0 {0}</source>
         <translation type="obsolete">R0 {0}</translation>
     </message>
+    <message>
+        <location filename="../../../src/cutecoin/core/account.py" line="509"/>
+        <source>Could not find user self certification.</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>AccountConfigurationDialog</name>
     <message>
-        <location filename="../../ui/account_cfg.ui" line="14"></location>
+        <location filename="../../ui/account_cfg.ui" line="14"/>
         <source>Add an account</source>
         <translation>Ajouter un compte</translation>
     </message>
     <message>
-        <location filename="../../ui/account_cfg.ui" line="30"></location>
+        <location filename="../../ui/account_cfg.ui" line="30"/>
         <source>Account parameters</source>
         <translation>Paramètres du compte</translation>
     </message>
     <message>
-        <location filename="../../ui/account_cfg.ui" line="51"></location>
+        <location filename="../../ui/account_cfg.ui" line="51"/>
         <source>Account name (uid)</source>
         <translation>Nom de compte</translation>
     </message>
     <message>
-        <location filename="../../ui/account_cfg.ui" line="68"></location>
+        <location filename="../../ui/account_cfg.ui" line="68"/>
         <source>Wallets</source>
-        <translation type="obsolete">Nombre de porte-monnaie</translation>
+        <translation type="obsolete">Nombre de portefeuilles</translation>
     </message>
     <message>
-        <location filename="../../ui/account_cfg.ui" line="84"></location>
+        <location filename="../../ui/account_cfg.ui" line="84"/>
         <source>Delete account</source>
         <translation>Supprimer ce compte</translation>
     </message>
     <message>
-        <location filename="../../ui/account_cfg.ui" line="113"></location>
+        <location filename="../../ui/account_cfg.ui" line="113"/>
         <source>Key parameters</source>
         <translation>Paramètres de la clé</translation>
     </message>
     <message>
-        <location filename="../../ui/account_cfg.ui" line="153"></location>
+        <location filename="../../ui/account_cfg.ui" line="153"/>
         <source>Your password</source>
         <translation>Votre mot de passe</translation>
     </message>
     <message>
-        <location filename="../../ui/account_cfg.ui" line="166"></location>
+        <location filename="../../ui/account_cfg.ui" line="166"/>
         <source>Please repeat your password</source>
         <translation>Veuillez répéter votre mot de passe</translation>
     </message>
     <message>
-        <location filename="../../ui/account_cfg.ui" line="185"></location>
+        <location filename="../../ui/account_cfg.ui" line="185"/>
         <source>Show public key</source>
         <translation>Afficher la clé publique correspondante</translation>
     </message>
     <message>
-        <location filename="../../ui/account_cfg.ui" line="242"></location>
+        <location filename="../../ui/account_cfg.ui" line="215"/>
         <source>Communities membership</source>
         <translation type="obsolete">Communautés</translation>
     </message>
     <message>
-        <location filename="../../ui/account_cfg.ui" line="230"></location>
+        <location filename="../../ui/account_cfg.ui" line="230"/>
         <source>Add a community</source>
         <translation>Ajouter une communauté</translation>
     </message>
     <message>
-        <location filename="../../ui/account_cfg.ui" line="237"></location>
+        <location filename="../../ui/account_cfg.ui" line="237"/>
         <source>Remove selected community</source>
         <translation>Supprimer la communauté sélectionnée</translation>
     </message>
     <message>
-        <location filename="../../ui/account_cfg.ui" line="261"></location>
+        <location filename="../../ui/account_cfg.ui" line="261"/>
         <source>Previous</source>
         <translation>Précédent</translation>
     </message>
     <message>
-        <location filename="../../ui/account_cfg.ui" line="281"></location>
+        <location filename="../../ui/account_cfg.ui" line="281"/>
         <source>Next</source>
         <translation>Suivant</translation>
     </message>
     <message>
-        <location filename="../../ui/account_cfg.ui" line="143"></location>
+        <location filename="../../ui/account_cfg.ui" line="143"/>
         <source>CryptoID</source>
-        <translation>Identifiant de cryptographie</translation>
+        <translation>CryptoID</translation>
     </message>
     <message>
-        <location filename="../../ui/account_cfg.ui" line="215"></location>
+        <location filename="../../ui/account_cfg.ui" line="215"/>
         <source>Communities</source>
-        <translation>Communautés</translation>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>Application</name>
+    <message>
+        <location filename="../../../src/cutecoin/core/app.py" line="76"/>
+        <source>Warning : Your membership is expiring soon.</source>
+        <translation type="unfinished">Attention : Votre statut de membre expire bientôt.</translation>
+    </message>
+    <message>
+        <location filename="../../../src/cutecoin/core/app.py" line="81"/>
+        <source>Warning : Your could miss certifications soon.</source>
+        <translation type="unfinished">Attention : Vous pourriez manquer de certifications prochainement.</translation>
     </message>
 </context>
 <context>
     <name>CertificationDialog</name>
     <message>
-        <location filename="../../../src/cutecoin/gui/certification.py" line="65"></location>
+        <location filename="../../../src/cutecoin/gui/certification.py" line="79"/>
         <source>Certification</source>
         <translation>Certification</translation>
     </message>
     <message>
-        <location filename="../../ui/certification.ui" line="20"></location>
+        <location filename="../../ui/certification.ui" line="20"/>
         <source>Community</source>
         <translation>Communauté</translation>
     </message>
     <message>
-        <location filename="../../ui/certification.ui" line="32"></location>
+        <location filename="../../ui/certification.ui" line="32"/>
         <source>Certify user</source>
-        <translation>Certifier un utilisateur</translation>
+        <translation>Utilisateur certifié</translation>
     </message>
     <message>
-        <location filename="../../ui/certification.ui" line="40"></location>
+        <location filename="../../ui/certification.ui" line="40"/>
         <source>Contact</source>
         <translation>Contact</translation>
     </message>
     <message>
-        <location filename="../../ui/certification.ui" line="61"></location>
+        <location filename="../../ui/certification.ui" line="61"/>
         <source>User public key</source>
         <translation>Clé publique</translation>
     </message>
     <message>
-        <location filename="../../ui/certification.ui" line="80"></location>
+        <location filename="../../ui/certification.ui" line="80"/>
         <source>Key</source>
         <translation>Clé</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/certification.py" line="65"></location>
+        <location filename="../../../src/cutecoin/gui/certification.py" line="56"/>
         <source>Success certifying {0} from {1}</source>
-        <translation>Succès de certification de {0}, dans la communauté {1}</translation>
+        <translation type="obsolete">Succès lors de la certification de {0}, dans la communauté {1}</translation>
+    </message>
+    <message>
+        <location filename="../../../src/cutecoin/gui/certification.py" line="53"/>
+        <source>Something wrong happened : {0}</source>
+        <translation type="obsolete">Une erreur a été rencontrée : {0}</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/certification.py" line="75"></location>
+        <location filename="../../../src/cutecoin/gui/certification.py" line="58"/>
+        <source>Couldn&apos;t connect to network : {0}</source>
+        <translation type="obsolete">Impossible de se connecter au réseau : {0}</translation>
+    </message>
+    <message>
+        <location filename="../../../src/cutecoin/gui/certification.py" line="68"/>
         <source>Error</source>
-        <translation>Erreur</translation>
+        <translation type="obsolete">Erreur</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/certification.py" line="77"></location>
+        <location filename="../../../src/cutecoin/gui/certification.py" line="77"/>
         <source>Ok</source>
         <translation type="obsolete">Ok</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/certification.py" line="97"></location>
+        <location filename="../../../src/cutecoin/gui/certification.py" line="107"/>
         <source>Not a member</source>
         <translation>Non-membre</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/certification.py" line="75"></location>
-        <source>{0} : {1}</source>
-        <translation>{0} : {1}</translation>
+        <location filename="../../../src/cutecoin/gui/certification.py" line="70"/>
+        <source>Success sending certification</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../../src/cutecoin/gui/certification.py" line="79"/>
+        <source>Could not broadcast certification : {0}</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/certification.py" line="94"></location>
+        <location filename="../../../src/cutecoin/gui/certification.py" line="104"/>
         <source>&amp;Ok</source>
-        <translation>&amp;Ok</translation>
+        <translation type="unfinished"></translation>
     </message>
 </context>
 <context>
     <name>CommunityConfigurationDialog</name>
     <message>
-        <location filename="../../ui/community_cfg.ui" line="17"></location>
+        <location filename="../../ui/community_cfg.ui" line="17"/>
         <source>Add a community</source>
         <translation>Ajouter une communauté</translation>
     </message>
     <message>
-        <location filename="../../ui/community_cfg.ui" line="46"></location>
+        <location filename="../../ui/community_cfg.ui" line="46"/>
         <source>Please enter the address of a node :</source>
-        <translation>Veuillez entrer l'adresse d'un nœud :</translation>
+        <translation>Veuillez entrer l&apos;adresse d&apos;un noeud :</translation>
     </message>
     <message>
-        <location filename="../../ui/community_cfg.ui" line="61"></location>
+        <location filename="../../ui/community_cfg.ui" line="61"/>
         <source>:</source>
         <translation>:</translation>
     </message>
     <message>
-        <location filename="../../ui/community_cfg.ui" line="145"></location>
+        <location filename="../../ui/community_cfg.ui" line="162"/>
         <source>Communities nodes</source>
-        <translation>Nœuds de la communauté</translation>
+        <translation>Noeuds de la communauté</translation>
     </message>
     <message>
-        <location filename="../../ui/community_cfg.ui" line="163"></location>
+        <location filename="../../ui/community_cfg.ui" line="180"/>
         <source>Server</source>
         <translation>Serveur</translation>
     </message>
     <message>
-        <location filename="../../ui/community_cfg.ui" line="183"></location>
+        <location filename="../../ui/community_cfg.ui" line="200"/>
         <source>Add</source>
         <translation>Ajouter</translation>
     </message>
     <message>
-        <location filename="../../ui/community_cfg.ui" line="204"></location>
+        <location filename="../../ui/community_cfg.ui" line="221"/>
         <source>Previous</source>
         <translation>Précédent</translation>
     </message>
     <message>
-        <location filename="../../ui/community_cfg.ui" line="227"></location>
+        <location filename="../../ui/community_cfg.ui" line="244"/>
         <source>Next</source>
         <translation>Suivant</translation>
     </message>
     <message>
-        <location filename="../../ui/community_cfg.ui" line="98"></location>
+        <location filename="../../ui/community_cfg.ui" line="98"/>
         <source>Check node connectivity</source>
-        <translation type="obsolete">Vérifier la connexion des nœuds</translation>
+        <translation type="obsolete">Vérifier la connexion</translation>
     </message>
     <message>
-        <location filename="../../ui/community_cfg.ui" line="98"></location>
+        <location filename="../../ui/community_cfg.ui" line="98"/>
         <source>Register your account</source>
-        <translation>Enregistrer son compte</translation>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../ui/community_cfg.ui" line="115"></location>
+        <location filename="../../ui/community_cfg.ui" line="115"/>
         <source>Connect using your account</source>
-        <translation>Connexion avec son compte</translation>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../ui/community_cfg.ui" line="132"/>
+        <source>Connect as a guest</source>
+        <translation type="unfinished"></translation>
     </message>
 </context>
 <context>
     <name>CommunityTabWidget</name>
     <message>
-        <location filename="../../ui/community_tab.ui" line="17"></location>
-        <source>communityTabWidget</source>
-        <translation type="obsolete">Outil de l’onglet communauté</translation>
-    </message>
-    <message>
-        <location filename="../../ui/community_tab.ui" line="40"></location>
+        <location filename="../../ui/community_tab.ui" line="40"/>
         <source>Identities</source>
         <translation type="obsolete">Identités</translation>
     </message>
     <message>
-        <location filename="../../ui/community_tab.ui" line="53"></location>
+        <location filename="../../ui/community_tab.ui" line="53"/>
         <source>Research a pubkey, an uid...</source>
-        <translation type="obsolete">Rechercher une clé publique, un identifiant utilisateur…</translation>
+        <translation type="obsolete">Rechercher une clé publique, un uid...</translation>
+    </message>
+    <message>
+        <location filename="../../ui/community_tab.ui" line="118"/>
+        <source>Quality : </source>
+        <translation type="obsolete">Qualification : </translation>
+    </message>
+    <message>
+        <location filename="../../../src/cutecoin/gui/community_tab.py" line="351"/>
+        <source>Renew membership</source>
+        <translation type="obsolete">Renouveller le statut de membre</translation>
+    </message>
+    <message>
+        <location filename="../../ui/community_tab.ui" line="146"/>
+        <source>Send leaving demand</source>
+        <translation type="obsolete">Quitter la communauté</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/community_tab.py" line="76"></location>
+        <location filename="../../../src/cutecoin/gui/community_tab.py" line="76"/>
         <source>Membership</source>
-        <translation type="obsolete">Adhésion</translation>
+        <translation type="obsolete">Statut de membre</translation>
+    </message>
+    <message>
+        <location filename="../../../src/cutecoin/gui/community_tab.py" line="172"/>
+        <source>Success sending membership demand</source>
+        <translation type="obsolete">Succès lors de l&apos;envoi d&apos;une demande de membre</translation>
+    </message>
+    <message>
+        <location filename="../../../src/cutecoin/gui/community_tab.py" line="174"/>
+        <source>Join demand error</source>
+        <translation type="obsolete">Erreur lors de l&apos;envoi d&apos;une demande de membre</translation>
+    </message>
+    <message>
+        <location filename="../../../src/cutecoin/gui/community_tab.py" line="177"/>
+        <source>Key not sent to community</source>
+        <translation type="obsolete">La clé n&apos;a pas pu être envoyée à la communauté</translation>
+    </message>
+    <message>
+        <location filename="../../../src/cutecoin/gui/community_tab.py" line="226"/>
+        <source>Network error</source>
+        <translation type="obsolete">Erreur réseau</translation>
+    </message>
+    <message>
+        <location filename="../../../src/cutecoin/gui/community_tab.py" line="226"/>
+        <source>Couldn&apos;t connect to network : {0}</source>
+        <translation type="obsolete">Impossible de se connecter au réseau : {0}</translation>
+    </message>
+    <message>
+        <location filename="../../../src/cutecoin/gui/community_tab.py" line="235"/>
+        <source>Warning</source>
+        <translation type="obsolete">Attention</translation>
+    </message>
+    <message>
+        <location filename="../../../src/cutecoin/gui/community_tab.py" line="202"/>
+        <source>Success sending leaving demand</source>
+        <translation type="obsolete">Succès lors de l&apos;envoi de la demande pour quitter la communauté</translation>
+    </message>
+    <message>
+        <location filename="../../../src/cutecoin/gui/community_tab.py" line="204"/>
+        <source>Leaving demand error</source>
+        <translation type="obsolete">Erreur lors de l&apos;envoi de la demande pour quitter la communauté</translation>
     </message>
     <message>
-        <location filename="../../ui/community_tab.ui" line="60"></location>
+        <location filename="../../../src/cutecoin/gui/community_tab.py" line="263"/>
+        <source>Error</source>
+        <translation type="obsolete">Erreur</translation>
+    </message>
+    <message>
+        <location filename="../../ui/community_tab.ui" line="60"/>
         <source>Search</source>
         <translation type="obsolete">Rechercher</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/community_tab.py" line="59"></location>
+        <location filename="../../ui/community_tab.ui" line="125"/>
+        <source>Publish UID</source>
+        <translation type="obsolete">Publier votre UID</translation>
+    </message>
+    <message>
+        <location filename="../../../src/cutecoin/gui/community_tab.py" line="59"/>
         <source>Members</source>
         <translation type="obsolete">Membres</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/community_tab.py" line="62"></location>
+        <location filename="../../../src/cutecoin/gui/community_tab.py" line="62"/>
         <source>Direct connections</source>
         <translation type="obsolete">Connections directes</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/community_tab.py" line="58"></location>
+        <location filename="../../../src/cutecoin/gui/community_tab.py" line="218"/>
+        <source>Are you sure ?
+Publishing your UID cannot be canceled.</source>
+        <translation type="obsolete">Êtes vous certain ?
+Publier votre UID ne peut être annulé.</translation>
+    </message>
+    <message>
+        <location filename="../../../src/cutecoin/gui/community_tab.py" line="220"/>
+        <source>UID Publishing</source>
+        <translation type="obsolete">Publication de l&apos;UID</translation>
+    </message>
+    <message>
+        <location filename="../../../src/cutecoin/gui/community_tab.py" line="220"/>
+        <source>Success publishing your UID</source>
+        <translation type="obsolete">Succès lors de la publication de votre UID</translation>
+    </message>
+    <message>
+        <location filename="../../../src/cutecoin/gui/community_tab.py" line="177"/>
+        <source>&quot;Your key wasn&apos;t sent in the community.
+You can&apos;t request a membership.</source>
+        <translation type="obsolete">Votre clé publique n&apos;a pas été envoyée à la communauté.
+Vous ne pouvez pas envoyer de requête de membre.</translation>
+    </message>
+    <message>
+        <location filename="../../../src/cutecoin/gui/community_tab.py" line="196"/>
+        <source>Are you sure ?
+Sending a leaving demand  cannot be canceled.
+The process to join back the community later will have to be done again.</source>
+        <translation type="obsolete">Êtes vous certain ?
+Envoyer une demande pour quitter la communauté ne peut être annulée.
+Le processus pour rejoindre la communauté devrait être refait à zéro.</translation>
+    </message>
+    <message>
+        <location filename="../../../src/cutecoin/gui/community_tab.py" line="58"/>
         <source>Web of Trust</source>
-        <translation type="obsolete">Toile de confiance</translation>
+        <translation type="obsolete">Toile de Confiance</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/community_tab.py" line="102"></location>
+        <location filename="../../../src/cutecoin/gui/community_tab.py" line="102"/>
         <source>Informations</source>
         <translation type="obsolete">Informations</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/community_tab.py" line="105"></location>
+        <location filename="../../../src/cutecoin/gui/community_tab.py" line="105"/>
         <source>Add as contact</source>
         <translation type="obsolete">Ajouter comme contact</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/community_tab.py" line="109"></location>
+        <location filename="../../../src/cutecoin/gui/community_tab.py" line="109"/>
         <source>Send money</source>
-        <translation type="obsolete">Envoyer de la monnaie</translation>
+        <translation type="obsolete">Envoyer de l&apos;argent</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/community_tab.py" line="113"></location>
+        <location filename="../../../src/cutecoin/gui/community_tab.py" line="113"/>
         <source>Certify identity</source>
         <translation type="obsolete">Certifier cette identité</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/community_tab.py" line="117"></location>
+        <location filename="../../../src/cutecoin/gui/community_tab.py" line="117"/>
         <source>View in Web of Trust</source>
-        <translation type="obsolete">Voir dans la toile de confiance</translation>
+        <translation type="obsolete">Voir dans la Toile de Confiance</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/community_tab.py" line="76"></location>
+        <location filename="../../../src/cutecoin/gui/community_tab.py" line="358"/>
+        <source>Send membership demand</source>
+        <translation type="obsolete">Envoyer une demande de membre</translation>
+    </message>
+    <message>
+        <location filename="../../ui/community_tab.ui" line="132"/>
+        <source>Revoke UID</source>
+        <translation type="obsolete">Révoquer votre UID</translation>
+    </message>
+    <message>
+        <location filename="../../../src/cutecoin/gui/community_tab.py" line="209"/>
+        <source>Are you sure ?
+Publishing your UID can be canceled by Revoke UID.</source>
+        <translation type="obsolete">Etes-vous sûr(e) ? Publier votre UID peut être annulé par le bouton Révoquer votre UID.</translation>
+    </message>
+    <message>
+        <location filename="../../../src/cutecoin/gui/community_tab.py" line="223"/>
+        <source>Publish UID error</source>
+        <translation type="obsolete">Publier votre UID</translation>
+    </message>
+    <message>
+        <location filename="../../../src/cutecoin/gui/community_tab.py" line="235"/>
+        <source>Are you sure ?
+Revoking your UID can only success if it is not already validated by the network.</source>
+        <translation type="obsolete">Etes-vous sûr(e) ? Révoquer votre UID ne peut réussir que s&apos;il n&apos;a pas été déjà validé par le réseau.</translation>
+    </message>
+    <message>
+        <location filename="../../../src/cutecoin/gui/community_tab.py" line="253"/>
+        <source>UID Revoking</source>
+        <translation type="obsolete">Révocation de votre UID</translation>
+    </message>
+    <message>
+        <location filename="../../../src/cutecoin/gui/community_tab.py" line="253"/>
+        <source>Success revoking your UID</source>
+        <translation type="obsolete">Révocation de votre UID réussie</translation>
+    </message>
+    <message>
+        <location filename="../../../src/cutecoin/gui/community_tab.py" line="256"/>
+        <source>Revoke UID error</source>
+        <translation type="obsolete">Erreur lors de la révocation de votre UID</translation>
+    </message>
+    <message>
+        <location filename="../../../src/cutecoin/gui/community_tab.py" line="76"/>
         <source>Success sending Membership demand</source>
-        <translation type="obsolete">Demande de membre envoyée</translation>
+        <translation type="obsolete">Envoi demande à être membre réussie</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/community_tab.py" line="82"></location>
+        <location filename="../../../src/cutecoin/gui/community_tab.py" line="82"/>
         <source>Revoke</source>
-        <translation type="obsolete">Révoquer</translation>
+        <translation type="obsolete">Révocation</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/community_tab.py" line="82"></location>
+        <location filename="../../../src/cutecoin/gui/community_tab.py" line="82"/>
         <source>Success sending Revoke demand</source>
-        <translation type="obsolete">Demande de révocation envoyée</translation>
+        <translation type="obsolete">Envoi demande de révocation réussie</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/community_tab.py" line="88"></location>
+        <location filename="../../../src/cutecoin/gui/community_tab.py" line="88"/>
         <source>Self Certification</source>
-        <translation type="obsolete">Certification de soi-même</translation>
+        <translation type="obsolete">Auto-certification</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/community_tab.py" line="88"></location>
+        <location filename="../../../src/cutecoin/gui/community_tab.py" line="88"/>
         <source>Success sending Self Certification document</source>
-        <translation type="obsolete">Demande de certification de soi-même envoyée</translation>
+        <translation type="obsolete">Envoi auto-certification réussie</translation>
     </message>
 </context>
 <context>
     <name>CommunityTile</name>
     <message>
-        <location filename="../../../src/cutecoin/gui/community_tile.py" line="46"></location>
+        <location filename="../../../src/cutecoin/gui/community_tile.py" line="77"/>
         <source>Member</source>
         <translation type="unfinished">Membre</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/community_tile.py" line="47"></location>
+        <location filename="../../../src/cutecoin/gui/community_tile.py" line="78"/>
         <source>Non-Member</source>
-        <translation>Non membre</translation>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/community_tile.py" line="58"></location>
+        <location filename="../../../src/cutecoin/gui/community_tile.py" line="89"/>
         <source>members</source>
-        <translation>membres</translation>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/community_tile.py" line="58"></location>
+        <location filename="../../../src/cutecoin/gui/community_tile.py" line="89"/>
         <source>Monetary mass</source>
-        <translation>Masse monétaire</translation>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/community_tile.py" line="58"></location>
+        <location filename="../../../src/cutecoin/gui/community_tile.py" line="89"/>
         <source>Status</source>
-        <translation>État</translation>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/community_tile.py" line="58"></location>
+        <location filename="../../../src/cutecoin/gui/community_tile.py" line="89"/>
         <source>Balance</source>
         <translation type="unfinished">Solde</translation>
     </message>
+    <message>
+        <location filename="../../../src/cutecoin/gui/community_tile.py" line="108"/>
+        <source>Not connected</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../../src/cutecoin/gui/community_tile.py" line="121"/>
+        <source>Community not initialized</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>CommunityWidget</name>
     <message>
-        <location filename="../../ui/community_view.ui" line="14"></location>
+        <location filename="../../ui/community_view.ui" line="14"/>
         <source>Form</source>
-        <translation type="unfinished">Formulaire</translation>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../ui/community_view.ui" line="59"></location>
+        <location filename="../../ui/community_view.ui" line="59"/>
         <source>Send money</source>
-        <translation type="unfinished">Envoyer de la monnaie</translation>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../ui/community_view.ui" line="76"></location>
+        <location filename="../../ui/community_view.ui" line="76"/>
         <source>Certification</source>
         <translation type="unfinished">Certification</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/community_view.py" line="227"></location>
+        <location filename="../../../src/cutecoin/gui/community_view.py" line="282"/>
         <source>Renew membership</source>
-        <translation type="unfinished">Renouveler votre adhésion</translation>
+        <translation type="unfinished">Renouveller le statut de membre</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/community_view.py" line="44"></location>
+        <location filename="../../../src/cutecoin/gui/community_view.py" line="46"/>
         <source>Warning : Your membership is expiring soon.</source>
-        <translation type="unfinished">Attention : votre statut de membre expire bientôt.</translation>
+        <translation type="obsolete">Attention : Votre statut de membre expire bientôt.</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/community_view.py" line="46"></location>
+        <location filename="../../../src/cutecoin/gui/community_view.py" line="48"/>
         <source>Warning : Your could miss certifications soon.</source>
-        <translation type="unfinished">Attention : vous pourriez prochainement manquer de certification.</translation>
+        <translation type="obsolete">Attention : Vous pourriez manquer de certifications prochainement.</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/community_view.py" line="63"></location>
+        <location filename="../../../src/cutecoin/gui/community_view.py" line="65"/>
         <source>Transactions</source>
         <translation type="unfinished">Transferts</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/community_view.py" line="67"></location>
+        <location filename="../../../src/cutecoin/gui/community_view.py" line="69"/>
         <source>Web of Trust</source>
-        <translation type="unfinished">Toile de confiance</translation>
+        <translation type="unfinished">Toile de Confiance</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/community_view.py" line="71"></location>
+        <location filename="../../../src/cutecoin/gui/community_view.py" line="73"/>
         <source>Search Identities</source>
-        <translation>Recherche de membres</translation>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/community_view.py" line="75"></location>
+        <location filename="../../../src/cutecoin/gui/community_view.py" line="77"/>
         <source>Network</source>
         <translation type="unfinished">Réseau</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/community_view.py" line="154"></location>
+        <location filename="../../../src/cutecoin/gui/community_view.py" line="81"/>
+        <source>Show informations</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../../src/cutecoin/gui/community_view.py" line="85"/>
+        <source>Informations</source>
+        <translation type="unfinished">Informations</translation>
+    </message>
+    <message>
+        <location filename="../../../src/cutecoin/gui/community_view.py" line="177"/>
         <source>Membership expiration</source>
         <translation type="unfinished">Expiration du statut de membre</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/community_view.py" line="154"></location>
+        <location filename="../../../src/cutecoin/gui/community_view.py" line="177"/>
         <source>&lt;b&gt;Warning : Membership expiration in {0} days&lt;/b&gt;</source>
-        <translation type="unfinished">&lt;b&gt;Attention : expiration du statut de membre dans {0} jours&lt;/b&gt;</translation>
+        <translation type="unfinished">&lt;b&gt;Attention : Expiration du statut de membre dans {0} jours&lt;/b&gt;</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/community_view.py" line="162"></location>
+        <location filename="../../../src/cutecoin/gui/community_view.py" line="188"/>
         <source>Certifications number</source>
         <translation type="unfinished">Nombre de certifications</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/community_view.py" line="162"></location>
+        <location filename="../../../src/cutecoin/gui/community_view.py" line="188"/>
         <source>&lt;b&gt;Warning : You are certified by only {0} persons, need {1}&lt;/b&gt;</source>
-        <translation type="unfinished">&lt;b&gt;Attention : vous n’êtes certifiés que par {0} personnes. Vous avez besoin de {1} certifications pour être de nouveau membre&lt;/b&gt;</translation>
+        <translation type="unfinished">&lt;b&gt;Attention : Vous êtes certifiés par seulement {0} personnes, besoin de {1}&lt;/b&gt;</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/community_view.py" line="189"></location>
+        <location filename="../../../src/cutecoin/gui/community_view.py" line="221"/>
         <source> Block {0}</source>
-        <translation> Bloc {0}</translation>
+        <translation type="unfinished">Bloc {0}</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/community_view.py" line="211"></location>
+        <location filename="../../../src/cutecoin/gui/community_view.py" line="263"/>
         <source> - Median fork window : {0}</source>
-        <translation> - Médianne des fenêtres de fork : {0}</translation>
+        <translation type="unfinished"> - Médianne des fenètres de fork  : {0}</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/community_view.py" line="232"></location>
+        <location filename="../../../src/cutecoin/gui/community_view.py" line="288"/>
         <source>Send membership demand</source>
-        <translation>Envoyer une demande d'adhésion</translation>
+        <translation type="unfinished">Envoyer une demande de membre</translation>
+    </message>
+    <message>
+        <location filename="../../../src/cutecoin/gui/community_view.py" line="388"/>
+        <source>Membership</source>
+        <translation type="unfinished">Statut de membre</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/community_view.py" line="298"></location>
+        <location filename="../../../src/cutecoin/gui/community_view.py" line="322"/>
+        <source>Success sending Membership demand</source>
+        <translation type="unfinished">Envoi demande à être membre réussie</translation>
+    </message>
+    <message>
+        <location filename="../../../src/cutecoin/gui/community_view.py" line="334"/>
         <source>Warning</source>
-        <translation>Attention</translation>
+        <translation type="unfinished">Attention</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/community_view.py" line="259"></location>
+        <location filename="../../../src/cutecoin/gui/community_view.py" line="334"/>
         <source>Are you sure ?
 Sending a leaving demand  cannot be canceled.
 The process to join back the community later will have to be done again.</source>
-        <translation>Êtes vous certain ?
+        <translation type="unfinished">Êtes vous certain ?
 Envoyer une demande pour quitter la communauté ne peut être annulée.
-Le processus pour rejoindre la communauté devra être refait de zéro.</translation>
-    </message>
-    <message>
-        <location filename="../../../src/cutecoin/gui/community_view.py" line="272"></location>
-        <source>Are you sure ?
-Publishing your UID can be canceled by Revoke UID.</source>
-        <translation>Êtes-vous sûr(e) ?
-Publier votre identifiant utilisateur peut être annulé par le bouton « Révoquer votre identifiant utilisateur ».</translation>
-    </message>
-    <message>
-        <location filename="../../../src/cutecoin/gui/community_view.py" line="283"></location>
-        <source>UID Publishing</source>
-        <translation type="unfinished">Publication de l'identifiant utilisateur</translation>
-    </message>
-    <message>
-        <location filename="../../../src/cutecoin/gui/community_view.py" line="283"></location>
-        <source>Success publishing your UID</source>
-        <translation type="unfinished">Succès lors de la publication de votre identifiant utilisateur</translation>
-    </message>
-    <message>
-        <location filename="../../../src/cutecoin/gui/community_view.py" line="286"></location>
-        <source>Publish UID error</source>
-        <translation type="unfinished">Erreur de publication de votre identifiant utilisateur</translation>
-    </message>
-    <message>
-        <location filename="../../../src/cutecoin/gui/community_view.py" line="289"></location>
-        <source>Network error</source>
-        <translation type="unfinished">Erreur réseau</translation>
-    </message>
-    <message>
-        <location filename="../../../src/cutecoin/gui/community_view.py" line="289"></location>
-        <source>Couldn't connect to network : {0}</source>
-        <translation type="unfinished">Impossible de se connecter au réseau : {0}</translation>
-    </message>
-    <message>
-        <location filename="../../../src/cutecoin/gui/community_view.py" line="293"></location>
-        <source>Error</source>
-        <translation type="unfinished">Erreur</translation>
+Le processus pour rejoindre la communauté devrait être refait à zéro.</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/community_view.py" line="298"></location>
-        <source>Are you sure ?
-Revoking your UID can only success if it is not already validated by the network.</source>
-        <translation type="unfinished">Êtes-vous sûr(e) ?
-Révoquer votre identifiant utilisateur peut fonctionner que s'il n'a pas déjà été validé par le réseau.</translation>
+        <location filename="../../../src/cutecoin/gui/community_view.py" line="354"/>
+        <source>Revoke</source>
+        <translation type="unfinished">Révocation</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/community_view.py" line="313"></location>
-        <source>Membership</source>
-        <translation type="unfinished">Adhésion</translation>
+        <location filename="../../../src/cutecoin/gui/community_view.py" line="348"/>
+        <source>Success sending Revoke demand</source>
+        <translation type="unfinished">Envoi demande de révocation réussie</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/community_view.py" line="313"></location>
-        <source>Success sending Membership demand</source>
-        <translation type="unfinished">Demande de membre envoyée</translation>
+        <location filename="../../../src/cutecoin/gui/community_view.py" line="98"/>
+        <source>Publish UID</source>
+        <translation type="unfinished">Publier votre UID</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/community_view.py" line="319"></location>
-        <source>Revoke</source>
-        <translation type="unfinished">Révoquer</translation>
+        <location filename="../../../src/cutecoin/gui/community_view.py" line="392"/>
+        <source>Revoke UID</source>
+        <translation type="unfinished">Révoquer votre UID</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/community_view.py" line="319"></location>
-        <source>Success sending Revoke demand</source>
-        <translation type="unfinished">Demande de révocation envoyée</translation>
+        <location filename="../../../src/cutecoin/gui/community_view.py" line="394"/>
+        <source>UID</source>
+        <translation type="unfinished">UID</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/community_view.py" line="325"></location>
-        <source>Self Certification</source>
-        <translation type="unfinished">Certification de soi-même</translation>
+        <location filename="../../../src/cutecoin/gui/community_view.py" line="368"/>
+        <source>Success publishing your UID</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/community_view.py" line="325"></location>
-        <source>Success sending Self Certification document</source>
-        <translation type="unfinished">Demande de certification de soi-même envoyée</translation>
+        <location filename="../../../src/cutecoin/gui/community_view.py" line="388"/>
+        <source>Your UID was revoked successfully.</source>
+        <translation type="unfinished"></translation>
     </message>
 </context>
 <context>
     <name>ConfigureContactDialog</name>
     <message>
-        <location filename="../../ui/contact.ui" line="14"></location>
+        <location filename="../../ui/contact.ui" line="14"/>
         <source>Add a contact</source>
         <translation>Ajouter un contact</translation>
     </message>
     <message>
-        <location filename="../../ui/contact.ui" line="36"></location>
+        <location filename="../../ui/contact.ui" line="36"/>
         <source>Pubkey</source>
         <translation>Clé publique</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/contact.py" line="52"></location>
+        <location filename="../../../src/cutecoin/gui/contact.py" line="52"/>
         <source>Contact already exists</source>
-        <translation>Le contact existe déjà</translation>
+        <translation>Le contact existe déja</translation>
     </message>
     <message>
-        <location filename="../../ui/contact.ui" line="22"></location>
+        <location filename="../../ui/contact.ui" line="22"/>
         <source>Name</source>
         <translation>Nom</translation>
     </message>
@@ -584,22 +785,22 @@ Révoquer votre identifiant utilisateur peut fonctionner que s'il n'a pas déjà
 <context>
     <name>CreateWalletDialog</name>
     <message>
-        <location filename="../../ui/create_wallet.ui" line="14"></location>
+        <location filename="../../ui/create_wallet.ui" line="14"/>
         <source>Create a new wallet</source>
-        <translation>Créer un porte-monnaie</translation>
+        <translation>Créer un portefeuille</translation>
     </message>
     <message>
-        <location filename="../../ui/create_wallet.ui" line="45"></location>
+        <location filename="../../ui/create_wallet.ui" line="45"/>
         <source>Wallet name :</source>
-        <translation>Nom du porte-monnaie :</translation>
+        <translation>Nom du portefeuille :</translation>
     </message>
     <message>
-        <location filename="../../ui/create_wallet.ui" line="83"></location>
+        <location filename="../../ui/create_wallet.ui" line="83"/>
         <source>Previous</source>
         <translation>Précédent</translation>
     </message>
     <message>
-        <location filename="../../ui/create_wallet.ui" line="103"></location>
+        <location filename="../../ui/create_wallet.ui" line="103"/>
         <source>Next</source>
         <translation>Suivant</translation>
     </message>
@@ -607,156 +808,171 @@ Révoquer votre identifiant utilisateur peut fonctionner que s'il n'a pas déjà
 <context>
     <name>CurrencyTabWidget</name>
     <message>
-        <location filename="../../ui/currency_tab.ui" line="14"></location>
+        <location filename="../../ui/currency_tab.ui" line="14"/>
         <source>Form</source>
-        <translation>Formulaire</translation>
+        <translation></translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/currency_tab.py" line="73"></location>
+        <location filename="../../../src/cutecoin/gui/currency_tab.py" line="73"/>
         <source>Wallets</source>
-        <translation type="obsolete">Porte-monnaie</translation>
+        <translation type="obsolete">Portefeuilles</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/currency_tab.py" line="77"></location>
+        <location filename="../../../src/cutecoin/gui/currency_tab.py" line="77"/>
         <source>Transactions</source>
         <translation type="obsolete">Transferts</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/currency_tab.py" line="81"></location>
+        <location filename="../../../src/cutecoin/gui/currency_tab.py" line="81"/>
         <source>Community</source>
         <translation type="obsolete">Communauté</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/currency_tab.py" line="89"></location>
+        <location filename="../../../src/cutecoin/gui/currency_tab.py" line="89"/>
         <source>Informations</source>
         <translation type="obsolete">Informations</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/currency_tab.py" line="85"></location>
+        <location filename="../../../src/cutecoin/gui/currency_tab.py" line="85"/>
         <source>Network</source>
         <translation type="obsolete">Réseau</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/currency_tab.py" line="163"></location>
+        <location filename="../../../src/cutecoin/gui/currency_tab.py" line="163"/>
         <source> Block {0}</source>
-        <translation type="obsolete"> Bloc {0}</translation>
+        <translation type="obsolete">Bloc {0}</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/currency_tab.py" line="125"></location>
+        <location filename="../../../src/cutecoin/gui/currency_tab.py" line="75"/>
+        <source>Membership expiration&lt;b&gt;Warning : Membership expiration in {0} days&lt;/b&gt;</source>
+        <translation type="obsolete">Expiration du statut de membre</translation>
+    </message>
+    <message>
+        <location filename="../../../src/cutecoin/gui/currency_tab.py" line="206"/>
+        <source>Received {0} {1} from {2} transfers</source>
+        <translation type="obsolete">Reception de {0} {1} dans {2} transfers</translation>
+    </message>
+    <message>
+        <location filename="../../../src/cutecoin/gui/currency_tab.py" line="210"/>
+        <source>New transactions received</source>
+        <translation type="obsolete">Nouveaux transferts reçus</translation>
+    </message>
+    <message>
+        <location filename="../../../src/cutecoin/gui/currency_tab.py" line="125"/>
         <source>Membership expiration</source>
         <translation type="obsolete">Expiration du statut de membre</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/currency_tab.py" line="125"></location>
+        <location filename="../../../src/cutecoin/gui/currency_tab.py" line="125"/>
         <source>&lt;b&gt;Warning : Membership expiration in {0} days&lt;/b&gt;</source>
-        <translation type="obsolete">&lt;b&gt;Attention : expiration du statut de membre dans {0} jours&lt;/b&gt;</translation>
+        <translation type="obsolete">&lt;b&gt;Attention : Expiration du statut de membre dans {0} jours&lt;/b&gt;</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/currency_tab.py" line="44"></location>
+        <location filename="../../../src/cutecoin/gui/currency_tab.py" line="44"/>
         <source>Warning : Your membership is expiring soon.</source>
-        <translation type="obsolete">Attention : votre statut de membre expire bientôt.</translation>
+        <translation type="obsolete">Attention : Votre statut de membre expire bientôt.</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/currency_tab.py" line="46"></location>
+        <location filename="../../../src/cutecoin/gui/currency_tab.py" line="46"/>
         <source>Warning : Your could miss certifications soon.</source>
-        <translation type="obsolete">Attention : vous pourriez prochainement manquer de certification.</translation>
+        <translation type="obsolete">Attention : Vous pourriez manquer de certifications prochainement.</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/currency_tab.py" line="132"></location>
+        <location filename="../../../src/cutecoin/gui/currency_tab.py" line="132"/>
         <source>Certifications number</source>
         <translation type="obsolete">Nombre de certifications</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/currency_tab.py" line="132"></location>
+        <location filename="../../../src/cutecoin/gui/currency_tab.py" line="132"/>
         <source>&lt;b&gt;Warning : You are certified by only {0} persons, need {1}&lt;/b&gt;</source>
-        <translation type="obsolete">&lt;b&gt;Attention : vous n’êtes certifiés que par {0} personnes. Vous avez besoin de {1} certifications pour être de nouveau membre&lt;/b&gt;</translation>
+        <translation type="obsolete">&lt;b&gt;Attention : Vous êtes certifiés par seulement {0} personnes, besoin de {1}&lt;/b&gt;</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/currency_tab.py" line="185"></location>
+        <location filename="../../../src/cutecoin/gui/currency_tab.py" line="185"/>
         <source> - Median fork window : {0}</source>
-        <translation type="obsolete"> - Médianne des fenêtres de fork : {0}</translation>
+        <translation type="obsolete"> - Médianne des fenètres de fork  : {0}</translation>
     </message>
 </context>
 <context>
     <name>DialogMember</name>
     <message>
-        <location filename="../../ui/member.ui" line="14"></location>
+        <location filename="../../ui/member.ui" line="14"/>
         <source>Informations</source>
         <translation>Informations</translation>
     </message>
     <message>
-        <location filename="../../ui/member.ui" line="34"></location>
+        <location filename="../../ui/member.ui" line="34"/>
         <source>Member</source>
         <translation>Membre</translation>
     </message>
     <message>
-        <location filename="../../ui/member.ui" line="65"></location>
+        <location filename="../../ui/member.ui" line="65"/>
         <source>uid</source>
-        <translation>Identifiant utilisateur</translation>
+        <translation></translation>
     </message>
     <message>
-        <location filename="../../ui/member.ui" line="72"></location>
+        <location filename="../../ui/member.ui" line="72"/>
         <source>properties</source>
-        <translation>propriétés</translation>
+        <translation></translation>
     </message>
 </context>
 <context>
     <name>HistoryTableModel</name>
     <message>
-        <location filename="../../../src/cutecoin/models/txhistory.py" line="199"></location>
+        <location filename="../../../src/cutecoin/models/txhistory.py" line="206"/>
         <source>Date</source>
         <translation>Date</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/models/txhistory.py" line="199"></location>
+        <location filename="../../../src/cutecoin/models/txhistory.py" line="206"/>
         <source>UID/Public key</source>
-        <translation>Identifiant utilisateur/clé publique</translation>
+        <translation>UID/Clé publique</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/models/txhistory.py" line="199"></location>
+        <location filename="../../../src/cutecoin/models/txhistory.py" line="206"/>
         <source>Payment</source>
         <translation>Débit</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/models/txhistory.py" line="199"></location>
+        <location filename="../../../src/cutecoin/models/txhistory.py" line="206"/>
         <source>Deposit</source>
         <translation>Crédit</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/models/txhistory.py" line="199"></location>
+        <location filename="../../../src/cutecoin/models/txhistory.py" line="206"/>
         <source>Comment</source>
         <translation>Commentaire</translation>
     </message>
+    <message>
+        <location filename="../../../src/cutecoin/models/txhistory.py" line="166"/>
+        <source>State</source>
+        <translation type="obsolete">Statut</translation>
+    </message>
 </context>
 <context>
     <name>HomeScreenWidget</name>
     <message>
-        <location filename="../../ui/homescreen.ui" line="20"></location>
-        <source>Form</source>
-        <translation type="obsolete">Formulaire</translation>
-    </message>
-    <message>
-        <location filename="../../ui/homescreen.ui" line="67"></location>
+        <location filename="../../ui/homescreen.ui" line="67"/>
         <source>Create a new account</source>
         <translation type="obsolete">Créer un nouveau compte</translation>
     </message>
     <message>
-        <location filename="../../ui/homescreen.ui" line="100"></location>
+        <location filename="../../ui/homescreen.ui" line="100"/>
         <source>Import an existing account</source>
         <translation type="obsolete">Importer un compte</translation>
     </message>
     <message>
-        <location filename="../../ui/homescreen.ui" line="127"></location>
+        <location filename="../../ui/homescreen.ui" line="127"/>
         <source>Get to know more about ucoin</source>
-        <translation type="obsolete">En savoir plus sur uCoin</translation>
+        <translation type="obsolete">En savoir plus sur ucoin</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/homescreen.py" line="35"></location>
+        <location filename="../../../src/cutecoin/gui/homescreen.py" line="35"/>
         <source>Please get the latest release {version}</source>
         <translation type="obsolete">Veuillez télécharger la dernière version {version}</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/homescreen.py" line="39"></location>
+        <location filename="../../../src/cutecoin/gui/homescreen.py" line="39"/>
         <source>
             &lt;h1&gt;Welcome to Cutecoin {version}&lt;/h1&gt;
             &lt;h2&gt;{version_info}&lt;/h2&gt;
@@ -769,45 +985,45 @@ Révoquer votre identifiant utilisateur peut fonctionner que s'il n'a pas déjà
             </translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/homescreen.py" line="72"></location>
+        <location filename="../../../src/cutecoin/gui/homescreen.py" line="72"/>
         <source>Connected as {0}</source>
-        <translation>Connecté en tant que {0}</translation>
+        <translation type="unfinished"></translation>
     </message>
 </context>
 <context>
     <name>HomescreenWidget</name>
     <message>
-        <location filename="../../ui/homescreen.ui" line="20"></location>
+        <location filename="../../ui/homescreen.ui" line="20"/>
         <source>Form</source>
-        <translation type="unfinished">Formulaire</translation>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../ui/homescreen.ui" line="47"></location>
+        <location filename="../../ui/homescreen.ui" line="47"/>
         <source>Connected as</source>
-        <translation>Connecté en tant</translation>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../ui/homescreen.ui" line="54"></location>
+        <location filename="../../ui/homescreen.ui" line="54"/>
         <source>Add a community</source>
         <translation type="unfinished">Ajouter une communauté</translation>
     </message>
     <message>
-        <location filename="../../ui/homescreen.ui" line="71"></location>
+        <location filename="../../ui/homescreen.ui" line="71"/>
         <source>Disconnect</source>
-        <translation>Déconnecté</translation>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../ui/homescreen.ui" line="119"></location>
-        <source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;&lt;span style=" font-size:12pt; font-weight:600;"&gt;Not Connected&lt;/span&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
-        <translation>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;&lt;span style=" font-size:12pt; font-weight:600;"&gt;Non connecté&lt;/span&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</translation>
+        <location filename="../../ui/homescreen.ui" line="119"/>
+        <source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;&lt;span style=&quot; font-size:12pt; font-weight:600;&quot;&gt;Not Connected&lt;/span&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../ui/homescreen.ui" line="126"></location>
+        <location filename="../../ui/homescreen.ui" line="126"/>
         <source>Connect</source>
-        <translation>Connexion</translation>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../ui/homescreen.ui" line="149"></location>
+        <location filename="../../ui/homescreen.ui" line="149"/>
         <source>New account</source>
         <translation type="unfinished">Nouveau compte</translation>
     </message>
@@ -815,17 +1031,17 @@ Révoquer votre identifiant utilisateur peut fonctionner que s'il n'a pas déjà
 <context>
     <name>IdentitiesTab</name>
     <message>
-        <location filename="../../ui/identities_tab.ui" line="14"></location>
+        <location filename="../../ui/identities_tab.ui" line="14"/>
         <source>Form</source>
-        <translation type="unfinished">Formulaire</translation>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../ui/identities_tab.ui" line="25"></location>
+        <location filename="../../ui/identities_tab.ui" line="25"/>
         <source>Research a pubkey, an uid...</source>
-        <translation type="unfinished">Rechercher une clé publique, un identifiant utilisateur…</translation>
+        <translation type="unfinished">Rechercher une clé publique, un uid...</translation>
     </message>
     <message>
-        <location filename="../../ui/identities_tab.ui" line="32"></location>
+        <location filename="../../ui/identities_tab.ui" line="32"/>
         <source>Search</source>
         <translation type="unfinished">Rechercher</translation>
     </message>
@@ -833,65 +1049,70 @@ Révoquer votre identifiant utilisateur peut fonctionner que s'il n'a pas déjà
 <context>
     <name>IdentitiesTabWidget</name>
     <message>
-        <location filename="../../../src/cutecoin/gui/identities_tab.py" line="56"></location>
+        <location filename="../../../src/cutecoin/gui/identities_tab.py" line="63"/>
         <source>Members</source>
         <translation type="unfinished">Membres</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/identities_tab.py" line="59"></location>
+        <location filename="../../../src/cutecoin/gui/identities_tab.py" line="66"/>
         <source>Direct connections</source>
-        <translation>Connections direct</translation>
+        <translation type="unfinished">Connections directes</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/identities_tab.py" line="98"></location>
+        <location filename="../../../src/cutecoin/gui/identities_tab.py" line="109"/>
         <source>Informations</source>
         <translation type="unfinished">Informations</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/identities_tab.py" line="101"></location>
+        <location filename="../../../src/cutecoin/gui/identities_tab.py" line="112"/>
         <source>Add as contact</source>
         <translation type="unfinished">Ajouter comme contact</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/identities_tab.py" line="105"></location>
+        <location filename="../../../src/cutecoin/gui/identities_tab.py" line="116"/>
         <source>Send money</source>
-        <translation type="unfinished">Envoyer de la monnaie</translation>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/identities_tab.py" line="109"></location>
+        <location filename="../../../src/cutecoin/gui/identities_tab.py" line="120"/>
         <source>Certify identity</source>
         <translation type="unfinished">Certifier cette identité</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/identities_tab.py" line="113"></location>
+        <location filename="../../../src/cutecoin/gui/identities_tab.py" line="124"/>
         <source>View in Web of Trust</source>
-        <translation>Vue dans la toile de confiance</translation>
+        <translation type="unfinished">Voir dans la Toile de Confiance</translation>
+    </message>
+    <message>
+        <location filename="../../../src/cutecoin/gui/identities_tab.py" line="128"/>
+        <source>Copy pubkey</source>
+        <translation type="unfinished"></translation>
     </message>
 </context>
 <context>
     <name>IdentitiesTableModel</name>
     <message>
-        <location filename="../../../src/cutecoin/models/identities.py" line="89"></location>
+        <location filename="../../../src/cutecoin/models/identities.py" line="90"/>
         <source>UID</source>
-        <translation>Identifiant utilisateur</translation>
+        <translation>UID</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/models/identities.py" line="90"></location>
+        <location filename="../../../src/cutecoin/models/identities.py" line="91"/>
         <source>Pubkey</source>
         <translation>Clé publique</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/models/identities.py" line="91"></location>
+        <location filename="../../../src/cutecoin/models/identities.py" line="92"/>
         <source>Renewed</source>
-        <translation>Renouvellé</translation>
+        <translation>Dernier renouvellement</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/models/identities.py" line="92"></location>
+        <location filename="../../../src/cutecoin/models/identities.py" line="93"/>
         <source>Expiration</source>
         <translation>Expiration</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/models/identities.py" line="93"></location>
+        <location filename="../../../src/cutecoin/models/identities.py" line="94"/>
         <source>Validation</source>
         <translation>Validation</translation>
     </message>
@@ -899,57 +1120,57 @@ Révoquer votre identifiant utilisateur peut fonctionner que s'il n'a pas déjà
 <context>
     <name>ImportAccountDialog</name>
     <message>
-        <location filename="../../ui/import_account.ui" line="25"></location>
+        <location filename="../../ui/import_account.ui" line="25"/>
         <source>Import a file</source>
         <translation>Importer un fichier</translation>
     </message>
     <message>
-        <location filename="../../ui/import_account.ui" line="36"></location>
+        <location filename="../../ui/import_account.ui" line="36"/>
         <source>Name of the account :</source>
         <translation>Nom du compte :</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/import_account.py" line="34"></location>
+        <location filename="../../../src/cutecoin/gui/import_account.py" line="34"/>
         <source>Error</source>
         <translation>Erreur</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/import_account.py" line="38"></location>
+        <location filename="../../../src/cutecoin/gui/import_account.py" line="38"/>
         <source>Account import</source>
         <translation>Import de compte</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/import_account.py" line="38"></location>
+        <location filename="../../../src/cutecoin/gui/import_account.py" line="38"/>
         <source>Account imported succefully !</source>
         <translation>Compte importé avec succès !</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/import_account.py" line="43"></location>
+        <location filename="../../../src/cutecoin/gui/import_account.py" line="43"/>
         <source>Import an account file</source>
         <translation>Importer un fichier de compte</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/import_account.py" line="43"></location>
+        <location filename="../../../src/cutecoin/gui/import_account.py" line="43"/>
         <source>All account files (*.acc)</source>
         <translation>Tout fichier de compte (*.acc)</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/import_account.py" line="58"></location>
+        <location filename="../../../src/cutecoin/gui/import_account.py" line="58"/>
         <source>Please enter a name</source>
         <translation>Veuillez entrer un nom</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/import_account.py" line="63"></location>
+        <location filename="../../../src/cutecoin/gui/import_account.py" line="63"/>
         <source>Name already exists</source>
-        <translation>Ce nom existe déjà</translation>
+        <translation>Ce nom existe déja</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/import_account.py" line="67"></location>
+        <location filename="../../../src/cutecoin/gui/import_account.py" line="67"/>
         <source>File is not an account format</source>
-        <translation>Le fichier n'est pas au format de compte</translation>
+        <translation>Le fichier n&apos;est pas au format de compte</translation>
     </message>
     <message>
-        <location filename="../../ui/import_account.ui" line="14"></location>
+        <location filename="../../ui/import_account.ui" line="14"/>
         <source>Import an account</source>
         <translation>Importer un compte</translation>
     </message>
@@ -957,318 +1178,391 @@ Révoquer votre identifiant utilisateur peut fonctionner que s'il n'a pas déjà
 <context>
     <name>InformationsTabWidget</name>
     <message>
-        <location filename="../../ui/informations_tab.ui" line="14"></location>
+        <location filename="../../ui/informations_tab.ui" line="14"/>
         <source>Form</source>
-        <translation>Formulaire</translation>
+        <translation></translation>
     </message>
     <message>
-        <location filename="../../ui/informations_tab.ui" line="52"></location>
+        <location filename="../../ui/informations_tab.ui" line="52"/>
         <source>General</source>
         <translation>Général</translation>
     </message>
     <message>
-        <location filename="../../ui/informations_tab.ui" line="61"></location>
-        <source>label_general</source>
-        <translation></translation>
-    </message>
-    <message>
-        <location filename="../../ui/informations_tab.ui" line="77"></location>
+        <location filename="../../ui/informations_tab.ui" line="77"/>
         <source>Rules</source>
         <translation>Règles</translation>
     </message>
     <message>
-        <location filename="../../ui/informations_tab.ui" line="83"></location>
-        <source>label_rules</source>
-        <translation></translation>
-    </message>
-    <message>
-        <location filename="../../ui/informations_tab.ui" line="96"></location>
+        <location filename="../../ui/informations_tab.ui" line="96"/>
         <source>Money</source>
         <translation>Monnaie</translation>
     </message>
     <message>
-        <location filename="../../ui/informations_tab.ui" line="102"></location>
-        <source>label_money</source>
-        <translation></translation>
-    </message>
-    <message>
-        <location filename="../../ui/informations_tab.ui" line="115"></location>
+        <location filename="../../ui/informations_tab.ui" line="115"/>
         <source>WoT</source>
-        <translation>Toile de confiance</translation>
+        <translation>Toile de Confiance</translation>
     </message>
     <message>
-        <location filename="../../ui/informations_tab.ui" line="121"></location>
-        <source>label_wot</source>
-        <translation></translation>
+        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="121"/>
+        <source>
+                &lt;table cellpadding=&quot;5&quot;&gt;
+                &lt;tr&gt;&lt;td align=&quot;right&quot;&gt;&lt;b&gt;{:}&lt;/b&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;{:} {:}&lt;/td&gt;&lt;/tr&gt;
+                &lt;tr&gt;&lt;td align=&quot;right&quot;&gt;&lt;b&gt;{:}&lt;/b&gt;&lt;/td&gt;&lt;td&gt;{:} {:}&lt;/td&gt;&lt;/tr&gt;
+                &lt;tr&gt;&lt;td align=&quot;right&quot;&gt;&lt;b&gt;{:}&lt;/b&gt;&lt;/td&gt;&lt;td&gt;{:}&lt;/td&gt;&lt;/tr&gt;
+                &lt;tr&gt;&lt;td align=&quot;right&quot;&gt;&lt;b&gt;{:}&lt;/b&gt;&lt;/td&gt;&lt;td&gt;{:} {:}&lt;/td&gt;&lt;/tr&gt;
+                &lt;tr&gt;&lt;td align=&quot;right&quot;&gt;&lt;b&gt;{:2.2%} / {:} days&lt;/b&gt;&lt;/td&gt;&lt;td&gt;{:}&lt;/td&gt;&lt;/tr&gt;
+                &lt;tr&gt;&lt;td align=&quot;right&quot;&gt;&lt;b&gt;{:}&lt;/b&gt;&lt;/td&gt;&lt;td&gt;{:}&lt;/td&gt;&lt;/tr&gt;
+                &lt;/table&gt;
+                </source>
+        <translation type="obsolete">
+                &lt;table cellpadding=&quot;5&quot;&gt;
+                &lt;tr&gt;&lt;td align=&quot;right&quot;&gt;&lt;b&gt;{:}&lt;/b&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;{:} {:}&lt;/td&gt;&lt;/tr&gt;
+                &lt;tr&gt;&lt;td align=&quot;right&quot;&gt;&lt;b&gt;{:}&lt;/b&gt;&lt;/td&gt;&lt;td&gt;{:} {:}&lt;/td&gt;&lt;/tr&gt;
+                &lt;tr&gt;&lt;td align=&quot;right&quot;&gt;&lt;b&gt;{:}&lt;/b&gt;&lt;/td&gt;&lt;td&gt;{:}&lt;/td&gt;&lt;/tr&gt;
+                &lt;tr&gt;&lt;td align=&quot;right&quot;&gt;&lt;b&gt;{:}&lt;/b&gt;&lt;/td&gt;&lt;td&gt;{:} {:}&lt;/td&gt;&lt;/tr&gt;
+                &lt;tr&gt;&lt;td align=&quot;right&quot;&gt;&lt;b&gt;{:2.2%} / {:} jours&lt;/b&gt;&lt;/td&gt;&lt;td&gt;{:}&lt;/td&gt;&lt;/tr&gt;
+                &lt;tr&gt;&lt;td align=&quot;right&quot;&gt;&lt;b&gt;{:}&lt;/b&gt;&lt;/td&gt;&lt;td&gt;{:}&lt;/td&gt;&lt;/tr&gt;
+                &lt;/table&gt;
+                </translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="86"></location>
+        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="103"/>
         <source>Universal Dividend UD(t) in</source>
-        <translation>Dividende universel DU(t) en</translation>
+        <translation>Dividende Universel DU(t) en</translation>
+    </message>
+    <message>
+        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="74"/>
+        <source>Monetary Mass M(t) in</source>
+        <translation type="obsolete">Masse Monétaire M(t) en</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="86"></location>
+        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="103"/>
         <source>Members N(t)</source>
         <translation>Membres N(t)</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="86"></location>
+        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="74"/>
+        <source>Monetary Mass per member M(t)/N(t) in</source>
+        <translation type="obsolete">Masse Monétaire par membre M(t)/N(t) en</translation>
+    </message>
+    <message>
+        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="103"/>
         <source>Actual growth c = UD(t)/[M(t-1)/N(t)]</source>
         <translation>Croissance actuelle c = DU(t)/[M(t -1)/N(t)]</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="86"></location>
+        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="103"/>
         <source>Next UD date and time (t+1)</source>
-        <translation>Prochain dividende universel, date et heure (t+1)</translation>
+        <translation>Date et heure du prochain DU (t+1)</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="158"></location>
+        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="175"/>
         <source>No Universal Dividend created yet.</source>
         <translation>Pas de dividende universel créé pour le moment.</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="133"></location>
+        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="150"/>
         <source>
-                &lt;table cellpadding="5"&gt;
-                &lt;tr&gt;&lt;td align="right"&gt;&lt;b&gt;{:}&lt;/b&gt;&lt;/td&gt;&lt;td&gt;{:}&lt;/td&gt;&lt;/tr&gt;
-                &lt;tr&gt;&lt;td align="right"&gt;&lt;b&gt;{:}&lt;/b&gt;&lt;/td&gt;&lt;td&gt;{:}&lt;/td&gt;&lt;/tr&gt;
-                &lt;tr&gt;&lt;td align="right"&gt;&lt;b&gt;{:}&lt;/b&gt;&lt;/td&gt;&lt;td&gt;{:}&lt;/td&gt;&lt;/tr&gt;
+                &lt;table cellpadding=&quot;5&quot;&gt;
+                &lt;tr&gt;&lt;td align=&quot;right&quot;&gt;&lt;b&gt;{:}&lt;/b&gt;&lt;/td&gt;&lt;td&gt;{:}&lt;/td&gt;&lt;/tr&gt;
+                &lt;tr&gt;&lt;td align=&quot;right&quot;&gt;&lt;b&gt;{:}&lt;/b&gt;&lt;/td&gt;&lt;td&gt;{:}&lt;/td&gt;&lt;/tr&gt;
+                &lt;tr&gt;&lt;td align=&quot;right&quot;&gt;&lt;b&gt;{:}&lt;/b&gt;&lt;/td&gt;&lt;td&gt;{:}&lt;/td&gt;&lt;/tr&gt;
                 &lt;/table&gt;
                 </source>
         <translation></translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="133"></location>
+        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="150"/>
         <source>{:2.0%} / {:} days</source>
         <translation>{:2.0%} / {:} jours</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="133"></location>
+        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="150"/>
         <source>Fundamental growth (c) / Delta time (dt)</source>
-        <translation>Croissance fondamentale (c) / variation de temps (dt)</translation>
+        <translation>Croissance fondamentale (c) / Delta de temps (dt)</translation>
+    </message>
+    <message>
+        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="135"/>
+        <source>UD(t+1) = MAX { UD(t) ; c * M(t) / N(t) }</source>
+        <translation type="obsolete">DU(t+1) = MAX { DU(t) ; c * M(t) / N(t) }</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="133"></location>
+        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="150"/>
         <source>Universal Dividend (formula)</source>
-        <translation>Formule de calcul du dividende universel</translation>
+        <translation>Dividende Universel (formule)</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="133"></location>
+        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="150"/>
         <source>Universal Dividend (computed)</source>
-        <translation>Calcul du dividende universel</translation>
+        <translation>Dividende Universel (calculé)</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="161"></location>
+        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="178"/>
         <source>
-            &lt;table cellpadding="5"&gt;
-            &lt;tr&gt;&lt;td align="right"&gt;&lt;b&gt;{:2.0%} / {:} days&lt;/b&gt;&lt;/td&gt;&lt;td&gt;{:}&lt;/td&gt;&lt;/tr&gt;
-            &lt;tr&gt;&lt;td align="right"&gt;&lt;b&gt;{:}&lt;/b&gt;&lt;/td&gt;&lt;td&gt;{:} {:}&lt;/td&gt;&lt;/tr&gt;
-            &lt;tr&gt;&lt;td align="right"&gt;&lt;b&gt;{:}&lt;/b&gt;&lt;/td&gt;&lt;td&gt;{:}&lt;/td&gt;&lt;/tr&gt;
-            &lt;tr&gt;&lt;td align="right"&gt;&lt;b&gt;{:}&lt;/b&gt;&lt;/td&gt;&lt;td&gt;{:}&lt;/td&gt;&lt;/tr&gt;
-            &lt;tr&gt;&lt;td align="right"&gt;&lt;b&gt;{:}&lt;/b&gt;&lt;/td&gt;&lt;td&gt;{:}&lt;/td&gt;&lt;/tr&gt;
-            &lt;tr&gt;&lt;td align="right"&gt;&lt;b&gt;{:}&lt;/b&gt;&lt;/td&gt;&lt;td&gt;{:}&lt;/td&gt;&lt;/tr&gt;
-            &lt;tr&gt;&lt;td align="right"&gt;&lt;b&gt;{:}&lt;/b&gt;&lt;/td&gt;&lt;td&gt;{:}&lt;/td&gt;&lt;/tr&gt;
-            &lt;tr&gt;&lt;td align="right"&gt;&lt;b&gt;{:2.0%}&lt;/b&gt;&lt;/td&gt;&lt;td&gt;{:}&lt;/td&gt;&lt;/tr&gt;
+            &lt;table cellpadding=&quot;5&quot;&gt;
+            &lt;tr&gt;&lt;td align=&quot;right&quot;&gt;&lt;b&gt;{:2.0%} / {:} days&lt;/b&gt;&lt;/td&gt;&lt;td&gt;{:}&lt;/td&gt;&lt;/tr&gt;
+            &lt;tr&gt;&lt;td align=&quot;right&quot;&gt;&lt;b&gt;{:}&lt;/b&gt;&lt;/td&gt;&lt;td&gt;{:} {:}&lt;/td&gt;&lt;/tr&gt;
+            &lt;tr&gt;&lt;td align=&quot;right&quot;&gt;&lt;b&gt;{:}&lt;/b&gt;&lt;/td&gt;&lt;td&gt;{:}&lt;/td&gt;&lt;/tr&gt;
+            &lt;tr&gt;&lt;td align=&quot;right&quot;&gt;&lt;b&gt;{:}&lt;/b&gt;&lt;/td&gt;&lt;td&gt;{:}&lt;/td&gt;&lt;/tr&gt;
+            &lt;tr&gt;&lt;td align=&quot;right&quot;&gt;&lt;b&gt;{:}&lt;/b&gt;&lt;/td&gt;&lt;td&gt;{:}&lt;/td&gt;&lt;/tr&gt;
+            &lt;tr&gt;&lt;td align=&quot;right&quot;&gt;&lt;b&gt;{:}&lt;/b&gt;&lt;/td&gt;&lt;td&gt;{:}&lt;/td&gt;&lt;/tr&gt;
+            &lt;tr&gt;&lt;td align=&quot;right&quot;&gt;&lt;b&gt;{:}&lt;/b&gt;&lt;/td&gt;&lt;td&gt;{:}&lt;/td&gt;&lt;/tr&gt;
+            &lt;tr&gt;&lt;td align=&quot;right&quot;&gt;&lt;b&gt;{:2.0%}&lt;/b&gt;&lt;/td&gt;&lt;td&gt;{:}&lt;/td&gt;&lt;/tr&gt;
             &lt;/table&gt;
             </source>
         <translation>
-            &lt;table cellpadding="5"&gt;
-            &lt;tr&gt;&lt;td align="right"&gt;&lt;b&gt;{:2.0%} / {:} jours&lt;/b&gt;&lt;/td&gt;&lt;td&gt;{:}&lt;/td&gt;&lt;/tr&gt;
-            &lt;tr&gt;&lt;td align="right"&gt;&lt;b&gt;{:}&lt;/b&gt;&lt;/td&gt;&lt;td&gt;{:} {:}&lt;/td&gt;&lt;/tr&gt;
-            &lt;tr&gt;&lt;td align="right"&gt;&lt;b&gt;{:}&lt;/b&gt;&lt;/td&gt;&lt;td&gt;{:}&lt;/td&gt;&lt;/tr&gt;
-            &lt;tr&gt;&lt;td align="right"&gt;&lt;b&gt;{:}&lt;/b&gt;&lt;/td&gt;&lt;td&gt;{:}&lt;/td&gt;&lt;/tr&gt;
-            &lt;tr&gt;&lt;td align="right"&gt;&lt;b&gt;{:}&lt;/b&gt;&lt;/td&gt;&lt;td&gt;{:}&lt;/td&gt;&lt;/tr&gt;
-            &lt;tr&gt;&lt;td align="right"&gt;&lt;b&gt;{:}&lt;/b&gt;&lt;/td&gt;&lt;td&gt;{:}&lt;/td&gt;&lt;/tr&gt;
-            &lt;tr&gt;&lt;td align="right"&gt;&lt;b&gt;{:}&lt;/b&gt;&lt;/td&gt;&lt;td&gt;{:}&lt;/td&gt;&lt;/tr&gt;
-            &lt;tr&gt;&lt;td align="right"&gt;&lt;b&gt;{:2.0%}&lt;/b&gt;&lt;/td&gt;&lt;td&gt;{:}&lt;/td&gt;&lt;/tr&gt;
+            &lt;table cellpadding=&quot;5&quot;&gt;
+            &lt;tr&gt;&lt;td align=&quot;right&quot;&gt;&lt;b&gt;{:2.0%} / {:} jours&lt;/b&gt;&lt;/td&gt;&lt;td&gt;{:}&lt;/td&gt;&lt;/tr&gt;
+            &lt;tr&gt;&lt;td align=&quot;right&quot;&gt;&lt;b&gt;{:}&lt;/b&gt;&lt;/td&gt;&lt;td&gt;{:} {:}&lt;/td&gt;&lt;/tr&gt;
+            &lt;tr&gt;&lt;td align=&quot;right&quot;&gt;&lt;b&gt;{:}&lt;/b&gt;&lt;/td&gt;&lt;td&gt;{:}&lt;/td&gt;&lt;/tr&gt;
+            &lt;tr&gt;&lt;td align=&quot;right&quot;&gt;&lt;b&gt;{:}&lt;/b&gt;&lt;/td&gt;&lt;td&gt;{:}&lt;/td&gt;&lt;/tr&gt;
+            &lt;tr&gt;&lt;td align=&quot;right&quot;&gt;&lt;b&gt;{:}&lt;/b&gt;&lt;/td&gt;&lt;td&gt;{:}&lt;/td&gt;&lt;/tr&gt;
+            &lt;tr&gt;&lt;td align=&quot;right&quot;&gt;&lt;b&gt;{:}&lt;/b&gt;&lt;/td&gt;&lt;td&gt;{:}&lt;/td&gt;&lt;/tr&gt;
+            &lt;tr&gt;&lt;td align=&quot;right&quot;&gt;&lt;b&gt;{:}&lt;/b&gt;&lt;/td&gt;&lt;td&gt;{:}&lt;/td&gt;&lt;/tr&gt;
+            &lt;tr&gt;&lt;td align=&quot;right&quot;&gt;&lt;b&gt;{:2.0%}&lt;/b&gt;&lt;/td&gt;&lt;td&gt;{:}&lt;/td&gt;&lt;/tr&gt;
             &lt;/table&gt;
             </translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="161"></location>
+        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="178"/>
         <source>Fundamental growth (c)</source>
         <translation>Croissance fondamentale (c)</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="161"></location>
+        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="178"/>
         <source>Initial Universal Dividend UD(0) in</source>
-        <translation>Dividende universel initial DU(0) en</translation>
+        <translation>Dividende Universel Initial DU(0) en</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="161"></location>
+        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="178"/>
         <source>Time period (dt) in days (86400 seconds) between two UD</source>
-        <translation>Période de temps (dt) en jours (86 400 secondes) entre deux dividendes universel</translation>
+        <translation>Période de temps (dt) en jours (86400 secondes) entre deux DU</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="161"></location>
+        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="178"/>
         <source>Number of blocks used for calculating median time</source>
-        <translation>Nombre de blocs utilisés pour calculer le temps médian</translation>
+        <translation>Nombre de blocs utilisés pour calculer le temps median</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="161"></location>
+        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="178"/>
         <source>The average time in seconds for writing 1 block (wished time)</source>
-        <translation>Temps moyen espéré d’écrire un bloc en secondes</translation>
+        <translation>Le temps moyen en secondes pour écrire un bloc (temps espéré)</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="161"></location>
+        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="178"/>
         <source>The number of blocks required to evaluate again PoWMin value</source>
-        <translation>Le nombre de blocs requis pour évaluer une nouvelle valeur de preuve de travail minimum</translation>
+        <translation>Le nombre de blocs requis pour évaluer une nouvelle valeur de PoWMin</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="161"></location>
+        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="178"/>
         <source>The number of previous blocks to check for personalized difficulty</source>
-        <translation>Nombre de blocs précédents de vérification de la difficulté personnelle</translation>
+        <translation>Le nombre de blocs précédents pour vérifier la difficulté personnalisée</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="161"></location>
+        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="178"/>
         <source>The percent of previous issuers to reach for personalized difficulty</source>
-        <translation>Pourcentage d'utilisateurs précédents atteignant la difficulté personnalisée</translation>
+        <translation>Le pourcentage d&apos;utilisateurs précédents atteignant la difficulté personnalisée</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="196"></location>
+        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="213"/>
         <source>
-            &lt;table cellpadding="5"&gt;
-            &lt;tr&gt;&lt;td align="right"&gt;&lt;b&gt;{:}&lt;/b&gt;&lt;/td&gt;&lt;td&gt;{:}&lt;/td&gt;&lt;/tr&gt;
-            &lt;tr&gt;&lt;td align="right"&gt;&lt;b&gt;{:}&lt;/b&gt;&lt;/td&gt;&lt;td&gt;{:}&lt;/td&gt;&lt;/tr&gt;
-            &lt;tr&gt;&lt;td align="right"&gt;&lt;b&gt;{:}&lt;/b&gt;&lt;/td&gt;&lt;td&gt;{:}&lt;/td&gt;&lt;/tr&gt;
-            &lt;tr&gt;&lt;td align="right"&gt;&lt;b&gt;{:}&lt;/b&gt;&lt;/td&gt;&lt;td&gt;{:}&lt;/td&gt;&lt;/tr&gt;
-            &lt;tr&gt;&lt;td align="right"&gt;&lt;b&gt;{:}&lt;/b&gt;&lt;/td&gt;&lt;td&gt;{:}&lt;/td&gt;&lt;/tr&gt;
-            &lt;tr&gt;&lt;td align="right"&gt;&lt;b&gt;{:}&lt;/b&gt;&lt;/td&gt;&lt;td&gt;{:}&lt;/td&gt;&lt;/tr&gt;
+            &lt;table cellpadding=&quot;5&quot;&gt;
+            &lt;tr&gt;&lt;td align=&quot;right&quot;&gt;&lt;b&gt;{:}&lt;/b&gt;&lt;/td&gt;&lt;td&gt;{:}&lt;/td&gt;&lt;/tr&gt;
+            &lt;tr&gt;&lt;td align=&quot;right&quot;&gt;&lt;b&gt;{:}&lt;/b&gt;&lt;/td&gt;&lt;td&gt;{:}&lt;/td&gt;&lt;/tr&gt;
+            &lt;tr&gt;&lt;td align=&quot;right&quot;&gt;&lt;b&gt;{:}&lt;/b&gt;&lt;/td&gt;&lt;td&gt;{:}&lt;/td&gt;&lt;/tr&gt;
+            &lt;tr&gt;&lt;td align=&quot;right&quot;&gt;&lt;b&gt;{:}&lt;/b&gt;&lt;/td&gt;&lt;td&gt;{:}&lt;/td&gt;&lt;/tr&gt;
+            &lt;tr&gt;&lt;td align=&quot;right&quot;&gt;&lt;b&gt;{:}&lt;/b&gt;&lt;/td&gt;&lt;td&gt;{:}&lt;/td&gt;&lt;/tr&gt;
+            &lt;tr&gt;&lt;td align=&quot;right&quot;&gt;&lt;b&gt;{:}&lt;/b&gt;&lt;/td&gt;&lt;td&gt;{:}&lt;/td&gt;&lt;/tr&gt;
             &lt;/table&gt;
             </source>
         <translation></translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="196"></location>
+        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="213"/>
         <source>Minimum delay between 2 identical certifications (in days)</source>
-        <translation>Délai minimum entre deux certifications identiques (en jours)</translation>
+        <translation>Le délai minimum entre 2 certifications identiques (en jours)</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="196"></location>
+        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="213"/>
         <source>Maximum age of a valid signature (in days)</source>
-        <translation>Durée maximum de validité d'une signature (en jours)</translation>
+        <translation>Age maximum d&apos;une signature valide (en jours)</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="196"></location>
+        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="213"/>
         <source>Minimum quantity of signatures to be part of the WoT</source>
-        <translation>Nombre minimum de signatures pour faire partie de la toile de confiance</translation>
+        <translation>Nombre de signatures minimum pour faire partie de la TdC</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="196"></location>
+        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="213"/>
         <source>Minimum quantity of valid made certifications to be part of the WoT for distance rule</source>
-        <translation>Nombre minimum de certifications valides pour faire partie de la toile de confiance suivant la règle de distance</translation>
+        <translation>Quantité minimum de certifications valides pour faire partie de la TdC suivant la règle de distance</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="196"></location>
+        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="213"/>
         <source>Maximum age of a valid membership (in days)</source>
-        <translation>Durée maximale d'un statut de membre valide (en jours)</translation>
+        <translation>Age maximum d&apos;un statut de membre valide (en jours)</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="196"></location>
+        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="213"/>
         <source>Maximum distance between each WoT member and a newcomer</source>
-        <translation>Distance maximum entre chaque membre de la toile de confiance et un nouveau membre</translation>
+        <translation>Distance maximum entre chaque membre de la TdC et un nouveau venu</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="86"></location>
+        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="103"/>
         <source>Monetary Mass M(t-1) in</source>
         <translation>Masse Monétaire M(t-1) en</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="86"></location>
+        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="103"/>
         <source>Monetary Mass per member M(t-1)/N(t) in</source>
         <translation>Masse Monétaire par membre M(t-1)/N(t) en</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="133"></location>
+        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="127"/>
+        <source>UD(t+1) = MAX { UD(t) ; c * M(t-1) / N(t) }</source>
+        <translation type="obsolete">DU(t+1) = MAX { DU(t) ; c * M(t-1) / N(t) }</translation>
+    </message>
+    <message>
+        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="139"/>
+        <source>UD(t+1) = MAX { UD(t) ; c * M(t) / N(t+1) }</source>
+        <translation type="obsolete">DU(t+1) = MAX { DU(t) ; c * M(t) / N(t+1) }</translation>
+    </message>
+    <message>
+        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="74"/>
+        <source>Actual growth c = UD(t)/[M(t-1)/N(t-1)]</source>
+        <translation type="obsolete">Croissance actuelle c = DU(t)/[M(t -1)/N(t-1)]</translation>
+    </message>
+    <message>
+        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="140"/>
+        <source>UD(t+1) = MAX { UD(t) ; c &#xc3;&#x97; M(t) / N(t) }</source>
+        <translation type="obsolete">DU(t+1) = MAX { DU(t) ; c × M(t) / N(t) }</translation>
+    </message>
+    <message>
+        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="140"/>
+        <source>UD(t+1) = MAX { UD(t) ; c u00D7 M(t) / N(t) }</source>
+        <translation type="obsolete">DU(t+1) = MAX { DU(t) ; c u00D7 M(t) / N(t) }</translation>
+    </message>
+    <message>
+        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="140"/>
+        <source>UD(t+1) = MAX { UD(t) ; c &amp;#215; M(t) / N(t) }</source>
+        <translation type="obsolete">DU(t+1) = MAX { DU(t) ; c &amp;#215; M(t) / N(t) }</translation>
+    </message>
+    <message>
+        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="150"/>
         <source>{:} = MAX {{ {:} {:} ; {:2.0%} &amp;#215; {:} {:} / {:} }}</source>
-        <translation>{:} = MAX {{ {:} {:} ; {:2.0%} &amp;#215; {:} {:} / {:} }}</translation>
+        <translation></translation>
+    </message>
+    <message>
+        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="150"/>
+        <source>UD(t+1) = MAX { UD(t) ; c &amp;#215; M(t) / N(t+1) }</source>
+        <translation></translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="86"></location>
+        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="103"/>
         <source>
-                &lt;table cellpadding="5"&gt;
-                &lt;tr&gt;&lt;td align="right"&gt;&lt;b&gt;{:}&lt;/b&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;{:} {:}&lt;/td&gt;&lt;/tr&gt;
-                &lt;tr&gt;&lt;td align="right"&gt;&lt;b&gt;{:}&lt;/b&gt;&lt;/td&gt;&lt;td&gt;{:} {:}&lt;/td&gt;&lt;/tr&gt;
-                &lt;tr&gt;&lt;td align="right"&gt;&lt;b&gt;{:}&lt;/b&gt;&lt;/td&gt;&lt;td&gt;{:}&lt;/td&gt;&lt;/tr&gt;
-                &lt;tr&gt;&lt;td align="right"&gt;&lt;b&gt;{:}&lt;/b&gt;&lt;/td&gt;&lt;td&gt;{:} {:}&lt;/td&gt;&lt;/tr&gt;
-                &lt;tr&gt;&lt;td align="right"&gt;&lt;b&gt;{:2.2%} / {:} days&lt;/b&gt;&lt;/td&gt;&lt;td&gt;{:}&lt;/td&gt;&lt;/tr&gt;
-                &lt;tr&gt;&lt;td align="right"&gt;&lt;b&gt;{:}&lt;/b&gt;&lt;/td&gt;&lt;td&gt;{:}&lt;/td&gt;&lt;/tr&gt;
-                &lt;tr&gt;&lt;td align="right"&gt;&lt;b&gt;{:}&lt;/b&gt;&lt;/td&gt;&lt;td&gt;{:}&lt;/td&gt;&lt;/tr&gt;
+                &lt;table cellpadding=&quot;5&quot;&gt;
+                &lt;tr&gt;&lt;td align=&quot;right&quot;&gt;&lt;b&gt;{:}&lt;/b&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;{:} {:}&lt;/td&gt;&lt;/tr&gt;
+                &lt;tr&gt;&lt;td align=&quot;right&quot;&gt;&lt;b&gt;{:}&lt;/b&gt;&lt;/td&gt;&lt;td&gt;{:} {:}&lt;/td&gt;&lt;/tr&gt;
+                &lt;tr&gt;&lt;td align=&quot;right&quot;&gt;&lt;b&gt;{:}&lt;/b&gt;&lt;/td&gt;&lt;td&gt;{:}&lt;/td&gt;&lt;/tr&gt;
+                &lt;tr&gt;&lt;td align=&quot;right&quot;&gt;&lt;b&gt;{:}&lt;/b&gt;&lt;/td&gt;&lt;td&gt;{:} {:}&lt;/td&gt;&lt;/tr&gt;
+                &lt;tr&gt;&lt;td align=&quot;right&quot;&gt;&lt;b&gt;{:2.2%} / {:} days&lt;/b&gt;&lt;/td&gt;&lt;td&gt;{:}&lt;/td&gt;&lt;/tr&gt;
+                &lt;tr&gt;&lt;td align=&quot;right&quot;&gt;&lt;b&gt;{:}&lt;/b&gt;&lt;/td&gt;&lt;td&gt;{:}&lt;/td&gt;&lt;/tr&gt;
+                &lt;tr&gt;&lt;td align=&quot;right&quot;&gt;&lt;b&gt;{:}&lt;/b&gt;&lt;/td&gt;&lt;td&gt;{:}&lt;/td&gt;&lt;/tr&gt;
                 &lt;/table&gt;
                 </source>
         <translation>
-                ↵
-                &lt;table cellpadding="5"&gt;↵
-                &lt;tr&gt;&lt;td align="right"&gt;&lt;b&gt;{:}&lt;/b&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;{:} {:}&lt;/td&gt;&lt;/tr&gt;↵
-                &lt;tr&gt;&lt;td align="right"&gt;&lt;b&gt;{:}&lt;/b&gt;&lt;/td&gt;&lt;td&gt;{:} {:}&lt;/td&gt;&lt;/tr&gt;↵
-                &lt;tr&gt;&lt;td align="right"&gt;&lt;b&gt;{:}&lt;/b&gt;&lt;/td&gt;&lt;td&gt;{:}&lt;/td&gt;&lt;/tr&gt;↵
-                &lt;tr&gt;&lt;td align="right"&gt;&lt;b&gt;{:}&lt;/b&gt;&lt;/td&gt;&lt;td&gt;{:} {:}&lt;/td&gt;&lt;/tr&gt;↵
-                &lt;tr&gt;&lt;td align="right"&gt;&lt;b&gt;{:2.2%} / {:} days&lt;/b&gt;&lt;/td&gt;&lt;td&gt;{:}&lt;/td&gt;&lt;/tr&gt;↵
-                &lt;tr&gt;&lt;td align="right"&gt;&lt;b&gt;{:}&lt;/b&gt;&lt;/td&gt;&lt;td&gt;{:}&lt;/td&gt;&lt;/tr&gt;↵
-                &lt;tr&gt;&lt;td align="right"&gt;&lt;b&gt;{:}&lt;/b&gt;&lt;/td&gt;&lt;td&gt;{:}&lt;/td&gt;&lt;/tr&gt;↵
-                &lt;/table&gt;↵
+                &lt;table cellpadding=&quot;5&quot;&gt;
+                &lt;tr&gt;&lt;td align=&quot;right&quot;&gt;&lt;b&gt;{:}&lt;/b&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;{:} {:}&lt;/td&gt;&lt;/tr&gt;
+                &lt;tr&gt;&lt;td align=&quot;right&quot;&gt;&lt;b&gt;{:}&lt;/b&gt;&lt;/td&gt;&lt;td&gt;{:} {:}&lt;/td&gt;&lt;/tr&gt;
+                &lt;tr&gt;&lt;td align=&quot;right&quot;&gt;&lt;b&gt;{:}&lt;/b&gt;&lt;/td&gt;&lt;td&gt;{:}&lt;/td&gt;&lt;/tr&gt;
+                &lt;tr&gt;&lt;td align=&quot;right&quot;&gt;&lt;b&gt;{:}&lt;/b&gt;&lt;/td&gt;&lt;td&gt;{:} {:}&lt;/td&gt;&lt;/tr&gt;
+                &lt;tr&gt;&lt;td align=&quot;right&quot;&gt;&lt;b&gt;{:2.2%} / {:} jours&lt;/b&gt;&lt;/td&gt;&lt;td&gt;{:}&lt;/td&gt;&lt;/tr&gt;
+                &lt;tr&gt;&lt;td align=&quot;right&quot;&gt;&lt;b&gt;{:}&lt;/b&gt;&lt;/td&gt;&lt;td&gt;{:}&lt;/td&gt;&lt;/tr&gt;
+                &lt;tr&gt;&lt;td align=&quot;right&quot;&gt;&lt;b&gt;{:}&lt;/b&gt;&lt;/td&gt;&lt;td&gt;{:}&lt;/td&gt;&lt;/tr
+                &lt;/table&gt;
                 </translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="86"></location>
+        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="103"/>
         <source>Last UD date and time (t)</source>
-        <translation>Précédent dividende universel</translation>
-    </message>
-    <message>
-        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="133"></location>
-        <source>UD(t+1) = MAX { UD(t) ; c &amp;#215; M(t) / N(t+1) }</source>
-        <translation>UD(t+1) = MAX { UD(t) ; c &amp;#215; M(t) / N(t+1) }</translation>
+        <translation>Date et heure du dernier DU (t)</translation>
     </message>
 </context>
 <context>
     <name>MainWindow</name>
     <message>
-        <location filename="../../ui/mainwindow.ui" line="131"></location>
+        <location filename="../../ui/mainwindow.ui" line="131"/>
         <source>Account</source>
         <translation>Compte</translation>
     </message>
     <message>
-        <location filename="../../ui/mainwindow.ui" line="76"></location>
+        <location filename="../../ui/mainwindow.ui" line="61"/>
+        <source>Contacts</source>
+        <translation type="obsolete">Contacts</translation>
+    </message>
+    <message>
+        <location filename="../../ui/mainwindow.ui" line="75"/>
+        <source>Actions</source>
+        <translation type="obsolete">Actions</translation>
+    </message>
+    <message>
+        <location filename="../../ui/mainwindow.ui" line="76"/>
         <source>Manage accounts</source>
-        <translation>Gérer ces comptes</translation>
+        <translation>Gérer les comptes</translation>
     </message>
     <message>
-        <location filename="../../ui/mainwindow.ui" line="81"></location>
+        <location filename="../../ui/mainwindow.ui" line="81"/>
         <source>Configure trustable nodes</source>
-        <translation>Configurer les nœuds de confiance</translation>
+        <translation>Configurer les noeuds de confiance</translation>
     </message>
     <message>
-        <location filename="../../ui/mainwindow.ui" line="106"></location>
+        <location filename="../../ui/mainwindow.ui" line="106"/>
         <source>Send a message</source>
         <translation>Envoyer un message</translation>
     </message>
     <message>
-        <location filename="../../ui/mainwindow.ui" line="111"></location>
+        <location filename="../../ui/mainwindow.ui" line="111"/>
         <source>Send money</source>
-        <translation>Envoyer de la monnaie</translation>
+        <translation>Envoyer de l&apos;argent</translation>
     </message>
     <message>
-        <location filename="../../ui/mainwindow.ui" line="116"></location>
+        <location filename="../../ui/mainwindow.ui" line="116"/>
         <source>Remove contact</source>
         <translation>Supprimer un contact</translation>
     </message>
     <message>
-        <location filename="../../ui/mainwindow.ui" line="121"></location>
+        <location filename="../../ui/mainwindow.ui" line="121"/>
         <source>Save</source>
         <translation>Sauvegarder</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/mainwindow.py" line="352"></location>
+        <location filename="../../../src/cutecoin/gui/mainwindow.py" line="350"/>
         <source>Export</source>
         <translation>Exporter</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/mainwindow.py" line="211"></location>
+        <location filename="../../../src/cutecoin/gui/mainwindow.py" line="176"/>
+        <source>Loading account {0}</source>
+        <translation type="obsolete">Chargement du compte {0}</translation>
+    </message>
+    <message>
+        <location filename="../../../src/cutecoin/gui/mainwindow.py" line="211"/>
         <source>Latest release : {version}</source>
         <translation>Dernière version : {version}</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/mainwindow.py" line="225"></location>
+        <location filename="../../../src/cutecoin/gui/mainwindow.py" line="246"/>
+        <source>
+            &lt;p&gt;&lt;b&gt;{version_info}&lt;/b&gt;&lt;/p&gt;
+            &lt;p&gt;&lt;a href={version_url}&gt;Download link&lt;/a&gt;&lt;/p&gt;
+            </source>
+        <translation type="obsolete">
+            &lt;p&gt;&lt;b&gt;{version_info}&lt;/b&gt;&lt;/p&gt;
+            &lt;p&gt;&lt;a href={version_url}&gt;Lien de téléchargement&lt;/a&gt;&lt;/p&gt;
+            </translation>
+    </message>
+    <message>
+        <location filename="../../../src/cutecoin/gui/mainwindow.py" line="205"/>
         <source>
         &lt;h1&gt;Cutecoin&lt;/h1&gt;
 
@@ -1285,7 +1579,7 @@ Révoquer votre identifiant utilisateur peut fonctionner que s'il n'a pas déjà
         &lt;p&gt;vit&lt;/p&gt;
         &lt;p&gt;canercandan&lt;/p&gt;
         </source>
-        <translation>
+        <translation type="obsolete">
         &lt;h1&gt;Cutecoin&lt;/h1&gt;
 
         &lt;p&gt;Client Python/Qt pour uCoin&lt;/p&gt;
@@ -1293,7 +1587,7 @@ Révoquer votre identifiant utilisateur peut fonctionner que s'il n'a pas déjà
         &lt;p&gt;Version : {:}&lt;/p&gt;
         {new_version_text}
 
-        &lt;p&gt;Licence : MIT&lt;/p&gt;
+        &lt;p&gt;License : MIT&lt;/p&gt;
 
         &lt;p&gt;&lt;b&gt;Auteurs&lt;/b&gt;&lt;/p&gt;
 
@@ -1303,179 +1597,216 @@ Révoquer votre identifiant utilisateur peut fonctionner que s'il n'a pas déjà
         </translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/mainwindow.py" line="285"></location>
+        <location filename="../../../src/cutecoin/gui/mainwindow.py" line="283"/>
         <source>Edit</source>
-        <translation>Éditer</translation>
+        <translation>Editer</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/mainwindow.py" line="288"></location>
+        <location filename="../../../src/cutecoin/gui/mainwindow.py" line="286"/>
         <source>Delete</source>
         <translation>Supprimer</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/mainwindow.py" line="305"></location>
+        <location filename="../../../src/cutecoin/gui/mainwindow.py" line="303"/>
         <source>CuteCoin {0}</source>
         <translation>CuteCoin {0}</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/mainwindow.py" line="332"></location>
+        <location filename="../../../src/cutecoin/gui/mainwindow.py" line="330"/>
         <source>CuteCoin {0} - Account : {1}</source>
         <translation>CuteCoin {0} - Compte : {1}</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/mainwindow.py" line="350"></location>
+        <location filename="../../../src/cutecoin/gui/mainwindow.py" line="348"/>
         <source>Export an account</source>
         <translation>Exporter un compte</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/mainwindow.py" line="351"></location>
+        <location filename="../../../src/cutecoin/gui/mainwindow.py" line="349"/>
         <source>All account files (*.acc)</source>
         <translation>Tout fichier de compte (*.acc)</translation>
     </message>
     <message>
-        <location filename="../../ui/mainwindow.ui" line="50"></location>
+        <location filename="../../ui/mainwindow.ui" line="50"/>
         <source>&amp;Open</source>
         <translation>&amp;Ouvrir</translation>
     </message>
     <message>
-        <location filename="../../ui/mainwindow.ui" line="55"></location>
+        <location filename="../../ui/mainwindow.ui" line="55"/>
         <source>&amp;Contacts</source>
         <translation type="obsolete">&amp;Contacts</translation>
     </message>
     <message>
-        <location filename="../../ui/mainwindow.ui" line="97"></location>
+        <location filename="../../ui/mainwindow.ui" line="97"/>
         <source>&amp;Add a contact</source>
         <translation type="obsolete">&amp;Ajouter un contact</translation>
     </message>
     <message>
-        <location filename="../../ui/mainwindow.ui" line="126"></location>
+        <location filename="../../ui/mainwindow.ui" line="132"/>
+        <source>&amp;Add</source>
+        <translation type="obsolete">&amp;Ajouter</translation>
+    </message>
+    <message>
+        <location filename="../../ui/mainwindow.ui" line="126"/>
         <source>&amp;Quit</source>
         <translation>&amp;Quitter</translation>
     </message>
     <message>
-        <location filename="../../ui/mainwindow.ui" line="136"></location>
+        <location filename="../../ui/mainwindow.ui" line="136"/>
         <source>&amp;Transfer money</source>
         <translation>&amp;Transférer de la monnaie</translation>
     </message>
     <message>
-        <location filename="../../ui/mainwindow.ui" line="141"></location>
+        <location filename="../../ui/mainwindow.ui" line="141"/>
         <source>&amp;Configure</source>
         <translation>&amp;Configurer</translation>
     </message>
     <message>
-        <location filename="../../ui/mainwindow.ui" line="146"></location>
+        <location filename="../../ui/mainwindow.ui" line="146"/>
         <source>&amp;Import</source>
         <translation>&amp;Importer</translation>
     </message>
     <message>
-        <location filename="../../ui/mainwindow.ui" line="151"></location>
+        <location filename="../../ui/mainwindow.ui" line="151"/>
         <source>&amp;Export</source>
         <translation>&amp;Exporter</translation>
     </message>
     <message>
-        <location filename="../../ui/mainwindow.ui" line="167"></location>
+        <location filename="../../ui/mainwindow.ui" line="167"/>
         <source>&amp;Certification</source>
         <translation type="obsolete">&amp;Certification</translation>
     </message>
     <message>
-        <location filename="../../ui/mainwindow.ui" line="161"></location>
+        <location filename="../../ui/mainwindow.ui" line="161"/>
         <source>&amp;Set as default</source>
         <translation>&amp;Par défaut</translation>
     </message>
     <message>
-        <location filename="../../ui/mainwindow.ui" line="166"></location>
+        <location filename="../../ui/mainwindow.ui" line="166"/>
         <source>A&amp;bout</source>
-        <translation>À &amp;propos</translation>
+        <translation>A &amp;propos</translation>
     </message>
     <message>
-        <location filename="../../ui/mainwindow.ui" line="171"></location>
+        <location filename="../../ui/mainwindow.ui" line="171"/>
         <source>&amp;Preferences</source>
         <translation>&amp;Préférences</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/mainwindow.py" line="250"></location>
+        <location filename="../../../src/cutecoin/gui/mainwindow.py" line="251"/>
         <source>Please get the latest release {version}</source>
         <translation>Veuillez télécharger la dernière version {version}</translation>
     </message>
     <message>
-        <location filename="../../ui/mainwindow.ui" line="30"></location>
+        <location filename="../../ui/mainwindow.ui" line="30"/>
         <source>Fi&amp;le</source>
         <translation>&amp;Fichier</translation>
     </message>
     <message>
-        <location filename="../../ui/mainwindow.ui" line="65"></location>
+        <location filename="../../ui/mainwindow.ui" line="65"/>
         <source>&amp;Help</source>
         <translation>&amp;Aide</translation>
     </message>
     <message>
-        <location filename="../../ui/mainwindow.ui" line="176"></location>
+        <location filename="../../ui/mainwindow.ui" line="176"/>
         <source>&amp;Add account</source>
         <translation>&amp;Ajouter un compte</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/mainwindow.py" line="218"></location>
+        <location filename="../../../src/cutecoin/gui/mainwindow.py" line="246"/>
+        <source>
+            &lt;p&gt;&lt;b&gt;{version_info}&lt;/b&gt;&lt;/p&gt;
+            &lt;p&gt;&lt;a href=&quot;{version_url}&quot;&gt;Download link&lt;/a&gt;&lt;/p&gt;
+            </source>
+        <translation type="obsolete">
+            &lt;p&gt;&lt;b&gt;{version_info}&lt;/b&gt;&lt;/p&gt;
+            &lt;p&gt;&lt;a href=&quot;{version_url}&quot;&gt;Lien de téléchargement&lt;/a&gt;&lt;/p&gt;
+            </translation>
+    </message>
+    <message>
+        <location filename="../../../src/cutecoin/gui/mainwindow.py" line="218"/>
         <source>Download link</source>
         <translation>Lien de téléchargement</translation>
     </message>
     <message>
-        <location filename="../../ui/mainwindow.ui" line="40"></location>
+        <location filename="../../ui/mainwindow.ui" line="40"/>
         <source>Acco&amp;unt</source>
-        <translation>Compte</translation>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../ui/mainwindow.ui" line="44"></location>
+        <location filename="../../ui/mainwindow.ui" line="44"/>
         <source>Co&amp;ntacts</source>
-        <translation>Contact</translation>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../ui/mainwindow.ui" line="86"></location>
+        <location filename="../../ui/mainwindow.ui" line="86"/>
         <source>A&amp;dd a contact</source>
-        <translation>Ajouter un contact</translation>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../ui/mainwindow.ui" line="156"></location>
+        <location filename="../../ui/mainwindow.ui" line="156"/>
         <source>C&amp;ertification</source>
-        <translation>Certification</translation>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../../src/cutecoin/gui/mainwindow.py" line="225"/>
+        <source>
+        &lt;h1&gt;Cutecoin&lt;/h1&gt;
+
+        &lt;p&gt;Python/Qt uCoin client&lt;/p&gt;
+
+        &lt;p&gt;Version : {:}&lt;/p&gt;
+        {new_version_text}
+
+        &lt;p&gt;License : GPLv3&lt;/p&gt;
+
+        &lt;p&gt;&lt;b&gt;Authors&lt;/b&gt;&lt;/p&gt;
+
+        &lt;p&gt;inso&lt;/p&gt;
+        &lt;p&gt;vit&lt;/p&gt;
+        &lt;p&gt;Moul&lt;/p&gt;
+        &lt;p&gt;canercandan&lt;/p&gt;
+        </source>
+        <translation type="unfinished"></translation>
     </message>
 </context>
 <context>
     <name>MemberDialog</name>
     <message>
-        <location filename="../../../src/cutecoin/gui/member.py" line="46"></location>
+        <location filename="../../../src/cutecoin/gui/member.py" line="46"/>
         <source>not a member</source>
         <translation>Non membre</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/member.py" line="60"></location>
+        <location filename="../../../src/cutecoin/gui/member.py" line="60"/>
         <source>
-            &lt;table cellpadding="5"&gt;
-            &lt;tr&gt;&lt;td align="right"&gt;&lt;b&gt;{:}&lt;/b&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;{:}&lt;/td&gt;&lt;/tr&gt;
-            &lt;tr&gt;&lt;td align="right"&gt;&lt;b&gt;{:}&lt;/b&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;{:}&lt;/td&gt;&lt;/tr&gt;
+            &lt;table cellpadding=&quot;5&quot;&gt;
+            &lt;tr&gt;&lt;td align=&quot;right&quot;&gt;&lt;b&gt;{:}&lt;/b&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;{:}&lt;/td&gt;&lt;/tr&gt;
+            &lt;tr&gt;&lt;td align=&quot;right&quot;&gt;&lt;b&gt;{:}&lt;/b&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;{:}&lt;/td&gt;&lt;/tr&gt;
             </source>
         <translation></translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/member.py" line="64"></location>
+        <location filename="../../../src/cutecoin/gui/member.py" line="64"/>
         <source>Public key</source>
         <translation>Clé publique</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/member.py" line="64"></location>
+        <location filename="../../../src/cutecoin/gui/member.py" line="64"/>
         <source>Join date</source>
-        <translation>Date d'inscription</translation>
+        <translation>Date d&apos;inscription</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/member.py" line="87"></location>
-        <source>&lt;tr&gt;&lt;td align="right"&gt;&lt;b&gt;{:}&lt;/b&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;{:}&lt;/td&gt;&lt;/tr&gt;</source>
+        <location filename="../../../src/cutecoin/gui/member.py" line="87"/>
+        <source>&lt;tr&gt;&lt;td align=&quot;right&quot;&gt;&lt;b&gt;{:}&lt;/b&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;{:}&lt;/td&gt;&lt;/tr&gt;</source>
         <translation></translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/member.py" line="73"></location>
+        <location filename="../../../src/cutecoin/gui/member.py" line="73"/>
         <source>Distance</source>
         <translation>Distance</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/member.py" line="80"></location>
+        <location filename="../../../src/cutecoin/gui/member.py" line="80"/>
         <source>Path</source>
         <translation>Chemin</translation>
     </message>
@@ -1483,62 +1814,62 @@ Révoquer votre identifiant utilisateur peut fonctionner que s'il n'a pas déjà
 <context>
     <name>NetworkFilterProxyModel</name>
     <message>
-        <location filename="../../../src/cutecoin/models/network.py" line="47"></location>
+        <location filename="../../../src/cutecoin/models/network.py" line="48"/>
         <source>Address</source>
         <translation>Adresse</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/models/network.py" line="48"></location>
+        <location filename="../../../src/cutecoin/models/network.py" line="49"/>
         <source>Port</source>
         <translation>Port</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/models/network.py" line="49"></location>
+        <location filename="../../../src/cutecoin/models/network.py" line="50"/>
         <source>Block</source>
         <translation>Bloc</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/models/network.py" line="51"></location>
+        <location filename="../../../src/cutecoin/models/network.py" line="52"/>
         <source>UID</source>
-        <translation>Identifiant</translation>
+        <translation>UID</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/models/network.py" line="52"></location>
+        <location filename="../../../src/cutecoin/models/network.py" line="53"/>
         <source>Member</source>
         <translation>Membre</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/models/network.py" line="53"></location>
+        <location filename="../../../src/cutecoin/models/network.py" line="54"/>
         <source>Pubkey</source>
         <translation>Clé publique</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/models/network.py" line="54"></location>
+        <location filename="../../../src/cutecoin/models/network.py" line="55"/>
         <source>Software</source>
         <translation>Logiciel</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/models/network.py" line="55"></location>
+        <location filename="../../../src/cutecoin/models/network.py" line="56"/>
         <source>Version</source>
         <translation>Version</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/models/network.py" line="68"></location>
+        <location filename="../../../src/cutecoin/models/network.py" line="69"/>
         <source>yes</source>
         <translation>oui</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/models/network.py" line="68"></location>
+        <location filename="../../../src/cutecoin/models/network.py" line="69"/>
         <source>no</source>
         <translation>non</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/models/network.py" line="68"></location>
+        <location filename="../../../src/cutecoin/models/network.py" line="69"/>
         <source>offline</source>
         <translation>déconnecté</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/models/network.py" line="50"></location>
+        <location filename="../../../src/cutecoin/models/network.py" line="51"/>
         <source>Hash</source>
         <translation>Hash</translation>
     </message>
@@ -1546,327 +1877,375 @@ Révoquer votre identifiant utilisateur peut fonctionner que s'il n'a pas déjà
 <context>
     <name>NetworkTabWidget</name>
     <message>
-        <location filename="../../ui/network_tab.ui" line="14"></location>
+        <location filename="../../ui/network_tab.ui" line="14"/>
         <source>Form</source>
-        <translation>Formulaire</translation>
+        <translation></translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/network_tab.py" line="68"></location>
+        <location filename="../../../src/cutecoin/gui/network_tab.py" line="70"/>
         <source>Unset root node</source>
-        <translation>Supprimer des nœuds racines</translation>
+        <translation>Supprimer des noeuds racines</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/network_tab.py" line="74"></location>
+        <location filename="../../../src/cutecoin/gui/network_tab.py" line="76"/>
         <source>Set as root node</source>
-        <translation>Définir comme nœud racine</translation>
+        <translation>Définir comme noeud racine</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/network_tab.py" line="80"></location>
+        <location filename="../../../src/cutecoin/gui/network_tab.py" line="82"/>
         <source>Open in browser</source>
-        <translation>Ouvrir dans son navigateur web</translation>
+        <translation>Ouvrir dans le navigateur</translation>
     </message>
 </context>
 <context>
     <name>NetworkTableModel</name>
     <message>
-        <location filename="../../../src/cutecoin/models/network.py" line="135"></location>
+        <location filename="../../../src/cutecoin/models/network.py" line="136"/>
         <source>Online</source>
         <translation>Connecté</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/models/network.py" line="136"></location>
+        <location filename="../../../src/cutecoin/models/network.py" line="137"/>
         <source>Offline</source>
         <translation>Déconnecté</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/models/network.py" line="137"></location>
+        <location filename="../../../src/cutecoin/models/network.py" line="138"/>
         <source>Unsynchronized</source>
         <translation>Désynchronisé</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/models/network.py" line="138"></location>
+        <location filename="../../../src/cutecoin/models/network.py" line="139"/>
         <source>Corrupted</source>
         <translation>Corrompu</translation>
     </message>
 </context>
+<context>
+    <name>Node</name>
+    <message>
+        <location filename="../../../src/cutecoin/gui/views/wot.py" line="285"/>
+        <source>Informations</source>
+        <translation type="obsolete">Informations</translation>
+    </message>
+    <message>
+        <location filename="../../../src/cutecoin/gui/views/wot.py" line="289"/>
+        <source>Add as contact</source>
+        <translation type="obsolete">Ajouter comme contact</translation>
+    </message>
+    <message>
+        <location filename="../../../src/cutecoin/gui/views/wot.py" line="293"/>
+        <source>Send money</source>
+        <translation type="obsolete">Envoyer de l&apos;argent</translation>
+    </message>
+    <message>
+        <location filename="../../../src/cutecoin/gui/views/wot.py" line="297"/>
+        <source>Certify identity</source>
+        <translation type="obsolete">Certifier cette identité</translation>
+    </message>
+</context>
 <context>
     <name>PasswordAskerDialog</name>
     <message>
-        <location filename="../../ui/password_asker.ui" line="14"></location>
+        <location filename="../../ui/password_asker.ui" line="14"/>
         <source>Password</source>
         <translation>Mot de passe</translation>
     </message>
     <message>
-        <location filename="../../ui/password_asker.ui" line="23"></location>
+        <location filename="../../ui/password_asker.ui" line="23"/>
         <source>Please enter your account password</source>
         <translation>Veuillez entrer le mot de passe de votre compte</translation>
     </message>
     <message>
-        <location filename="../../ui/password_asker.ui" line="32"></location>
+        <location filename="../../ui/password_asker.ui" line="32"/>
         <source>Remember my password during this session</source>
         <translation>Sauvegarder le mot de passe durant cette session</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/password_asker.py" line="65"></location>
+        <location filename="../../../src/cutecoin/gui/password_asker.py" line="66"/>
         <source>Bad password</source>
         <translation>Mauvais mot de passe</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/password_asker.py" line="65"></location>
+        <location filename="../../../src/cutecoin/gui/password_asker.py" line="66"/>
         <source>Non printable characters in password</source>
         <translation>Caractères invisibles présents dans le mot de passe</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/password_asker.py" line="71"></location>
+        <location filename="../../../src/cutecoin/gui/password_asker.py" line="72"/>
         <source>Failed to get private key</source>
-        <translation>Échec d'ouverture de la clé privée</translation>
+        <translation>Echec d&apos;ouverture de la clé privée</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/password_asker.py" line="71"></location>
+        <location filename="../../../src/cutecoin/gui/password_asker.py" line="72"/>
         <source>Wrong password typed. Cannot open the private key</source>
-        <translation>Mauvais mot de passe. Impossible d'ouvrir votre clé privée</translation>
+        <translation>Mauvais mot de passe. Impossible d&apos;ouvrir votre clé privée</translation>
     </message>
 </context>
 <context>
     <name>PreferencesDialog</name>
     <message>
-        <location filename="../../ui/preferences.ui" line="115"></location>
+        <location filename="../../ui/preferences.ui" line="115"/>
         <source>Default account</source>
         <translation>Compte par défaut</translation>
     </message>
     <message>
-        <location filename="../../ui/preferences.ui" line="215"></location>
+        <location filename="../../ui/preferences.ui" line="36"/>
+        <source>Default referential</source>
+        <translation type="obsolete">Référentiel par défaut</translation>
+    </message>
+    <message>
+        <location filename="../../ui/preferences.ui" line="215"/>
         <source>Language</source>
         <translation>Langue</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/preferences.py" line="83"></location>
+        <location filename="../../ui/preferences.ui" line="14"/>
         <source>Preferences</source>
         <translation>Préférences</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/preferences.py" line="83"></location>
+        <location filename="../../../src/cutecoin/gui/preferences.py" line="81"/>
         <source>A restart is needed to apply your new preferences.</source>
-        <translation>Vous devez redémarrer Cutecoin pour appliquer vos nouvelles préférences.</translation>
+        <translation type="obsolete">Vous devez redémarrer Cutecoin pour appliquer vos nouvelles préférences.</translation>
     </message>
     <message>
-        <location filename="../../ui/preferences.ui" line="129"></location>
+        <location filename="../../ui/preferences.ui" line="129"/>
         <source>Default &amp;referential</source>
-        <translation>Défaut et référentiel</translation>
+        <translation>Référentiel par défaut</translation>
     </message>
     <message>
-        <location filename="../../ui/preferences.ui" line="166"></location>
+        <location filename="../../ui/preferences.ui" line="166"/>
         <source>Enable expert mode</source>
         <translation>Activer le mode expert</translation>
     </message>
     <message>
-        <location filename="../../ui/preferences.ui" line="201"></location>
+        <location filename="../../ui/preferences.ui" line="201"/>
         <source>Digits after commas </source>
-        <translation>Nombre de décimales </translation>
+        <translation>Chiffres après la virgule</translation>
     </message>
     <message>
-        <location filename="../../ui/preferences.ui" line="249"></location>
+        <location filename="../../ui/preferences.ui" line="249"/>
         <source>Maximize Window at Startup</source>
-        <translation>Maximiser la taille de la fenêtre au démarrage</translation>
+        <translation>Fenêtre plein écran au démarrage</translation>
     </message>
     <message>
-        <location filename="../../ui/preferences.ui" line="276"></location>
+        <location filename="../../ui/preferences.ui" line="276"/>
         <source>Enable notifications</source>
         <translation>Activer les notifications</translation>
     </message>
     <message>
-        <location filename="../../ui/preferences.ui" line="106"></location>
-        <source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;&lt;span style=" font-size:16pt; font-weight:600;"&gt;General settings&lt;/span&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
-        <translation>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;&lt;span style=" font-size:16pt; font-weight:600;"&gt;Paramètres généraux&lt;/span&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</translation>
+        <location filename="../../ui/preferences.ui" line="106"/>
+        <source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;&lt;span style=&quot; font-size:16pt; font-weight:600;&quot;&gt;General settings&lt;/span&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
+        <translation>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;&lt;span style=&quot; font-size:16pt; font-weight:600;&quot;&gt;Paramètres généraux&lt;/span&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</translation>
     </message>
     <message>
-        <location filename="../../ui/preferences.ui" line="192"></location>
-        <source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;&lt;span style=" font-size:16pt; font-weight:600;"&gt;Display settings&lt;/span&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
-        <translation>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;&lt;span style=" font-size:16pt; font-weight:600;"&gt;Paramètres d'affichage&lt;/span&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</translation>
+        <location filename="../../ui/preferences.ui" line="192"/>
+        <source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;&lt;span style=&quot; font-size:16pt; font-weight:600;&quot;&gt;Display settings&lt;/span&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
+        <translation>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;&lt;span style=&quot; font-size:16pt; font-weight:600;&quot;&gt;Paramètres d&apos;affichage&lt;/span&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</translation>
     </message>
     <message>
-        <location filename="../../ui/preferences.ui" line="303"></location>
+        <location filename="../../ui/preferences.ui" line="303"/>
         <source>Use International System of Units</source>
-        <translation>Utiliser le Système d'Unités International</translation>
+        <translation>Utiliser le Système d&apos;Unités International</translation>
     </message>
     <message>
-        <location filename="../../ui/preferences.ui" line="329"></location>
-        <source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;&lt;span style=" font-size:16pt; font-weight:600;"&gt;Network settings&lt;/span&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
-        <translation>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;&lt;span style=" font-size:16pt; font-weight:600;"&gt;Paramètres réseaux&lt;/span&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</translation>
+        <location filename="../../ui/preferences.ui" line="329"/>
+        <source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;&lt;span style=&quot; font-size:16pt; font-weight:600;&quot;&gt;Network settings&lt;/span&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
+        <translation>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;&lt;span style=&quot; font-size:16pt; font-weight:600;&quot;&gt;Paramètres réseaux&lt;/span&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</translation>
     </message>
     <message>
-        <location filename="../../ui/preferences.ui" line="336"></location>
+        <location filename="../../ui/preferences.ui" line="336"/>
         <source>Use a proxy server</source>
-        <translation>Utiliser un serveur proxy</translation>
+        <translation type="obsolete">Utiliser un serveur proxy</translation>
     </message>
     <message>
-        <location filename="../../ui/preferences.ui" line="348"></location>
+        <location filename="../../ui/preferences.ui" line="348"/>
         <source>Proxy type : </source>
-        <translation>Type de proxy : </translation>
+        <translation type="obsolete">Type de proxy : </translation>
     </message>
     <message>
-        <location filename="../../ui/preferences.ui" line="356"></location>
+        <location filename="../../ui/preferences.ui" line="356"/>
         <source>HTTP</source>
-        <translation>HTTP</translation>
+        <translation type="obsolete">HTTP</translation>
     </message>
     <message>
-        <location filename="../../ui/preferences.ui" line="361"></location>
+        <location filename="../../ui/preferences.ui" line="361"/>
         <source>SOCKS5</source>
-        <translation>SOCKS5</translation>
+        <translation type="obsolete">SOCKS5</translation>
     </message>
     <message>
-        <location filename="../../ui/preferences.ui" line="386"></location>
+        <location filename="../../ui/preferences.ui" line="345"/>
         <source>Proxy server address : </source>
         <translation>Adresse du serveur proxy : </translation>
     </message>
     <message>
-        <location filename="../../ui/preferences.ui" line="396"></location>
+        <location filename="../../ui/preferences.ui" line="355"/>
         <source>:</source>
         <translation>:</translation>
     </message>
+    <message>
+        <location filename="../../ui/preferences.ui" line="336"/>
+        <source>Use a http proxy server</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../ui/preferences.ui" line="379"/>
+        <source>Automatically refresh identities informations</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>ProcessConfigureAccount</name>
     <message>
-        <location filename="../../../src/cutecoin/gui/process_cfg_account.py" line="158"></location>
+        <location filename="../../../src/cutecoin/gui/process_cfg_account.py" line="158"/>
         <source>New account</source>
         <translation>Nouveau compte</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/process_cfg_account.py" line="165"></location>
+        <location filename="../../../src/cutecoin/gui/process_cfg_account.py" line="165"/>
         <source>Configure {0}</source>
         <translation>Configurer {0}</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/process_cfg_account.py" line="180"></location>
+        <location filename="../../../src/cutecoin/gui/process_cfg_account.py" line="180"/>
         <source>Ok</source>
         <translation>Ok</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/process_cfg_account.py" line="208"></location>
+        <location filename="../../../src/cutecoin/gui/process_cfg_account.py" line="208"/>
         <source>Public key</source>
         <translation type="obsolete">Clé publique</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/process_cfg_account.py" line="208"></location>
+        <location filename="../../../src/cutecoin/gui/process_cfg_account.py" line="208"/>
         <source>These parameters pubkeys are : {0}</source>
         <translation type="obsolete">Les paramètres de cette clé publique sont : {0}</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/process_cfg_account.py" line="238"></location>
+        <location filename="../../../src/cutecoin/gui/process_cfg_account.py" line="238"/>
         <source>Error</source>
         <translation>Erreur</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/process_cfg_account.py" line="215"></location>
+        <location filename="../../../src/cutecoin/gui/process_cfg_account.py" line="215"/>
         <source>Warning</source>
         <translation>Attention</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/process_cfg_account.py" line="215"></location>
+        <location filename="../../../src/cutecoin/gui/process_cfg_account.py" line="215"/>
         <source>This action will delete your account locally.
 Please note your key parameters (salt and password) if you wish to recover it later.
-Your account won't be removed from the networks it joined.
+Your account won&apos;t be removed from the networks it joined.
 Are you sure ?</source>
         <translation>Cette action supprimera votre compte localement.
 Veuillez noter les paramètres de votre clé (salage et mot de passe) si vous souhaitez le récupérer plus tard.
 Votre compte ne sera pas supprimer des réseaux rejoins.
-Êtes-vous sûr(e) ?</translation>
+Êtes vous sure ?</translation>
     </message>
 </context>
 <context>
     <name>ProcessConfigureCommunity</name>
     <message>
-        <location filename="../../../src/cutecoin/gui/process_cfg_community.py" line="206"></location>
+        <location filename="../../../src/cutecoin/gui/process_cfg_community.py" line="221"/>
         <source>Configure community {0}</source>
-        <translation>Configurer les paramètres de la communauté {0}</translation>
+        <translation>Configurer la communauté {0}</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/process_cfg_community.py" line="209"></location>
+        <location filename="../../../src/cutecoin/gui/process_cfg_community.py" line="224"/>
         <source>Add a community</source>
         <translation>Ajouter une communauté</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/process_cfg_community.py" line="243"></location>
+        <location filename="../../../src/cutecoin/gui/process_cfg_community.py" line="258"/>
         <source>Error</source>
         <translation>Erreur</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/process_cfg_community.py" line="272"></location>
+        <location filename="../../../src/cutecoin/gui/process_cfg_community.py" line="287"/>
         <source>Delete</source>
         <translation>Supprimer</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/process_cfg_community.py" line="230"></location>
+        <location filename="../../../src/cutecoin/gui/process_cfg_community.py" line="230"/>
         <source>Pubkey not found</source>
         <translation type="obsolete">Clé publique introuvable</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/process_cfg_community.py" line="230"></location>
-        <source>The public key of your account wasn't found in the community. :
+        <location filename="../../../src/cutecoin/gui/process_cfg_community.py" line="230"/>
+        <source>The public key of your account wasn&apos;t found in the community. :
 
 {0}
 
 Would you like to publish the key ?</source>
-        <translation type="obsolete">La clé publique de votre compte n'a pas été trouvée dans la communauté :
+        <translation type="obsolete">La clé publique de votre compte n&apos;a pas été trouvée dans la communauté :
 
 {0}
 
 Souhaitez-vous publier votre clé publique ?</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/process_cfg_community.py" line="204"></location>
-        <source>UID Publishing</source>
-        <translation type="obsolete">Publication de l'identifiant utilisateur</translation>
+        <location filename="../../../src/cutecoin/gui/process_cfg_community.py" line="209"/>
+        <source>Pubkey publishing error</source>
+        <translation type="obsolete">Erreur de publication</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/process_cfg_community.py" line="204"></location>
-        <source>Success publishing  your UID</source>
-        <translation type="obsolete">Publication de l’identifiant utilisateur réussite</translation>
+        <location filename="../../../src/cutecoin/gui/process_cfg_community.py" line="212"/>
+        <source>Network error</source>
+        <translation type="obsolete">Erreur réseau</translation>
+    </message>
+    <message>
+        <location filename="../../../src/cutecoin/gui/process_cfg_community.py" line="212"/>
+        <source>Couldn&apos;t connect to network : {0}</source>
+        <translation type="obsolete">Impossible de se connecter au réseau : {0}</translation>
+    </message>
+    <message>
+        <location filename="../../../src/cutecoin/gui/process_cfg_community.py" line="204"/>
+        <source>UID Publishing</source>
+        <translation type="obsolete">Publication de l&apos;UID</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/process_cfg_community.py" line="216"></location>
-        <source>{0} : {1}</source>
-        <translation type="obsolete">{0} : {1}</translation>
+        <location filename="../../../src/cutecoin/gui/process_cfg_community.py" line="204"/>
+        <source>Success publishing  your UID</source>
+        <translation type="obsolete">Publication de votre UID réussie</translation>
     </message>
 </context>
 <context>
     <name>Quantitative</name>
     <message>
-        <location filename="../../../src/cutecoin/core/money/quantitative.py" line="5"></location>
+        <location filename="../../../src/cutecoin/core/money/quantitative.py" line="5"/>
         <source>Units</source>
         <translation>Unités</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/core/money/quantitative.py" line="6"></location>
+        <location filename="../../../src/cutecoin/core/money/quantitative.py" line="6"/>
         <source>{0} {1}</source>
         <translation type="obsolete">{0} {1}</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/core/money/quantitative.py" line="7"></location>
+        <location filename="../../../src/cutecoin/core/money/quantitative.py" line="7"/>
         <source>{0}</source>
         <translation>{0}</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/core/money/quantitative.py" line="6"></location>
+        <location filename="../../../src/cutecoin/core/money/quantitative.py" line="6"/>
         <source>{0} {1}{2}</source>
-        <translation>{0} {1}{2}</translation>
+        <translation type="unfinished"></translation>
     </message>
 </context>
 <context>
     <name>QuantitativeZSum</name>
     <message>
-        <location filename="../../../src/cutecoin/core/money/quant_zerosum.py" line="6"></location>
+        <location filename="../../../src/cutecoin/core/money/quant_zerosum.py" line="6"/>
         <source>Quant Z-sum</source>
         <translation>Quant. som. 0</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/core/money/quant_zerosum.py" line="7"></location>
+        <location filename="../../../src/cutecoin/core/money/quant_zerosum.py" line="7"/>
         <source>{0} Q0 {1}</source>
         <translation>{0} Q0 {1}</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/core/money/quant_zerosum.py" line="8"></location>
+        <location filename="../../../src/cutecoin/core/money/quant_zerosum.py" line="8"/>
         <source>Q0 {0}</source>
         <translation>Q0 {0}</translation>
     </message>
@@ -1874,17 +2253,17 @@ Souhaitez-vous publier votre clé publique ?</translation>
 <context>
     <name>Relative</name>
     <message>
-        <location filename="../../../src/cutecoin/core/money/relative.py" line="5"></location>
+        <location filename="../../../src/cutecoin/core/money/relative.py" line="5"/>
         <source>UD</source>
         <translation>DU</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/core/money/relative.py" line="6"></location>
+        <location filename="../../../src/cutecoin/core/money/relative.py" line="6"/>
         <source>{0} {1}UD {2}</source>
         <translation>{0} {1}DU {2}</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/core/money/relative.py" line="7"></location>
+        <location filename="../../../src/cutecoin/core/money/relative.py" line="7"/>
         <source>UD {0}</source>
         <translation>DU {0}</translation>
     </message>
@@ -1892,17 +2271,17 @@ Souhaitez-vous publier votre clé publique ?</translation>
 <context>
     <name>RelativeZSum</name>
     <message>
-        <location filename="../../../src/cutecoin/core/money/relative_zerosum.py" line="6"></location>
+        <location filename="../../../src/cutecoin/core/money/relative_zerosum.py" line="6"/>
         <source>Relat Z-sum</source>
         <translation>Rel. som. 0</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/core/money/relative_zerosum.py" line="7"></location>
+        <location filename="../../../src/cutecoin/core/money/relative_zerosum.py" line="7"/>
         <source>{0} R0 {1}</source>
         <translation>{0} R0 {1}</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/core/money/relative_zerosum.py" line="8"></location>
+        <location filename="../../../src/cutecoin/core/money/relative_zerosum.py" line="8"/>
         <source>R0 {0}</source>
         <translation>R0 {0}</translation>
     </message>
@@ -1910,143 +2289,160 @@ Souhaitez-vous publier votre clé publique ?</translation>
 <context>
     <name>Scene</name>
     <message>
-        <location filename="../../../src/cutecoin/gui/views/wot.py" line="157"></location>
+        <location filename="../../../src/cutecoin/gui/views/wot.py" line="158"/>
         <source>Certification expires at {0}</source>
-        <translation>Expiration de la certification à {0}</translation>
+        <translation>Certification expire le {0}</translation>
     </message>
 </context>
 <context>
     <name>StepPageInit</name>
     <message>
-        <location filename="../../../src/cutecoin/gui/process_cfg_community.py" line="67"></location>
+        <location filename="../../../src/cutecoin/gui/process_cfg_community.py" line="93"/>
         <source>Could not find your identity on the network.</source>
-        <translation>Identité non trouvée sur le réseau.</translation>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/process_cfg_community.py" line="100"></location>
-        <source>Could not connect.</source>
-        <translation>Connexion impossible.</translation>
-    </message>
-    <message>
-        <location filename="../../../src/cutecoin/gui/process_cfg_community.py" line="92"></location>
+        <location filename="../../../src/cutecoin/gui/process_cfg_community.py" line="123"/>
         <source>Broadcasting identity...</source>
-        <translation>Diffusion de l’identité…</translation>
-    </message>
-    <message>
-        <location filename="../../../src/cutecoin/gui/process_cfg_community.py" line="98"></location>
-        <source>Pubkey already exists on the network</source>
-        <translation>Cette clée publique est déjà présente sur le réseau</translation>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/process_cfg_community.py" line="110"></location>
+        <location filename="../../../src/cutecoin/gui/process_cfg_community.py" line="127"/>
         <source>UID broadcast</source>
-        <translation>Identifiant utilisateur diffusé</translation>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/process_cfg_community.py" line="110"></location>
+        <location filename="../../../src/cutecoin/gui/process_cfg_community.py" line="127"/>
         <source>Identity broadcasted to the network</source>
-        <translation>Identité diffusée sur le réseau</translation>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/process_cfg_community.py" line="124"></location>
+        <location filename="../../../src/cutecoin/gui/process_cfg_community.py" line="134"/>
         <source>Error</source>
         <translation type="unfinished">Erreur</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/process_cfg_community.py" line="124"></location>
-        <source>{0} : {1}</source>
-        <translation type="unfinished">{0} : {1}</translation>
+        <location filename="../../../src/cutecoin/gui/process_cfg_community.py" line="134"/>
+        <source>{0}</source>
+        <translation type="unfinished">{0}</translation>
+    </message>
+    <message>
+        <location filename="../../../src/cutecoin/gui/process_cfg_community.py" line="138"/>
+        <source>Your pubkey or UID was already found on the network.
+Yours : {0}, the network : {1}</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../../src/cutecoin/gui/process_cfg_community.py" line="141"/>
+        <source>Your account already exists on the network</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../../src/cutecoin/gui/process_cfg_community.py" line="95"/>
+        <source>Your pubkey or UID is different on the network.
+    Yours : {0}, the network : {1}</source>
+        <translation type="unfinished"></translation>
     </message>
 </context>
 <context>
     <name>Toast</name>
     <message>
-        <location filename="../../ui/toast.ui" line="14"></location>
+        <location filename="../../ui/toast.ui" line="14"/>
         <source>MainWindow</source>
-        <translation>Fenêtre principale</translation>
+        <translation></translation>
     </message>
 </context>
 <context>
     <name>TransactionsTabWidget</name>
     <message>
-        <location filename="../../../src/cutecoin/gui/transactions_tab.py" line="151"></location>
+        <location filename="../../../src/cutecoin/gui/transactions_tab.py" line="170"/>
         <source>Actions</source>
         <translation>Actions</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/transactions_tab.py" line="166"></location>
+        <location filename="../../../src/cutecoin/gui/transactions_tab.py" line="185"/>
         <source>Send again</source>
         <translation>Renvoyer</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/transactions_tab.py" line="171"></location>
+        <location filename="../../../src/cutecoin/gui/transactions_tab.py" line="190"/>
         <source>Cancel</source>
         <translation>Annuler</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/transactions_tab.py" line="177"></location>
+        <location filename="../../../src/cutecoin/gui/transactions_tab.py" line="196"/>
         <source>Informations</source>
         <translation>Informations</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/transactions_tab.py" line="182"></location>
+        <location filename="../../../src/cutecoin/gui/transactions_tab.py" line="201"/>
         <source>Add as contact</source>
         <translation>Ajouter comme contact</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/transactions_tab.py" line="198"></location>
+        <location filename="../../../src/cutecoin/gui/transactions_tab.py" line="153"/>
+        <source>Send money to</source>
+        <translation type="obsolete">Envoyer de la monnaie à</translation>
+    </message>
+    <message>
+        <location filename="../../../src/cutecoin/gui/transactions_tab.py" line="159"/>
+        <source>View in WoT</source>
+        <translation type="obsolete">Voir dans la WoT</translation>
+    </message>
+    <message>
+        <location filename="../../../src/cutecoin/gui/transactions_tab.py" line="217"/>
         <source>Copy pubkey to clipboard</source>
         <translation>Copier la clé publique</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/transactions_tab.py" line="276"></location>
+        <location filename="../../../src/cutecoin/gui/transactions_tab.py" line="283"/>
         <source>Warning</source>
         <translation>Attention</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/transactions_tab.py" line="276"></location>
+        <location filename="../../../src/cutecoin/gui/transactions_tab.py" line="283"/>
         <source>Are you sure ?
 This money transfer will be removed and not sent.</source>
         <translation>Êtes vous certain ?
-Le transfert de monnaie sera annulé et ne sera pas envoyé.</translation>
+Le transfert de monnaie sera annulé et non envoyé.</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/transactions_tab.py" line="119"></location>
+        <location filename="../../../src/cutecoin/gui/transactions_tab.py" line="119"/>
         <source>&lt;b&gt;Deposits&lt;/b&gt; {:} {:}</source>
         <translation type="obsolete">&lt;b&gt;Crédit&lt;/b&gt; {:} {:}</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/transactions_tab.py" line="123"></location>
+        <location filename="../../../src/cutecoin/gui/transactions_tab.py" line="123"/>
         <source>&lt;b&gt;Payments&lt;/b&gt; {:} {:}</source>
         <translation type="obsolete">&lt;b&gt;Débit&lt;/b&gt; {:} {:}</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/transactions_tab.py" line="127"></location>
+        <location filename="../../../src/cutecoin/gui/transactions_tab.py" line="127"/>
         <source>&lt;b&gt;Balance&lt;/b&gt; {:} {:}</source>
-        <translation type="obsolete">&lt;b&gt;Solde&lt;/b&gt; {:} {:}</translation>
+        <translation type="obsolete">&lt;b&gt;Balance&lt;/b&gt; {:} {:}</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/transactions_tab.py" line="187"></location>
+        <location filename="../../../src/cutecoin/gui/transactions_tab.py" line="206"/>
         <source>Send money</source>
         <translation>Envoyer de la monnaie</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/transactions_tab.py" line="193"></location>
+        <location filename="../../../src/cutecoin/gui/transactions_tab.py" line="212"/>
         <source>View in Web of Trust</source>
-        <translation>Visualiser sur la toile de confiance</translation>
+        <translation>Voir dans la Toile de Confiance</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/transactions_tab.py" line="118"></location>
+        <location filename="../../../src/cutecoin/gui/transactions_tab.py" line="135"/>
         <source>Received {0} {1} from {2} transfers</source>
-        <translation>Réception de {0} {1} provenants de {2} transfers</translation>
+        <translation>Reception de {0} {1} dans {2} transferts</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/transactions_tab.py" line="122"></location>
+        <location filename="../../../src/cutecoin/gui/transactions_tab.py" line="139"/>
         <source>New transactions received</source>
         <translation>Nouveaux transferts reçus</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/transactions_tab.py" line="137"></location>
+        <location filename="../../../src/cutecoin/gui/transactions_tab.py" line="155"/>
         <source>{:}</source>
         <translation type="unfinished">{:}</translation>
     </message>
@@ -2054,314 +2450,389 @@ Le transfert de monnaie sera annulé et ne sera pas envoyé.</translation>
 <context>
     <name>TransferMoneyDialog</name>
     <message>
-        <location filename="../../ui/transfer.ui" line="14"></location>
+        <location filename="../../ui/transfer.ui" line="14"/>
         <source>Transfer money</source>
         <translation>Transfert de monnaie</translation>
     </message>
     <message>
-        <location filename="../../ui/transfer.ui" line="20"></location>
+        <location filename="../../ui/transfer.ui" line="20"/>
         <source>Community</source>
         <translation>Communauté</translation>
     </message>
     <message>
-        <location filename="../../ui/transfer.ui" line="32"></location>
+        <location filename="../../ui/transfer.ui" line="32"/>
         <source>Transfer money to</source>
         <translation>Transférer de la monnaie à</translation>
     </message>
     <message>
-        <location filename="../../ui/transfer.ui" line="40"></location>
+        <location filename="../../ui/transfer.ui" line="40"/>
         <source>Contact</source>
-        <translation>Contact</translation>
+        <translation type="obsolete">Contact</translation>
+    </message>
+    <message>
+        <location filename="../../ui/transfer.ui" line="61"/>
+        <source>Recipient public key</source>
+        <translation type="obsolete">Clé publique du receveur</translation>
     </message>
     <message>
-        <location filename="../../ui/transfer.ui" line="80"></location>
+        <location filename="../../ui/transfer.ui" line="80"/>
         <source>Key</source>
         <translation>Clé</translation>
     </message>
     <message>
-        <location filename="../../ui/transfer.ui" line="148"></location>
+        <location filename="../../ui/transfer.ui" line="106"/>
+        <source>Wallet :</source>
+        <translation type="obsolete">Portefeuille :</translation>
+    </message>
+    <message>
+        <location filename="../../ui/transfer.ui" line="125"/>
+        <source>Availalble currency : </source>
+        <translation type="obsolete">Monnaie disponible :</translation>
+    </message>
+    <message>
+        <location filename="../../ui/transfer.ui" line="134"/>
+        <source>Amount :</source>
+        <translation type="obsolete">Montant :</translation>
+    </message>
+    <message>
+        <location filename="../../ui/transfer.ui" line="148"/>
         <source> UD</source>
-        <translation> DU</translation>
+        <translation>DU</translation>
     </message>
     <message>
-        <location filename="../../ui/transfer.ui" line="166"></location>
+        <location filename="../../ui/transfer.ui" line="166"/>
         <source>Transaction message</source>
         <translation>Message</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/transfer.py" line="77"></location>
+        <location filename="../../../src/cutecoin/gui/transfer.py" line="106"/>
         <source>Money transfer</source>
         <translation>Transfert de monnaie</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/transfer.py" line="77"></location>
+        <location filename="../../../src/cutecoin/gui/transfer.py" line="106"/>
         <source>No amount. Please give the transfert amount</source>
         <translation>Pas de montant. Veuillez entrer un montant</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/transfer.py" line="111"></location>
-        <source>Error</source>
-        <translation>Erreur</translation>
+        <location filename="../../../src/cutecoin/gui/transfer.py" line="78"/>
+        <source>Success transfering {0} {1} to {2}</source>
+        <translation type="obsolete">Succès lors de l&apos;envoi de {0} {1} pour {2}</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/transfer.py" line="99"></location>
-        <source>Transfer</source>
-        <translation>Transfert</translation>
+        <location filename="../../../src/cutecoin/gui/transfer.py" line="83"/>
+        <source>Something wrong happened : {0}</source>
+        <translation type="obsolete">Une erreur a été rencontrée : {0}</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/transfer.py" line="99"></location>
-        <source>Success sending money to {0}</source>
-        <translation>Monaie envoyée à {0}</translation>
+        <location filename="../../../src/cutecoin/gui/transfer.py" line="88"/>
+        <source>This transaction could not be sent on this block
+Please try again later</source>
+        <translation type="obsolete">Ce transfert ne peut être envoyer sur ce bloc.
+Veuillez rééssayer plus tard</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/transfer.py" line="111"></location>
-        <source>{0} : {1}</source>
-        <translation>{0} : {1}</translation>
+        <location filename="../../../src/cutecoin/gui/transfer.py" line="92"/>
+        <source>Couldn&apos;t connect to network : {0}</source>
+        <translation type="obsolete">Impossible de se connecter au réseau : {0}</translation>
     </message>
     <message>
-        <location filename="../../ui/transfer.ui" line="61"></location>
-        <source>&amp;Recipient public key</source>
-        <translation>Clé publique du &amp;destinataire</translation>
+        <location filename="../../../src/cutecoin/gui/transfer.py" line="103"/>
+        <source>Error</source>
+        <translation type="obsolete">Erreur</translation>
+    </message>
+    <message>
+        <location filename="../../../src/cutecoin/gui/transfer.py" line="137"/>
+        <source>Transfer</source>
+        <translation>Transfert</translation>
+    </message>
+    <message>
+        <location filename="../../../src/cutecoin/gui/transfer.py" line="124"/>
+        <source>Success sending money to {0}</source>
+        <translation>Envoi de monnaie à {0} réussi</translation>
     </message>
     <message>
-        <location filename="../../ui/transfer.ui" line="106"></location>
+        <location filename="../../ui/transfer.ui" line="106"/>
         <source>Wallet</source>
         <translation>Portefeuille</translation>
     </message>
     <message>
-        <location filename="../../ui/transfer.ui" line="125"></location>
+        <location filename="../../ui/transfer.ui" line="125"/>
         <source>Available money : </source>
-        <translation>Monnaie disponible : </translation>
+        <translation>Monnaie disponible</translation>
     </message>
     <message>
-        <location filename="../../ui/transfer.ui" line="134"></location>
+        <location filename="../../ui/transfer.ui" line="134"/>
         <source>Amount</source>
         <translation>Montant</translation>
     </message>
+    <message>
+        <location filename="../../ui/transfer.ui" line="61"/>
+        <source>&amp;Recipient public key</source>
+        <translation>Clé publique du receveur</translation>
+    </message>
+    <message>
+        <location filename="../../ui/transfer.ui" line="40"/>
+        <source>Con&amp;tact</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>TxFilterProxyModel</name>
     <message>
-        <location filename="../../../src/cutecoin/models/txhistory.py" line="158"></location>
+        <location filename="../../../src/cutecoin/models/txhistory.py" line="162"/>
         <source>{0} / {1} validations</source>
-        <translation>{0} / {1} validations</translation>
+        <translation type="obsolete">{0} / {1} validations</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/models/txhistory.py" line="162"></location>
+        <location filename="../../../src/cutecoin/models/txhistory.py" line="166"/>
         <source>Validating... {0} %</source>
-        <translation>Validation en cours... {0} %</translation>
+        <translation type="obsolete">Validation en cours... {0} %</translation>
+    </message>
+    <message>
+        <location filename="../../../src/cutecoin/models/txhistory.py" line="165"/>
+        <source>{0} / {1} confirmations</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../../src/cutecoin/models/txhistory.py" line="169"/>
+        <source>Confirming... {0} %</source>
+        <translation type="unfinished"></translation>
     </message>
 </context>
 <context>
     <name>WalletsTab</name>
     <message>
-        <location filename="../../ui/wallets_tab.ui" line="14"></location>
+        <location filename="../../ui/wallets_tab.ui" line="14"/>
         <source>Form</source>
-        <translation>Formulaire</translation>
+        <translation></translation>
     </message>
     <message>
-        <location filename="../../ui/wallets_tab.ui" line="43"></location>
+        <location filename="../../ui/wallets_tab.ui" line="43"/>
         <source>Account</source>
         <translation type="obsolete">Compte</translation>
     </message>
     <message>
-        <location filename="../../ui/wallets_tab.ui" line="34"></location>
+        <location filename="../../ui/wallets_tab.ui" line="34"/>
         <source>Balance</source>
         <translation>Solde</translation>
     </message>
     <message>
-        <location filename="../../ui/wallets_tab.ui" line="47"></location>
+        <location filename="../../ui/wallets_tab.ui" line="47"/>
         <source>label_balance</source>
         <translation></translation>
     </message>
     <message>
-        <location filename="../../ui/wallets_tab.ui" line="86"></location>
+        <location filename="../../ui/wallets_tab.ui" line="86"/>
         <source>Publish UID</source>
-        <translation type="obsolete">Publier votre identifiant utilisateur</translation>
+        <translation type="obsolete">Publier votre UID</translation>
     </message>
     <message>
-        <location filename="../../ui/wallets_tab.ui" line="93"></location>
+        <location filename="../../ui/wallets_tab.ui" line="93"/>
         <source>Revoke UID</source>
-        <translation type="obsolete">Révoquer votre identifiant utilisateur</translation>
+        <translation type="obsolete">Révoquer votre UID</translation>
     </message>
     <message>
-        <location filename="../../ui/wallets_tab.ui" line="100"></location>
+        <location filename="../../ui/wallets_tab.ui" line="100"/>
         <source>Renew membership</source>
-        <translation type="obsolete">Renouveler votre adhésion</translation>
+        <translation type="obsolete">Renouveller le statut de membre</translation>
     </message>
     <message>
-        <location filename="../../ui/wallets_tab.ui" line="107"></location>
+        <location filename="../../ui/wallets_tab.ui" line="107"/>
         <source>Send leaving demand</source>
-        <translation type="obsolete">Demander de quitter la communauté</translation>
+        <translation type="obsolete">Quitter la communauté</translation>
     </message>
     <message>
-        <location filename="../../ui/wallets_tab.ui" line="57"></location>
+        <location filename="../../ui/wallets_tab.ui" line="57"/>
         <source>label_balance_range</source>
-        <translation>label_balance_range</translation>
+        <translation></translation>
     </message>
 </context>
 <context>
     <name>WalletsTabWidget</name>
     <message>
-        <location filename="../../../src/cutecoin/gui/wallets_tab.py" line="88"></location>
+        <location filename="../../../src/cutecoin/gui/wallets_tab.py" line="88"/>
         <source>Membership</source>
-        <translation type="obsolete">Adhésion</translation>
+        <translation type="obsolete">Statut de membre</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/wallets_tab.py" line="106"></location>
+        <location filename="../../../src/cutecoin/gui/wallets_tab.py" line="106"/>
         <source>Last renewal on {:}, expiration on {:}</source>
         <translation type="obsolete">Dernier renouvellement le {:}, expire le {:}</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/wallets_tab.py" line="124"></location>
+        <location filename="../../../src/cutecoin/gui/wallets_tab.py" line="124"/>
         <source>Not a member</source>
         <translation type="obsolete">Non-membre</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/wallets_tab.py" line="183"></location>
+        <location filename="../../../src/cutecoin/gui/wallets_tab.py" line="118"/>
+        <source>{:} {:} in [{:.2f} - {:}] {:}</source>
+        <translation type="obsolete">{:} {:} compris dans [{:.2f} - {:}] {:}</translation>
+    </message>
+    <message>
+        <location filename="../../../src/cutecoin/gui/wallets_tab.py" line="183"/>
         <source>Rename</source>
         <translation type="obsolete">Renommer</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/wallets_tab.py" line="187"></location>
+        <location filename="../../../src/cutecoin/gui/wallets_tab.py" line="187"/>
         <source>Copy pubkey to clipboard</source>
         <translation type="obsolete">Copier la clé publique</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/wallets_tab.py" line="192"></location>
+        <location filename="../../../src/cutecoin/gui/wallets_tab.py" line="192"/>
         <source>Transfer to...</source>
         <translation type="obsolete">Transférer à...</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/wallets_tab.py" line="124"></location>
+        <location filename="../../../src/cutecoin/gui/wallets_tab.py" line="124"/>
         <source>Your web of trust</source>
         <translation type="obsolete">Votre toile de confiance</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/wallets_tab.py" line="180"></location>
+        <location filename="../../../src/cutecoin/gui/wallets_tab.py" line="134"/>
+        <source>Your money share </source>
+        <translation type="obsolete">Votre part de monnaie</translation>
+    </message>
+    <message>
+        <location filename="../../../src/cutecoin/gui/wallets_tab.py" line="134"/>
+        <source>Your part </source>
+        <translation type="obsolete">Votre part</translation>
+    </message>
+    <message>
+        <location filename="../../../src/cutecoin/gui/wallets_tab.py" line="180"/>
         <source>New Wallet</source>
-        <translation type="obsolete">Nouveau porte-monnaie</translation>
+        <translation type="obsolete">Nouveau portefeuille</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/wallets_tab.py" line="124"></location>
+        <location filename="../../../src/cutecoin/gui/wallets_tab.py" line="124"/>
         <source>Certified by {:} members; Certifier of {:} members</source>
-        <translation type="obsolete">Certifié par {:} membres ; a certifié {:} membres</translation>
+        <translation type="obsolete">Certifié par {:} membres; Certifieur de {:} membres</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/wallets_tab.py" line="138"></location>
-        <source>{:} {:}</source>
-        <translation type="obsolete">{:} {:}</translation>
+        <location filename="../../../src/cutecoin/gui/wallets_tab.py" line="118"/>
+        <source>{:} {:} in [{:.2f} ; {:}] {:}</source>
+        <translation type="obsolete">{:} {:} compris entre [{:.2f} ; {:}] {:}</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/wallets_tab.py" line="145"></location>
-        <source>in [{:} ; {:}] {:}</source>
-        <translation type="obsolete">dans [{:} ; {:}] {:}</translation>
+        <location filename="../../../src/cutecoin/gui/wallets_tab.py" line="134"/>
+        <source>{:} {:} in [{:} ; {:}] {:}</source>
+        <translation type="obsolete">{:} {:} compris entre [{:} ; {:}] {:}</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/wallets_tab.py" line="305"></location>
+        <location filename="../../../src/cutecoin/gui/wallets_tab.py" line="138"/>
+        <source>&lt;center&gt;&lt;b&gt;{:} {:} in [{:} ; {:}] {:}&lt;/b&gt;&lt;/center&gt;</source>
+        <translation type="obsolete">&lt;center&gt;&lt;b&gt;{:} {:} compris entre [{:} ; {:}] {:}&lt;/b&gt;&lt;/center&gt;</translation>
+    </message>
+    <message>
+        <location filename="../../../src/cutecoin/gui/wallets_tab.py" line="305"/>
         <source>Warning</source>
         <translation type="obsolete">Attention</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/wallets_tab.py" line="266"></location>
+        <location filename="../../../src/cutecoin/gui/wallets_tab.py" line="266"/>
         <source>Are you sure ?
 Sending a leaving demand  cannot be canceled.
 The process to join back the community later will have to be done again.</source>
         <translation type="obsolete">Êtes vous certain ?
 Envoyer une demande pour quitter la communauté ne peut être annulée.
-Le processus pour rejoindre la communauté devra être refait de zéro.</translation>
+Le processus pour rejoindre la communauté devrait être refait à zéro.</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/wallets_tab.py" line="279"></location>
+        <location filename="../../../src/cutecoin/gui/wallets_tab.py" line="279"/>
         <source>Are you sure ?
 Publishing your UID can be canceled by Revoke UID.</source>
-        <translation type="obsolete">Êtes-vous sûr(e) ?
-Publier votre identifiant utilisateur peut être annulé par le bouton “Révoquer votre identifiant utilisateur”.</translation>
+        <translation type="obsolete">Etes-vous sûr(e) ? Publier votre UID peut être annulé par le bouton Révoquer votre UID.</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/wallets_tab.py" line="290"></location>
+        <location filename="../../../src/cutecoin/gui/wallets_tab.py" line="290"/>
         <source>UID Publishing</source>
-        <translation type="obsolete">Publication de l'identifiant utilisateur</translation>
+        <translation type="obsolete">Publication de l&apos;UID</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/wallets_tab.py" line="290"></location>
+        <location filename="../../../src/cutecoin/gui/wallets_tab.py" line="290"/>
         <source>Success publishing your UID</source>
-        <translation type="obsolete">Succès lors de la publication de votre identifiant utilisateur</translation>
+        <translation type="obsolete">Publication de votre UID réussie</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/wallets_tab.py" line="293"></location>
+        <location filename="../../../src/cutecoin/gui/wallets_tab.py" line="293"/>
         <source>Publish UID error</source>
-        <translation type="obsolete">Erreur de publication de votre identifiant utilisateur</translation>
+        <translation type="obsolete">Publier votre UID</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/wallets_tab.py" line="296"></location>
+        <location filename="../../../src/cutecoin/gui/wallets_tab.py" line="296"/>
         <source>Network error</source>
         <translation type="obsolete">Erreur réseau</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/wallets_tab.py" line="296"></location>
-        <source>Couldn't connect to network : {0}</source>
+        <location filename="../../../src/cutecoin/gui/wallets_tab.py" line="296"/>
+        <source>Couldn&apos;t connect to network : {0}</source>
         <translation type="obsolete">Impossible de se connecter au réseau : {0}</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/wallets_tab.py" line="305"></location>
+        <location filename="../../../src/cutecoin/gui/wallets_tab.py" line="305"/>
         <source>Are you sure ?
 Revoking your UID can only success if it is not already validated by the network.</source>
-        <translation type="obsolete">Êtes-vous sûr(e) ?
-Révoquer votre identifiant utilisateur peut fonctionner que s'il n'a pas déjà été validé par le réseau.</translation>
+        <translation type="obsolete">Etes-vous sûr(e) ? Révoquer votre UID ne peut réussir que s&apos;il n&apos;a pas été déjà validé par le réseau.</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/wallets_tab.py" line="321"></location>
+        <location filename="../../../src/cutecoin/gui/wallets_tab.py" line="321"/>
         <source>Renew membership</source>
-        <translation type="obsolete">Renouveler votre adhésion</translation>
+        <translation type="obsolete">Renouveller le statut de membre</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/wallets_tab.py" line="328"></location>
+        <location filename="../../../src/cutecoin/gui/wallets_tab.py" line="328"/>
         <source>Send membership demand</source>
-        <translation type="obsolete">Envoyer une demande d'adhésion</translation>
+        <translation type="obsolete">Envoyer une demande de membre</translation>
+    </message>
+    <message>
+        <location filename="../../../src/cutecoin/gui/wallets_tab.py" line="145"/>
+        <source>in [{:} ; {:}] {:}</source>
+        <translation type="obsolete">compris entre [{:} ; {:}] {:}</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/wallets_tab.py" line="106"></location>
+        <location filename="../../../src/cutecoin/gui/wallets_tab.py" line="106"/>
         <source>
-                    &lt;table cellpadding="5"&gt;
-                    &lt;tr&gt;&lt;td align="right"&gt;&lt;b&gt;{:}&lt;/b&gt;&lt;/td&gt;&lt;td&gt;{:}&lt;/td&gt;&lt;/tr&gt;
-                    &lt;tr&gt;&lt;td align="right"&gt;&lt;b&gt;{:}&lt;/b&gt;&lt;/td&gt;&lt;td&gt;{:}&lt;/td&gt;&lt;/tr&gt;
-                    &lt;tr&gt;&lt;td align="right"&gt;&lt;b&gt;{:}&lt;/b&gt;&lt;/td&gt;&lt;td&gt;{:}&lt;/td&gt;&lt;/tr&gt;
+                    &lt;table cellpadding=&quot;5&quot;&gt;
+                    &lt;tr&gt;&lt;td align=&quot;right&quot;&gt;&lt;b&gt;{:}&lt;/b&gt;&lt;/td&gt;&lt;td&gt;{:}&lt;/td&gt;&lt;/tr&gt;
+                    &lt;tr&gt;&lt;td align=&quot;right&quot;&gt;&lt;b&gt;{:}&lt;/b&gt;&lt;/td&gt;&lt;td&gt;{:}&lt;/td&gt;&lt;/tr&gt;
+                    &lt;tr&gt;&lt;td align=&quot;right&quot;&gt;&lt;b&gt;{:}&lt;/b&gt;&lt;/td&gt;&lt;td&gt;{:}&lt;/td&gt;&lt;/tr&gt;
                     &lt;/table&gt;
                     </source>
         <translation type="obsolete">
-                    &lt;table cellpadding="5"&gt;
-                    &lt;tr&gt;&lt;td align="right"&gt;&lt;b&gt;{:}&lt;/b&gt;&lt;/td&gt;&lt;td&gt;{:}&lt;/td&gt;&lt;/tr&gt;
-                    &lt;tr&gt;&lt;td align="right"&gt;&lt;b&gt;{:}&lt;/b&gt;&lt;/td&gt;&lt;td&gt;{:}&lt;/td&gt;&lt;/tr&gt;
-                    &lt;tr&gt;&lt;td align="right"&gt;&lt;b&gt;{:}&lt;/b&gt;&lt;/td&gt;&lt;td&gt;{:}&lt;/td&gt;&lt;/tr&gt;
+                    &lt;table cellpadding=&quot;5&quot;&gt;
+                    &lt;tr&gt;&lt;td align=&quot;right&quot;&gt;&lt;b&gt;{:}&lt;/b&gt;&lt;/td&gt;&lt;td&gt;{:}&lt;/td&gt;&lt;/tr&gt;
+                    &lt;tr&gt;&lt;td align=&quot;right&quot;&gt;&lt;b&gt;{:}&lt;/b&gt;&lt;/td&gt;&lt;td&gt;{:}&lt;/td&gt;&lt;/tr&gt;
+                    &lt;tr&gt;&lt;td align=&quot;right&quot;&gt;&lt;b&gt;{:}&lt;/b&gt;&lt;/td&gt;&lt;td&gt;{:}&lt;/td&gt;&lt;/tr&gt;
                     &lt;/table&gt;
                     </translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/wallets_tab.py" line="149"></location>
+        <location filename="../../../src/cutecoin/gui/wallets_tab.py" line="149"/>
         <source>{:}</source>
         <translation type="obsolete">{:}</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/wallets_tab.py" line="155"></location>
+        <location filename="../../../src/cutecoin/gui/wallets_tab.py" line="155"/>
         <source>in [{:} ; {:}]</source>
-        <translation type="obsolete">compris dans [{:} ; {:}]</translation>
+        <translation type="obsolete">in [{:} ; {:}]</translation>
     </message>
 </context>
 <context>
     <name>WalletsTableModel</name>
     <message>
-        <location filename="../../../src/cutecoin/models/wallets.py" line="72"></location>
+        <location filename="../../../src/cutecoin/models/wallets.py" line="72"/>
         <source>Name</source>
         <translation>Nom</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/models/wallets.py" line="72"></location>
+        <location filename="../../../src/cutecoin/models/wallets.py" line="72"/>
         <source>Amount</source>
         <translation>Montant</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/models/wallets.py" line="72"></location>
+        <location filename="../../../src/cutecoin/models/wallets.py" line="72"/>
         <source>Pubkey</source>
         <translation>Clé publique</translation>
     </message>
@@ -2369,133 +2840,136 @@ Révoquer votre identifiant utilisateur peut fonctionner que s'il n'a pas déjà
 <context>
     <name>WoT.Node</name>
     <message>
-        <location filename="../../../src/cutecoin/gui/views/wot.py" line="290"></location>
+        <location filename="../../../src/cutecoin/gui/views/wot.py" line="294"/>
         <source>Informations</source>
         <translation>Informations</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/views/wot.py" line="295"></location>
+        <location filename="../../../src/cutecoin/gui/views/wot.py" line="299"/>
         <source>Add as contact</source>
         <translation>Ajouter comme contact</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/views/wot.py" line="300"></location>
+        <location filename="../../../src/cutecoin/gui/views/wot.py" line="304"/>
         <source>Send money</source>
-        <translation>Envoyer de la monnaie</translation>
+        <translation>Envoyer de l&apos;argent</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/views/wot.py" line="305"></location>
+        <location filename="../../../src/cutecoin/gui/views/wot.py" line="309"/>
         <source>Certify identity</source>
         <translation>Certifier cette identité</translation>
     </message>
+    <message>
+        <location filename="../../../src/cutecoin/gui/views/wot.py" line="314"/>
+        <source>Copy pubkey</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>WotTabWidget</name>
     <message>
-        <location filename="../../ui/wot_tab.ui" line="14"></location>
+        <location filename="../../ui/wot_tab.ui" line="14"/>
         <source>Form</source>
-        <translation>Formulaire</translation>
+        <translation></translation>
     </message>
     <message>
-        <location filename="../../ui/wot_tab.ui" line="33"></location>
-        <source>Center the view on me</source>
-        <translation>Centrer la vue sur moi-même</translation>
+        <location filename="../../ui/wot_tab.ui" line="33"/>
+        <source>Me</source>
+        <translation type="obsolete">Moi</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/wot_tab.py" line="33"></location>
+        <location filename="../../../src/cutecoin/gui/wot_tab.py" line="37"/>
         <source>Research a pubkey, an uid...</source>
-        <translation>Rechercher une clé publique, un identifiant utilisateur…</translation>
+        <translation>Rechercher une clé publique, un uid...</translation>
+    </message>
+    <message>
+        <location filename="../../ui/wot_tab.ui" line="33"/>
+        <source>Center the view on me</source>
+        <translation>Centrer la vue sur moi</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/wot_tab.py" line="123"></location>
+        <location filename="../../../src/cutecoin/gui/wot_tab.py" line="141"/>
         <source>
-                    &lt;table cellpadding="5"&gt;
-                    &lt;tr&gt;&lt;td align="right"&gt;&lt;b&gt;{:}&lt;/b&gt;&lt;/td&gt;&lt;td&gt;{:}&lt;/td&gt;&lt;/tr&gt;
-                    &lt;tr&gt;&lt;td align="right"&gt;&lt;b&gt;{:}&lt;/b&gt;&lt;/td&gt;&lt;td&gt;{:}&lt;/td&gt;&lt;/tr&gt;
-                    &lt;tr&gt;&lt;td align="right"&gt;&lt;b&gt;{:}&lt;/b&gt;&lt;/td&gt;&lt;td&gt;{:}&lt;/td&gt;&lt;/tr&gt;
+                    &lt;table cellpadding=&quot;5&quot;&gt;
+                    &lt;tr&gt;&lt;td align=&quot;right&quot;&gt;&lt;b&gt;{:}&lt;/b&gt;&lt;/td&gt;&lt;td&gt;{:}&lt;/td&gt;&lt;/tr&gt;
+                    &lt;tr&gt;&lt;td align=&quot;right&quot;&gt;&lt;b&gt;{:}&lt;/b&gt;&lt;/td&gt;&lt;td&gt;{:}&lt;/td&gt;&lt;/tr&gt;
+                    &lt;tr&gt;&lt;td align=&quot;right&quot;&gt;&lt;b&gt;{:}&lt;/b&gt;&lt;/td&gt;&lt;td&gt;{:}&lt;/td&gt;&lt;/tr&gt;
                     &lt;/table&gt;
                     </source>
         <translation type="unfinished">
-                    &lt;table cellpadding="5"&gt;
-                    &lt;tr&gt;&lt;td align="right"&gt;&lt;b&gt;{:}&lt;/b&gt;&lt;/td&gt;&lt;td&gt;{:}&lt;/td&gt;&lt;/tr&gt;
-                    &lt;tr&gt;&lt;td align="right"&gt;&lt;b&gt;{:}&lt;/b&gt;&lt;/td&gt;&lt;td&gt;{:}&lt;/td&gt;&lt;/tr&gt;
-                    &lt;tr&gt;&lt;td align="right"&gt;&lt;b&gt;{:}&lt;/b&gt;&lt;/td&gt;&lt;td&gt;{:}&lt;/td&gt;&lt;/tr&gt;
+                    &lt;table cellpadding=&quot;5&quot;&gt;
+                    &lt;tr&gt;&lt;td align=&quot;right&quot;&gt;&lt;b&gt;{:}&lt;/b&gt;&lt;/td&gt;&lt;td&gt;{:}&lt;/td&gt;&lt;/tr&gt;
+                    &lt;tr&gt;&lt;td align=&quot;right&quot;&gt;&lt;b&gt;{:}&lt;/b&gt;&lt;/td&gt;&lt;td&gt;{:}&lt;/td&gt;&lt;/tr&gt;
+                    &lt;tr&gt;&lt;td align=&quot;right&quot;&gt;&lt;b&gt;{:}&lt;/b&gt;&lt;/td&gt;&lt;td&gt;{:}&lt;/td&gt;&lt;/tr&gt;
                     &lt;/table&gt;
                     </translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/wot_tab.py" line="105"></location>
+        <location filename="../../../src/cutecoin/gui/wot_tab.py" line="123"/>
         <source>Membership</source>
-        <translation type="unfinished">Adhésion</translation>
+        <translation type="unfinished">Statut de membre</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/wot_tab.py" line="123"></location>
+        <location filename="../../../src/cutecoin/gui/wot_tab.py" line="141"/>
         <source>Last renewal on {:}, expiration on {:}</source>
         <translation type="unfinished">Dernier renouvellement le {:}, expire le {:}</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/wot_tab.py" line="141"></location>
+        <location filename="../../../src/cutecoin/gui/wot_tab.py" line="159"/>
         <source>Your web of trust</source>
         <translation type="unfinished">Votre toile de confiance</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/wot_tab.py" line="141"></location>
+        <location filename="../../../src/cutecoin/gui/wot_tab.py" line="159"/>
         <source>Certified by {:} members; Certifier of {:} members</source>
-        <translation type="unfinished">Certifié par {:} membres ; a certifié {:} membres</translation>
+        <translation type="unfinished">Certifié par {:} membres; Certifieur de {:} membres</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/wot_tab.py" line="141"></location>
+        <location filename="../../../src/cutecoin/gui/wot_tab.py" line="159"/>
         <source>Not a member</source>
         <translation type="unfinished">Non-membre</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/wot_tab.py" line="141"></location>
+        <location filename="../../../src/cutecoin/gui/wot_tab.py" line="159"/>
         <source>
-                &lt;table cellpadding="5"&gt;
-                &lt;tr&gt;&lt;td align="right"&gt;&lt;b&gt;{:}&lt;/b&gt;&lt;/td&gt;&lt;td&gt;{:}&lt;/td&gt;&lt;/tr&gt;
-                &lt;tr&gt;&lt;td align="right"&gt;&lt;b&gt;{:}&lt;/b&gt;&lt;/td&gt;&lt;/tr&gt;
-                &lt;tr&gt;&lt;td align="right"&gt;&lt;b&gt;{:}&lt;/b&gt;&lt;/td&gt;&lt;td&gt;{:}&lt;/td&gt;&lt;/tr&gt;
+                &lt;table cellpadding=&quot;5&quot;&gt;
+                &lt;tr&gt;&lt;td align=&quot;right&quot;&gt;&lt;b&gt;{:}&lt;/b&gt;&lt;/td&gt;&lt;td&gt;{:}&lt;/td&gt;&lt;/tr&gt;
+                &lt;tr&gt;&lt;td align=&quot;right&quot;&gt;&lt;b&gt;{:}&lt;/b&gt;&lt;/td&gt;&lt;/tr&gt;
+                &lt;tr&gt;&lt;td align=&quot;right&quot;&gt;&lt;b&gt;{:}&lt;/b&gt;&lt;/td&gt;&lt;td&gt;{:}&lt;/td&gt;&lt;/tr&gt;
                 &lt;/table&gt;
                 </source>
-        <translation>
-                ↵
-                &lt;table cellpadding="5"&gt;↵
-                &lt;tr&gt;&lt;td align="right"&gt;&lt;b&gt;{:}&lt;/b&gt;&lt;/td&gt;&lt;td&gt;{:}&lt;/td&gt;&lt;/tr&gt;↵
-                &lt;tr&gt;&lt;td align="right"&gt;&lt;b&gt;{:}&lt;/b&gt;&lt;/td&gt;&lt;/tr&gt;↵
-                &lt;tr&gt;&lt;td align="right"&gt;&lt;b&gt;{:}&lt;/b&gt;&lt;/td&gt;&lt;td&gt;{:}&lt;/td&gt;&lt;/tr&gt;↵
-                &lt;/table&gt;↵
-                </translation>
+        <translation type="unfinished"></translation>
     </message>
 </context>
 <context>
     <name>self.config_dialog</name>
     <message>
-        <location filename="../../../src/cutecoin/gui/process_cfg_community.py" line="170"></location>
+        <location filename="../../../src/cutecoin/gui/process_cfg_community.py" line="185"/>
         <source>Ok</source>
         <translation>Ok</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/process_cfg_account.py" line="68"></location>
+        <location filename="../../../src/cutecoin/gui/process_cfg_account.py" line="68"/>
         <source>Forbidden : salt is too short</source>
         <translation>Interdit : le sel est trop court</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/process_cfg_account.py" line="72"></location>
+        <location filename="../../../src/cutecoin/gui/process_cfg_account.py" line="72"/>
         <source>Forbidden : password is too short</source>
-        <translation>Interdit : le mot de passe est trop court</translation>
+        <translation>Interdit : Le mot de passe est trop court</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/process_cfg_account.py" line="76"></location>
+        <location filename="../../../src/cutecoin/gui/process_cfg_account.py" line="76"/>
         <source>Forbidden : Invalid characters in salt field</source>
-        <translation>Interdit : caractères invalides dans le sel</translation>
+        <translation>Interdit : Caractères invalides dans le sel</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/process_cfg_account.py" line="80"></location>
+        <location filename="../../../src/cutecoin/gui/process_cfg_account.py" line="80"/>
         <source>Forbidden : Invalid characters in password field</source>
-        <translation>Interdit : caractères invalides dans le mot de passe</translation>
+        <translation>Interdit : Caractères invalides dans le mot de passe</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/process_cfg_account.py" line="86"></location>
+        <location filename="../../../src/cutecoin/gui/process_cfg_account.py" line="86"/>
         <source>Error : passwords are different</source>
         <translation>Erreur : les mots de passes sont différents</translation>
     </message>
@@ -2503,39 +2977,39 @@ Révoquer votre identifiant utilisateur peut fonctionner que s'il n'a pas déjà
 <context>
     <name>transactionsTabWidget</name>
     <message>
-        <location filename="../../ui/transactions_tab.ui" line="14"></location>
+        <location filename="../../ui/transactions_tab.ui" line="14"/>
         <source>Form</source>
-        <translation>Formulaire</translation>
+        <translation></translation>
     </message>
     <message>
-        <location filename="../../ui/transactions_tab.ui" line="63"></location>
+        <location filename="../../ui/transactions_tab.ui" line="63"/>
         <source>dd/MM/yyyy</source>
-        <translation>jj/MM/aaaa</translation>
+        <translation></translation>
     </message>
     <message>
-        <location filename="../../ui/transactions_tab.ui" line="100"></location>
+        <location filename="../../ui/transactions_tab.ui" line="100"/>
         <source>Balance:</source>
-        <translation type="obsolete">Solde :</translation>
+        <translation type="obsolete">Solde:</translation>
     </message>
     <message>
-        <location filename="../../ui/transactions_tab.ui" line="83"></location>
+        <location filename="../../ui/transactions_tab.ui" line="83"/>
         <source>Payment:</source>
-        <translation type="obsolete">Paiements :</translation>
+        <translation type="obsolete">Paiements:</translation>
     </message>
     <message>
-        <location filename="../../ui/transactions_tab.ui" line="90"></location>
+        <location filename="../../ui/transactions_tab.ui" line="90"/>
         <source>Deposit:</source>
-        <translation type="obsolete">Dépôts :</translation>
+        <translation type="obsolete">Dépôts:</translation>
     </message>
     <message>
-        <location filename="../../ui/transactions_tab.ui" line="20"></location>
+        <location filename="../../ui/transactions_tab.ui" line="20"/>
         <source>Balance</source>
         <translation type="unfinished">Solde</translation>
     </message>
     <message>
-        <location filename="../../ui/transactions_tab.ui" line="33"></location>
-        <source>label_balance</source>
-        <translation>Solde</translation>
+        <location filename="../../ui/transactions_tab.ui" line="33"/>
+        <source>loading...</source>
+        <translation type="unfinished"></translation>
     </message>
 </context>
 </TS>
diff --git a/res/i18n/ts/it_IT.ts b/res/i18n/ts/it_IT.ts
index 6410b48c435c774135a2956b02cc1efc17d01ac9..56cf53275cb379a9248ccfd9eb010cf6f24df603 100644
--- a/res/i18n/ts/it_IT.ts
+++ b/res/i18n/ts/it_IT.ts
@@ -50,6 +50,11 @@
         <source>Relat Z-sum</source>
         <translation type="obsolete">Relat somma-Z</translation>
     </message>
+    <message>
+        <location filename="../../../src/cutecoin/core/account.py" line="509"/>
+        <source>Could not find user self certification.</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>AccountConfigurationDialog</name>
@@ -129,10 +134,23 @@
         <translation>Comunità</translation>
     </message>
 </context>
+<context>
+    <name>Application</name>
+    <message>
+        <location filename="../../../src/cutecoin/core/app.py" line="76"/>
+        <source>Warning : Your membership is expiring soon.</source>
+        <translation type="unfinished">Avvertimento : La tua iscrizione sta per scadere.</translation>
+    </message>
+    <message>
+        <location filename="../../../src/cutecoin/core/app.py" line="81"/>
+        <source>Warning : Your could miss certifications soon.</source>
+        <translation type="unfinished">Avvertimento: Tu potrebbe perdere certificazioni presto.</translation>
+    </message>
+</context>
 <context>
     <name>CertificationDialog</name>
     <message>
-        <location filename="../../../src/cutecoin/gui/certification.py" line="65"/>
+        <location filename="../../../src/cutecoin/gui/certification.py" line="79"/>
         <source>Certification</source>
         <translation>Certificazione</translation>
     </message>
@@ -164,17 +182,17 @@
     <message>
         <location filename="../../../src/cutecoin/gui/certification.py" line="65"/>
         <source>Success certifying {0} from {1}</source>
-        <translation>Certificazione del successo di {0} à {1}</translation>
+        <translation type="obsolete">Certificazione del successo di {0} à {1}</translation>
     </message>
     <message>
         <location filename="../../../src/cutecoin/gui/certification.py" line="75"/>
         <source>Error</source>
-        <translation>Errore</translation>
+        <translation type="obsolete">Errore</translation>
     </message>
     <message>
         <location filename="../../../src/cutecoin/gui/certification.py" line="75"/>
         <source>{0} : {1}</source>
-        <translation>{0} : {1}</translation>
+        <translation type="obsolete">{0} : {1}</translation>
     </message>
     <message>
         <location filename="../../../src/cutecoin/gui/certification.py" line="77"/>
@@ -182,15 +200,25 @@
         <translation type="obsolete">Ok</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/certification.py" line="97"/>
+        <location filename="../../../src/cutecoin/gui/certification.py" line="107"/>
         <source>Not a member</source>
         <translation>Non risulti membro di questa comunità</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/certification.py" line="94"/>
+        <location filename="../../../src/cutecoin/gui/certification.py" line="104"/>
         <source>&amp;Ok</source>
         <translation type="unfinished"></translation>
     </message>
+    <message>
+        <location filename="../../../src/cutecoin/gui/certification.py" line="70"/>
+        <source>Success sending certification</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../../src/cutecoin/gui/certification.py" line="79"/>
+        <source>Could not broadcast certification : {0}</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>CommunityConfigurationDialog</name>
@@ -215,27 +243,27 @@
         <translation type="obsolete">Controllare la connettività del nodo</translation>
     </message>
     <message>
-        <location filename="../../ui/community_cfg.ui" line="145"/>
+        <location filename="../../ui/community_cfg.ui" line="162"/>
         <source>Communities nodes</source>
         <translation>Nodi delle comunità</translation>
     </message>
     <message>
-        <location filename="../../ui/community_cfg.ui" line="163"/>
+        <location filename="../../ui/community_cfg.ui" line="180"/>
         <source>Server</source>
         <translation>Server</translation>
     </message>
     <message>
-        <location filename="../../ui/community_cfg.ui" line="183"/>
+        <location filename="../../ui/community_cfg.ui" line="200"/>
         <source>Add</source>
         <translation>Aggiungi</translation>
     </message>
     <message>
-        <location filename="../../ui/community_cfg.ui" line="204"/>
+        <location filename="../../ui/community_cfg.ui" line="221"/>
         <source>Previous</source>
         <translation>Precedente</translation>
     </message>
     <message>
-        <location filename="../../ui/community_cfg.ui" line="227"/>
+        <location filename="../../ui/community_cfg.ui" line="244"/>
         <source>Next</source>
         <translation>Seguente</translation>
     </message>
@@ -249,6 +277,11 @@
         <source>Connect using your account</source>
         <translation type="unfinished"></translation>
     </message>
+    <message>
+        <location filename="../../ui/community_cfg.ui" line="132"/>
+        <source>Connect as a guest</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>CommunityTabWidget</name>
@@ -341,35 +374,45 @@
 <context>
     <name>CommunityTile</name>
     <message>
-        <location filename="../../../src/cutecoin/gui/community_tile.py" line="46"/>
+        <location filename="../../../src/cutecoin/gui/community_tile.py" line="77"/>
         <source>Member</source>
         <translation type="unfinished">Membro</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/community_tile.py" line="47"/>
+        <location filename="../../../src/cutecoin/gui/community_tile.py" line="78"/>
         <source>Non-Member</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/community_tile.py" line="58"/>
+        <location filename="../../../src/cutecoin/gui/community_tile.py" line="89"/>
         <source>members</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/community_tile.py" line="58"/>
+        <location filename="../../../src/cutecoin/gui/community_tile.py" line="89"/>
         <source>Monetary mass</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/community_tile.py" line="58"/>
+        <location filename="../../../src/cutecoin/gui/community_tile.py" line="89"/>
         <source>Status</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/community_tile.py" line="58"/>
+        <location filename="../../../src/cutecoin/gui/community_tile.py" line="89"/>
         <source>Balance</source>
         <translation type="unfinished">Bilancia</translation>
     </message>
+    <message>
+        <location filename="../../../src/cutecoin/gui/community_tile.py" line="108"/>
+        <source>Not connected</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../../src/cutecoin/gui/community_tile.py" line="121"/>
+        <source>Community not initialized</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>CommunityWidget</name>
@@ -389,82 +432,82 @@
         <translation type="unfinished">Certificazione</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/community_view.py" line="227"/>
+        <location filename="../../../src/cutecoin/gui/community_view.py" line="282"/>
         <source>Renew membership</source>
         <translation type="unfinished">Rinnova iscrizione</translation>
     </message>
     <message>
         <location filename="../../../src/cutecoin/gui/community_view.py" line="44"/>
         <source>Warning : Your membership is expiring soon.</source>
-        <translation type="unfinished">Avvertimento : La tua iscrizione sta per scadere.</translation>
+        <translation type="obsolete">Avvertimento : La tua iscrizione sta per scadere.</translation>
     </message>
     <message>
         <location filename="../../../src/cutecoin/gui/community_view.py" line="46"/>
         <source>Warning : Your could miss certifications soon.</source>
-        <translation type="unfinished">Avvertimento: Tu potrebbe perdere certificazioni presto.</translation>
+        <translation type="obsolete">Avvertimento: Tu potrebbe perdere certificazioni presto.</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/community_view.py" line="63"/>
+        <location filename="../../../src/cutecoin/gui/community_view.py" line="65"/>
         <source>Transactions</source>
         <translation type="unfinished">Transazioni</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/community_view.py" line="67"/>
+        <location filename="../../../src/cutecoin/gui/community_view.py" line="69"/>
         <source>Web of Trust</source>
         <translation type="unfinished">Rete della fiducia</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/community_view.py" line="71"/>
+        <location filename="../../../src/cutecoin/gui/community_view.py" line="73"/>
         <source>Search Identities</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/community_view.py" line="75"/>
+        <location filename="../../../src/cutecoin/gui/community_view.py" line="77"/>
         <source>Network</source>
         <translation type="unfinished">Rete</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/community_view.py" line="154"/>
+        <location filename="../../../src/cutecoin/gui/community_view.py" line="177"/>
         <source>Membership expiration</source>
         <translation type="unfinished">Scadenza dell&apos;iscrizione</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/community_view.py" line="154"/>
+        <location filename="../../../src/cutecoin/gui/community_view.py" line="177"/>
         <source>&lt;b&gt;Warning : Membership expiration in {0} days&lt;/b&gt;</source>
         <translation type="unfinished">&lt;b&gt;Avvertimento :  scadenza dell&apos;adesione nel {0} giorni&lt;/b&gt;</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/community_view.py" line="162"/>
+        <location filename="../../../src/cutecoin/gui/community_view.py" line="188"/>
         <source>Certifications number</source>
         <translation type="unfinished">Numero delle Certificazioni</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/community_view.py" line="162"/>
+        <location filename="../../../src/cutecoin/gui/community_view.py" line="188"/>
         <source>&lt;b&gt;Warning : You are certified by only {0} persons, need {1}&lt;/b&gt;</source>
         <translation type="unfinished">&lt;b&gt;Avvertimento : Tu è certificato solamente da {0} persone, necessità {1}&lt;/b&gt;</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/community_view.py" line="189"/>
+        <location filename="../../../src/cutecoin/gui/community_view.py" line="221"/>
         <source> Block {0}</source>
         <translation type="unfinished"> Blocca {0}</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/community_view.py" line="211"/>
+        <location filename="../../../src/cutecoin/gui/community_view.py" line="263"/>
         <source> - Median fork window : {0}</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/community_view.py" line="232"/>
+        <location filename="../../../src/cutecoin/gui/community_view.py" line="288"/>
         <source>Send membership demand</source>
         <translation type="unfinished">Invia domanda di iscrizione</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/community_view.py" line="298"/>
+        <location filename="../../../src/cutecoin/gui/community_view.py" line="334"/>
         <source>Warning</source>
         <translation type="unfinished">Avvertimento</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/community_view.py" line="259"/>
+        <location filename="../../../src/cutecoin/gui/community_view.py" line="334"/>
         <source>Are you sure ?
 Sending a leaving demand  cannot be canceled.
 The process to join back the community later will have to be done again.</source>
@@ -476,75 +519,100 @@ La richiesta di aderire nuovamente alla comunità dovrà essere fatta di nuovo.<
         <location filename="../../../src/cutecoin/gui/community_view.py" line="272"/>
         <source>Are you sure ?
 Publishing your UID can be canceled by Revoke UID.</source>
-        <translation type="unfinished">Sei sicuro? ↵
+        <translation type="obsolete">Sei sicuro? ↵
 La pubblicazione di tuo UID può essere annullato da Revoca IDU.</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/community_view.py" line="283"/>
-        <source>UID Publishing</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../../../src/cutecoin/gui/community_view.py" line="283"/>
+        <location filename="../../../src/cutecoin/gui/community_view.py" line="368"/>
         <source>Success publishing your UID</source>
         <translation type="unfinished">Successo della pubblicazione del tuo IDU</translation>
     </message>
     <message>
         <location filename="../../../src/cutecoin/gui/community_view.py" line="286"/>
         <source>Publish UID error</source>
-        <translation type="unfinished">Pubblica errore del IDU</translation>
+        <translation type="obsolete">Pubblica errore del IDU</translation>
     </message>
     <message>
         <location filename="../../../src/cutecoin/gui/community_view.py" line="289"/>
         <source>Network error</source>
-        <translation type="unfinished">Errore di rete</translation>
+        <translation type="obsolete">Errore di rete</translation>
     </message>
     <message>
         <location filename="../../../src/cutecoin/gui/community_view.py" line="289"/>
         <source>Couldn&apos;t connect to network : {0}</source>
-        <translation type="unfinished">Impossibile connettersi alla rete: {0}</translation>
+        <translation type="obsolete">Impossibile connettersi alla rete: {0}</translation>
     </message>
     <message>
         <location filename="../../../src/cutecoin/gui/community_view.py" line="293"/>
         <source>Error</source>
-        <translation type="unfinished">Errore</translation>
+        <translation type="obsolete">Errore</translation>
     </message>
     <message>
         <location filename="../../../src/cutecoin/gui/community_view.py" line="298"/>
         <source>Are you sure ?
 Revoking your UID can only success if it is not already validated by the network.</source>
-        <translation type="unfinished">Sei sicuro ?
+        <translation type="obsolete">Sei sicuro ?
 Revoca tuo UID può solo successo se non è già convalidato dalla rete.</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/community_view.py" line="313"/>
+        <location filename="../../../src/cutecoin/gui/community_view.py" line="388"/>
         <source>Membership</source>
         <translation type="unfinished">Iscrizione</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/community_view.py" line="313"/>
+        <location filename="../../../src/cutecoin/gui/community_view.py" line="322"/>
         <source>Success sending Membership demand</source>
         <translation type="unfinished">Domanda d’iscrizione inviata con successo</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/community_view.py" line="319"/>
+        <location filename="../../../src/cutecoin/gui/community_view.py" line="354"/>
         <source>Revoke</source>
         <translation type="unfinished">Revoca</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/community_view.py" line="319"/>
+        <location filename="../../../src/cutecoin/gui/community_view.py" line="348"/>
         <source>Success sending Revoke demand</source>
         <translation type="unfinished">Revoca della domanda inviata con successo</translation>
     </message>
     <message>
         <location filename="../../../src/cutecoin/gui/community_view.py" line="325"/>
         <source>Self Certification</source>
-        <translation type="unfinished">Autocertificazione</translation>
+        <translation type="obsolete">Autocertificazione</translation>
     </message>
     <message>
         <location filename="../../../src/cutecoin/gui/community_view.py" line="325"/>
         <source>Success sending Self Certification document</source>
-        <translation type="unfinished">Autocertificazione inviata con successo</translation>
+        <translation type="obsolete">Autocertificazione inviata con successo</translation>
+    </message>
+    <message>
+        <location filename="../../../src/cutecoin/gui/community_view.py" line="81"/>
+        <source>Show informations</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../../src/cutecoin/gui/community_view.py" line="85"/>
+        <source>Informations</source>
+        <translation type="unfinished">Informazioni</translation>
+    </message>
+    <message>
+        <location filename="../../../src/cutecoin/gui/community_view.py" line="98"/>
+        <source>Publish UID</source>
+        <translation type="unfinished">Pubblica IDU</translation>
+    </message>
+    <message>
+        <location filename="../../../src/cutecoin/gui/community_view.py" line="392"/>
+        <source>Revoke UID</source>
+        <translation type="unfinished">Revoca IDU</translation>
+    </message>
+    <message>
+        <location filename="../../../src/cutecoin/gui/community_view.py" line="394"/>
+        <source>UID</source>
+        <translation type="unfinished">IDU</translation>
+    </message>
+    <message>
+        <location filename="../../../src/cutecoin/gui/community_view.py" line="388"/>
+        <source>Your UID was revoked successfully.</source>
+        <translation type="unfinished"></translation>
     </message>
 </context>
 <context>
@@ -687,27 +755,27 @@ Revoca tuo UID può solo successo se non è già convalidato dalla rete.</transl
 <context>
     <name>HistoryTableModel</name>
     <message>
-        <location filename="../../../src/cutecoin/models/txhistory.py" line="199"/>
+        <location filename="../../../src/cutecoin/models/txhistory.py" line="206"/>
         <source>Date</source>
         <translation>Data</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/models/txhistory.py" line="199"/>
+        <location filename="../../../src/cutecoin/models/txhistory.py" line="206"/>
         <source>UID/Public key</source>
         <translation>IDU/Chiave Pubblica</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/models/txhistory.py" line="199"/>
+        <location filename="../../../src/cutecoin/models/txhistory.py" line="206"/>
         <source>Payment</source>
         <translation>Pagamento</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/models/txhistory.py" line="199"/>
+        <location filename="../../../src/cutecoin/models/txhistory.py" line="206"/>
         <source>Deposit</source>
         <translation>Deposito</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/models/txhistory.py" line="199"/>
+        <location filename="../../../src/cutecoin/models/txhistory.py" line="206"/>
         <source>Comment</source>
         <translation>Commento</translation>
     </message>
@@ -822,65 +890,70 @@ Revoca tuo UID può solo successo se non è già convalidato dalla rete.</transl
 <context>
     <name>IdentitiesTabWidget</name>
     <message>
-        <location filename="../../../src/cutecoin/gui/identities_tab.py" line="56"/>
+        <location filename="../../../src/cutecoin/gui/identities_tab.py" line="63"/>
         <source>Members</source>
         <translation type="unfinished">Membri</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/identities_tab.py" line="59"/>
+        <location filename="../../../src/cutecoin/gui/identities_tab.py" line="66"/>
         <source>Direct connections</source>
         <translation type="unfinished">Connessioni dirette</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/identities_tab.py" line="98"/>
+        <location filename="../../../src/cutecoin/gui/identities_tab.py" line="109"/>
         <source>Informations</source>
         <translation type="unfinished">Informazioni</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/identities_tab.py" line="101"/>
+        <location filename="../../../src/cutecoin/gui/identities_tab.py" line="112"/>
         <source>Add as contact</source>
         <translation type="unfinished">Aggiungi un contatto</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/identities_tab.py" line="105"/>
+        <location filename="../../../src/cutecoin/gui/identities_tab.py" line="116"/>
         <source>Send money</source>
         <translation type="unfinished">Invia denaro</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/identities_tab.py" line="109"/>
+        <location filename="../../../src/cutecoin/gui/identities_tab.py" line="120"/>
         <source>Certify identity</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/identities_tab.py" line="113"/>
+        <location filename="../../../src/cutecoin/gui/identities_tab.py" line="124"/>
         <source>View in Web of Trust</source>
         <translation type="unfinished">Vedi in Rete della Fiducia</translation>
     </message>
+    <message>
+        <location filename="../../../src/cutecoin/gui/identities_tab.py" line="128"/>
+        <source>Copy pubkey</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>IdentitiesTableModel</name>
     <message>
-        <location filename="../../../src/cutecoin/models/identities.py" line="89"/>
+        <location filename="../../../src/cutecoin/models/identities.py" line="90"/>
         <source>UID</source>
         <translation>IDU</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/models/identities.py" line="90"/>
+        <location filename="../../../src/cutecoin/models/identities.py" line="91"/>
         <source>Pubkey</source>
         <translation>Chiave pubblica</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/models/identities.py" line="91"/>
+        <location filename="../../../src/cutecoin/models/identities.py" line="92"/>
         <source>Renewed</source>
         <translation>Rinnovato</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/models/identities.py" line="92"/>
+        <location filename="../../../src/cutecoin/models/identities.py" line="93"/>
         <source>Expiration</source>
         <translation>Scadenza</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/models/identities.py" line="93"/>
+        <location filename="../../../src/cutecoin/models/identities.py" line="94"/>
         <source>Validation</source>
         <translation>Validazione</translation>
     </message>
@@ -958,7 +1031,7 @@ Revoca tuo UID può solo successo se non è già convalidato dalla rete.</transl
     <message>
         <location filename="../../ui/informations_tab.ui" line="61"/>
         <source>label_general</source>
-        <translation>etichetta_ generale</translation>
+        <translation type="obsolete">etichetta_ generale</translation>
     </message>
     <message>
         <location filename="../../ui/informations_tab.ui" line="77"/>
@@ -968,7 +1041,7 @@ Revoca tuo UID può solo successo se non è già convalidato dalla rete.</transl
     <message>
         <location filename="../../ui/informations_tab.ui" line="83"/>
         <source>label_rules</source>
-        <translation>etichetta_regole</translation>
+        <translation type="obsolete">etichetta_regole</translation>
     </message>
     <message>
         <location filename="../../ui/informations_tab.ui" line="96"/>
@@ -978,7 +1051,7 @@ Revoca tuo UID può solo successo se non è già convalidato dalla rete.</transl
     <message>
         <location filename="../../ui/informations_tab.ui" line="102"/>
         <source>label_money</source>
-        <translation>etichetta_denaro</translation>
+        <translation type="obsolete">etichetta_denaro</translation>
     </message>
     <message>
         <location filename="../../ui/informations_tab.ui" line="115"/>
@@ -988,10 +1061,10 @@ Revoca tuo UID può solo successo se non è già convalidato dalla rete.</transl
     <message>
         <location filename="../../ui/informations_tab.ui" line="121"/>
         <source>label_wot</source>
-        <translation>etichetta_rdf</translation>
+        <translation type="obsolete">etichetta_rdf</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="86"/>
+        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="103"/>
         <source>
                 &lt;table cellpadding=&quot;5&quot;&gt;
                 &lt;tr&gt;&lt;td align=&quot;right&quot;&gt;&lt;b&gt;{:}&lt;/b&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;{:} {:}&lt;/td&gt;&lt;/tr&gt;
@@ -1016,47 +1089,47 @@ Revoca tuo UID può solo successo se non è già convalidato dalla rete.</transl
                 </translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="86"/>
+        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="103"/>
         <source>Universal Dividend UD(t) in</source>
         <translation>Il Dividende Universale DU(t) in</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="86"/>
+        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="103"/>
         <source>Monetary Mass M(t-1) in</source>
         <translation>Massa monetaria M(t-1)  in</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="86"/>
+        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="103"/>
         <source>Members N(t)</source>
         <translation>Membri N(t)</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="86"/>
+        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="103"/>
         <source>Monetary Mass per member M(t-1)/N(t) in</source>
         <translation>Massa monetaria per membro M(t-1)/N(t) in</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="86"/>
+        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="103"/>
         <source>Actual growth c = UD(t)/[M(t-1)/N(t)]</source>
         <translation>Crescita effettiva c = DU(t)/[M(t-1)/N (t)]</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="86"/>
+        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="103"/>
         <source>Last UD date and time (t)</source>
         <translation>Ultimo DU data e ora (t)</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="86"/>
+        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="103"/>
         <source>Next UD date and time (t+1)</source>
         <translation>Seguente DU data e l&apos;ora (t + 1)</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="158"/>
+        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="175"/>
         <source>No Universal Dividend created yet.</source>
         <translation>Nessun Dividendo Universale ancora creato.</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="133"/>
+        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="150"/>
         <source>
                 &lt;table cellpadding=&quot;5&quot;&gt;
                 &lt;tr&gt;&lt;td align=&quot;right&quot;&gt;&lt;b&gt;{:}&lt;/b&gt;&lt;/td&gt;&lt;td&gt;{:}&lt;/td&gt;&lt;/tr&gt;
@@ -1073,37 +1146,37 @@ Revoca tuo UID può solo successo se non è già convalidato dalla rete.</transl
                 </translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="133"/>
+        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="150"/>
         <source>{:2.0%} / {:} days</source>
         <translation>{:2.0%} / {:} giorni</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="133"/>
+        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="150"/>
         <source>Fundamental growth (c) / Delta time (dt)</source>
         <translation>Crescita fondamentale (c) / Tempo delta (dt)</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="133"/>
+        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="150"/>
         <source>UD(t+1) = MAX { UD(t) ; c &amp;#215; M(t) / N(t+1) }</source>
         <translation>UD(t+1) = MAX { UD(t) ; c &amp;#215; M(t) / N(t+1) }</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="133"/>
+        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="150"/>
         <source>Universal Dividend (formula)</source>
         <translation>Dividendo universale (formula)</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="133"/>
+        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="150"/>
         <source>{:} = MAX {{ {:} {:} ; {:2.0%} &amp;#215; {:} {:} / {:} }}</source>
         <translation>{:} = MAX {{ {:} {:} ; {:2.0%} &amp;#215; {:} {:} / {:} }}</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="133"/>
+        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="150"/>
         <source>Universal Dividend (computed)</source>
         <translation>Dividendo Universale (calcolato)</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="161"/>
+        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="178"/>
         <source>
             &lt;table cellpadding=&quot;5&quot;&gt;
             &lt;tr&gt;&lt;td align=&quot;right&quot;&gt;&lt;b&gt;{:2.0%} / {:} days&lt;/b&gt;&lt;/td&gt;&lt;td&gt;{:}&lt;/td&gt;&lt;/tr&gt;
@@ -1130,47 +1203,47 @@ Revoca tuo UID può solo successo se non è già convalidato dalla rete.</transl
             </translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="161"/>
+        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="178"/>
         <source>Fundamental growth (c)</source>
         <translation>Crescita fondamentale  (c)</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="161"/>
+        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="178"/>
         <source>Initial Universal Dividend UD(0) in</source>
         <translation>Dividendo Universale iniziale UD (0) in</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="161"/>
+        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="178"/>
         <source>Time period (dt) in days (86400 seconds) between two UD</source>
         <translation>Periodo di tempo (dt) in giorni (86400 secondi) tra due DU</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="161"/>
+        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="178"/>
         <source>Number of blocks used for calculating median time</source>
         <translation>Numero di blocchi utilizzati per calcolare il tempo medio</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="161"/>
+        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="178"/>
         <source>The average time in seconds for writing 1 block (wished time)</source>
         <translation>Il tempo medio in secondi per la scrittura di 1 blocco (tempo desiderato)</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="161"/>
+        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="178"/>
         <source>The number of blocks required to evaluate again PoWMin value</source>
         <translation>Il numero di blocchi necessari per valutare il valore di nuovo PoWMin</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="161"/>
+        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="178"/>
         <source>The number of previous blocks to check for personalized difficulty</source>
         <translation>Il numero di blocchi precedenti per verificare la presenza di difficoltà personalizzata</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="161"/>
+        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="178"/>
         <source>The percent of previous issuers to reach for personalized difficulty</source>
         <translation>La percentuale di emittenti precedenti che arrivano à una difficoltà personalizzata</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="196"/>
+        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="213"/>
         <source>
             &lt;table cellpadding=&quot;5&quot;&gt;
             &lt;tr&gt;&lt;td align=&quot;right&quot;&gt;&lt;b&gt;{:}&lt;/b&gt;&lt;/td&gt;&lt;td&gt;{:}&lt;/td&gt;&lt;/tr&gt;
@@ -1193,32 +1266,32 @@ Revoca tuo UID può solo successo se non è già convalidato dalla rete.</transl
             </translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="196"/>
+        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="213"/>
         <source>Minimum delay between 2 identical certifications (in days)</source>
         <translation>Ritardo minimo tra 2 certificazioni identici (in giorni)</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="196"/>
+        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="213"/>
         <source>Maximum age of a valid signature (in days)</source>
         <translation>Età massima di una firma valida (in giorni)</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="196"/>
+        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="213"/>
         <source>Minimum quantity of signatures to be part of the WoT</source>
         <translation>Quantità minima di firme per far parte della RdF</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="196"/>
+        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="213"/>
         <source>Minimum quantity of valid made certifications to be part of the WoT for distance rule</source>
         <translation>Quantità minima di certificazioni fatte validi a far parte della RdF per regola di distanza</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="196"/>
+        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="213"/>
         <source>Maximum age of a valid membership (in days)</source>
         <translation>Età massima di un abbonamento valido (in giorni)</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="196"/>
+        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="213"/>
         <source>Maximum distance between each WoT member and a newcomer</source>
         <translation>Distanza massima tra ogni membro RdF e un nuovo arrivato</translation>
     </message>
@@ -1363,7 +1436,7 @@ Revoca tuo UID può solo successo se non è già convalidato dalla rete.</transl
         &lt;p&gt;vit&lt;/p&gt;
         &lt;p&gt;canercandan&lt;/p&gt;
         </source>
-        <translation>
+        <translation type="obsolete">
         &lt;h1&gt;Cutecoin&lt;/h1&gt;
 
         &lt;p&gt;Python/Qt uCoin cliente&lt;/p&gt;
@@ -1381,42 +1454,42 @@ Revoca tuo UID può solo successo se non è già convalidato dalla rete.</transl
         </translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/mainwindow.py" line="250"/>
+        <location filename="../../../src/cutecoin/gui/mainwindow.py" line="251"/>
         <source>Please get the latest release {version}</source>
         <translation type="unfinished">Si prega di ottenere l&apos;ultimo rilascio {version}</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/mainwindow.py" line="285"/>
+        <location filename="../../../src/cutecoin/gui/mainwindow.py" line="283"/>
         <source>Edit</source>
         <translation>Modifica</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/mainwindow.py" line="288"/>
+        <location filename="../../../src/cutecoin/gui/mainwindow.py" line="286"/>
         <source>Delete</source>
         <translation>Cancella</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/mainwindow.py" line="305"/>
+        <location filename="../../../src/cutecoin/gui/mainwindow.py" line="303"/>
         <source>CuteCoin {0}</source>
         <translation>CuteCoin {0}</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/mainwindow.py" line="332"/>
+        <location filename="../../../src/cutecoin/gui/mainwindow.py" line="330"/>
         <source>CuteCoin {0} - Account : {1}</source>
         <translation>CuteCoin {0} - Conto : {1}</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/mainwindow.py" line="350"/>
+        <location filename="../../../src/cutecoin/gui/mainwindow.py" line="348"/>
         <source>Export an account</source>
         <translation>Exporta un conto</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/mainwindow.py" line="351"/>
+        <location filename="../../../src/cutecoin/gui/mainwindow.py" line="349"/>
         <source>All account files (*.acc)</source>
         <translation>Tutti i file di account (* .acc)</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/mainwindow.py" line="352"/>
+        <location filename="../../../src/cutecoin/gui/mainwindow.py" line="350"/>
         <source>Export</source>
         <translation>Exporta</translation>
     </message>
@@ -1440,6 +1513,27 @@ Revoca tuo UID può solo successo se non è già convalidato dalla rete.</transl
         <source>C&amp;ertification</source>
         <translation type="unfinished"></translation>
     </message>
+    <message>
+        <location filename="../../../src/cutecoin/gui/mainwindow.py" line="225"/>
+        <source>
+        &lt;h1&gt;Cutecoin&lt;/h1&gt;
+
+        &lt;p&gt;Python/Qt uCoin client&lt;/p&gt;
+
+        &lt;p&gt;Version : {:}&lt;/p&gt;
+        {new_version_text}
+
+        &lt;p&gt;License : GPLv3&lt;/p&gt;
+
+        &lt;p&gt;&lt;b&gt;Authors&lt;/b&gt;&lt;/p&gt;
+
+        &lt;p&gt;inso&lt;/p&gt;
+        &lt;p&gt;vit&lt;/p&gt;
+        &lt;p&gt;Moul&lt;/p&gt;
+        &lt;p&gt;canercandan&lt;/p&gt;
+        </source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>MemberDialog</name>
@@ -1490,62 +1584,62 @@ Revoca tuo UID può solo successo se non è già convalidato dalla rete.</transl
 <context>
     <name>NetworkFilterProxyModel</name>
     <message>
-        <location filename="../../../src/cutecoin/models/network.py" line="47"/>
+        <location filename="../../../src/cutecoin/models/network.py" line="48"/>
         <source>Address</source>
         <translation>Indirizzo</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/models/network.py" line="48"/>
+        <location filename="../../../src/cutecoin/models/network.py" line="49"/>
         <source>Port</source>
         <translation>Porto</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/models/network.py" line="49"/>
+        <location filename="../../../src/cutecoin/models/network.py" line="50"/>
         <source>Block</source>
         <translation>Blocca</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/models/network.py" line="51"/>
+        <location filename="../../../src/cutecoin/models/network.py" line="52"/>
         <source>UID</source>
         <translation>IDU</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/models/network.py" line="52"/>
+        <location filename="../../../src/cutecoin/models/network.py" line="53"/>
         <source>Member</source>
         <translation>Membro</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/models/network.py" line="53"/>
+        <location filename="../../../src/cutecoin/models/network.py" line="54"/>
         <source>Pubkey</source>
         <translation>Chiave pubblica</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/models/network.py" line="54"/>
+        <location filename="../../../src/cutecoin/models/network.py" line="55"/>
         <source>Software</source>
         <translation>Software</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/models/network.py" line="55"/>
+        <location filename="../../../src/cutecoin/models/network.py" line="56"/>
         <source>Version</source>
         <translation>Versione</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/models/network.py" line="68"/>
+        <location filename="../../../src/cutecoin/models/network.py" line="69"/>
         <source>yes</source>
         <translation>si</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/models/network.py" line="68"/>
+        <location filename="../../../src/cutecoin/models/network.py" line="69"/>
         <source>no</source>
         <translation>no</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/models/network.py" line="68"/>
+        <location filename="../../../src/cutecoin/models/network.py" line="69"/>
         <source>offline</source>
         <translation>offline</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/models/network.py" line="50"/>
+        <location filename="../../../src/cutecoin/models/network.py" line="51"/>
         <source>Hash</source>
         <translation>Hash</translation>
     </message>
@@ -1558,17 +1652,17 @@ Revoca tuo UID può solo successo se non è già convalidato dalla rete.</transl
         <translation>Formulario</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/network_tab.py" line="68"/>
+        <location filename="../../../src/cutecoin/gui/network_tab.py" line="70"/>
         <source>Unset root node</source>
         <translation>Annulla il nodo principale</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/network_tab.py" line="74"/>
+        <location filename="../../../src/cutecoin/gui/network_tab.py" line="76"/>
         <source>Set as root node</source>
         <translation>Impostato come nodo principale</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/network_tab.py" line="80"/>
+        <location filename="../../../src/cutecoin/gui/network_tab.py" line="82"/>
         <source>Open in browser</source>
         <translation>Apri nel browser</translation>
     </message>
@@ -1576,22 +1670,22 @@ Revoca tuo UID può solo successo se non è già convalidato dalla rete.</transl
 <context>
     <name>NetworkTableModel</name>
     <message>
-        <location filename="../../../src/cutecoin/models/network.py" line="135"/>
+        <location filename="../../../src/cutecoin/models/network.py" line="136"/>
         <source>Online</source>
         <translation>In linea</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/models/network.py" line="136"/>
+        <location filename="../../../src/cutecoin/models/network.py" line="137"/>
         <source>Offline</source>
         <translation>Offline</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/models/network.py" line="137"/>
+        <location filename="../../../src/cutecoin/models/network.py" line="138"/>
         <source>Unsynchronized</source>
         <translation>Non sincronizzato</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/models/network.py" line="138"/>
+        <location filename="../../../src/cutecoin/models/network.py" line="139"/>
         <source>Corrupted</source>
         <translation>Corrotto</translation>
     </message>
@@ -1614,22 +1708,22 @@ Revoca tuo UID può solo successo se non è già convalidato dalla rete.</transl
         <translation>Ricorda la mia password durante questa sessione</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/password_asker.py" line="65"/>
+        <location filename="../../../src/cutecoin/gui/password_asker.py" line="66"/>
         <source>Bad password</source>
         <translation>Password errata</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/password_asker.py" line="65"/>
+        <location filename="../../../src/cutecoin/gui/password_asker.py" line="66"/>
         <source>Non printable characters in password</source>
         <translation>Caratteri non stampabili in password</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/password_asker.py" line="71"/>
+        <location filename="../../../src/cutecoin/gui/password_asker.py" line="72"/>
         <source>Failed to get private key</source>
         <translation>Impossibile ottenere la chiave privata</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/password_asker.py" line="71"/>
+        <location filename="../../../src/cutecoin/gui/password_asker.py" line="72"/>
         <source>Wrong password typed. Cannot open the private key</source>
         <translation>Password errata digitata. Impossibile aprire la chiave privata</translation>
     </message>
@@ -1637,7 +1731,7 @@ Revoca tuo UID può solo successo se non è già convalidato dalla rete.</transl
 <context>
     <name>PreferencesDialog</name>
     <message>
-        <location filename="../../../src/cutecoin/gui/preferences.py" line="83"/>
+        <location filename="../../ui/preferences.ui" line="14"/>
         <source>Preferences</source>
         <translation>Preferenze</translation>
     </message>
@@ -1679,7 +1773,7 @@ Revoca tuo UID può solo successo se non è già convalidato dalla rete.</transl
     <message>
         <location filename="../../../src/cutecoin/gui/preferences.py" line="83"/>
         <source>A restart is needed to apply your new preferences.</source>
-        <translation>È necessario un riavvio 246 per applicare le tue nuove preferenze.</translation>
+        <translation type="obsolete">È necessario un riavvio 246 per applicare le tue nuove preferenze.</translation>
     </message>
     <message>
         <location filename="../../ui/preferences.ui" line="106"/>
@@ -1704,33 +1798,43 @@ Revoca tuo UID può solo successo se non è già convalidato dalla rete.</transl
     <message>
         <location filename="../../ui/preferences.ui" line="336"/>
         <source>Use a proxy server</source>
-        <translation>Utilizza un server proxy</translation>
+        <translation type="obsolete">Utilizza un server proxy</translation>
     </message>
     <message>
         <location filename="../../ui/preferences.ui" line="348"/>
         <source>Proxy type : </source>
-        <translation>Tipo di proxy : </translation>
+        <translation type="obsolete">Tipo di proxy : </translation>
     </message>
     <message>
         <location filename="../../ui/preferences.ui" line="356"/>
         <source>HTTP</source>
-        <translation>HTTP</translation>
+        <translation type="obsolete">HTTP</translation>
     </message>
     <message>
         <location filename="../../ui/preferences.ui" line="361"/>
         <source>SOCKS5</source>
-        <translation>SOCK65</translation>
+        <translation type="obsolete">SOCK65</translation>
     </message>
     <message>
-        <location filename="../../ui/preferences.ui" line="386"/>
+        <location filename="../../ui/preferences.ui" line="345"/>
         <source>Proxy server address : </source>
         <translation>Indirizzo server proxy : </translation>
     </message>
     <message>
-        <location filename="../../ui/preferences.ui" line="396"/>
+        <location filename="../../ui/preferences.ui" line="355"/>
         <source>:</source>
         <translation>:</translation>
     </message>
+    <message>
+        <location filename="../../ui/preferences.ui" line="336"/>
+        <source>Use a http proxy server</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../ui/preferences.ui" line="379"/>
+        <source>Automatically refresh identities informations</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>ProcessConfigureAccount</name>
@@ -1784,22 +1888,22 @@ sei sicuro ?</translation>
 <context>
     <name>ProcessConfigureCommunity</name>
     <message>
-        <location filename="../../../src/cutecoin/gui/process_cfg_community.py" line="206"/>
+        <location filename="../../../src/cutecoin/gui/process_cfg_community.py" line="221"/>
         <source>Configure community {0}</source>
         <translation>Configura comunità {0}</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/process_cfg_community.py" line="209"/>
+        <location filename="../../../src/cutecoin/gui/process_cfg_community.py" line="224"/>
         <source>Add a community</source>
         <translation>Aggiungi una comunità</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/process_cfg_community.py" line="243"/>
+        <location filename="../../../src/cutecoin/gui/process_cfg_community.py" line="258"/>
         <source>Error</source>
         <translation>Errore</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/process_cfg_community.py" line="272"/>
+        <location filename="../../../src/cutecoin/gui/process_cfg_community.py" line="287"/>
         <source>Delete</source>
         <translation>Elimina</translation>
     </message>
@@ -1917,7 +2021,7 @@ Vuoi pubblicare la chiave?</translation>
 <context>
     <name>Scene</name>
     <message>
-        <location filename="../../../src/cutecoin/gui/views/wot.py" line="157"/>
+        <location filename="../../../src/cutecoin/gui/views/wot.py" line="158"/>
         <source>Certification expires at {0}</source>
         <translation>La certificazione scade a {0}</translation>
     </message>
@@ -1925,44 +2029,56 @@ Vuoi pubblicare la chiave?</translation>
 <context>
     <name>StepPageInit</name>
     <message>
-        <location filename="../../../src/cutecoin/gui/process_cfg_community.py" line="67"/>
+        <location filename="../../../src/cutecoin/gui/process_cfg_community.py" line="93"/>
         <source>Could not find your identity on the network.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/process_cfg_community.py" line="100"/>
-        <source>Could not connect.</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../../../src/cutecoin/gui/process_cfg_community.py" line="92"/>
+        <location filename="../../../src/cutecoin/gui/process_cfg_community.py" line="123"/>
         <source>Broadcasting identity...</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/process_cfg_community.py" line="98"/>
-        <source>Pubkey already exists on the network</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../../../src/cutecoin/gui/process_cfg_community.py" line="110"/>
+        <location filename="../../../src/cutecoin/gui/process_cfg_community.py" line="127"/>
         <source>UID broadcast</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/process_cfg_community.py" line="110"/>
+        <location filename="../../../src/cutecoin/gui/process_cfg_community.py" line="127"/>
         <source>Identity broadcasted to the network</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/process_cfg_community.py" line="124"/>
+        <location filename="../../../src/cutecoin/gui/process_cfg_community.py" line="134"/>
         <source>Error</source>
         <translation type="unfinished">Errore</translation>
     </message>
     <message>
         <location filename="../../../src/cutecoin/gui/process_cfg_community.py" line="124"/>
         <source>{0} : {1}</source>
-        <translation type="unfinished">{0} : {1}</translation>
+        <translation type="obsolete">{0} : {1}</translation>
+    </message>
+    <message>
+        <location filename="../../../src/cutecoin/gui/process_cfg_community.py" line="95"/>
+        <source>Your pubkey or UID is different on the network.
+    Yours : {0}, the network : {1}</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../../src/cutecoin/gui/process_cfg_community.py" line="134"/>
+        <source>{0}</source>
+        <translation type="unfinished">{0}</translation>
+    </message>
+    <message>
+        <location filename="../../../src/cutecoin/gui/process_cfg_community.py" line="138"/>
+        <source>Your pubkey or UID was already found on the network.
+Yours : {0}, the network : {1}</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../../src/cutecoin/gui/process_cfg_community.py" line="141"/>
+        <source>Your account already exists on the network</source>
+        <translation type="unfinished"></translation>
     </message>
 </context>
 <context>
@@ -1976,12 +2092,12 @@ Vuoi pubblicare la chiave?</translation>
 <context>
     <name>TransactionsTabWidget</name>
     <message>
-        <location filename="../../../src/cutecoin/gui/transactions_tab.py" line="118"/>
+        <location filename="../../../src/cutecoin/gui/transactions_tab.py" line="135"/>
         <source>Received {0} {1} from {2} transfers</source>
         <translation>Trasferimenti ricevuti {0} {1} di {2}</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/transactions_tab.py" line="122"/>
+        <location filename="../../../src/cutecoin/gui/transactions_tab.py" line="139"/>
         <source>New transactions received</source>
         <translation>Nuove transazioni ricevute</translation>
     </message>
@@ -2001,59 +2117,59 @@ Vuoi pubblicare la chiave?</translation>
         <translation type="obsolete">&lt;b&gt;Bilancia&lt;/b&gt; {:} {:}</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/transactions_tab.py" line="151"/>
+        <location filename="../../../src/cutecoin/gui/transactions_tab.py" line="170"/>
         <source>Actions</source>
         <translation>Azioni</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/transactions_tab.py" line="166"/>
+        <location filename="../../../src/cutecoin/gui/transactions_tab.py" line="185"/>
         <source>Send again</source>
         <translation>Invia di nuovo</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/transactions_tab.py" line="171"/>
+        <location filename="../../../src/cutecoin/gui/transactions_tab.py" line="190"/>
         <source>Cancel</source>
         <translation>Annulla</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/transactions_tab.py" line="177"/>
+        <location filename="../../../src/cutecoin/gui/transactions_tab.py" line="196"/>
         <source>Informations</source>
         <translation>Informazioni</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/transactions_tab.py" line="182"/>
+        <location filename="../../../src/cutecoin/gui/transactions_tab.py" line="201"/>
         <source>Add as contact</source>
         <translation>Aggiungi un contatto</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/transactions_tab.py" line="187"/>
+        <location filename="../../../src/cutecoin/gui/transactions_tab.py" line="206"/>
         <source>Send money</source>
         <translation>Invia denaro</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/transactions_tab.py" line="193"/>
+        <location filename="../../../src/cutecoin/gui/transactions_tab.py" line="212"/>
         <source>View in Web of Trust</source>
         <translation>Vedi in Rete della Fiducia</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/transactions_tab.py" line="198"/>
+        <location filename="../../../src/cutecoin/gui/transactions_tab.py" line="217"/>
         <source>Copy pubkey to clipboard</source>
         <translation>Copia chiave pubblica negli appunti</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/transactions_tab.py" line="276"/>
+        <location filename="../../../src/cutecoin/gui/transactions_tab.py" line="283"/>
         <source>Warning</source>
         <translation>Avvertimento</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/transactions_tab.py" line="276"/>
+        <location filename="../../../src/cutecoin/gui/transactions_tab.py" line="283"/>
         <source>Are you sure ?
 This money transfer will be removed and not sent.</source>
         <translation>Sei sicuro? ↵
 Questo trasferimento di denaro sarà rimosso e non inviato.</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/transactions_tab.py" line="137"/>
+        <location filename="../../../src/cutecoin/gui/transactions_tab.py" line="155"/>
         <source>{:}</source>
         <translation type="unfinished">{:}</translation>
     </message>
@@ -2078,7 +2194,7 @@ Questo trasferimento di denaro sarà rimosso e non inviato.</translation>
     <message>
         <location filename="../../ui/transfer.ui" line="40"/>
         <source>Contact</source>
-        <translation>Contatto</translation>
+        <translation type="obsolete">Contatto</translation>
     </message>
     <message>
         <location filename="../../ui/transfer.ui" line="80"/>
@@ -2096,34 +2212,34 @@ Questo trasferimento di denaro sarà rimosso e non inviato.</translation>
         <translation>Messaggio della transazione</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/transfer.py" line="77"/>
+        <location filename="../../../src/cutecoin/gui/transfer.py" line="106"/>
         <source>Money transfer</source>
         <translation>Trasferimento del denaro</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/transfer.py" line="77"/>
+        <location filename="../../../src/cutecoin/gui/transfer.py" line="106"/>
         <source>No amount. Please give the transfert amount</source>
         <translation>Nessun importo. Si prega di dare l&apos;importo di trasferimento</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/transfer.py" line="99"/>
+        <location filename="../../../src/cutecoin/gui/transfer.py" line="137"/>
         <source>Transfer</source>
         <translation>Trasferi</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/transfer.py" line="99"/>
+        <location filename="../../../src/cutecoin/gui/transfer.py" line="124"/>
         <source>Success sending money to {0}</source>
         <translation>Successo l&apos;invio di denaro a {0}</translation>
     </message>
     <message>
         <location filename="../../../src/cutecoin/gui/transfer.py" line="111"/>
         <source>Error</source>
-        <translation>Errore</translation>
+        <translation type="obsolete">Errore</translation>
     </message>
     <message>
         <location filename="../../../src/cutecoin/gui/transfer.py" line="111"/>
         <source>{0} : {1}</source>
-        <translation>{0} : {1}</translation>
+        <translation type="obsolete">{0} : {1}</translation>
     </message>
     <message>
         <location filename="../../ui/transfer.ui" line="61"/>
@@ -2145,18 +2261,33 @@ Questo trasferimento di denaro sarà rimosso e non inviato.</translation>
         <source>Amount</source>
         <translation>Importo</translation>
     </message>
+    <message>
+        <location filename="../../ui/transfer.ui" line="40"/>
+        <source>Con&amp;tact</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>TxFilterProxyModel</name>
     <message>
         <location filename="../../../src/cutecoin/models/txhistory.py" line="158"/>
         <source>{0} / {1} validations</source>
-        <translation>{0} / {1} convalide</translation>
+        <translation type="obsolete">{0} / {1} convalide</translation>
     </message>
     <message>
         <location filename="../../../src/cutecoin/models/txhistory.py" line="162"/>
         <source>Validating... {0} %</source>
-        <translation>Convalida... {0} %</translation>
+        <translation type="obsolete">Convalida... {0} %</translation>
+    </message>
+    <message>
+        <location filename="../../../src/cutecoin/models/txhistory.py" line="165"/>
+        <source>{0} / {1} confirmations</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../../src/cutecoin/models/txhistory.py" line="169"/>
+        <source>Confirming... {0} %</source>
+        <translation type="unfinished"></translation>
     </message>
 </context>
 <context>
@@ -2398,25 +2529,30 @@ Revoca tuo UID può solo successo se non è già convalidato dalla rete.</transl
 <context>
     <name>WoT.Node</name>
     <message>
-        <location filename="../../../src/cutecoin/gui/views/wot.py" line="290"/>
+        <location filename="../../../src/cutecoin/gui/views/wot.py" line="294"/>
         <source>Informations</source>
         <translation>Informazioni</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/views/wot.py" line="295"/>
+        <location filename="../../../src/cutecoin/gui/views/wot.py" line="299"/>
         <source>Add as contact</source>
         <translation>Aggiungi un contatto</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/views/wot.py" line="300"/>
+        <location filename="../../../src/cutecoin/gui/views/wot.py" line="304"/>
         <source>Send money</source>
         <translation>Invia denaro</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/views/wot.py" line="305"/>
+        <location filename="../../../src/cutecoin/gui/views/wot.py" line="309"/>
         <source>Certify identity</source>
         <translation>Certifica l&apos;identità</translation>
     </message>
+    <message>
+        <location filename="../../../src/cutecoin/gui/views/wot.py" line="314"/>
+        <source>Copy pubkey</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>WotTabWidget</name>
@@ -2431,12 +2567,12 @@ Revoca tuo UID può solo successo se non è già convalidato dalla rete.</transl
         <translation>Centrare la vista su di me</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/wot_tab.py" line="33"/>
+        <location filename="../../../src/cutecoin/gui/wot_tab.py" line="37"/>
         <source>Research a pubkey, an uid...</source>
         <translation>Ricerca un chiave pubblica, un idu ...</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/wot_tab.py" line="123"/>
+        <location filename="../../../src/cutecoin/gui/wot_tab.py" line="141"/>
         <source>
                     &lt;table cellpadding=&quot;5&quot;&gt;
                     &lt;tr&gt;&lt;td align=&quot;right&quot;&gt;&lt;b&gt;{:}&lt;/b&gt;&lt;/td&gt;&lt;td&gt;{:}&lt;/td&gt;&lt;/tr&gt;
@@ -2453,32 +2589,32 @@ Revoca tuo UID può solo successo se non è già convalidato dalla rete.</transl
                     </translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/wot_tab.py" line="105"/>
+        <location filename="../../../src/cutecoin/gui/wot_tab.py" line="123"/>
         <source>Membership</source>
         <translation type="unfinished">Iscrizione</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/wot_tab.py" line="123"/>
+        <location filename="../../../src/cutecoin/gui/wot_tab.py" line="141"/>
         <source>Last renewal on {:}, expiration on {:}</source>
         <translation type="unfinished">Ultimo rinnovo il {:}, scadenza il {:}</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/wot_tab.py" line="141"/>
+        <location filename="../../../src/cutecoin/gui/wot_tab.py" line="159"/>
         <source>Your web of trust</source>
         <translation type="unfinished">La tua rete della fiducia</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/wot_tab.py" line="141"/>
+        <location filename="../../../src/cutecoin/gui/wot_tab.py" line="159"/>
         <source>Certified by {:} members; Certifier of {:} members</source>
         <translation type="unfinished">Certificato da {}: membri; Certificatore di {}: membri</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/wot_tab.py" line="141"/>
+        <location filename="../../../src/cutecoin/gui/wot_tab.py" line="159"/>
         <source>Not a member</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/wot_tab.py" line="141"/>
+        <location filename="../../../src/cutecoin/gui/wot_tab.py" line="159"/>
         <source>
                 &lt;table cellpadding=&quot;5&quot;&gt;
                 &lt;tr&gt;&lt;td align=&quot;right&quot;&gt;&lt;b&gt;{:}&lt;/b&gt;&lt;/td&gt;&lt;td&gt;{:}&lt;/td&gt;&lt;/tr&gt;
@@ -2498,7 +2634,7 @@ Revoca tuo UID può solo successo se non è già convalidato dalla rete.</transl
 <context>
     <name>self.config_dialog</name>
     <message>
-        <location filename="../../../src/cutecoin/gui/process_cfg_community.py" line="170"/>
+        <location filename="../../../src/cutecoin/gui/process_cfg_community.py" line="185"/>
         <source>Ok</source>
         <translation>Ok</translation>
     </message>
@@ -2563,7 +2699,12 @@ Revoca tuo UID può solo successo se non è già convalidato dalla rete.</transl
     <message>
         <location filename="../../ui/transactions_tab.ui" line="33"/>
         <source>label_balance</source>
-        <translation type="unfinished">etichetta_bilancia</translation>
+        <translation type="obsolete">etichetta_bilancia</translation>
+    </message>
+    <message>
+        <location filename="../../ui/transactions_tab.ui" line="33"/>
+        <source>loading...</source>
+        <translation type="unfinished"></translation>
     </message>
 </context>
 </TS>
diff --git a/res/i18n/ts/pl_PL.ts b/res/i18n/ts/pl_PL.ts
index 6330daf140a3ffccd30b8cf5f09917ed98afe709..f169e3a226de9b25a177481ec4866634d01d1e5d 100644
--- a/res/i18n/ts/pl_PL.ts
+++ b/res/i18n/ts/pl_PL.ts
@@ -13,6 +13,14 @@
         <translation>etykieta</translation>
     </message>
 </context>
+<context>
+    <name>Account</name>
+    <message>
+        <location filename="../../../src/cutecoin/core/account.py" line="509"/>
+        <source>Could not find user self certification.</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
 <context>
     <name>AccountConfigurationDialog</name>
     <message>
@@ -91,10 +99,23 @@
         <translation>Społeczności</translation>
     </message>
 </context>
+<context>
+    <name>Application</name>
+    <message>
+        <location filename="../../../src/cutecoin/core/app.py" line="76"/>
+        <source>Warning : Your membership is expiring soon.</source>
+        <translation type="unfinished">Ostrzeżenie: Twoje członkostwo wygasa szybko.</translation>
+    </message>
+    <message>
+        <location filename="../../../src/cutecoin/core/app.py" line="81"/>
+        <source>Warning : Your could miss certifications soon.</source>
+        <translation type="unfinished">Uwaga: Twój mogło zabraknąć certyfikaty wkrótce.</translation>
+    </message>
+</context>
 <context>
     <name>CertificationDialog</name>
     <message>
-        <location filename="../../../src/cutecoin/gui/certification.py" line="65"/>
+        <location filename="../../../src/cutecoin/gui/certification.py" line="79"/>
         <source>Certification</source>
         <translation>Certyfikacja</translation>
     </message>
@@ -126,17 +147,17 @@
     <message>
         <location filename="../../../src/cutecoin/gui/certification.py" line="65"/>
         <source>Success certifying {0} from {1}</source>
-        <translation>Sukces potwierdzający {0} z {1}</translation>
+        <translation type="obsolete">Sukces potwierdzający {0} z {1}</translation>
     </message>
     <message>
         <location filename="../../../src/cutecoin/gui/certification.py" line="75"/>
         <source>Error</source>
-        <translation>Błąd</translation>
+        <translation type="obsolete">Błąd</translation>
     </message>
     <message>
         <location filename="../../../src/cutecoin/gui/certification.py" line="75"/>
         <source>{0} : {1}</source>
-        <translation>{0} : {1}</translation>
+        <translation type="obsolete">{0} : {1}</translation>
     </message>
     <message>
         <location filename="../../../src/cutecoin/gui/certification.py" line="77"/>
@@ -144,15 +165,25 @@
         <translation type="obsolete">Ok</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/certification.py" line="97"/>
+        <location filename="../../../src/cutecoin/gui/certification.py" line="107"/>
         <source>Not a member</source>
         <translation>Nie jest członkiem</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/certification.py" line="94"/>
+        <location filename="../../../src/cutecoin/gui/certification.py" line="104"/>
         <source>&amp;Ok</source>
         <translation type="unfinished"></translation>
     </message>
+    <message>
+        <location filename="../../../src/cutecoin/gui/certification.py" line="70"/>
+        <source>Success sending certification</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../../src/cutecoin/gui/certification.py" line="79"/>
+        <source>Could not broadcast certification : {0}</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>CommunityConfigurationDialog</name>
@@ -177,27 +208,27 @@
         <translation type="obsolete">Sprawdź łączność węzła</translation>
     </message>
     <message>
-        <location filename="../../ui/community_cfg.ui" line="145"/>
+        <location filename="../../ui/community_cfg.ui" line="162"/>
         <source>Communities nodes</source>
         <translation type="unfinished">Społeczności węzły</translation>
     </message>
     <message>
-        <location filename="../../ui/community_cfg.ui" line="163"/>
+        <location filename="../../ui/community_cfg.ui" line="180"/>
         <source>Server</source>
         <translation>Serwer</translation>
     </message>
     <message>
-        <location filename="../../ui/community_cfg.ui" line="183"/>
+        <location filename="../../ui/community_cfg.ui" line="200"/>
         <source>Add</source>
         <translation>Dodać</translation>
     </message>
     <message>
-        <location filename="../../ui/community_cfg.ui" line="204"/>
+        <location filename="../../ui/community_cfg.ui" line="221"/>
         <source>Previous</source>
         <translation>Poprzedni</translation>
     </message>
     <message>
-        <location filename="../../ui/community_cfg.ui" line="227"/>
+        <location filename="../../ui/community_cfg.ui" line="244"/>
         <source>Next</source>
         <translation>Następny</translation>
     </message>
@@ -211,6 +242,11 @@
         <source>Connect using your account</source>
         <translation type="unfinished"></translation>
     </message>
+    <message>
+        <location filename="../../ui/community_cfg.ui" line="132"/>
+        <source>Connect as a guest</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>CommunityTabWidget</name>
@@ -278,35 +314,45 @@
 <context>
     <name>CommunityTile</name>
     <message>
-        <location filename="../../../src/cutecoin/gui/community_tile.py" line="46"/>
+        <location filename="../../../src/cutecoin/gui/community_tile.py" line="77"/>
         <source>Member</source>
         <translation type="unfinished">Członek</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/community_tile.py" line="47"/>
+        <location filename="../../../src/cutecoin/gui/community_tile.py" line="78"/>
         <source>Non-Member</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/community_tile.py" line="58"/>
+        <location filename="../../../src/cutecoin/gui/community_tile.py" line="89"/>
         <source>members</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/community_tile.py" line="58"/>
+        <location filename="../../../src/cutecoin/gui/community_tile.py" line="89"/>
         <source>Monetary mass</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/community_tile.py" line="58"/>
+        <location filename="../../../src/cutecoin/gui/community_tile.py" line="89"/>
         <source>Status</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/community_tile.py" line="58"/>
+        <location filename="../../../src/cutecoin/gui/community_tile.py" line="89"/>
         <source>Balance</source>
         <translation type="unfinished">Równowaga</translation>
     </message>
+    <message>
+        <location filename="../../../src/cutecoin/gui/community_tile.py" line="108"/>
+        <source>Not connected</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../../src/cutecoin/gui/community_tile.py" line="121"/>
+        <source>Community not initialized</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>CommunityWidget</name>
@@ -326,82 +372,82 @@
         <translation type="unfinished">Certyfikacja</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/community_view.py" line="227"/>
+        <location filename="../../../src/cutecoin/gui/community_view.py" line="282"/>
         <source>Renew membership</source>
         <translation type="unfinished">Odnów członkostwo</translation>
     </message>
     <message>
         <location filename="../../../src/cutecoin/gui/community_view.py" line="44"/>
         <source>Warning : Your membership is expiring soon.</source>
-        <translation type="unfinished">Ostrzeżenie: Twoje członkostwo wygasa szybko.</translation>
+        <translation type="obsolete">Ostrzeżenie: Twoje członkostwo wygasa szybko.</translation>
     </message>
     <message>
         <location filename="../../../src/cutecoin/gui/community_view.py" line="46"/>
         <source>Warning : Your could miss certifications soon.</source>
-        <translation type="unfinished">Uwaga: Twój mogło zabraknąć certyfikaty wkrótce.</translation>
+        <translation type="obsolete">Uwaga: Twój mogło zabraknąć certyfikaty wkrótce.</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/community_view.py" line="63"/>
+        <location filename="../../../src/cutecoin/gui/community_view.py" line="65"/>
         <source>Transactions</source>
         <translation type="unfinished">Transakcje</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/community_view.py" line="67"/>
+        <location filename="../../../src/cutecoin/gui/community_view.py" line="69"/>
         <source>Web of Trust</source>
         <translation type="unfinished">Sieć Zaufania</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/community_view.py" line="71"/>
+        <location filename="../../../src/cutecoin/gui/community_view.py" line="73"/>
         <source>Search Identities</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/community_view.py" line="75"/>
+        <location filename="../../../src/cutecoin/gui/community_view.py" line="77"/>
         <source>Network</source>
         <translation type="unfinished">Sieć</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/community_view.py" line="154"/>
+        <location filename="../../../src/cutecoin/gui/community_view.py" line="177"/>
         <source>Membership expiration</source>
         <translation type="unfinished">Wygaśnięcie członkostwa</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/community_view.py" line="154"/>
+        <location filename="../../../src/cutecoin/gui/community_view.py" line="177"/>
         <source>&lt;b&gt;Warning : Membership expiration in {0} days&lt;/b&gt;</source>
         <translation type="unfinished">&lt;b&gt;Uwaga : Wygaśnięcie członkostwa w {0} dni&lt;/b&gt;</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/community_view.py" line="162"/>
+        <location filename="../../../src/cutecoin/gui/community_view.py" line="188"/>
         <source>Certifications number</source>
         <translation type="unfinished">Numer Certyfikaty</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/community_view.py" line="162"/>
+        <location filename="../../../src/cutecoin/gui/community_view.py" line="188"/>
         <source>&lt;b&gt;Warning : You are certified by only {0} persons, need {1}&lt;/b&gt;</source>
         <translation type="unfinished">&lt;b&gt;Ostrzeżenie : certyfikowane przez zaledwie {0} osób, potrzebuję {1}&lt;/b&gt;</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/community_view.py" line="189"/>
+        <location filename="../../../src/cutecoin/gui/community_view.py" line="221"/>
         <source> Block {0}</source>
         <translation type="unfinished"> Blok {0}</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/community_view.py" line="211"/>
+        <location filename="../../../src/cutecoin/gui/community_view.py" line="263"/>
         <source> - Median fork window : {0}</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/community_view.py" line="232"/>
+        <location filename="../../../src/cutecoin/gui/community_view.py" line="288"/>
         <source>Send membership demand</source>
         <translation type="unfinished">Wyślij popytu członkostwa</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/community_view.py" line="298"/>
+        <location filename="../../../src/cutecoin/gui/community_view.py" line="334"/>
         <source>Warning</source>
         <translation type="unfinished">Ostrzeżenie</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/community_view.py" line="259"/>
+        <location filename="../../../src/cutecoin/gui/community_view.py" line="334"/>
         <source>Are you sure ?
 Sending a leaving demand  cannot be canceled.
 The process to join back the community later will have to be done again.</source>
@@ -413,74 +459,94 @@ Proces dołączyć z powrotem do wspólnoty później będzie musiał być ponow
         <location filename="../../../src/cutecoin/gui/community_view.py" line="272"/>
         <source>Are you sure ?
 Publishing your UID can be canceled by Revoke UID.</source>
-        <translation type="unfinished">Jesteś pewny ?
+        <translation type="obsolete">Jesteś pewny ?
 Publikowanie UID może zostać anulowane przez odwołaniu UID.</translation>
     </message>
     <message>
         <location filename="../../../src/cutecoin/gui/community_view.py" line="283"/>
         <source>UID Publishing</source>
-        <translation type="unfinished">UID wydawnictwa</translation>
+        <translation type="obsolete">UID wydawnictwa</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/community_view.py" line="283"/>
+        <location filename="../../../src/cutecoin/gui/community_view.py" line="368"/>
         <source>Success publishing your UID</source>
         <translation type="unfinished">Sukces publikowanie UID</translation>
     </message>
     <message>
         <location filename="../../../src/cutecoin/gui/community_view.py" line="286"/>
         <source>Publish UID error</source>
-        <translation type="unfinished">Publikowanie błąd UID</translation>
+        <translation type="obsolete">Publikowanie błąd UID</translation>
     </message>
     <message>
         <location filename="../../../src/cutecoin/gui/community_view.py" line="289"/>
         <source>Network error</source>
-        <translation type="unfinished">Błąd sieci</translation>
+        <translation type="obsolete">Błąd sieci</translation>
     </message>
     <message>
         <location filename="../../../src/cutecoin/gui/community_view.py" line="289"/>
         <source>Couldn&apos;t connect to network : {0}</source>
-        <translation type="unfinished">Nie można połączyć się z siecią: {0}</translation>
+        <translation type="obsolete">Nie można połączyć się z siecią: {0}</translation>
     </message>
     <message>
         <location filename="../../../src/cutecoin/gui/community_view.py" line="293"/>
         <source>Error</source>
-        <translation type="unfinished">Błąd</translation>
+        <translation type="obsolete">Błąd</translation>
     </message>
     <message>
         <location filename="../../../src/cutecoin/gui/community_view.py" line="298"/>
         <source>Are you sure ?
 Revoking your UID can only success if it is not already validated by the network.</source>
-        <translation type="unfinished">Jesteś pewny ?
+        <translation type="obsolete">Jesteś pewny ?
 Odwołanie UID może tylko sukcesem, jeśli nie jest on już zatwierdzony przez sieć.</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/community_view.py" line="313"/>
+        <location filename="../../../src/cutecoin/gui/community_view.py" line="388"/>
         <source>Membership</source>
         <translation type="unfinished">Członkostwo</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/community_view.py" line="313"/>
+        <location filename="../../../src/cutecoin/gui/community_view.py" line="322"/>
         <source>Success sending Membership demand</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/community_view.py" line="319"/>
+        <location filename="../../../src/cutecoin/gui/community_view.py" line="354"/>
         <source>Revoke</source>
         <translation type="unfinished">Odwołać</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/community_view.py" line="319"/>
+        <location filename="../../../src/cutecoin/gui/community_view.py" line="348"/>
         <source>Success sending Revoke demand</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/community_view.py" line="325"/>
-        <source>Self Certification</source>
+        <location filename="../../../src/cutecoin/gui/community_view.py" line="81"/>
+        <source>Show informations</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/community_view.py" line="325"/>
-        <source>Success sending Self Certification document</source>
+        <location filename="../../../src/cutecoin/gui/community_view.py" line="85"/>
+        <source>Informations</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../../src/cutecoin/gui/community_view.py" line="98"/>
+        <source>Publish UID</source>
+        <translation type="unfinished">Opublikować UID</translation>
+    </message>
+    <message>
+        <location filename="../../../src/cutecoin/gui/community_view.py" line="392"/>
+        <source>Revoke UID</source>
+        <translation type="unfinished">Odwołać UID</translation>
+    </message>
+    <message>
+        <location filename="../../../src/cutecoin/gui/community_view.py" line="394"/>
+        <source>UID</source>
+        <translation type="unfinished">UID</translation>
+    </message>
+    <message>
+        <location filename="../../../src/cutecoin/gui/community_view.py" line="388"/>
+        <source>Your UID was revoked successfully.</source>
         <translation type="unfinished"></translation>
     </message>
 </context>
@@ -624,27 +690,27 @@ Odwołanie UID może tylko sukcesem, jeśli nie jest on już zatwierdzony przez
 <context>
     <name>HistoryTableModel</name>
     <message>
-        <location filename="../../../src/cutecoin/models/txhistory.py" line="199"/>
+        <location filename="../../../src/cutecoin/models/txhistory.py" line="206"/>
         <source>Date</source>
         <translation>Data</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/models/txhistory.py" line="199"/>
+        <location filename="../../../src/cutecoin/models/txhistory.py" line="206"/>
         <source>UID/Public key</source>
         <translation>UID/Klucz publiczny</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/models/txhistory.py" line="199"/>
+        <location filename="../../../src/cutecoin/models/txhistory.py" line="206"/>
         <source>Payment</source>
         <translation>Płatność</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/models/txhistory.py" line="199"/>
+        <location filename="../../../src/cutecoin/models/txhistory.py" line="206"/>
         <source>Deposit</source>
         <translation>Kaucja</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/models/txhistory.py" line="199"/>
+        <location filename="../../../src/cutecoin/models/txhistory.py" line="206"/>
         <source>Comment</source>
         <translation>Uwaga</translation>
     </message>
@@ -759,65 +825,70 @@ Odwołanie UID może tylko sukcesem, jeśli nie jest on już zatwierdzony przez
 <context>
     <name>IdentitiesTabWidget</name>
     <message>
-        <location filename="../../../src/cutecoin/gui/identities_tab.py" line="56"/>
+        <location filename="../../../src/cutecoin/gui/identities_tab.py" line="63"/>
         <source>Members</source>
         <translation type="unfinished">Członek</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/identities_tab.py" line="59"/>
+        <location filename="../../../src/cutecoin/gui/identities_tab.py" line="66"/>
         <source>Direct connections</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/identities_tab.py" line="98"/>
+        <location filename="../../../src/cutecoin/gui/identities_tab.py" line="109"/>
         <source>Informations</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/identities_tab.py" line="101"/>
+        <location filename="../../../src/cutecoin/gui/identities_tab.py" line="112"/>
         <source>Add as contact</source>
         <translation type="unfinished">Dodaj jako kontakt</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/identities_tab.py" line="105"/>
+        <location filename="../../../src/cutecoin/gui/identities_tab.py" line="116"/>
         <source>Send money</source>
         <translation type="unfinished">Wyślij pieniądze</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/identities_tab.py" line="109"/>
+        <location filename="../../../src/cutecoin/gui/identities_tab.py" line="120"/>
         <source>Certify identity</source>
         <translation type="unfinished">Poświadcza tożsamość</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/identities_tab.py" line="113"/>
+        <location filename="../../../src/cutecoin/gui/identities_tab.py" line="124"/>
         <source>View in Web of Trust</source>
         <translation type="unfinished"></translation>
     </message>
+    <message>
+        <location filename="../../../src/cutecoin/gui/identities_tab.py" line="128"/>
+        <source>Copy pubkey</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>IdentitiesTableModel</name>
     <message>
-        <location filename="../../../src/cutecoin/models/identities.py" line="89"/>
+        <location filename="../../../src/cutecoin/models/identities.py" line="90"/>
         <source>UID</source>
         <translation>UID</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/models/identities.py" line="90"/>
+        <location filename="../../../src/cutecoin/models/identities.py" line="91"/>
         <source>Pubkey</source>
         <translation>Klucz publiczny</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/models/identities.py" line="91"/>
+        <location filename="../../../src/cutecoin/models/identities.py" line="92"/>
         <source>Renewed</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/models/identities.py" line="92"/>
+        <location filename="../../../src/cutecoin/models/identities.py" line="93"/>
         <source>Expiration</source>
         <translation type="unfinished">Wygaśnięcie</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/models/identities.py" line="93"/>
+        <location filename="../../../src/cutecoin/models/identities.py" line="94"/>
         <source>Validation</source>
         <translation>Walidacja</translation>
     </message>
@@ -895,7 +966,7 @@ Odwołanie UID może tylko sukcesem, jeśli nie jest on już zatwierdzony przez
     <message>
         <location filename="../../ui/informations_tab.ui" line="61"/>
         <source>label_general</source>
-        <translation>label_general</translation>
+        <translation type="obsolete">label_general</translation>
     </message>
     <message>
         <location filename="../../ui/informations_tab.ui" line="77"/>
@@ -905,7 +976,7 @@ Odwołanie UID może tylko sukcesem, jeśli nie jest on już zatwierdzony przez
     <message>
         <location filename="../../ui/informations_tab.ui" line="83"/>
         <source>label_rules</source>
-        <translation>label_rules</translation>
+        <translation type="obsolete">label_rules</translation>
     </message>
     <message>
         <location filename="../../ui/informations_tab.ui" line="96"/>
@@ -915,7 +986,7 @@ Odwołanie UID może tylko sukcesem, jeśli nie jest on już zatwierdzony przez
     <message>
         <location filename="../../ui/informations_tab.ui" line="102"/>
         <source>label_money</source>
-        <translation>label_money</translation>
+        <translation type="obsolete">label_money</translation>
     </message>
     <message>
         <location filename="../../ui/informations_tab.ui" line="115"/>
@@ -925,10 +996,10 @@ Odwołanie UID może tylko sukcesem, jeśli nie jest on już zatwierdzony przez
     <message>
         <location filename="../../ui/informations_tab.ui" line="121"/>
         <source>label_wot</source>
-        <translation>label_wot</translation>
+        <translation type="obsolete">label_wot</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="86"/>
+        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="103"/>
         <source>
                 &lt;table cellpadding=&quot;5&quot;&gt;
                 &lt;tr&gt;&lt;td align=&quot;right&quot;&gt;&lt;b&gt;{:}&lt;/b&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;{:} {:}&lt;/td&gt;&lt;/tr&gt;
@@ -953,47 +1024,47 @@ Odwołanie UID może tylko sukcesem, jeśli nie jest on już zatwierdzony przez
                 </translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="86"/>
+        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="103"/>
         <source>Universal Dividend UD(t) in</source>
         <translation>Uniwersalny Dywidendy UD(t) w</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="86"/>
+        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="103"/>
         <source>Monetary Mass M(t-1) in</source>
         <translation>Podaż Pieniądza M(t-1) w</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="86"/>
+        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="103"/>
         <source>Members N(t)</source>
         <translation>Członkowie N(t)</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="86"/>
+        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="103"/>
         <source>Monetary Mass per member M(t-1)/N(t) in</source>
         <translation>Podaż Pieniądza na członka M(t-1)/N(t) w</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="86"/>
+        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="103"/>
         <source>Actual growth c = UD(t)/[M(t-1)/N(t)]</source>
         <translation>Rzeczywisty wzrost c = UD(t)/[M(t-1)/N(t)]</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="86"/>
+        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="103"/>
         <source>Last UD date and time (t)</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="86"/>
+        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="103"/>
         <source>Next UD date and time (t+1)</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="158"/>
+        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="175"/>
         <source>No Universal Dividend created yet.</source>
         <translation type="unfinished">Nie masz jeszcze Uniwersalny dywidendy stworzył.</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="133"/>
+        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="150"/>
         <source>
                 &lt;table cellpadding=&quot;5&quot;&gt;
                 &lt;tr&gt;&lt;td align=&quot;right&quot;&gt;&lt;b&gt;{:}&lt;/b&gt;&lt;/td&gt;&lt;td&gt;{:}&lt;/td&gt;&lt;/tr&gt;
@@ -1010,37 +1081,37 @@ Odwołanie UID może tylko sukcesem, jeśli nie jest on już zatwierdzony przez
                 </translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="133"/>
+        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="150"/>
         <source>{:2.0%} / {:} days</source>
         <translation>{:2.0%} / {:} dni</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="133"/>
+        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="150"/>
         <source>Fundamental growth (c) / Delta time (dt)</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="133"/>
+        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="150"/>
         <source>UD(t+1) = MAX { UD(t) ; c &amp;#215; M(t) / N(t+1) }</source>
         <translation>UD(t+1) = MAX { UD(t) ; c &amp;#215; M(t) / N(t+1) }</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="133"/>
+        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="150"/>
         <source>Universal Dividend (formula)</source>
         <translation>Uniwersalny Dywidendy (formuła)</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="133"/>
+        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="150"/>
         <source>{:} = MAX {{ {:} {:} ; {:2.0%} &amp;#215; {:} {:} / {:} }}</source>
         <translation>{:} = MAX {{ {:} {:} ; {:2.0%} &amp;#215; {:} {:} / {:} }}</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="133"/>
+        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="150"/>
         <source>Universal Dividend (computed)</source>
         <translation>Uniwersalny Dywidendy (obliczana)</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="161"/>
+        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="178"/>
         <source>
             &lt;table cellpadding=&quot;5&quot;&gt;
             &lt;tr&gt;&lt;td align=&quot;right&quot;&gt;&lt;b&gt;{:2.0%} / {:} days&lt;/b&gt;&lt;/td&gt;&lt;td&gt;{:}&lt;/td&gt;&lt;/tr&gt;
@@ -1067,47 +1138,47 @@ Odwołanie UID może tylko sukcesem, jeśli nie jest on już zatwierdzony przez
             </translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="161"/>
+        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="178"/>
         <source>Fundamental growth (c)</source>
         <translation type="unfinished">Podstawowym wzrostu (c)</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="161"/>
+        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="178"/>
         <source>Initial Universal Dividend UD(0) in</source>
         <translation>Uniwersalny Dywidendy początkowa UD(0) w</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="161"/>
+        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="178"/>
         <source>Time period (dt) in days (86400 seconds) between two UD</source>
         <translation>Okres czasu (dt) w dni (86400 sekund) między dwoma UD</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="161"/>
+        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="178"/>
         <source>Number of blocks used for calculating median time</source>
         <translation type="unfinished">Liczba bloków stosowane do obliczania mediany czasu</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="161"/>
+        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="178"/>
         <source>The average time in seconds for writing 1 block (wished time)</source>
         <translation>Średni czas w sekundach do pisania 1 blok (szkoda czasu)</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="161"/>
+        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="178"/>
         <source>The number of blocks required to evaluate again PoWMin value</source>
         <translation type="unfinished">Liczba bloków wymagane do oceny wartości ponownie PoWMin</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="161"/>
+        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="178"/>
         <source>The number of previous blocks to check for personalized difficulty</source>
         <translation>Liczba poprzednich bloków, aby sprawdzić indywidualną trudności</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="161"/>
+        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="178"/>
         <source>The percent of previous issuers to reach for personalized difficulty</source>
         <translation type="unfinished">Procent poprzednich emitentów dotrzeć do spersonalizowanej trudności</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="196"/>
+        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="213"/>
         <source>
             &lt;table cellpadding=&quot;5&quot;&gt;
             &lt;tr&gt;&lt;td align=&quot;right&quot;&gt;&lt;b&gt;{:}&lt;/b&gt;&lt;/td&gt;&lt;td&gt;{:}&lt;/td&gt;&lt;/tr&gt;
@@ -1130,32 +1201,32 @@ Odwołanie UID może tylko sukcesem, jeśli nie jest on już zatwierdzony przez
             </translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="196"/>
+        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="213"/>
         <source>Minimum delay between 2 identical certifications (in days)</source>
         <translation>Minimalne opóźnienie między 2 identycznych certyfikatów (w dniach)</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="196"/>
+        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="213"/>
         <source>Maximum age of a valid signature (in days)</source>
         <translation>Maksymalny wiek ważnego podpisu (w dniach)</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="196"/>
+        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="213"/>
         <source>Minimum quantity of signatures to be part of the WoT</source>
         <translation>Minimalna ilość podpisów, aby być częścią WoT</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="196"/>
+        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="213"/>
         <source>Minimum quantity of valid made certifications to be part of the WoT for distance rule</source>
         <translation type="unfinished">Minimalna ilość ważnych zaświadczeń wydanych być częścią WoT dla rządów odległości</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="196"/>
+        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="213"/>
         <source>Maximum age of a valid membership (in days)</source>
         <translation>Maksymalny wiek ważnego członkostwa (w dniach)</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="196"/>
+        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="213"/>
         <source>Maximum distance between each WoT member and a newcomer</source>
         <translation type="unfinished">La distance maximale entre les membres individuels de la WOT et novice</translation>
     </message>
@@ -1300,7 +1371,7 @@ Odwołanie UID może tylko sukcesem, jeśli nie jest on już zatwierdzony przez
         &lt;p&gt;vit&lt;/p&gt;
         &lt;p&gt;canercandan&lt;/p&gt;
         </source>
-        <translation>
+        <translation type="obsolete">
         &lt;h1&gt;Cutecoin&lt;/h1&gt;
 
         &lt;p&gt;Python/Qt uCoin client&lt;/p&gt;
@@ -1318,42 +1389,42 @@ Odwołanie UID może tylko sukcesem, jeśli nie jest on już zatwierdzony przez
         </translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/mainwindow.py" line="250"/>
+        <location filename="../../../src/cutecoin/gui/mainwindow.py" line="251"/>
         <source>Please get the latest release {version}</source>
         <translation>Proszę pobrać najnowsze wydanie {wersja}</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/mainwindow.py" line="285"/>
+        <location filename="../../../src/cutecoin/gui/mainwindow.py" line="283"/>
         <source>Edit</source>
         <translation>Edycja</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/mainwindow.py" line="288"/>
+        <location filename="../../../src/cutecoin/gui/mainwindow.py" line="286"/>
         <source>Delete</source>
         <translation>Kasować</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/mainwindow.py" line="305"/>
+        <location filename="../../../src/cutecoin/gui/mainwindow.py" line="303"/>
         <source>CuteCoin {0}</source>
         <translation>CuteCoin {0}</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/mainwindow.py" line="332"/>
+        <location filename="../../../src/cutecoin/gui/mainwindow.py" line="330"/>
         <source>CuteCoin {0} - Account : {1}</source>
         <translation>CuteCoin {0} - Konto : {1}</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/mainwindow.py" line="350"/>
+        <location filename="../../../src/cutecoin/gui/mainwindow.py" line="348"/>
         <source>Export an account</source>
         <translation>Eksportować konto</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/mainwindow.py" line="351"/>
+        <location filename="../../../src/cutecoin/gui/mainwindow.py" line="349"/>
         <source>All account files (*.acc)</source>
         <translation type="unfinished">Pliki konto (*.acc)</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/mainwindow.py" line="352"/>
+        <location filename="../../../src/cutecoin/gui/mainwindow.py" line="350"/>
         <source>Export</source>
         <translation>Eksport</translation>
     </message>
@@ -1377,6 +1448,27 @@ Odwołanie UID może tylko sukcesem, jeśli nie jest on już zatwierdzony przez
         <source>C&amp;ertification</source>
         <translation type="unfinished"></translation>
     </message>
+    <message>
+        <location filename="../../../src/cutecoin/gui/mainwindow.py" line="225"/>
+        <source>
+        &lt;h1&gt;Cutecoin&lt;/h1&gt;
+
+        &lt;p&gt;Python/Qt uCoin client&lt;/p&gt;
+
+        &lt;p&gt;Version : {:}&lt;/p&gt;
+        {new_version_text}
+
+        &lt;p&gt;License : GPLv3&lt;/p&gt;
+
+        &lt;p&gt;&lt;b&gt;Authors&lt;/b&gt;&lt;/p&gt;
+
+        &lt;p&gt;inso&lt;/p&gt;
+        &lt;p&gt;vit&lt;/p&gt;
+        &lt;p&gt;Moul&lt;/p&gt;
+        &lt;p&gt;canercandan&lt;/p&gt;
+        </source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>MemberDialog</name>
@@ -1427,62 +1519,62 @@ Odwołanie UID może tylko sukcesem, jeśli nie jest on już zatwierdzony przez
 <context>
     <name>NetworkFilterProxyModel</name>
     <message>
-        <location filename="../../../src/cutecoin/models/network.py" line="47"/>
+        <location filename="../../../src/cutecoin/models/network.py" line="48"/>
         <source>Address</source>
         <translation>Adres</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/models/network.py" line="48"/>
+        <location filename="../../../src/cutecoin/models/network.py" line="49"/>
         <source>Port</source>
         <translation>Port</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/models/network.py" line="49"/>
+        <location filename="../../../src/cutecoin/models/network.py" line="50"/>
         <source>Block</source>
         <translation>Blok</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/models/network.py" line="51"/>
+        <location filename="../../../src/cutecoin/models/network.py" line="52"/>
         <source>UID</source>
         <translation>UID</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/models/network.py" line="52"/>
+        <location filename="../../../src/cutecoin/models/network.py" line="53"/>
         <source>Member</source>
         <translation>Członek</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/models/network.py" line="53"/>
+        <location filename="../../../src/cutecoin/models/network.py" line="54"/>
         <source>Pubkey</source>
         <translation>Klucz publiczny</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/models/network.py" line="54"/>
+        <location filename="../../../src/cutecoin/models/network.py" line="55"/>
         <source>Software</source>
         <translation>Oprogramowanie</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/models/network.py" line="55"/>
+        <location filename="../../../src/cutecoin/models/network.py" line="56"/>
         <source>Version</source>
         <translation>Wersja</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/models/network.py" line="68"/>
+        <location filename="../../../src/cutecoin/models/network.py" line="69"/>
         <source>yes</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/models/network.py" line="68"/>
+        <location filename="../../../src/cutecoin/models/network.py" line="69"/>
         <source>no</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/models/network.py" line="68"/>
+        <location filename="../../../src/cutecoin/models/network.py" line="69"/>
         <source>offline</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/models/network.py" line="50"/>
+        <location filename="../../../src/cutecoin/models/network.py" line="51"/>
         <source>Hash</source>
         <translation type="unfinished"></translation>
     </message>
@@ -1495,17 +1587,17 @@ Odwołanie UID może tylko sukcesem, jeśli nie jest on już zatwierdzony przez
         <translation type="unfinished">Forma</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/network_tab.py" line="68"/>
+        <location filename="../../../src/cutecoin/gui/network_tab.py" line="70"/>
         <source>Unset root node</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/network_tab.py" line="74"/>
+        <location filename="../../../src/cutecoin/gui/network_tab.py" line="76"/>
         <source>Set as root node</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/network_tab.py" line="80"/>
+        <location filename="../../../src/cutecoin/gui/network_tab.py" line="82"/>
         <source>Open in browser</source>
         <translation type="unfinished"></translation>
     </message>
@@ -1513,22 +1605,22 @@ Odwołanie UID może tylko sukcesem, jeśli nie jest on już zatwierdzony przez
 <context>
     <name>NetworkTableModel</name>
     <message>
-        <location filename="../../../src/cutecoin/models/network.py" line="135"/>
+        <location filename="../../../src/cutecoin/models/network.py" line="136"/>
         <source>Online</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/models/network.py" line="136"/>
+        <location filename="../../../src/cutecoin/models/network.py" line="137"/>
         <source>Offline</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/models/network.py" line="137"/>
+        <location filename="../../../src/cutecoin/models/network.py" line="138"/>
         <source>Unsynchronized</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/models/network.py" line="138"/>
+        <location filename="../../../src/cutecoin/models/network.py" line="139"/>
         <source>Corrupted</source>
         <translation type="unfinished"></translation>
     </message>
@@ -1551,22 +1643,22 @@ Odwołanie UID może tylko sukcesem, jeśli nie jest on już zatwierdzony przez
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/password_asker.py" line="65"/>
+        <location filename="../../../src/cutecoin/gui/password_asker.py" line="66"/>
         <source>Bad password</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/password_asker.py" line="65"/>
+        <location filename="../../../src/cutecoin/gui/password_asker.py" line="66"/>
         <source>Non printable characters in password</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/password_asker.py" line="71"/>
+        <location filename="../../../src/cutecoin/gui/password_asker.py" line="72"/>
         <source>Failed to get private key</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/password_asker.py" line="71"/>
+        <location filename="../../../src/cutecoin/gui/password_asker.py" line="72"/>
         <source>Wrong password typed. Cannot open the private key</source>
         <translation type="unfinished"></translation>
     </message>
@@ -1574,7 +1666,7 @@ Odwołanie UID może tylko sukcesem, jeśli nie jest on już zatwierdzony przez
 <context>
     <name>PreferencesDialog</name>
     <message>
-        <location filename="../../../src/cutecoin/gui/preferences.py" line="83"/>
+        <location filename="../../ui/preferences.ui" line="14"/>
         <source>Preferences</source>
         <translation type="unfinished"></translation>
     </message>
@@ -1613,11 +1705,6 @@ Odwołanie UID może tylko sukcesem, jeśli nie jest on już zatwierdzony przez
         <source>Enable notifications</source>
         <translation type="unfinished"></translation>
     </message>
-    <message>
-        <location filename="../../../src/cutecoin/gui/preferences.py" line="83"/>
-        <source>A restart is needed to apply your new preferences.</source>
-        <translation type="unfinished"></translation>
-    </message>
     <message>
         <location filename="../../ui/preferences.ui" line="106"/>
         <source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;&lt;span style=&quot; font-size:16pt; font-weight:600;&quot;&gt;General settings&lt;/span&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
@@ -1639,35 +1726,25 @@ Odwołanie UID może tylko sukcesem, jeśli nie jest on już zatwierdzony przez
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../ui/preferences.ui" line="336"/>
-        <source>Use a proxy server</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../../ui/preferences.ui" line="348"/>
-        <source>Proxy type : </source>
+        <location filename="../../ui/preferences.ui" line="345"/>
+        <source>Proxy server address : </source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../ui/preferences.ui" line="356"/>
-        <source>HTTP</source>
-        <translation type="unfinished"></translation>
+        <location filename="../../ui/preferences.ui" line="355"/>
+        <source>:</source>
+        <translation>:</translation>
     </message>
     <message>
-        <location filename="../../ui/preferences.ui" line="361"/>
-        <source>SOCKS5</source>
+        <location filename="../../ui/preferences.ui" line="336"/>
+        <source>Use a http proxy server</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../ui/preferences.ui" line="386"/>
-        <source>Proxy server address : </source>
+        <location filename="../../ui/preferences.ui" line="379"/>
+        <source>Automatically refresh identities informations</source>
         <translation type="unfinished"></translation>
     </message>
-    <message>
-        <location filename="../../ui/preferences.ui" line="396"/>
-        <source>:</source>
-        <translation>:</translation>
-    </message>
 </context>
 <context>
     <name>ProcessConfigureAccount</name>
@@ -1713,22 +1790,22 @@ Are you sure ?</source>
 <context>
     <name>ProcessConfigureCommunity</name>
     <message>
-        <location filename="../../../src/cutecoin/gui/process_cfg_community.py" line="206"/>
+        <location filename="../../../src/cutecoin/gui/process_cfg_community.py" line="221"/>
         <source>Configure community {0}</source>
         <translation>Skonfiguruj społeczności {0}</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/process_cfg_community.py" line="209"/>
+        <location filename="../../../src/cutecoin/gui/process_cfg_community.py" line="224"/>
         <source>Add a community</source>
         <translation>Dodać społeczności</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/process_cfg_community.py" line="243"/>
+        <location filename="../../../src/cutecoin/gui/process_cfg_community.py" line="258"/>
         <source>Error</source>
         <translation>Błąd</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/process_cfg_community.py" line="272"/>
+        <location filename="../../../src/cutecoin/gui/process_cfg_community.py" line="287"/>
         <source>Delete</source>
         <translation>Kasować</translation>
     </message>
@@ -1826,7 +1903,7 @@ Chciałbyś opublikować klucz ?</translation>
 <context>
     <name>Scene</name>
     <message>
-        <location filename="../../../src/cutecoin/gui/views/wot.py" line="157"/>
+        <location filename="../../../src/cutecoin/gui/views/wot.py" line="158"/>
         <source>Certification expires at {0}</source>
         <translation type="unfinished"></translation>
     </message>
@@ -1834,44 +1911,56 @@ Chciałbyś opublikować klucz ?</translation>
 <context>
     <name>StepPageInit</name>
     <message>
-        <location filename="../../../src/cutecoin/gui/process_cfg_community.py" line="67"/>
+        <location filename="../../../src/cutecoin/gui/process_cfg_community.py" line="93"/>
         <source>Could not find your identity on the network.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/process_cfg_community.py" line="100"/>
-        <source>Could not connect.</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../../../src/cutecoin/gui/process_cfg_community.py" line="92"/>
+        <location filename="../../../src/cutecoin/gui/process_cfg_community.py" line="123"/>
         <source>Broadcasting identity...</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/process_cfg_community.py" line="98"/>
-        <source>Pubkey already exists on the network</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../../../src/cutecoin/gui/process_cfg_community.py" line="110"/>
+        <location filename="../../../src/cutecoin/gui/process_cfg_community.py" line="127"/>
         <source>UID broadcast</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/process_cfg_community.py" line="110"/>
+        <location filename="../../../src/cutecoin/gui/process_cfg_community.py" line="127"/>
         <source>Identity broadcasted to the network</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/process_cfg_community.py" line="124"/>
+        <location filename="../../../src/cutecoin/gui/process_cfg_community.py" line="134"/>
         <source>Error</source>
         <translation type="unfinished">Błąd</translation>
     </message>
     <message>
         <location filename="../../../src/cutecoin/gui/process_cfg_community.py" line="124"/>
         <source>{0} : {1}</source>
-        <translation type="unfinished">{0} : {1}</translation>
+        <translation type="obsolete">{0} : {1}</translation>
+    </message>
+    <message>
+        <location filename="../../../src/cutecoin/gui/process_cfg_community.py" line="95"/>
+        <source>Your pubkey or UID is different on the network.
+    Yours : {0}, the network : {1}</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../../src/cutecoin/gui/process_cfg_community.py" line="134"/>
+        <source>{0}</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../../src/cutecoin/gui/process_cfg_community.py" line="138"/>
+        <source>Your pubkey or UID was already found on the network.
+Yours : {0}, the network : {1}</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../../src/cutecoin/gui/process_cfg_community.py" line="141"/>
+        <source>Your account already exists on the network</source>
+        <translation type="unfinished"></translation>
     </message>
 </context>
 <context>
@@ -1885,12 +1974,12 @@ Chciałbyś opublikować klucz ?</translation>
 <context>
     <name>TransactionsTabWidget</name>
     <message>
-        <location filename="../../../src/cutecoin/gui/transactions_tab.py" line="118"/>
+        <location filename="../../../src/cutecoin/gui/transactions_tab.py" line="135"/>
         <source>Received {0} {1} from {2} transfers</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/transactions_tab.py" line="122"/>
+        <location filename="../../../src/cutecoin/gui/transactions_tab.py" line="139"/>
         <source>New transactions received</source>
         <translation type="unfinished"></translation>
     </message>
@@ -1900,59 +1989,59 @@ Chciałbyś opublikować klucz ?</translation>
         <translation type="obsolete">&lt;b&gt;Równowaga&lt;/b&gt; {:} {:}</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/transactions_tab.py" line="151"/>
+        <location filename="../../../src/cutecoin/gui/transactions_tab.py" line="170"/>
         <source>Actions</source>
         <translation type="unfinished">Akcje</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/transactions_tab.py" line="166"/>
+        <location filename="../../../src/cutecoin/gui/transactions_tab.py" line="185"/>
         <source>Send again</source>
         <translation>Wyślij ponownie</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/transactions_tab.py" line="171"/>
+        <location filename="../../../src/cutecoin/gui/transactions_tab.py" line="190"/>
         <source>Cancel</source>
         <translation>Anuluj</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/transactions_tab.py" line="177"/>
+        <location filename="../../../src/cutecoin/gui/transactions_tab.py" line="196"/>
         <source>Informations</source>
         <translation>Informacja</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/transactions_tab.py" line="182"/>
+        <location filename="../../../src/cutecoin/gui/transactions_tab.py" line="201"/>
         <source>Add as contact</source>
         <translation>Dodaj jako kontakt</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/transactions_tab.py" line="187"/>
+        <location filename="../../../src/cutecoin/gui/transactions_tab.py" line="206"/>
         <source>Send money</source>
         <translation>Wyślij pieniądze</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/transactions_tab.py" line="193"/>
+        <location filename="../../../src/cutecoin/gui/transactions_tab.py" line="212"/>
         <source>View in Web of Trust</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/transactions_tab.py" line="198"/>
+        <location filename="../../../src/cutecoin/gui/transactions_tab.py" line="217"/>
         <source>Copy pubkey to clipboard</source>
         <translation>Kopiowanie klucza publicznego do schowka</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/transactions_tab.py" line="276"/>
+        <location filename="../../../src/cutecoin/gui/transactions_tab.py" line="283"/>
         <source>Warning</source>
         <translation>Ostrzeżenie</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/transactions_tab.py" line="276"/>
+        <location filename="../../../src/cutecoin/gui/transactions_tab.py" line="283"/>
         <source>Are you sure ?
 This money transfer will be removed and not sent.</source>
         <translation>Jesteś pewny ?
 Ten przelew zostanie usunięty i nie wysłał.</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/transactions_tab.py" line="137"/>
+        <location filename="../../../src/cutecoin/gui/transactions_tab.py" line="155"/>
         <source>{:}</source>
         <translation type="unfinished">{:}</translation>
     </message>
@@ -1977,7 +2066,7 @@ Ten przelew zostanie usunięty i nie wysłał.</translation>
     <message>
         <location filename="../../ui/transfer.ui" line="40"/>
         <source>Contact</source>
-        <translation type="unfinished">Kontakt</translation>
+        <translation type="obsolete">Kontakt</translation>
     </message>
     <message>
         <location filename="../../ui/transfer.ui" line="80"/>
@@ -1995,34 +2084,34 @@ Ten przelew zostanie usunięty i nie wysłał.</translation>
         <translation type="unfinished">komunikat transakcji</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/transfer.py" line="77"/>
+        <location filename="../../../src/cutecoin/gui/transfer.py" line="106"/>
         <source>Money transfer</source>
         <translation>Przelew pieniędzy</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/transfer.py" line="77"/>
+        <location filename="../../../src/cutecoin/gui/transfer.py" line="106"/>
         <source>No amount. Please give the transfert amount</source>
         <translation>Nie ilość. Proszę podać kwotę przelewu</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/transfer.py" line="99"/>
+        <location filename="../../../src/cutecoin/gui/transfer.py" line="137"/>
         <source>Transfer</source>
         <translation>Przenieść</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/transfer.py" line="99"/>
+        <location filename="../../../src/cutecoin/gui/transfer.py" line="124"/>
         <source>Success sending money to {0}</source>
         <translation type="unfinished">Sukces wysyłania pieniędzy do {0}</translation>
     </message>
     <message>
         <location filename="../../../src/cutecoin/gui/transfer.py" line="111"/>
         <source>Error</source>
-        <translation>Błąd</translation>
+        <translation type="obsolete">Błąd</translation>
     </message>
     <message>
         <location filename="../../../src/cutecoin/gui/transfer.py" line="111"/>
         <source>{0} : {1}</source>
-        <translation>{0} : {1}</translation>
+        <translation type="obsolete">{0} : {1}</translation>
     </message>
     <message>
         <location filename="../../ui/transfer.ui" line="61"/>
@@ -2044,18 +2133,33 @@ Ten przelew zostanie usunięty i nie wysłał.</translation>
         <source>Amount</source>
         <translation>Ilość</translation>
     </message>
+    <message>
+        <location filename="../../ui/transfer.ui" line="40"/>
+        <source>Con&amp;tact</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>TxFilterProxyModel</name>
     <message>
         <location filename="../../../src/cutecoin/models/txhistory.py" line="158"/>
         <source>{0} / {1} validations</source>
-        <translation>{0} / {1} walidacje</translation>
+        <translation type="obsolete">{0} / {1} walidacje</translation>
     </message>
     <message>
         <location filename="../../../src/cutecoin/models/txhistory.py" line="162"/>
         <source>Validating... {0} %</source>
-        <translation>Walidacji... {0} %</translation>
+        <translation type="obsolete">Walidacji... {0} %</translation>
+    </message>
+    <message>
+        <location filename="../../../src/cutecoin/models/txhistory.py" line="165"/>
+        <source>{0} / {1} confirmations</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../../src/cutecoin/models/txhistory.py" line="169"/>
+        <source>Confirming... {0} %</source>
+        <translation type="unfinished"></translation>
     </message>
 </context>
 <context>
@@ -2287,25 +2391,30 @@ Odwołanie UID może tylko sukcesem, jeśli nie jest on już zatwierdzony przez
 <context>
     <name>WoT.Node</name>
     <message>
-        <location filename="../../../src/cutecoin/gui/views/wot.py" line="290"/>
+        <location filename="../../../src/cutecoin/gui/views/wot.py" line="294"/>
         <source>Informations</source>
         <translation>Informacje</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/views/wot.py" line="295"/>
+        <location filename="../../../src/cutecoin/gui/views/wot.py" line="299"/>
         <source>Add as contact</source>
         <translation>Dodaj jako kontakt</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/views/wot.py" line="300"/>
+        <location filename="../../../src/cutecoin/gui/views/wot.py" line="304"/>
         <source>Send money</source>
         <translation>Wyślij pieniądze</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/views/wot.py" line="305"/>
+        <location filename="../../../src/cutecoin/gui/views/wot.py" line="309"/>
         <source>Certify identity</source>
         <translation>Poświadcza tożsamość</translation>
     </message>
+    <message>
+        <location filename="../../../src/cutecoin/gui/views/wot.py" line="314"/>
+        <source>Copy pubkey</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>WotTabWidget</name>
@@ -2320,12 +2429,12 @@ Odwołanie UID może tylko sukcesem, jeśli nie jest on już zatwierdzony przez
         <translation>Wyśrodkować widok na mnie</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/wot_tab.py" line="33"/>
+        <location filename="../../../src/cutecoin/gui/wot_tab.py" line="37"/>
         <source>Research a pubkey, an uid...</source>
         <translation type="unfinished">Badania klucz publiczny, uid...</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/wot_tab.py" line="123"/>
+        <location filename="../../../src/cutecoin/gui/wot_tab.py" line="141"/>
         <source>
                     &lt;table cellpadding=&quot;5&quot;&gt;
                     &lt;tr&gt;&lt;td align=&quot;right&quot;&gt;&lt;b&gt;{:}&lt;/b&gt;&lt;/td&gt;&lt;td&gt;{:}&lt;/td&gt;&lt;/tr&gt;
@@ -2342,32 +2451,32 @@ Odwołanie UID może tylko sukcesem, jeśli nie jest on już zatwierdzony przez
                     </translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/wot_tab.py" line="105"/>
+        <location filename="../../../src/cutecoin/gui/wot_tab.py" line="123"/>
         <source>Membership</source>
         <translation type="unfinished">Członkostwo</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/wot_tab.py" line="123"/>
+        <location filename="../../../src/cutecoin/gui/wot_tab.py" line="141"/>
         <source>Last renewal on {:}, expiration on {:}</source>
         <translation type="unfinished">Ostatni odnowienia na {:}, wygaśnięciu z dniem {:}</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/wot_tab.py" line="141"/>
+        <location filename="../../../src/cutecoin/gui/wot_tab.py" line="159"/>
         <source>Your web of trust</source>
         <translation type="unfinished">Twój sieć zaufania</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/wot_tab.py" line="141"/>
+        <location filename="../../../src/cutecoin/gui/wot_tab.py" line="159"/>
         <source>Certified by {:} members; Certifier of {:} members</source>
         <translation type="unfinished">Certyfikowany przez {:} członków; Certifier z {:} członków</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/wot_tab.py" line="141"/>
+        <location filename="../../../src/cutecoin/gui/wot_tab.py" line="159"/>
         <source>Not a member</source>
         <translation type="unfinished">Nie jest członkiem</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/wot_tab.py" line="141"/>
+        <location filename="../../../src/cutecoin/gui/wot_tab.py" line="159"/>
         <source>
                 &lt;table cellpadding=&quot;5&quot;&gt;
                 &lt;tr&gt;&lt;td align=&quot;right&quot;&gt;&lt;b&gt;{:}&lt;/b&gt;&lt;/td&gt;&lt;td&gt;{:}&lt;/td&gt;&lt;/tr&gt;
@@ -2387,7 +2496,7 @@ Odwołanie UID może tylko sukcesem, jeśli nie jest on już zatwierdzony przez
 <context>
     <name>self.config_dialog</name>
     <message>
-        <location filename="../../../src/cutecoin/gui/process_cfg_community.py" line="170"/>
+        <location filename="../../../src/cutecoin/gui/process_cfg_community.py" line="185"/>
         <source>Ok</source>
         <translation>Ok</translation>
     </message>
@@ -2451,7 +2560,7 @@ Odwołanie UID może tylko sukcesem, jeśli nie jest on już zatwierdzony przez
     </message>
     <message>
         <location filename="../../ui/transactions_tab.ui" line="33"/>
-        <source>label_balance</source>
+        <source>loading...</source>
         <translation type="unfinished"></translation>
     </message>
 </context>
diff --git a/res/i18n/ts/pt_BR.ts b/res/i18n/ts/pt_BR.ts
index 8cb416cb0405bbccad87072ed61b242ea931c794..6d9fc6c8cb7d3e63ad4a18c53ddb947c62cdadb0 100644
--- a/res/i18n/ts/pt_BR.ts
+++ b/res/i18n/ts/pt_BR.ts
@@ -50,6 +50,11 @@
         <source>Relat Z-sum</source>
         <translation type="obsolete">Relat Z-sum</translation>
     </message>
+    <message>
+        <location filename="../../../src/cutecoin/core/account.py" line="509"/>
+        <source>Could not find user self certification.</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>AccountConfigurationDialog</name>
@@ -134,10 +139,23 @@
         <translation>Comunidades</translation>
     </message>
 </context>
+<context>
+    <name>Application</name>
+    <message>
+        <location filename="../../../src/cutecoin/core/app.py" line="76"/>
+        <source>Warning : Your membership is expiring soon.</source>
+        <translation type="unfinished">Aviso: sua associação expirará em breve.</translation>
+    </message>
+    <message>
+        <location filename="../../../src/cutecoin/core/app.py" line="81"/>
+        <source>Warning : Your could miss certifications soon.</source>
+        <translation type="unfinished">Aviso: você poderá perder certificações em breve.</translation>
+    </message>
+</context>
 <context>
     <name>CertificationDialog</name>
     <message>
-        <location filename="../../../src/cutecoin/gui/certification.py" line="65"/>
+        <location filename="../../../src/cutecoin/gui/certification.py" line="79"/>
         <source>Certification</source>
         <translation>Certificação</translation>
     </message>
@@ -169,17 +187,17 @@
     <message>
         <location filename="../../../src/cutecoin/gui/certification.py" line="65"/>
         <source>Success certifying {0} from {1}</source>
-        <translation>Sucesso ao certificar {0} de {1}</translation>
+        <translation type="obsolete">Sucesso ao certificar {0} de {1}</translation>
     </message>
     <message>
         <location filename="../../../src/cutecoin/gui/certification.py" line="75"/>
         <source>Error</source>
-        <translation>Erro</translation>
+        <translation type="obsolete">Erro</translation>
     </message>
     <message>
         <location filename="../../../src/cutecoin/gui/certification.py" line="75"/>
         <source>{0} : {1}</source>
-        <translation>{0} : {1}</translation>
+        <translation type="obsolete">{0} : {1}</translation>
     </message>
     <message>
         <location filename="../../../src/cutecoin/gui/certification.py" line="77"/>
@@ -187,15 +205,25 @@
         <translation type="obsolete">Ok</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/certification.py" line="97"/>
+        <location filename="../../../src/cutecoin/gui/certification.py" line="107"/>
         <source>Not a member</source>
         <translation>Não é um membro</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/certification.py" line="94"/>
+        <location filename="../../../src/cutecoin/gui/certification.py" line="104"/>
         <source>&amp;Ok</source>
         <translation type="unfinished"></translation>
     </message>
+    <message>
+        <location filename="../../../src/cutecoin/gui/certification.py" line="70"/>
+        <source>Success sending certification</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../../src/cutecoin/gui/certification.py" line="79"/>
+        <source>Could not broadcast certification : {0}</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>CommunityConfigurationDialog</name>
@@ -220,27 +248,27 @@
         <translation type="obsolete">Verificar a conectividade do nó</translation>
     </message>
     <message>
-        <location filename="../../ui/community_cfg.ui" line="145"/>
+        <location filename="../../ui/community_cfg.ui" line="162"/>
         <source>Communities nodes</source>
         <translation>Nós de comunidades</translation>
     </message>
     <message>
-        <location filename="../../ui/community_cfg.ui" line="163"/>
+        <location filename="../../ui/community_cfg.ui" line="180"/>
         <source>Server</source>
         <translation>Servidor</translation>
     </message>
     <message>
-        <location filename="../../ui/community_cfg.ui" line="183"/>
+        <location filename="../../ui/community_cfg.ui" line="200"/>
         <source>Add</source>
         <translation>Adicionar</translation>
     </message>
     <message>
-        <location filename="../../ui/community_cfg.ui" line="204"/>
+        <location filename="../../ui/community_cfg.ui" line="221"/>
         <source>Previous</source>
         <translation>Anterior</translation>
     </message>
     <message>
-        <location filename="../../ui/community_cfg.ui" line="227"/>
+        <location filename="../../ui/community_cfg.ui" line="244"/>
         <source>Next</source>
         <translation>Próximo</translation>
     </message>
@@ -254,6 +282,11 @@
         <source>Connect using your account</source>
         <translation type="unfinished"></translation>
     </message>
+    <message>
+        <location filename="../../ui/community_cfg.ui" line="132"/>
+        <source>Connect as a guest</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>CommunityTabWidget</name>
@@ -351,35 +384,45 @@
 <context>
     <name>CommunityTile</name>
     <message>
-        <location filename="../../../src/cutecoin/gui/community_tile.py" line="46"/>
+        <location filename="../../../src/cutecoin/gui/community_tile.py" line="77"/>
         <source>Member</source>
         <translation type="unfinished">Membro</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/community_tile.py" line="47"/>
+        <location filename="../../../src/cutecoin/gui/community_tile.py" line="78"/>
         <source>Non-Member</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/community_tile.py" line="58"/>
+        <location filename="../../../src/cutecoin/gui/community_tile.py" line="89"/>
         <source>members</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/community_tile.py" line="58"/>
+        <location filename="../../../src/cutecoin/gui/community_tile.py" line="89"/>
         <source>Monetary mass</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/community_tile.py" line="58"/>
+        <location filename="../../../src/cutecoin/gui/community_tile.py" line="89"/>
         <source>Status</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/community_tile.py" line="58"/>
+        <location filename="../../../src/cutecoin/gui/community_tile.py" line="89"/>
         <source>Balance</source>
         <translation type="unfinished">Balanço</translation>
     </message>
+    <message>
+        <location filename="../../../src/cutecoin/gui/community_tile.py" line="108"/>
+        <source>Not connected</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../../src/cutecoin/gui/community_tile.py" line="121"/>
+        <source>Community not initialized</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>CommunityWidget</name>
@@ -399,82 +442,82 @@
         <translation type="unfinished">Certificação</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/community_view.py" line="227"/>
+        <location filename="../../../src/cutecoin/gui/community_view.py" line="282"/>
         <source>Renew membership</source>
         <translation type="unfinished">Renovar associação</translation>
     </message>
     <message>
         <location filename="../../../src/cutecoin/gui/community_view.py" line="44"/>
         <source>Warning : Your membership is expiring soon.</source>
-        <translation type="unfinished">Aviso: sua associação expirará em breve.</translation>
+        <translation type="obsolete">Aviso: sua associação expirará em breve.</translation>
     </message>
     <message>
         <location filename="../../../src/cutecoin/gui/community_view.py" line="46"/>
         <source>Warning : Your could miss certifications soon.</source>
-        <translation type="unfinished">Aviso: você poderá perder certificações em breve.</translation>
+        <translation type="obsolete">Aviso: você poderá perder certificações em breve.</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/community_view.py" line="63"/>
+        <location filename="../../../src/cutecoin/gui/community_view.py" line="65"/>
         <source>Transactions</source>
         <translation type="unfinished">Transações</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/community_view.py" line="67"/>
+        <location filename="../../../src/cutecoin/gui/community_view.py" line="69"/>
         <source>Web of Trust</source>
         <translation type="unfinished">Rede de Confiança</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/community_view.py" line="71"/>
+        <location filename="../../../src/cutecoin/gui/community_view.py" line="73"/>
         <source>Search Identities</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/community_view.py" line="75"/>
+        <location filename="../../../src/cutecoin/gui/community_view.py" line="77"/>
         <source>Network</source>
         <translation type="unfinished">Rede</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/community_view.py" line="154"/>
+        <location filename="../../../src/cutecoin/gui/community_view.py" line="177"/>
         <source>Membership expiration</source>
         <translation type="unfinished">Expiração da associação</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/community_view.py" line="154"/>
+        <location filename="../../../src/cutecoin/gui/community_view.py" line="177"/>
         <source>&lt;b&gt;Warning : Membership expiration in {0} days&lt;/b&gt;</source>
         <translation type="unfinished">&lt;b&gt;Aviso: expiração da associação em {0} dias&lt;/b&gt;</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/community_view.py" line="162"/>
+        <location filename="../../../src/cutecoin/gui/community_view.py" line="188"/>
         <source>Certifications number</source>
         <translation type="unfinished">Número de certificações</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/community_view.py" line="162"/>
+        <location filename="../../../src/cutecoin/gui/community_view.py" line="188"/>
         <source>&lt;b&gt;Warning : You are certified by only {0} persons, need {1}&lt;/b&gt;</source>
         <translation type="unfinished">&lt;b&gt;Aviso: você é certificado por apenas {0} pessoas. São necessárias {1}&lt;/b&gt;</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/community_view.py" line="189"/>
+        <location filename="../../../src/cutecoin/gui/community_view.py" line="221"/>
         <source> Block {0}</source>
         <translation type="unfinished"> Bloco {0}</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/community_view.py" line="211"/>
+        <location filename="../../../src/cutecoin/gui/community_view.py" line="263"/>
         <source> - Median fork window : {0}</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/community_view.py" line="232"/>
+        <location filename="../../../src/cutecoin/gui/community_view.py" line="288"/>
         <source>Send membership demand</source>
         <translation type="unfinished">Enviar pedido de associação</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/community_view.py" line="298"/>
+        <location filename="../../../src/cutecoin/gui/community_view.py" line="334"/>
         <source>Warning</source>
         <translation type="unfinished">Aviso</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/community_view.py" line="259"/>
+        <location filename="../../../src/cutecoin/gui/community_view.py" line="334"/>
         <source>Are you sure ?
 Sending a leaving demand  cannot be canceled.
 The process to join back the community later will have to be done again.</source>
@@ -486,75 +529,105 @@ O processo de reingresso à comunidade, posteriormente, terá de ser feito novam
         <location filename="../../../src/cutecoin/gui/community_view.py" line="272"/>
         <source>Are you sure ?
 Publishing your UID can be canceled by Revoke UID.</source>
-        <translation type="unfinished">Você tem certeza?
+        <translation type="obsolete">Você tem certeza?
 A publicação do seu UID pode ser cancelada através da revogação de UID.</translation>
     </message>
     <message>
         <location filename="../../../src/cutecoin/gui/community_view.py" line="283"/>
         <source>UID Publishing</source>
-        <translation type="unfinished">Publicação de UID</translation>
+        <translation type="obsolete">Publicação de UID</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/community_view.py" line="283"/>
+        <location filename="../../../src/cutecoin/gui/community_view.py" line="368"/>
         <source>Success publishing your UID</source>
         <translation type="unfinished">Sucesso ao publicar seu UID</translation>
     </message>
     <message>
         <location filename="../../../src/cutecoin/gui/community_view.py" line="286"/>
         <source>Publish UID error</source>
-        <translation type="unfinished">Erro ao publicar UID</translation>
+        <translation type="obsolete">Erro ao publicar UID</translation>
     </message>
     <message>
         <location filename="../../../src/cutecoin/gui/community_view.py" line="289"/>
         <source>Network error</source>
-        <translation type="unfinished">Erro de rede</translation>
+        <translation type="obsolete">Erro de rede</translation>
     </message>
     <message>
         <location filename="../../../src/cutecoin/gui/community_view.py" line="289"/>
         <source>Couldn&apos;t connect to network : {0}</source>
-        <translation type="unfinished">Não foi possível conectar à rede: {0}</translation>
+        <translation type="obsolete">Não foi possível conectar à rede: {0}</translation>
     </message>
     <message>
         <location filename="../../../src/cutecoin/gui/community_view.py" line="293"/>
         <source>Error</source>
-        <translation type="unfinished">Erro</translation>
+        <translation type="obsolete">Erro</translation>
     </message>
     <message>
         <location filename="../../../src/cutecoin/gui/community_view.py" line="298"/>
         <source>Are you sure ?
 Revoking your UID can only success if it is not already validated by the network.</source>
-        <translation type="unfinished">Você tem certeza?
+        <translation type="obsolete">Você tem certeza?
 Revogar seu UID somente funcionará caso ele ainda não tenha sido validado pela rede.</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/community_view.py" line="313"/>
+        <location filename="../../../src/cutecoin/gui/community_view.py" line="388"/>
         <source>Membership</source>
         <translation type="unfinished">Associação</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/community_view.py" line="313"/>
+        <location filename="../../../src/cutecoin/gui/community_view.py" line="322"/>
         <source>Success sending Membership demand</source>
         <translation type="unfinished">Sucesso ao enviar pedido de associação</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/community_view.py" line="319"/>
+        <location filename="../../../src/cutecoin/gui/community_view.py" line="354"/>
         <source>Revoke</source>
         <translation type="unfinished">Revogar</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/community_view.py" line="319"/>
+        <location filename="../../../src/cutecoin/gui/community_view.py" line="348"/>
         <source>Success sending Revoke demand</source>
         <translation type="unfinished">Sucesso ao enviar pedido de revoga</translation>
     </message>
     <message>
         <location filename="../../../src/cutecoin/gui/community_view.py" line="325"/>
         <source>Self Certification</source>
-        <translation type="unfinished">Auto-certificação</translation>
+        <translation type="obsolete">Auto-certificação</translation>
     </message>
     <message>
         <location filename="../../../src/cutecoin/gui/community_view.py" line="325"/>
         <source>Success sending Self Certification document</source>
-        <translation type="unfinished">Sucesso ao enviar documento de Auto-certificação</translation>
+        <translation type="obsolete">Sucesso ao enviar documento de Auto-certificação</translation>
+    </message>
+    <message>
+        <location filename="../../../src/cutecoin/gui/community_view.py" line="81"/>
+        <source>Show informations</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../../src/cutecoin/gui/community_view.py" line="85"/>
+        <source>Informations</source>
+        <translation type="unfinished">Informações</translation>
+    </message>
+    <message>
+        <location filename="../../../src/cutecoin/gui/community_view.py" line="98"/>
+        <source>Publish UID</source>
+        <translation type="unfinished">Publicar UID</translation>
+    </message>
+    <message>
+        <location filename="../../../src/cutecoin/gui/community_view.py" line="392"/>
+        <source>Revoke UID</source>
+        <translation type="unfinished">Revogar UID</translation>
+    </message>
+    <message>
+        <location filename="../../../src/cutecoin/gui/community_view.py" line="394"/>
+        <source>UID</source>
+        <translation type="unfinished">UID</translation>
+    </message>
+    <message>
+        <location filename="../../../src/cutecoin/gui/community_view.py" line="388"/>
+        <source>Your UID was revoked successfully.</source>
+        <translation type="unfinished"></translation>
     </message>
 </context>
 <context>
@@ -697,27 +770,27 @@ Revogar seu UID somente funcionará caso ele ainda não tenha sido validado pela
 <context>
     <name>HistoryTableModel</name>
     <message>
-        <location filename="../../../src/cutecoin/models/txhistory.py" line="199"/>
+        <location filename="../../../src/cutecoin/models/txhistory.py" line="206"/>
         <source>Date</source>
         <translation>Data</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/models/txhistory.py" line="199"/>
+        <location filename="../../../src/cutecoin/models/txhistory.py" line="206"/>
         <source>UID/Public key</source>
         <translation>UID/Chave pública</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/models/txhistory.py" line="199"/>
+        <location filename="../../../src/cutecoin/models/txhistory.py" line="206"/>
         <source>Payment</source>
         <translation>Pagamento</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/models/txhistory.py" line="199"/>
+        <location filename="../../../src/cutecoin/models/txhistory.py" line="206"/>
         <source>Deposit</source>
         <translation>Depósito</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/models/txhistory.py" line="199"/>
+        <location filename="../../../src/cutecoin/models/txhistory.py" line="206"/>
         <source>Comment</source>
         <translation>Comentário</translation>
     </message>
@@ -832,65 +905,70 @@ Revogar seu UID somente funcionará caso ele ainda não tenha sido validado pela
 <context>
     <name>IdentitiesTabWidget</name>
     <message>
-        <location filename="../../../src/cutecoin/gui/identities_tab.py" line="56"/>
+        <location filename="../../../src/cutecoin/gui/identities_tab.py" line="63"/>
         <source>Members</source>
         <translation type="unfinished">Membros</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/identities_tab.py" line="59"/>
+        <location filename="../../../src/cutecoin/gui/identities_tab.py" line="66"/>
         <source>Direct connections</source>
         <translation type="unfinished">Conexões diretas</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/identities_tab.py" line="98"/>
+        <location filename="../../../src/cutecoin/gui/identities_tab.py" line="109"/>
         <source>Informations</source>
         <translation type="unfinished">Informações</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/identities_tab.py" line="101"/>
+        <location filename="../../../src/cutecoin/gui/identities_tab.py" line="112"/>
         <source>Add as contact</source>
         <translation type="unfinished">Adicionar como contato</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/identities_tab.py" line="105"/>
+        <location filename="../../../src/cutecoin/gui/identities_tab.py" line="116"/>
         <source>Send money</source>
         <translation type="unfinished">Enviar dinheiro</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/identities_tab.py" line="109"/>
+        <location filename="../../../src/cutecoin/gui/identities_tab.py" line="120"/>
         <source>Certify identity</source>
         <translation type="unfinished">Certificar identidade</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/identities_tab.py" line="113"/>
+        <location filename="../../../src/cutecoin/gui/identities_tab.py" line="124"/>
         <source>View in Web of Trust</source>
         <translation type="unfinished">Ver na Rede de Confiança</translation>
     </message>
+    <message>
+        <location filename="../../../src/cutecoin/gui/identities_tab.py" line="128"/>
+        <source>Copy pubkey</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>IdentitiesTableModel</name>
     <message>
-        <location filename="../../../src/cutecoin/models/identities.py" line="89"/>
+        <location filename="../../../src/cutecoin/models/identities.py" line="90"/>
         <source>UID</source>
         <translation>UID</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/models/identities.py" line="90"/>
+        <location filename="../../../src/cutecoin/models/identities.py" line="91"/>
         <source>Pubkey</source>
         <translation>Chave pública</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/models/identities.py" line="91"/>
+        <location filename="../../../src/cutecoin/models/identities.py" line="92"/>
         <source>Renewed</source>
         <translation>Renovado</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/models/identities.py" line="92"/>
+        <location filename="../../../src/cutecoin/models/identities.py" line="93"/>
         <source>Expiration</source>
         <translation>Expiração</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/models/identities.py" line="93"/>
+        <location filename="../../../src/cutecoin/models/identities.py" line="94"/>
         <source>Validation</source>
         <translation type="unfinished"></translation>
     </message>
@@ -968,7 +1046,7 @@ Revogar seu UID somente funcionará caso ele ainda não tenha sido validado pela
     <message>
         <location filename="../../ui/informations_tab.ui" line="61"/>
         <source>label_general</source>
-        <translation>label_general</translation>
+        <translation type="obsolete">label_general</translation>
     </message>
     <message>
         <location filename="../../ui/informations_tab.ui" line="77"/>
@@ -978,7 +1056,7 @@ Revogar seu UID somente funcionará caso ele ainda não tenha sido validado pela
     <message>
         <location filename="../../ui/informations_tab.ui" line="83"/>
         <source>label_rules</source>
-        <translation>label_rules</translation>
+        <translation type="obsolete">label_rules</translation>
     </message>
     <message>
         <location filename="../../ui/informations_tab.ui" line="96"/>
@@ -988,7 +1066,7 @@ Revogar seu UID somente funcionará caso ele ainda não tenha sido validado pela
     <message>
         <location filename="../../ui/informations_tab.ui" line="102"/>
         <source>label_money</source>
-        <translation>label_money</translation>
+        <translation type="obsolete">label_money</translation>
     </message>
     <message>
         <location filename="../../ui/informations_tab.ui" line="115"/>
@@ -998,10 +1076,10 @@ Revogar seu UID somente funcionará caso ele ainda não tenha sido validado pela
     <message>
         <location filename="../../ui/informations_tab.ui" line="121"/>
         <source>label_wot</source>
-        <translation>label_wot</translation>
+        <translation type="obsolete">label_wot</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="86"/>
+        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="103"/>
         <source>
                 &lt;table cellpadding=&quot;5&quot;&gt;
                 &lt;tr&gt;&lt;td align=&quot;right&quot;&gt;&lt;b&gt;{:}&lt;/b&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;{:} {:}&lt;/td&gt;&lt;/tr&gt;
@@ -1026,47 +1104,47 @@ Revogar seu UID somente funcionará caso ele ainda não tenha sido validado pela
                 </translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="86"/>
+        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="103"/>
         <source>Universal Dividend UD(t) in</source>
         <translation>Dividendo Universal &quot;UD(t)&quot; em</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="86"/>
+        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="103"/>
         <source>Monetary Mass M(t-1) in</source>
         <translation>Massa Monetária &quot;M(t-1)&quot; em</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="86"/>
+        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="103"/>
         <source>Members N(t)</source>
         <translation>Membros &quot;N(t)&quot;</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="86"/>
+        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="103"/>
         <source>Monetary Mass per member M(t-1)/N(t) in</source>
         <translation>Massa Monetária por membro &quot;M(t-1)/N(t)&quot; em</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="86"/>
+        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="103"/>
         <source>Actual growth c = UD(t)/[M(t-1)/N(t)]</source>
         <translation>Crescimento real &quot;c = UD(t)/[M(t-1)/N(t)]&quot;</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="86"/>
+        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="103"/>
         <source>Last UD date and time (t)</source>
         <translation>Data e hora do último Dividendo Universal (t)</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="86"/>
+        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="103"/>
         <source>Next UD date and time (t+1)</source>
         <translation>Data e hora do próximo Dividendo Universal (t+1)</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="158"/>
+        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="175"/>
         <source>No Universal Dividend created yet.</source>
         <translation>Nenhum Dividendo Universal criado ainda.</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="133"/>
+        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="150"/>
         <source>
                 &lt;table cellpadding=&quot;5&quot;&gt;
                 &lt;tr&gt;&lt;td align=&quot;right&quot;&gt;&lt;b&gt;{:}&lt;/b&gt;&lt;/td&gt;&lt;td&gt;{:}&lt;/td&gt;&lt;/tr&gt;
@@ -1083,37 +1161,37 @@ Revogar seu UID somente funcionará caso ele ainda não tenha sido validado pela
                 </translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="133"/>
+        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="150"/>
         <source>{:2.0%} / {:} days</source>
         <translation>{:2.0%} / {:} dias</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="133"/>
+        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="150"/>
         <source>Fundamental growth (c) / Delta time (dt)</source>
         <translation>Crescimento fundamental (c) / Tempo delta (dt)</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="133"/>
+        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="150"/>
         <source>UD(t+1) = MAX { UD(t) ; c &amp;#215; M(t) / N(t+1) }</source>
         <translation>UD(t+1) = MAX { UD(t) ; c &amp;#215; M(t) / N(t+1) }</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="133"/>
+        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="150"/>
         <source>Universal Dividend (formula)</source>
         <translation>Dividendo Universal (fórmula)</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="133"/>
+        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="150"/>
         <source>{:} = MAX {{ {:} {:} ; {:2.0%} &amp;#215; {:} {:} / {:} }}</source>
         <translation>{:} = MAX {{ {:} {:} ; {:2.0%} &amp;#215; {:} {:} / {:} }}</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="133"/>
+        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="150"/>
         <source>Universal Dividend (computed)</source>
         <translation>Dividendo Universal (computado)</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="161"/>
+        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="178"/>
         <source>
             &lt;table cellpadding=&quot;5&quot;&gt;
             &lt;tr&gt;&lt;td align=&quot;right&quot;&gt;&lt;b&gt;{:2.0%} / {:} days&lt;/b&gt;&lt;/td&gt;&lt;td&gt;{:}&lt;/td&gt;&lt;/tr&gt;
@@ -1140,47 +1218,47 @@ Revogar seu UID somente funcionará caso ele ainda não tenha sido validado pela
             </translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="161"/>
+        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="178"/>
         <source>Fundamental growth (c)</source>
         <translation>Crescimento fundamental (c)</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="161"/>
+        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="178"/>
         <source>Initial Universal Dividend UD(0) in</source>
         <translation>Dividendo Universal inicial &quot;UD(0)&quot; em</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="161"/>
+        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="178"/>
         <source>Time period (dt) in days (86400 seconds) between two UD</source>
         <translation>Período de tempo em dias (86400 segundos) entre dois Dividendos Universais</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="161"/>
+        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="178"/>
         <source>Number of blocks used for calculating median time</source>
         <translation>Número de blocos utilizados para calcular o tempo mediano</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="161"/>
+        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="178"/>
         <source>The average time in seconds for writing 1 block (wished time)</source>
         <translation>O tempo médio em segundos para escrever 1 bloco (tempo desejado)</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="161"/>
+        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="178"/>
         <source>The number of blocks required to evaluate again PoWMin value</source>
         <translation>O número de blocos necessários para avaliar novamente o valor de &apos;PoWMin&apos;</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="161"/>
+        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="178"/>
         <source>The number of previous blocks to check for personalized difficulty</source>
         <translation>O número de blocos anteriores para verificar se há dificuldade personalizada</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="161"/>
+        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="178"/>
         <source>The percent of previous issuers to reach for personalized difficulty</source>
         <translation>A porcentagem de emissores anteriores para alcançar a dificuldade personalizada</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="196"/>
+        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="213"/>
         <source>
             &lt;table cellpadding=&quot;5&quot;&gt;
             &lt;tr&gt;&lt;td align=&quot;right&quot;&gt;&lt;b&gt;{:}&lt;/b&gt;&lt;/td&gt;&lt;td&gt;{:}&lt;/td&gt;&lt;/tr&gt;
@@ -1203,32 +1281,32 @@ Revogar seu UID somente funcionará caso ele ainda não tenha sido validado pela
             </translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="196"/>
+        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="213"/>
         <source>Minimum delay between 2 identical certifications (in days)</source>
         <translation>Atraso mínimo entre 2 certificações idênticas (em dias)</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="196"/>
+        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="213"/>
         <source>Maximum age of a valid signature (in days)</source>
         <translation>Idade máxima de uma assinatura válida (em dias)</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="196"/>
+        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="213"/>
         <source>Minimum quantity of signatures to be part of the WoT</source>
         <translation>Quantidade mínima de assinaturas para ser parte da Rede de Confiança</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="196"/>
+        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="213"/>
         <source>Minimum quantity of valid made certifications to be part of the WoT for distance rule</source>
         <translation>Quantidade mínima de certificações válidas feitas para ser parte da  Rede de Confiança pela regra de distância</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="196"/>
+        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="213"/>
         <source>Maximum age of a valid membership (in days)</source>
         <translation>Idade máxima de uma associação válida (em dias)</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="196"/>
+        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="213"/>
         <source>Maximum distance between each WoT member and a newcomer</source>
         <translation>Distância máxima entre cada membro da Rede de Confiança e um novato</translation>
     </message>
@@ -1373,7 +1451,7 @@ Revogar seu UID somente funcionará caso ele ainda não tenha sido validado pela
         &lt;p&gt;vit&lt;/p&gt;
         &lt;p&gt;canercandan&lt;/p&gt;
         </source>
-        <translation>
+        <translation type="obsolete">
         &lt;h1&gt;Cutecoin&lt;/h1&gt;
 &lt;p&gt;Cliente de uCoin, feito com Python/Qt&lt;/p&gt;
 &lt;p&gt;Versão: {:}&lt;/p&gt;
@@ -1386,42 +1464,42 @@ Revogar seu UID somente funcionará caso ele ainda não tenha sido validado pela
         </translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/mainwindow.py" line="250"/>
+        <location filename="../../../src/cutecoin/gui/mainwindow.py" line="251"/>
         <source>Please get the latest release {version}</source>
         <translation>Por favor, baixe a última versão {version}</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/mainwindow.py" line="285"/>
+        <location filename="../../../src/cutecoin/gui/mainwindow.py" line="283"/>
         <source>Edit</source>
         <translation>Editar</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/mainwindow.py" line="288"/>
+        <location filename="../../../src/cutecoin/gui/mainwindow.py" line="286"/>
         <source>Delete</source>
         <translation>Excluir</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/mainwindow.py" line="305"/>
+        <location filename="../../../src/cutecoin/gui/mainwindow.py" line="303"/>
         <source>CuteCoin {0}</source>
         <translation>CuteCoin {0}</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/mainwindow.py" line="332"/>
+        <location filename="../../../src/cutecoin/gui/mainwindow.py" line="330"/>
         <source>CuteCoin {0} - Account : {1}</source>
         <translation>CuteCoin {0} - Conta: {1}</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/mainwindow.py" line="350"/>
+        <location filename="../../../src/cutecoin/gui/mainwindow.py" line="348"/>
         <source>Export an account</source>
         <translation>Exportar uma conta</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/mainwindow.py" line="351"/>
+        <location filename="../../../src/cutecoin/gui/mainwindow.py" line="349"/>
         <source>All account files (*.acc)</source>
         <translation>Todos os arquivos de conta (*.acc)</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/mainwindow.py" line="352"/>
+        <location filename="../../../src/cutecoin/gui/mainwindow.py" line="350"/>
         <source>Export</source>
         <translation>Exportar</translation>
     </message>
@@ -1445,6 +1523,27 @@ Revogar seu UID somente funcionará caso ele ainda não tenha sido validado pela
         <source>C&amp;ertification</source>
         <translation type="unfinished"></translation>
     </message>
+    <message>
+        <location filename="../../../src/cutecoin/gui/mainwindow.py" line="225"/>
+        <source>
+        &lt;h1&gt;Cutecoin&lt;/h1&gt;
+
+        &lt;p&gt;Python/Qt uCoin client&lt;/p&gt;
+
+        &lt;p&gt;Version : {:}&lt;/p&gt;
+        {new_version_text}
+
+        &lt;p&gt;License : GPLv3&lt;/p&gt;
+
+        &lt;p&gt;&lt;b&gt;Authors&lt;/b&gt;&lt;/p&gt;
+
+        &lt;p&gt;inso&lt;/p&gt;
+        &lt;p&gt;vit&lt;/p&gt;
+        &lt;p&gt;Moul&lt;/p&gt;
+        &lt;p&gt;canercandan&lt;/p&gt;
+        </source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>MemberDialog</name>
@@ -1495,62 +1594,62 @@ Revogar seu UID somente funcionará caso ele ainda não tenha sido validado pela
 <context>
     <name>NetworkFilterProxyModel</name>
     <message>
-        <location filename="../../../src/cutecoin/models/network.py" line="47"/>
+        <location filename="../../../src/cutecoin/models/network.py" line="48"/>
         <source>Address</source>
         <translation>Endereço</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/models/network.py" line="48"/>
+        <location filename="../../../src/cutecoin/models/network.py" line="49"/>
         <source>Port</source>
         <translation>Porta</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/models/network.py" line="49"/>
+        <location filename="../../../src/cutecoin/models/network.py" line="50"/>
         <source>Block</source>
         <translation>Bloco</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/models/network.py" line="51"/>
+        <location filename="../../../src/cutecoin/models/network.py" line="52"/>
         <source>UID</source>
         <translation>UID</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/models/network.py" line="52"/>
+        <location filename="../../../src/cutecoin/models/network.py" line="53"/>
         <source>Member</source>
         <translation>Membro</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/models/network.py" line="53"/>
+        <location filename="../../../src/cutecoin/models/network.py" line="54"/>
         <source>Pubkey</source>
         <translation>Chave pública</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/models/network.py" line="54"/>
+        <location filename="../../../src/cutecoin/models/network.py" line="55"/>
         <source>Software</source>
         <translation>Programa</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/models/network.py" line="55"/>
+        <location filename="../../../src/cutecoin/models/network.py" line="56"/>
         <source>Version</source>
         <translation>Versão</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/models/network.py" line="68"/>
+        <location filename="../../../src/cutecoin/models/network.py" line="69"/>
         <source>yes</source>
         <translation>sim</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/models/network.py" line="68"/>
+        <location filename="../../../src/cutecoin/models/network.py" line="69"/>
         <source>no</source>
         <translation>não</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/models/network.py" line="68"/>
+        <location filename="../../../src/cutecoin/models/network.py" line="69"/>
         <source>offline</source>
         <translation>offline</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/models/network.py" line="50"/>
+        <location filename="../../../src/cutecoin/models/network.py" line="51"/>
         <source>Hash</source>
         <translation type="unfinished"></translation>
     </message>
@@ -1563,17 +1662,17 @@ Revogar seu UID somente funcionará caso ele ainda não tenha sido validado pela
         <translation>Formulário</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/network_tab.py" line="68"/>
+        <location filename="../../../src/cutecoin/gui/network_tab.py" line="70"/>
         <source>Unset root node</source>
         <translation>Remover definição de raiz do nó</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/network_tab.py" line="74"/>
+        <location filename="../../../src/cutecoin/gui/network_tab.py" line="76"/>
         <source>Set as root node</source>
         <translation>Definir como nó raiz</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/network_tab.py" line="80"/>
+        <location filename="../../../src/cutecoin/gui/network_tab.py" line="82"/>
         <source>Open in browser</source>
         <translation>Abrir no navegador</translation>
     </message>
@@ -1581,22 +1680,22 @@ Revogar seu UID somente funcionará caso ele ainda não tenha sido validado pela
 <context>
     <name>NetworkTableModel</name>
     <message>
-        <location filename="../../../src/cutecoin/models/network.py" line="135"/>
+        <location filename="../../../src/cutecoin/models/network.py" line="136"/>
         <source>Online</source>
         <translation>Online</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/models/network.py" line="136"/>
+        <location filename="../../../src/cutecoin/models/network.py" line="137"/>
         <source>Offline</source>
         <translation>Offline</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/models/network.py" line="137"/>
+        <location filename="../../../src/cutecoin/models/network.py" line="138"/>
         <source>Unsynchronized</source>
         <translation>Dessincronizado</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/models/network.py" line="138"/>
+        <location filename="../../../src/cutecoin/models/network.py" line="139"/>
         <source>Corrupted</source>
         <translation>Corrompido</translation>
     </message>
@@ -1619,22 +1718,22 @@ Revogar seu UID somente funcionará caso ele ainda não tenha sido validado pela
         <translation>Lembrar minha senha durante esta sessão</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/password_asker.py" line="65"/>
+        <location filename="../../../src/cutecoin/gui/password_asker.py" line="66"/>
         <source>Bad password</source>
         <translation>Senha ruim</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/password_asker.py" line="65"/>
+        <location filename="../../../src/cutecoin/gui/password_asker.py" line="66"/>
         <source>Non printable characters in password</source>
         <translation>Há caracteres não imprimíveis na senha</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/password_asker.py" line="71"/>
+        <location filename="../../../src/cutecoin/gui/password_asker.py" line="72"/>
         <source>Failed to get private key</source>
         <translation>Falha ao obter a chave privada</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/password_asker.py" line="71"/>
+        <location filename="../../../src/cutecoin/gui/password_asker.py" line="72"/>
         <source>Wrong password typed. Cannot open the private key</source>
         <translation>Senha incorreta. Não é possível abrir a chave privada</translation>
     </message>
@@ -1642,7 +1741,7 @@ Revogar seu UID somente funcionará caso ele ainda não tenha sido validado pela
 <context>
     <name>PreferencesDialog</name>
     <message>
-        <location filename="../../../src/cutecoin/gui/preferences.py" line="83"/>
+        <location filename="../../ui/preferences.ui" line="14"/>
         <source>Preferences</source>
         <translation>Preferências</translation>
     </message>
@@ -1684,7 +1783,7 @@ Revogar seu UID somente funcionará caso ele ainda não tenha sido validado pela
     <message>
         <location filename="../../../src/cutecoin/gui/preferences.py" line="83"/>
         <source>A restart is needed to apply your new preferences.</source>
-        <translation>Uma reinicialização é necessária para aplicar suas novas preferências.</translation>
+        <translation type="obsolete">Uma reinicialização é necessária para aplicar suas novas preferências.</translation>
     </message>
     <message>
         <location filename="../../ui/preferences.ui" line="106"/>
@@ -1707,35 +1806,25 @@ Revogar seu UID somente funcionará caso ele ainda não tenha sido validado pela
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../ui/preferences.ui" line="336"/>
-        <source>Use a proxy server</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../../ui/preferences.ui" line="348"/>
-        <source>Proxy type : </source>
+        <location filename="../../ui/preferences.ui" line="345"/>
+        <source>Proxy server address : </source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../ui/preferences.ui" line="356"/>
-        <source>HTTP</source>
-        <translation type="unfinished"></translation>
+        <location filename="../../ui/preferences.ui" line="355"/>
+        <source>:</source>
+        <translation type="unfinished">:</translation>
     </message>
     <message>
-        <location filename="../../ui/preferences.ui" line="361"/>
-        <source>SOCKS5</source>
+        <location filename="../../ui/preferences.ui" line="336"/>
+        <source>Use a http proxy server</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../ui/preferences.ui" line="386"/>
-        <source>Proxy server address : </source>
+        <location filename="../../ui/preferences.ui" line="379"/>
+        <source>Automatically refresh identities informations</source>
         <translation type="unfinished"></translation>
     </message>
-    <message>
-        <location filename="../../ui/preferences.ui" line="396"/>
-        <source>:</source>
-        <translation type="unfinished">:</translation>
-    </message>
 </context>
 <context>
     <name>ProcessConfigureAccount</name>
@@ -1789,22 +1878,22 @@ Você tem certeza?</translation>
 <context>
     <name>ProcessConfigureCommunity</name>
     <message>
-        <location filename="../../../src/cutecoin/gui/process_cfg_community.py" line="206"/>
+        <location filename="../../../src/cutecoin/gui/process_cfg_community.py" line="221"/>
         <source>Configure community {0}</source>
         <translation>Configurar comunidade {0}</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/process_cfg_community.py" line="209"/>
+        <location filename="../../../src/cutecoin/gui/process_cfg_community.py" line="224"/>
         <source>Add a community</source>
         <translation>Adicionar uma comunidade</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/process_cfg_community.py" line="243"/>
+        <location filename="../../../src/cutecoin/gui/process_cfg_community.py" line="258"/>
         <source>Error</source>
         <translation>Erro</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/process_cfg_community.py" line="272"/>
+        <location filename="../../../src/cutecoin/gui/process_cfg_community.py" line="287"/>
         <source>Delete</source>
         <translation>Excluir</translation>
     </message>
@@ -1917,7 +2006,7 @@ Você gostaria de publicar a chave?</translation>
 <context>
     <name>Scene</name>
     <message>
-        <location filename="../../../src/cutecoin/gui/views/wot.py" line="157"/>
+        <location filename="../../../src/cutecoin/gui/views/wot.py" line="158"/>
         <source>Certification expires at {0}</source>
         <translation>Certificação expira em {0}</translation>
     </message>
@@ -1925,44 +2014,56 @@ Você gostaria de publicar a chave?</translation>
 <context>
     <name>StepPageInit</name>
     <message>
-        <location filename="../../../src/cutecoin/gui/process_cfg_community.py" line="67"/>
+        <location filename="../../../src/cutecoin/gui/process_cfg_community.py" line="93"/>
         <source>Could not find your identity on the network.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/process_cfg_community.py" line="100"/>
-        <source>Could not connect.</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../../../src/cutecoin/gui/process_cfg_community.py" line="92"/>
+        <location filename="../../../src/cutecoin/gui/process_cfg_community.py" line="123"/>
         <source>Broadcasting identity...</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/process_cfg_community.py" line="98"/>
-        <source>Pubkey already exists on the network</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../../../src/cutecoin/gui/process_cfg_community.py" line="110"/>
+        <location filename="../../../src/cutecoin/gui/process_cfg_community.py" line="127"/>
         <source>UID broadcast</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/process_cfg_community.py" line="110"/>
+        <location filename="../../../src/cutecoin/gui/process_cfg_community.py" line="127"/>
         <source>Identity broadcasted to the network</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/process_cfg_community.py" line="124"/>
+        <location filename="../../../src/cutecoin/gui/process_cfg_community.py" line="134"/>
         <source>Error</source>
         <translation type="unfinished">Erro</translation>
     </message>
     <message>
         <location filename="../../../src/cutecoin/gui/process_cfg_community.py" line="124"/>
         <source>{0} : {1}</source>
-        <translation type="unfinished">{0} : {1}</translation>
+        <translation type="obsolete">{0} : {1}</translation>
+    </message>
+    <message>
+        <location filename="../../../src/cutecoin/gui/process_cfg_community.py" line="95"/>
+        <source>Your pubkey or UID is different on the network.
+    Yours : {0}, the network : {1}</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../../src/cutecoin/gui/process_cfg_community.py" line="134"/>
+        <source>{0}</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../../src/cutecoin/gui/process_cfg_community.py" line="138"/>
+        <source>Your pubkey or UID was already found on the network.
+Yours : {0}, the network : {1}</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../../src/cutecoin/gui/process_cfg_community.py" line="141"/>
+        <source>Your account already exists on the network</source>
+        <translation type="unfinished"></translation>
     </message>
 </context>
 <context>
@@ -1976,12 +2077,12 @@ Você gostaria de publicar a chave?</translation>
 <context>
     <name>TransactionsTabWidget</name>
     <message>
-        <location filename="../../../src/cutecoin/gui/transactions_tab.py" line="118"/>
+        <location filename="../../../src/cutecoin/gui/transactions_tab.py" line="135"/>
         <source>Received {0} {1} from {2} transfers</source>
         <translation>Recebido {0} {1} de {2} transferências</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/transactions_tab.py" line="122"/>
+        <location filename="../../../src/cutecoin/gui/transactions_tab.py" line="139"/>
         <source>New transactions received</source>
         <translation>Novas transações recebidas</translation>
     </message>
@@ -2001,59 +2102,59 @@ Você gostaria de publicar a chave?</translation>
         <translation type="obsolete">&lt;b&gt;Balanço&lt;/b&gt; {:} {:}</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/transactions_tab.py" line="151"/>
+        <location filename="../../../src/cutecoin/gui/transactions_tab.py" line="170"/>
         <source>Actions</source>
         <translation>Ações</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/transactions_tab.py" line="166"/>
+        <location filename="../../../src/cutecoin/gui/transactions_tab.py" line="185"/>
         <source>Send again</source>
         <translation>Enviar novamente</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/transactions_tab.py" line="171"/>
+        <location filename="../../../src/cutecoin/gui/transactions_tab.py" line="190"/>
         <source>Cancel</source>
         <translation>Cancelar</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/transactions_tab.py" line="177"/>
+        <location filename="../../../src/cutecoin/gui/transactions_tab.py" line="196"/>
         <source>Informations</source>
         <translation>Informações</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/transactions_tab.py" line="182"/>
+        <location filename="../../../src/cutecoin/gui/transactions_tab.py" line="201"/>
         <source>Add as contact</source>
         <translation>Adicionar como contato</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/transactions_tab.py" line="187"/>
+        <location filename="../../../src/cutecoin/gui/transactions_tab.py" line="206"/>
         <source>Send money</source>
         <translation>Enviar dinheiro</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/transactions_tab.py" line="193"/>
+        <location filename="../../../src/cutecoin/gui/transactions_tab.py" line="212"/>
         <source>View in Web of Trust</source>
         <translation>Ver na Rede de Confiança</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/transactions_tab.py" line="198"/>
+        <location filename="../../../src/cutecoin/gui/transactions_tab.py" line="217"/>
         <source>Copy pubkey to clipboard</source>
         <translation>Copiar chave pública para a área de transferência</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/transactions_tab.py" line="276"/>
+        <location filename="../../../src/cutecoin/gui/transactions_tab.py" line="283"/>
         <source>Warning</source>
         <translation>Aviso</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/transactions_tab.py" line="276"/>
+        <location filename="../../../src/cutecoin/gui/transactions_tab.py" line="283"/>
         <source>Are you sure ?
 This money transfer will be removed and not sent.</source>
         <translation>Você tem certeza?
 Esta transferência monetária será removida e não enviada.</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/transactions_tab.py" line="137"/>
+        <location filename="../../../src/cutecoin/gui/transactions_tab.py" line="155"/>
         <source>{:}</source>
         <translation type="unfinished"></translation>
     </message>
@@ -2078,7 +2179,7 @@ Esta transferência monetária será removida e não enviada.</translation>
     <message>
         <location filename="../../ui/transfer.ui" line="40"/>
         <source>Contact</source>
-        <translation>Contato</translation>
+        <translation type="obsolete">Contato</translation>
     </message>
     <message>
         <location filename="../../ui/transfer.ui" line="80"/>
@@ -2096,34 +2197,34 @@ Esta transferência monetária será removida e não enviada.</translation>
         <translation>Mensagem da transação</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/transfer.py" line="77"/>
+        <location filename="../../../src/cutecoin/gui/transfer.py" line="106"/>
         <source>Money transfer</source>
         <translation>Transferência monetária</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/transfer.py" line="77"/>
+        <location filename="../../../src/cutecoin/gui/transfer.py" line="106"/>
         <source>No amount. Please give the transfert amount</source>
         <translation>Nenhuma quantia. Por favor, indique a quantia da transferência</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/transfer.py" line="99"/>
+        <location filename="../../../src/cutecoin/gui/transfer.py" line="137"/>
         <source>Transfer</source>
         <translation>Transferência</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/transfer.py" line="99"/>
+        <location filename="../../../src/cutecoin/gui/transfer.py" line="124"/>
         <source>Success sending money to {0}</source>
         <translation>Sucesso ao enviar dinheiro para {0}</translation>
     </message>
     <message>
         <location filename="../../../src/cutecoin/gui/transfer.py" line="111"/>
         <source>Error</source>
-        <translation>Erro</translation>
+        <translation type="obsolete">Erro</translation>
     </message>
     <message>
         <location filename="../../../src/cutecoin/gui/transfer.py" line="111"/>
         <source>{0} : {1}</source>
-        <translation>{0} : {1}</translation>
+        <translation type="obsolete">{0} : {1}</translation>
     </message>
     <message>
         <location filename="../../ui/transfer.ui" line="61"/>
@@ -2145,17 +2246,22 @@ Esta transferência monetária será removida e não enviada.</translation>
         <source>Amount</source>
         <translation>Quantia</translation>
     </message>
+    <message>
+        <location filename="../../ui/transfer.ui" line="40"/>
+        <source>Con&amp;tact</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>TxFilterProxyModel</name>
     <message>
-        <location filename="../../../src/cutecoin/models/txhistory.py" line="158"/>
-        <source>{0} / {1} validations</source>
+        <location filename="../../../src/cutecoin/models/txhistory.py" line="165"/>
+        <source>{0} / {1} confirmations</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/models/txhistory.py" line="162"/>
-        <source>Validating... {0} %</source>
+        <location filename="../../../src/cutecoin/models/txhistory.py" line="169"/>
+        <source>Confirming... {0} %</source>
         <translation type="unfinished"></translation>
     </message>
 </context>
@@ -2388,25 +2494,30 @@ Revogar seu UID somente funcionará caso ele ainda não tenha sido validado pela
 <context>
     <name>WoT.Node</name>
     <message>
-        <location filename="../../../src/cutecoin/gui/views/wot.py" line="290"/>
+        <location filename="../../../src/cutecoin/gui/views/wot.py" line="294"/>
         <source>Informations</source>
         <translation>Informações</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/views/wot.py" line="295"/>
+        <location filename="../../../src/cutecoin/gui/views/wot.py" line="299"/>
         <source>Add as contact</source>
         <translation>Adicionar como contato</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/views/wot.py" line="300"/>
+        <location filename="../../../src/cutecoin/gui/views/wot.py" line="304"/>
         <source>Send money</source>
         <translation>Enviar dinheiro</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/views/wot.py" line="305"/>
+        <location filename="../../../src/cutecoin/gui/views/wot.py" line="309"/>
         <source>Certify identity</source>
         <translation>Certificar identidade</translation>
     </message>
+    <message>
+        <location filename="../../../src/cutecoin/gui/views/wot.py" line="314"/>
+        <source>Copy pubkey</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>WotTabWidget</name>
@@ -2421,12 +2532,12 @@ Revogar seu UID somente funcionará caso ele ainda não tenha sido validado pela
         <translation>Centralizar a visualização em mim</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/wot_tab.py" line="33"/>
+        <location filename="../../../src/cutecoin/gui/wot_tab.py" line="37"/>
         <source>Research a pubkey, an uid...</source>
         <translation>Busque uma chave pública, um UID...</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/wot_tab.py" line="123"/>
+        <location filename="../../../src/cutecoin/gui/wot_tab.py" line="141"/>
         <source>
                     &lt;table cellpadding=&quot;5&quot;&gt;
                     &lt;tr&gt;&lt;td align=&quot;right&quot;&gt;&lt;b&gt;{:}&lt;/b&gt;&lt;/td&gt;&lt;td&gt;{:}&lt;/td&gt;&lt;/tr&gt;
@@ -2437,32 +2548,32 @@ Revogar seu UID somente funcionará caso ele ainda não tenha sido validado pela
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/wot_tab.py" line="105"/>
+        <location filename="../../../src/cutecoin/gui/wot_tab.py" line="123"/>
         <source>Membership</source>
         <translation type="unfinished">Associação</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/wot_tab.py" line="123"/>
+        <location filename="../../../src/cutecoin/gui/wot_tab.py" line="141"/>
         <source>Last renewal on {:}, expiration on {:}</source>
         <translation type="unfinished">Última renovação em {:}, expiração em {:}</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/wot_tab.py" line="141"/>
+        <location filename="../../../src/cutecoin/gui/wot_tab.py" line="159"/>
         <source>Your web of trust</source>
         <translation type="unfinished">Sua Rede de Confiança</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/wot_tab.py" line="141"/>
+        <location filename="../../../src/cutecoin/gui/wot_tab.py" line="159"/>
         <source>Certified by {:} members; Certifier of {:} members</source>
         <translation type="unfinished">Certificado por {:} membros; Certificador de {:} membros</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/wot_tab.py" line="141"/>
+        <location filename="../../../src/cutecoin/gui/wot_tab.py" line="159"/>
         <source>Not a member</source>
         <translation type="unfinished">Não é um membro</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/wot_tab.py" line="141"/>
+        <location filename="../../../src/cutecoin/gui/wot_tab.py" line="159"/>
         <source>
                 &lt;table cellpadding=&quot;5&quot;&gt;
                 &lt;tr&gt;&lt;td align=&quot;right&quot;&gt;&lt;b&gt;{:}&lt;/b&gt;&lt;/td&gt;&lt;td&gt;{:}&lt;/td&gt;&lt;/tr&gt;
@@ -2482,7 +2593,7 @@ Revogar seu UID somente funcionará caso ele ainda não tenha sido validado pela
 <context>
     <name>self.config_dialog</name>
     <message>
-        <location filename="../../../src/cutecoin/gui/process_cfg_community.py" line="170"/>
+        <location filename="../../../src/cutecoin/gui/process_cfg_community.py" line="185"/>
         <source>Ok</source>
         <translation>Ok</translation>
     </message>
@@ -2547,7 +2658,12 @@ Revogar seu UID somente funcionará caso ele ainda não tenha sido validado pela
     <message>
         <location filename="../../ui/transactions_tab.ui" line="33"/>
         <source>label_balance</source>
-        <translation type="unfinished">label_balance</translation>
+        <translation type="obsolete">label_balance</translation>
+    </message>
+    <message>
+        <location filename="../../ui/transactions_tab.ui" line="33"/>
+        <source>loading...</source>
+        <translation type="unfinished"></translation>
     </message>
 </context>
 </TS>
diff --git a/res/i18n/ts/ru_RU.ts b/res/i18n/ts/ru_RU.ts
index 21aa72c82729c84ab41a7d05c8b0fbbd40877f23..6be0f5ac103c5b373117ef1caf05263f4cbb4693 100644
--- a/res/i18n/ts/ru_RU.ts
+++ b/res/i18n/ts/ru_RU.ts
@@ -1,15 +1,14 @@
-<?xml version='1.0' encoding='utf-8'?>
-<!DOCTYPE TS>
-<TS version="2.0" language="ru_RU" sourcelanguage="">
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS><TS version="2.0" language="ru_RU" sourcelanguage="">
 <context>
     <name>AboutPopup</name>
     <message>
-        <location filename="../../ui/about.ui" line="14"></location>
+        <location filename="../../ui/about.ui" line="14"/>
         <source>About</source>
         <translation>О программе</translation>
     </message>
     <message>
-        <location filename="../../ui/about.ui" line="22"></location>
+        <location filename="../../ui/about.ui" line="22"/>
         <source>label</source>
         <translation>ярлык</translation>
     </message>
@@ -17,314 +16,347 @@
 <context>
     <name>Account</name>
     <message>
-        <location filename="../../../src/cutecoin/core/account.py" line="101"></location>
+        <location filename="../../../src/cutecoin/core/account.py" line="101"/>
         <source>Units</source>
         <translation type="obsolete">Единицы</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/core/account.py" line="101"></location>
+        <location filename="../../../src/cutecoin/core/account.py" line="101"/>
         <source>UD {0}</source>
         <translation type="obsolete">УД {0}</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/core/account.py" line="101"></location>
+        <location filename="../../../src/cutecoin/core/account.py" line="101"/>
         <source>UD</source>
         <translation type="obsolete">УД</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/core/account.py" line="101"></location>
+        <location filename="../../../src/cutecoin/core/account.py" line="101"/>
         <source>Quant Z-sum</source>
         <translation type="obsolete">Колич. Z-сумма</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/core/account.py" line="101"></location>
+        <location filename="../../../src/cutecoin/core/account.py" line="101"/>
         <source>Relat Z-sum</source>
         <translation type="obsolete">Относит. Z-сумма</translation>
     </message>
+    <message>
+        <location filename="../../../src/cutecoin/core/account.py" line="509"/>
+        <source>Could not find user self certification.</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>AccountConfigurationDialog</name>
     <message>
-        <location filename="../../ui/account_cfg.ui" line="14"></location>
+        <location filename="../../ui/account_cfg.ui" line="14"/>
         <source>Add an account</source>
         <translation>Добавить аккаунт</translation>
     </message>
     <message>
-        <location filename="../../ui/account_cfg.ui" line="30"></location>
+        <location filename="../../ui/account_cfg.ui" line="30"/>
         <source>Account parameters</source>
         <translation>Параметры аккаунтa</translation>
     </message>
     <message>
-        <location filename="../../ui/account_cfg.ui" line="51"></location>
+        <location filename="../../ui/account_cfg.ui" line="51"/>
         <source>Account name (uid)</source>
         <translation>Имя аккаунтa (ИДП)</translation>
     </message>
     <message>
-        <location filename="../../ui/account_cfg.ui" line="68"></location>
+        <location filename="../../ui/account_cfg.ui" line="68"/>
         <source>Wallets</source>
         <translation type="obsolete">Кошельки</translation>
     </message>
     <message>
-        <location filename="../../ui/account_cfg.ui" line="84"></location>
+        <location filename="../../ui/account_cfg.ui" line="84"/>
         <source>Delete account</source>
         <translation>Удалить аккаунт</translation>
     </message>
     <message>
-        <location filename="../../ui/account_cfg.ui" line="113"></location>
+        <location filename="../../ui/account_cfg.ui" line="113"/>
         <source>Key parameters</source>
         <translation>Ключевые параметры</translation>
     </message>
     <message>
-        <location filename="../../ui/account_cfg.ui" line="143"></location>
+        <location filename="../../ui/account_cfg.ui" line="143"/>
         <source>CryptoID</source>
         <translation></translation>
     </message>
     <message>
-        <location filename="../../ui/account_cfg.ui" line="153"></location>
+        <location filename="../../ui/account_cfg.ui" line="153"/>
         <source>Your password</source>
         <translation>Ваш пароль</translation>
     </message>
     <message>
-        <location filename="../../ui/account_cfg.ui" line="166"></location>
+        <location filename="../../ui/account_cfg.ui" line="166"/>
         <source>Please repeat your password</source>
         <translation>Пожалуйста, введите снова ваш пароль</translation>
     </message>
     <message>
-        <location filename="../../ui/account_cfg.ui" line="185"></location>
+        <location filename="../../ui/account_cfg.ui" line="185"/>
         <source>Show public key</source>
         <translation>Показать открытый ключ</translation>
     </message>
     <message>
-        <location filename="../../ui/account_cfg.ui" line="230"></location>
+        <location filename="../../ui/account_cfg.ui" line="230"/>
         <source>Add a community</source>
         <translation>Добавить сообщество</translation>
     </message>
     <message>
-        <location filename="../../ui/account_cfg.ui" line="237"></location>
+        <location filename="../../ui/account_cfg.ui" line="237"/>
         <source>Remove selected community</source>
         <translation>Удалить избранное сообщество</translation>
     </message>
     <message>
-        <location filename="../../ui/account_cfg.ui" line="261"></location>
+        <location filename="../../ui/account_cfg.ui" line="261"/>
         <source>Previous</source>
         <translation>Предыдущий</translation>
     </message>
     <message>
-        <location filename="../../ui/account_cfg.ui" line="281"></location>
+        <location filename="../../ui/account_cfg.ui" line="281"/>
         <source>Next</source>
         <translation>Следующий</translation>
     </message>
     <message>
-        <location filename="../../ui/account_cfg.ui" line="215"></location>
+        <location filename="../../ui/account_cfg.ui" line="215"/>
         <source>Communities</source>
         <translation>Cообществ</translation>
     </message>
 </context>
+<context>
+    <name>Application</name>
+    <message>
+        <location filename="../../../src/cutecoin/core/app.py" line="76"/>
+        <source>Warning : Your membership is expiring soon.</source>
+        <translation type="unfinished">Внимание: срок вашего членства скоро закончится.</translation>
+    </message>
+    <message>
+        <location filename="../../../src/cutecoin/core/app.py" line="81"/>
+        <source>Warning : Your could miss certifications soon.</source>
+        <translation type="unfinished">Внимание: скоро вы можете пропустить сертификацию</translation>
+    </message>
+</context>
 <context>
     <name>CertificationDialog</name>
     <message>
-        <location filename="../../../src/cutecoin/gui/certification.py" line="65"></location>
+        <location filename="../../../src/cutecoin/gui/certification.py" line="79"/>
         <source>Certification</source>
         <translation>Сертификация</translation>
     </message>
     <message>
-        <location filename="../../ui/certification.ui" line="20"></location>
+        <location filename="../../ui/certification.ui" line="20"/>
         <source>Community</source>
         <translation>Сообщество</translation>
     </message>
     <message>
-        <location filename="../../ui/certification.ui" line="32"></location>
+        <location filename="../../ui/certification.ui" line="32"/>
         <source>Certify user</source>
         <translation>Сертифицировать пользователя</translation>
     </message>
     <message>
-        <location filename="../../ui/certification.ui" line="40"></location>
+        <location filename="../../ui/certification.ui" line="40"/>
         <source>Contact</source>
         <translation>Контакт</translation>
     </message>
     <message>
-        <location filename="../../ui/certification.ui" line="61"></location>
+        <location filename="../../ui/certification.ui" line="61"/>
         <source>User public key</source>
         <translation>Открытый ключ пользователя</translation>
     </message>
     <message>
-        <location filename="../../ui/certification.ui" line="80"></location>
+        <location filename="../../ui/certification.ui" line="80"/>
         <source>Key</source>
         <translation>Ключ</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/certification.py" line="65"></location>
+        <location filename="../../../src/cutecoin/gui/certification.py" line="65"/>
         <source>Success certifying {0} from {1}</source>
-        <translation>Успешная сертификация от {0} до {1}</translation>
+        <translation type="obsolete">Успешная сертификация от {0} до {1}</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/certification.py" line="75"></location>
+        <location filename="../../../src/cutecoin/gui/certification.py" line="75"/>
         <source>Error</source>
-        <translation>Ошибка</translation>
+        <translation type="obsolete">Ошибка</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/certification.py" line="75"></location>
+        <location filename="../../../src/cutecoin/gui/certification.py" line="75"/>
         <source>{0} : {1}</source>
-        <translation>{0} : {1}</translation>
+        <translation type="obsolete">{0} : {1}</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/certification.py" line="77"></location>
+        <location filename="../../../src/cutecoin/gui/certification.py" line="77"/>
         <source>Ok</source>
         <translation type="obsolete">ОК</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/certification.py" line="97"></location>
+        <location filename="../../../src/cutecoin/gui/certification.py" line="107"/>
         <source>Not a member</source>
         <translation>Не член</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/certification.py" line="94"></location>
+        <location filename="../../../src/cutecoin/gui/certification.py" line="104"/>
         <source>&amp;Ok</source>
         <translation type="unfinished"></translation>
     </message>
+    <message>
+        <location filename="../../../src/cutecoin/gui/certification.py" line="70"/>
+        <source>Success sending certification</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../../src/cutecoin/gui/certification.py" line="79"/>
+        <source>Could not broadcast certification : {0}</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>CommunityConfigurationDialog</name>
     <message>
-        <location filename="../../ui/community_cfg.ui" line="17"></location>
+        <location filename="../../ui/community_cfg.ui" line="17"/>
         <source>Add a community</source>
         <translation>Добавить сообщество</translation>
     </message>
     <message>
-        <location filename="../../ui/community_cfg.ui" line="46"></location>
+        <location filename="../../ui/community_cfg.ui" line="46"/>
         <source>Please enter the address of a node :</source>
         <translation>Пожалуйста, введите адрес узла</translation>
     </message>
     <message>
-        <location filename="../../ui/community_cfg.ui" line="61"></location>
+        <location filename="../../ui/community_cfg.ui" line="61"/>
         <source>:</source>
         <translation>:</translation>
     </message>
     <message>
-        <location filename="../../ui/community_cfg.ui" line="98"></location>
+        <location filename="../../ui/community_cfg.ui" line="98"/>
         <source>Check node connectivity</source>
         <translation type="obsolete">Проверить подключаемость узла</translation>
     </message>
     <message>
-        <location filename="../../ui/community_cfg.ui" line="145"></location>
+        <location filename="../../ui/community_cfg.ui" line="162"/>
         <source>Communities nodes</source>
         <translation>Узлы сообществ</translation>
     </message>
     <message>
-        <location filename="../../ui/community_cfg.ui" line="163"></location>
+        <location filename="../../ui/community_cfg.ui" line="180"/>
         <source>Server</source>
         <translation>Cервер</translation>
     </message>
     <message>
-        <location filename="../../ui/community_cfg.ui" line="183"></location>
+        <location filename="../../ui/community_cfg.ui" line="200"/>
         <source>Add</source>
         <translation>Добавить</translation>
     </message>
     <message>
-        <location filename="../../ui/community_cfg.ui" line="204"></location>
+        <location filename="../../ui/community_cfg.ui" line="221"/>
         <source>Previous</source>
         <translation type="unfinished">Предыдущий</translation>
     </message>
     <message>
-        <location filename="../../ui/community_cfg.ui" line="227"></location>
+        <location filename="../../ui/community_cfg.ui" line="244"/>
         <source>Next</source>
         <translation type="unfinished">Следующий</translation>
     </message>
     <message>
-        <location filename="../../ui/community_cfg.ui" line="98"></location>
+        <location filename="../../ui/community_cfg.ui" line="98"/>
         <source>Register your account</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../ui/community_cfg.ui" line="115"></location>
+        <location filename="../../ui/community_cfg.ui" line="115"/>
         <source>Connect using your account</source>
         <translation type="unfinished"></translation>
     </message>
+    <message>
+        <location filename="../../ui/community_cfg.ui" line="132"/>
+        <source>Connect as a guest</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>CommunityTabWidget</name>
     <message>
-        <location filename="../../ui/community_tab.ui" line="40"></location>
+        <location filename="../../ui/community_tab.ui" line="40"/>
         <source>Identities</source>
         <translation type="obsolete">Личности</translation>
     </message>
     <message>
-        <location filename="../../ui/community_tab.ui" line="53"></location>
+        <location filename="../../ui/community_tab.ui" line="53"/>
         <source>Research a pubkey, an uid...</source>
         <translation type="obsolete">Исследовать открытый ключ, ИДП ...</translation>
     </message>
     <message>
-        <location filename="../../ui/community_tab.ui" line="60"></location>
+        <location filename="../../ui/community_tab.ui" line="60"/>
         <source>Search</source>
         <translation type="obsolete">Поиск</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/community_tab.py" line="58"></location>
+        <location filename="../../../src/cutecoin/gui/community_tab.py" line="58"/>
         <source>Web of Trust</source>
         <translation type="obsolete">Сеть доверия</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/community_tab.py" line="59"></location>
+        <location filename="../../../src/cutecoin/gui/community_tab.py" line="59"/>
         <source>Members</source>
         <translation type="obsolete">Пользователи</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/community_tab.py" line="62"></location>
+        <location filename="../../../src/cutecoin/gui/community_tab.py" line="62"/>
         <source>Direct connections</source>
         <translation type="obsolete">Прямые связи</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/community_tab.py" line="76"></location>
+        <location filename="../../../src/cutecoin/gui/community_tab.py" line="76"/>
         <source>Membership</source>
         <translation type="obsolete">Членство</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/community_tab.py" line="76"></location>
+        <location filename="../../../src/cutecoin/gui/community_tab.py" line="76"/>
         <source>Success sending Membership demand</source>
         <translation type="obsolete">Заявка о членстве отправлена успешно</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/community_tab.py" line="82"></location>
+        <location filename="../../../src/cutecoin/gui/community_tab.py" line="82"/>
         <source>Revoke</source>
         <translation type="obsolete">Отмена</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/community_tab.py" line="82"></location>
+        <location filename="../../../src/cutecoin/gui/community_tab.py" line="82"/>
         <source>Success sending Revoke demand</source>
         <translation type="obsolete">Заявка об отмене отправлена успешно</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/community_tab.py" line="88"></location>
+        <location filename="../../../src/cutecoin/gui/community_tab.py" line="88"/>
         <source>Self Certification</source>
         <translation type="obsolete">Самостоятельная сертификация</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/community_tab.py" line="88"></location>
+        <location filename="../../../src/cutecoin/gui/community_tab.py" line="88"/>
         <source>Success sending Self Certification document</source>
         <translation type="obsolete">Самостоятельная сертификация успешно</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/community_tab.py" line="102"></location>
+        <location filename="../../../src/cutecoin/gui/community_tab.py" line="102"/>
         <source>Informations</source>
         <translation type="obsolete">Данные</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/community_tab.py" line="105"></location>
+        <location filename="../../../src/cutecoin/gui/community_tab.py" line="105"/>
         <source>Add as contact</source>
         <translation type="obsolete">Добавить контакт</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/community_tab.py" line="109"></location>
+        <location filename="../../../src/cutecoin/gui/community_tab.py" line="109"/>
         <source>Send money</source>
         <translation type="obsolete">Отправить деньги</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/community_tab.py" line="113"></location>
+        <location filename="../../../src/cutecoin/gui/community_tab.py" line="113"/>
         <source>Certify identity</source>
         <translation type="obsolete">Удостоверить личность</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/community_tab.py" line="117"></location>
+        <location filename="../../../src/cutecoin/gui/community_tab.py" line="117"/>
         <source>View in Web of Trust</source>
         <translation type="obsolete">Посмотреть в Сети доверия</translation>
     </message>
@@ -332,130 +364,140 @@
 <context>
     <name>CommunityTile</name>
     <message>
-        <location filename="../../../src/cutecoin/gui/community_tile.py" line="46"></location>
+        <location filename="../../../src/cutecoin/gui/community_tile.py" line="77"/>
         <source>Member</source>
         <translation type="unfinished">Член</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/community_tile.py" line="47"></location>
+        <location filename="../../../src/cutecoin/gui/community_tile.py" line="78"/>
         <source>Non-Member</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/community_tile.py" line="58"></location>
+        <location filename="../../../src/cutecoin/gui/community_tile.py" line="89"/>
         <source>members</source>
         <translation>членами</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/community_tile.py" line="58"></location>
+        <location filename="../../../src/cutecoin/gui/community_tile.py" line="89"/>
         <source>Monetary mass</source>
         <translation>Денежная масса</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/community_tile.py" line="58"></location>
+        <location filename="../../../src/cutecoin/gui/community_tile.py" line="89"/>
         <source>Status</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/community_tile.py" line="58"></location>
+        <location filename="../../../src/cutecoin/gui/community_tile.py" line="89"/>
         <source>Balance</source>
         <translation>Баланс</translation>
     </message>
+    <message>
+        <location filename="../../../src/cutecoin/gui/community_tile.py" line="108"/>
+        <source>Not connected</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../../src/cutecoin/gui/community_tile.py" line="121"/>
+        <source>Community not initialized</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>CommunityWidget</name>
     <message>
-        <location filename="../../ui/community_view.ui" line="14"></location>
+        <location filename="../../ui/community_view.ui" line="14"/>
         <source>Form</source>
         <translation type="unfinished">Формуляр</translation>
     </message>
     <message>
-        <location filename="../../ui/community_view.ui" line="59"></location>
+        <location filename="../../ui/community_view.ui" line="59"/>
         <source>Send money</source>
         <translation type="unfinished">Отправить деньги</translation>
     </message>
     <message>
-        <location filename="../../ui/community_view.ui" line="76"></location>
+        <location filename="../../ui/community_view.ui" line="76"/>
         <source>Certification</source>
         <translation type="unfinished">Сертификация</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/community_view.py" line="227"></location>
+        <location filename="../../../src/cutecoin/gui/community_view.py" line="282"/>
         <source>Renew membership</source>
         <translation>Обновить членство</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/community_view.py" line="44"></location>
+        <location filename="../../../src/cutecoin/gui/community_view.py" line="44"/>
         <source>Warning : Your membership is expiring soon.</source>
-        <translation type="unfinished">Внимание: срок вашего членства скоро закончится.</translation>
+        <translation type="obsolete">Внимание: срок вашего членства скоро закончится.</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/community_view.py" line="46"></location>
+        <location filename="../../../src/cutecoin/gui/community_view.py" line="46"/>
         <source>Warning : Your could miss certifications soon.</source>
-        <translation type="unfinished">Внимание: скоро вы можете пропустить сертификацию</translation>
+        <translation type="obsolete">Внимание: скоро вы можете пропустить сертификацию</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/community_view.py" line="63"></location>
+        <location filename="../../../src/cutecoin/gui/community_view.py" line="65"/>
         <source>Transactions</source>
         <translation type="unfinished">Операции</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/community_view.py" line="67"></location>
+        <location filename="../../../src/cutecoin/gui/community_view.py" line="69"/>
         <source>Web of Trust</source>
         <translation type="unfinished">Сеть доверия</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/community_view.py" line="71"></location>
+        <location filename="../../../src/cutecoin/gui/community_view.py" line="73"/>
         <source>Search Identities</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/community_view.py" line="75"></location>
+        <location filename="../../../src/cutecoin/gui/community_view.py" line="77"/>
         <source>Network</source>
         <translation type="unfinished">Сеть</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/community_view.py" line="154"></location>
+        <location filename="../../../src/cutecoin/gui/community_view.py" line="177"/>
         <source>Membership expiration</source>
         <translation type="unfinished">Истечение срока членства</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/community_view.py" line="154"></location>
+        <location filename="../../../src/cutecoin/gui/community_view.py" line="177"/>
         <source>&lt;b&gt;Warning : Membership expiration in {0} days&lt;/b&gt;</source>
         <translation type="unfinished">&lt;b&gt;Внимание: срок членства истекает через {0} дней&lt;/b&gt;</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/community_view.py" line="162"></location>
+        <location filename="../../../src/cutecoin/gui/community_view.py" line="188"/>
         <source>Certifications number</source>
         <translation type="unfinished">Номер сертификации</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/community_view.py" line="162"></location>
+        <location filename="../../../src/cutecoin/gui/community_view.py" line="188"/>
         <source>&lt;b&gt;Warning : You are certified by only {0} persons, need {1}&lt;/b&gt;</source>
         <translation type="unfinished">&lt;b&gt;Внимание: вы сертифицированы только {0} людьми, требуется {1}&lt;/b&gt;</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/community_view.py" line="189"></location>
+        <location filename="../../../src/cutecoin/gui/community_view.py" line="221"/>
         <source> Block {0}</source>
         <translation type="unfinished"> Блокировать {0}</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/community_view.py" line="211"></location>
+        <location filename="../../../src/cutecoin/gui/community_view.py" line="263"/>
         <source> - Median fork window : {0}</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/community_view.py" line="232"></location>
+        <location filename="../../../src/cutecoin/gui/community_view.py" line="288"/>
         <source>Send membership demand</source>
         <translation>Отправить запрос о членстве</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/community_view.py" line="298"></location>
+        <location filename="../../../src/cutecoin/gui/community_view.py" line="334"/>
         <source>Warning</source>
         <translation>Внимание</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/community_view.py" line="259"></location>
+        <location filename="../../../src/cutecoin/gui/community_view.py" line="334"/>
         <source>Are you sure ?
 Sending a leaving demand  cannot be canceled.
 The process to join back the community later will have to be done again.</source>
@@ -464,99 +506,129 @@ The process to join back the community later will have to be done again.</source
 В дальнейшем процесс присоединения обратно к сообществу придется выполнять заново.</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/community_view.py" line="272"></location>
+        <location filename="../../../src/cutecoin/gui/community_view.py" line="272"/>
         <source>Are you sure ?
 Publishing your UID can be canceled by Revoke UID.</source>
-        <translation>Вы уверены? ↵
+        <translation type="obsolete">Вы уверены? ↵
 Публикация ИДП может быть отменена через ИДП отмены.</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/community_view.py" line="283"></location>
+        <location filename="../../../src/cutecoin/gui/community_view.py" line="283"/>
         <source>UID Publishing</source>
-        <translation>Публикация ИДП</translation>
+        <translation type="obsolete">Публикация ИДП</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/community_view.py" line="283"></location>
+        <location filename="../../../src/cutecoin/gui/community_view.py" line="368"/>
         <source>Success publishing your UID</source>
         <translation>Ваш ИДП успешно опубликован</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/community_view.py" line="286"></location>
+        <location filename="../../../src/cutecoin/gui/community_view.py" line="286"/>
         <source>Publish UID error</source>
-        <translation>Ошибка публикации ИДП</translation>
+        <translation type="obsolete">Ошибка публикации ИДП</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/community_view.py" line="289"></location>
+        <location filename="../../../src/cutecoin/gui/community_view.py" line="289"/>
         <source>Network error</source>
-        <translation>Ошибка сети</translation>
+        <translation type="obsolete">Ошибка сети</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/community_view.py" line="289"></location>
-        <source>Couldn't connect to network : {0}</source>
-        <translation>Не удалось подключиться к сети: {0}</translation>
+        <location filename="../../../src/cutecoin/gui/community_view.py" line="289"/>
+        <source>Couldn&apos;t connect to network : {0}</source>
+        <translation type="obsolete">Не удалось подключиться к сети: {0}</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/community_view.py" line="293"></location>
+        <location filename="../../../src/cutecoin/gui/community_view.py" line="293"/>
         <source>Error</source>
-        <translation type="unfinished">Ошибка</translation>
+        <translation type="obsolete">Ошибка</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/community_view.py" line="298"></location>
+        <location filename="../../../src/cutecoin/gui/community_view.py" line="298"/>
         <source>Are you sure ?
 Revoking your UID can only success if it is not already validated by the network.</source>
-        <translation>Вы уверены? ↵
+        <translation type="obsolete">Вы уверены? ↵
 Отмена ИДП может быть успешна, только если она еще не подтверждена сетью.</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/community_view.py" line="313"></location>
+        <location filename="../../../src/cutecoin/gui/community_view.py" line="388"/>
         <source>Membership</source>
         <translation>членстве</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/community_view.py" line="313"></location>
+        <location filename="../../../src/cutecoin/gui/community_view.py" line="322"/>
         <source>Success sending Membership demand</source>
         <translation type="unfinished">Заявка о членстве отправлена успешно</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/community_view.py" line="319"></location>
+        <location filename="../../../src/cutecoin/gui/community_view.py" line="354"/>
         <source>Revoke</source>
         <translation type="unfinished">Отмена</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/community_view.py" line="319"></location>
+        <location filename="../../../src/cutecoin/gui/community_view.py" line="348"/>
         <source>Success sending Revoke demand</source>
         <translation type="unfinished">Заявка об отмене отправлена успешно</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/community_view.py" line="325"></location>
+        <location filename="../../../src/cutecoin/gui/community_view.py" line="325"/>
         <source>Self Certification</source>
-        <translation>Самостоятельная сертификация</translation>
+        <translation type="obsolete">Самостоятельная сертификация</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/community_view.py" line="325"></location>
+        <location filename="../../../src/cutecoin/gui/community_view.py" line="325"/>
         <source>Success sending Self Certification document</source>
-        <translation>Самостоятельная сертификация успешно</translation>
+        <translation type="obsolete">Самостоятельная сертификация успешно</translation>
+    </message>
+    <message>
+        <location filename="../../../src/cutecoin/gui/community_view.py" line="81"/>
+        <source>Show informations</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../../src/cutecoin/gui/community_view.py" line="85"/>
+        <source>Informations</source>
+        <translation type="unfinished">Данные</translation>
+    </message>
+    <message>
+        <location filename="../../../src/cutecoin/gui/community_view.py" line="98"/>
+        <source>Publish UID</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../../src/cutecoin/gui/community_view.py" line="392"/>
+        <source>Revoke UID</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../../src/cutecoin/gui/community_view.py" line="394"/>
+        <source>UID</source>
+        <translation type="unfinished">ИДП</translation>
+    </message>
+    <message>
+        <location filename="../../../src/cutecoin/gui/community_view.py" line="388"/>
+        <source>Your UID was revoked successfully.</source>
+        <translation type="unfinished"></translation>
     </message>
 </context>
 <context>
     <name>ConfigureContactDialog</name>
     <message>
-        <location filename="../../ui/contact.ui" line="14"></location>
+        <location filename="../../ui/contact.ui" line="14"/>
         <source>Add a contact</source>
         <translation>Добавить контакт</translation>
     </message>
     <message>
-        <location filename="../../ui/contact.ui" line="22"></location>
+        <location filename="../../ui/contact.ui" line="22"/>
         <source>Name</source>
         <translation>Имя</translation>
     </message>
     <message>
-        <location filename="../../ui/contact.ui" line="36"></location>
+        <location filename="../../ui/contact.ui" line="36"/>
         <source>Pubkey</source>
         <translation>Открытый ключ</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/contact.py" line="52"></location>
+        <location filename="../../../src/cutecoin/gui/contact.py" line="52"/>
         <source>Contact already exists</source>
         <translation>Контакт уже существует</translation>
     </message>
@@ -564,22 +636,22 @@ Revoking your UID can only success if it is not already validated by the network
 <context>
     <name>CreateWalletDialog</name>
     <message>
-        <location filename="../../ui/create_wallet.ui" line="14"></location>
+        <location filename="../../ui/create_wallet.ui" line="14"/>
         <source>Create a new wallet</source>
         <translation>Создать новый кошелек</translation>
     </message>
     <message>
-        <location filename="../../ui/create_wallet.ui" line="45"></location>
+        <location filename="../../ui/create_wallet.ui" line="45"/>
         <source>Wallet name :</source>
         <translation>Название кошелька</translation>
     </message>
     <message>
-        <location filename="../../ui/create_wallet.ui" line="83"></location>
+        <location filename="../../ui/create_wallet.ui" line="83"/>
         <source>Previous</source>
         <translation>Предыдущий</translation>
     </message>
     <message>
-        <location filename="../../ui/create_wallet.ui" line="103"></location>
+        <location filename="../../ui/create_wallet.ui" line="103"/>
         <source>Next</source>
         <translation>Следующий</translation>
     </message>
@@ -587,67 +659,67 @@ Revoking your UID can only success if it is not already validated by the network
 <context>
     <name>CurrencyTabWidget</name>
     <message>
-        <location filename="../../ui/currency_tab.ui" line="14"></location>
+        <location filename="../../ui/currency_tab.ui" line="14"/>
         <source>Form</source>
         <translation>Формуляр</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/currency_tab.py" line="44"></location>
+        <location filename="../../../src/cutecoin/gui/currency_tab.py" line="44"/>
         <source>Warning : Your membership is expiring soon.</source>
         <translation type="obsolete">Внимание: срок вашего членства скоро закончится.</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/currency_tab.py" line="46"></location>
+        <location filename="../../../src/cutecoin/gui/currency_tab.py" line="46"/>
         <source>Warning : Your could miss certifications soon.</source>
         <translation type="obsolete">Внимание: скоро вы можете пропустить сертификацию</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/currency_tab.py" line="73"></location>
+        <location filename="../../../src/cutecoin/gui/currency_tab.py" line="73"/>
         <source>Wallets</source>
         <translation type="obsolete">Кошельки</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/currency_tab.py" line="77"></location>
+        <location filename="../../../src/cutecoin/gui/currency_tab.py" line="77"/>
         <source>Transactions</source>
         <translation type="obsolete">Операции</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/currency_tab.py" line="89"></location>
+        <location filename="../../../src/cutecoin/gui/currency_tab.py" line="89"/>
         <source>Informations</source>
         <translation type="obsolete">Данные</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/currency_tab.py" line="81"></location>
+        <location filename="../../../src/cutecoin/gui/currency_tab.py" line="81"/>
         <source>Community</source>
         <translation type="obsolete">Сообщество</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/currency_tab.py" line="85"></location>
+        <location filename="../../../src/cutecoin/gui/currency_tab.py" line="85"/>
         <source>Network</source>
         <translation type="obsolete">Сеть</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/currency_tab.py" line="125"></location>
+        <location filename="../../../src/cutecoin/gui/currency_tab.py" line="125"/>
         <source>Membership expiration</source>
         <translation type="obsolete">Истечение срока членства</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/currency_tab.py" line="125"></location>
+        <location filename="../../../src/cutecoin/gui/currency_tab.py" line="125"/>
         <source>&lt;b&gt;Warning : Membership expiration in {0} days&lt;/b&gt;</source>
         <translation type="obsolete">&lt;b&gt;Внимание: срок членства истекает через {0} дней&lt;/b&gt;</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/currency_tab.py" line="132"></location>
+        <location filename="../../../src/cutecoin/gui/currency_tab.py" line="132"/>
         <source>Certifications number</source>
         <translation type="obsolete">Номер сертификации</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/currency_tab.py" line="132"></location>
+        <location filename="../../../src/cutecoin/gui/currency_tab.py" line="132"/>
         <source>&lt;b&gt;Warning : You are certified by only {0} persons, need {1}&lt;/b&gt;</source>
         <translation type="obsolete">&lt;b&gt;Внимание: вы сертифицированы только {0} людьми, требуется {1}&lt;/b&gt;</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/currency_tab.py" line="163"></location>
+        <location filename="../../../src/cutecoin/gui/currency_tab.py" line="163"/>
         <source> Block {0}</source>
         <translation type="obsolete"> Блокировать {0}</translation>
     </message>
@@ -655,22 +727,22 @@ Revoking your UID can only success if it is not already validated by the network
 <context>
     <name>DialogMember</name>
     <message>
-        <location filename="../../ui/member.ui" line="14"></location>
+        <location filename="../../ui/member.ui" line="14"/>
         <source>Informations</source>
         <translation>Данные</translation>
     </message>
     <message>
-        <location filename="../../ui/member.ui" line="34"></location>
+        <location filename="../../ui/member.ui" line="34"/>
         <source>Member</source>
         <translation>Член</translation>
     </message>
     <message>
-        <location filename="../../ui/member.ui" line="65"></location>
+        <location filename="../../ui/member.ui" line="65"/>
         <source>uid</source>
         <translation>ИДП</translation>
     </message>
     <message>
-        <location filename="../../ui/member.ui" line="72"></location>
+        <location filename="../../ui/member.ui" line="72"/>
         <source>properties</source>
         <translation>Свойства</translation>
     </message>
@@ -678,27 +750,27 @@ Revoking your UID can only success if it is not already validated by the network
 <context>
     <name>HistoryTableModel</name>
     <message>
-        <location filename="../../../src/cutecoin/models/txhistory.py" line="199"></location>
+        <location filename="../../../src/cutecoin/models/txhistory.py" line="206"/>
         <source>Date</source>
         <translation>Дата</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/models/txhistory.py" line="199"></location>
+        <location filename="../../../src/cutecoin/models/txhistory.py" line="206"/>
         <source>UID/Public key</source>
         <translation>ИДП / Открытый ключ</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/models/txhistory.py" line="199"></location>
+        <location filename="../../../src/cutecoin/models/txhistory.py" line="206"/>
         <source>Payment</source>
         <translation>Оплата</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/models/txhistory.py" line="199"></location>
+        <location filename="../../../src/cutecoin/models/txhistory.py" line="206"/>
         <source>Deposit</source>
         <translation>Депозит</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/models/txhistory.py" line="199"></location>
+        <location filename="../../../src/cutecoin/models/txhistory.py" line="206"/>
         <source>Comment</source>
         <translation>Комментарий</translation>
     </message>
@@ -706,32 +778,32 @@ Revoking your UID can only success if it is not already validated by the network
 <context>
     <name>HomeScreenWidget</name>
     <message>
-        <location filename="../../ui/homescreen.ui" line="20"></location>
+        <location filename="../../ui/homescreen.ui" line="20"/>
         <source>Form</source>
         <translation type="obsolete">Формуляр</translation>
     </message>
     <message>
-        <location filename="../../ui/homescreen.ui" line="67"></location>
+        <location filename="../../ui/homescreen.ui" line="67"/>
         <source>Create a new account</source>
         <translation type="obsolete">Создать новый аккаунт</translation>
     </message>
     <message>
-        <location filename="../../ui/homescreen.ui" line="100"></location>
+        <location filename="../../ui/homescreen.ui" line="100"/>
         <source>Import an existing account</source>
         <translation type="obsolete">Импорт существующий аккаунт</translation>
     </message>
     <message>
-        <location filename="../../ui/homescreen.ui" line="127"></location>
+        <location filename="../../ui/homescreen.ui" line="127"/>
         <source>Get to know more about ucoin</source>
         <translation type="obsolete">Узнайте больше об uCoin</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/homescreen.py" line="35"></location>
+        <location filename="../../../src/cutecoin/gui/homescreen.py" line="35"/>
         <source>Please get the latest release {version}</source>
         <translation type="obsolete">Пожалуйста, получите последний выпуск {version}</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/homescreen.py" line="39"></location>
+        <location filename="../../../src/cutecoin/gui/homescreen.py" line="39"/>
         <source>
             &lt;h1&gt;Welcome to Cutecoin {version}&lt;/h1&gt;
             &lt;h2&gt;{version_info}&lt;/h2&gt;
@@ -744,7 +816,7 @@ Revoking your UID can only success if it is not already validated by the network
             </translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/homescreen.py" line="72"></location>
+        <location filename="../../../src/cutecoin/gui/homescreen.py" line="72"/>
         <source>Connected as {0}</source>
         <translation type="unfinished"></translation>
     </message>
@@ -752,37 +824,37 @@ Revoking your UID can only success if it is not already validated by the network
 <context>
     <name>HomescreenWidget</name>
     <message>
-        <location filename="../../ui/homescreen.ui" line="20"></location>
+        <location filename="../../ui/homescreen.ui" line="20"/>
         <source>Form</source>
         <translation type="unfinished">Формуляр</translation>
     </message>
     <message>
-        <location filename="../../ui/homescreen.ui" line="47"></location>
+        <location filename="../../ui/homescreen.ui" line="47"/>
         <source>Connected as</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../ui/homescreen.ui" line="54"></location>
+        <location filename="../../ui/homescreen.ui" line="54"/>
         <source>Add a community</source>
         <translation>Добавить сообщество</translation>
     </message>
     <message>
-        <location filename="../../ui/homescreen.ui" line="71"></location>
+        <location filename="../../ui/homescreen.ui" line="71"/>
         <source>Disconnect</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../ui/homescreen.ui" line="119"></location>
-        <source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;&lt;span style=" font-size:12pt; font-weight:600;"&gt;Not Connected&lt;/span&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
+        <location filename="../../ui/homescreen.ui" line="119"/>
+        <source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;&lt;span style=&quot; font-size:12pt; font-weight:600;&quot;&gt;Not Connected&lt;/span&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../ui/homescreen.ui" line="126"></location>
+        <location filename="../../ui/homescreen.ui" line="126"/>
         <source>Connect</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../ui/homescreen.ui" line="149"></location>
+        <location filename="../../ui/homescreen.ui" line="149"/>
         <source>New account</source>
         <translation>новый аккаунт</translation>
     </message>
@@ -790,17 +862,17 @@ Revoking your UID can only success if it is not already validated by the network
 <context>
     <name>IdentitiesTab</name>
     <message>
-        <location filename="../../ui/identities_tab.ui" line="14"></location>
+        <location filename="../../ui/identities_tab.ui" line="14"/>
         <source>Form</source>
         <translation>Формуляр</translation>
     </message>
     <message>
-        <location filename="../../ui/identities_tab.ui" line="25"></location>
+        <location filename="../../ui/identities_tab.ui" line="25"/>
         <source>Research a pubkey, an uid...</source>
         <translation>Исследовать открытый ключ, ИДП ...</translation>
     </message>
     <message>
-        <location filename="../../ui/identities_tab.ui" line="32"></location>
+        <location filename="../../ui/identities_tab.ui" line="32"/>
         <source>Search</source>
         <translation>Поиск</translation>
     </message>
@@ -808,65 +880,70 @@ Revoking your UID can only success if it is not already validated by the network
 <context>
     <name>IdentitiesTabWidget</name>
     <message>
-        <location filename="../../../src/cutecoin/gui/identities_tab.py" line="56"></location>
+        <location filename="../../../src/cutecoin/gui/identities_tab.py" line="63"/>
         <source>Members</source>
         <translation>Пользователи</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/identities_tab.py" line="59"></location>
+        <location filename="../../../src/cutecoin/gui/identities_tab.py" line="66"/>
         <source>Direct connections</source>
         <translation>Прямые связи</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/identities_tab.py" line="98"></location>
+        <location filename="../../../src/cutecoin/gui/identities_tab.py" line="109"/>
         <source>Informations</source>
         <translation>Данные</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/identities_tab.py" line="101"></location>
+        <location filename="../../../src/cutecoin/gui/identities_tab.py" line="112"/>
         <source>Add as contact</source>
         <translation>Добавить контакт</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/identities_tab.py" line="105"></location>
+        <location filename="../../../src/cutecoin/gui/identities_tab.py" line="116"/>
         <source>Send money</source>
         <translation>Отправить деньги</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/identities_tab.py" line="109"></location>
+        <location filename="../../../src/cutecoin/gui/identities_tab.py" line="120"/>
         <source>Certify identity</source>
         <translation>Удостоверить личность</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/identities_tab.py" line="113"></location>
+        <location filename="../../../src/cutecoin/gui/identities_tab.py" line="124"/>
         <source>View in Web of Trust</source>
         <translation>Посмотреть в Сети доверия</translation>
     </message>
+    <message>
+        <location filename="../../../src/cutecoin/gui/identities_tab.py" line="128"/>
+        <source>Copy pubkey</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>IdentitiesTableModel</name>
     <message>
-        <location filename="../../../src/cutecoin/models/identities.py" line="89"></location>
+        <location filename="../../../src/cutecoin/models/identities.py" line="90"/>
         <source>UID</source>
         <translation>ИДП</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/models/identities.py" line="90"></location>
+        <location filename="../../../src/cutecoin/models/identities.py" line="91"/>
         <source>Pubkey</source>
         <translation>Открытый ключ</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/models/identities.py" line="91"></location>
+        <location filename="../../../src/cutecoin/models/identities.py" line="92"/>
         <source>Renewed</source>
         <translation>Обновлено</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/models/identities.py" line="92"></location>
+        <location filename="../../../src/cutecoin/models/identities.py" line="93"/>
         <source>Expiration</source>
         <translation>Истечение срока</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/models/identities.py" line="93"></location>
+        <location filename="../../../src/cutecoin/models/identities.py" line="94"/>
         <source>Validation</source>
         <translation type="unfinished"></translation>
     </message>
@@ -874,57 +951,57 @@ Revoking your UID can only success if it is not already validated by the network
 <context>
     <name>ImportAccountDialog</name>
     <message>
-        <location filename="../../ui/import_account.ui" line="14"></location>
+        <location filename="../../ui/import_account.ui" line="14"/>
         <source>Import an account</source>
         <translation>Импортировать файл аккаунта</translation>
     </message>
     <message>
-        <location filename="../../ui/import_account.ui" line="25"></location>
+        <location filename="../../ui/import_account.ui" line="25"/>
         <source>Import a file</source>
         <translation>Импортировать файл</translation>
     </message>
     <message>
-        <location filename="../../ui/import_account.ui" line="36"></location>
+        <location filename="../../ui/import_account.ui" line="36"/>
         <source>Name of the account :</source>
         <translation>Имя аккаунта:</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/import_account.py" line="34"></location>
+        <location filename="../../../src/cutecoin/gui/import_account.py" line="34"/>
         <source>Error</source>
         <translation>Ошибка</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/import_account.py" line="38"></location>
+        <location filename="../../../src/cutecoin/gui/import_account.py" line="38"/>
         <source>Account import</source>
         <translation>Импорт аккаунтa</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/import_account.py" line="38"></location>
+        <location filename="../../../src/cutecoin/gui/import_account.py" line="38"/>
         <source>Account imported succefully !</source>
         <translation>Aккаунт успешно импортирован!</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/import_account.py" line="43"></location>
+        <location filename="../../../src/cutecoin/gui/import_account.py" line="43"/>
         <source>Import an account file</source>
         <translation>Импортировать файл аккаунта</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/import_account.py" line="43"></location>
+        <location filename="../../../src/cutecoin/gui/import_account.py" line="43"/>
         <source>All account files (*.acc)</source>
         <translation>Все файлы аккаунта (*.acc)</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/import_account.py" line="58"></location>
+        <location filename="../../../src/cutecoin/gui/import_account.py" line="58"/>
         <source>Please enter a name</source>
         <translation>Пожалуйста, введите имя</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/import_account.py" line="63"></location>
+        <location filename="../../../src/cutecoin/gui/import_account.py" line="63"/>
         <source>Name already exists</source>
         <translation>Имя уже существует</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/import_account.py" line="67"></location>
+        <location filename="../../../src/cutecoin/gui/import_account.py" line="67"/>
         <source>File is not an account format</source>
         <translation>Файл не соответствует формату аккаунтa</translation>
     </message>
@@ -932,243 +1009,243 @@ Revoking your UID can only success if it is not already validated by the network
 <context>
     <name>InformationsTabWidget</name>
     <message>
-        <location filename="../../ui/informations_tab.ui" line="14"></location>
+        <location filename="../../ui/informations_tab.ui" line="14"/>
         <source>Form</source>
         <translation>Формуляр</translation>
     </message>
     <message>
-        <location filename="../../ui/informations_tab.ui" line="52"></location>
+        <location filename="../../ui/informations_tab.ui" line="52"/>
         <source>General</source>
         <translation>Общее</translation>
     </message>
     <message>
-        <location filename="../../ui/informations_tab.ui" line="61"></location>
+        <location filename="../../ui/informations_tab.ui" line="61"/>
         <source>label_general</source>
-        <translation>ярлый_общий</translation>
+        <translation type="obsolete">ярлый_общий</translation>
     </message>
     <message>
-        <location filename="../../ui/informations_tab.ui" line="77"></location>
+        <location filename="../../ui/informations_tab.ui" line="77"/>
         <source>Rules</source>
         <translation>Правила</translation>
     </message>
     <message>
-        <location filename="../../ui/informations_tab.ui" line="83"></location>
+        <location filename="../../ui/informations_tab.ui" line="83"/>
         <source>label_rules</source>
-        <translation>ярык_правила</translation>
+        <translation type="obsolete">ярык_правила</translation>
     </message>
     <message>
-        <location filename="../../ui/informations_tab.ui" line="96"></location>
+        <location filename="../../ui/informations_tab.ui" line="96"/>
         <source>Money</source>
         <translation>Деньги</translation>
     </message>
     <message>
-        <location filename="../../ui/informations_tab.ui" line="102"></location>
+        <location filename="../../ui/informations_tab.ui" line="102"/>
         <source>label_money</source>
-        <translation>ярлык_ деньги</translation>
+        <translation type="obsolete">ярлык_ деньги</translation>
     </message>
     <message>
-        <location filename="../../ui/informations_tab.ui" line="115"></location>
+        <location filename="../../ui/informations_tab.ui" line="115"/>
         <source>WoT</source>
         <translation>СД</translation>
     </message>
     <message>
-        <location filename="../../ui/informations_tab.ui" line="121"></location>
+        <location filename="../../ui/informations_tab.ui" line="121"/>
         <source>label_wot</source>
-        <translation>ярлык_сд</translation>
+        <translation type="obsolete">ярлык_сд</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="86"></location>
+        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="103"/>
         <source>
-                &lt;table cellpadding="5"&gt;
-                &lt;tr&gt;&lt;td align="right"&gt;&lt;b&gt;{:}&lt;/b&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;{:} {:}&lt;/td&gt;&lt;/tr&gt;
-                &lt;tr&gt;&lt;td align="right"&gt;&lt;b&gt;{:}&lt;/b&gt;&lt;/td&gt;&lt;td&gt;{:} {:}&lt;/td&gt;&lt;/tr&gt;
-                &lt;tr&gt;&lt;td align="right"&gt;&lt;b&gt;{:}&lt;/b&gt;&lt;/td&gt;&lt;td&gt;{:}&lt;/td&gt;&lt;/tr&gt;
-                &lt;tr&gt;&lt;td align="right"&gt;&lt;b&gt;{:}&lt;/b&gt;&lt;/td&gt;&lt;td&gt;{:} {:}&lt;/td&gt;&lt;/tr&gt;
-                &lt;tr&gt;&lt;td align="right"&gt;&lt;b&gt;{:2.2%} / {:} days&lt;/b&gt;&lt;/td&gt;&lt;td&gt;{:}&lt;/td&gt;&lt;/tr&gt;
-                &lt;tr&gt;&lt;td align="right"&gt;&lt;b&gt;{:}&lt;/b&gt;&lt;/td&gt;&lt;td&gt;{:}&lt;/td&gt;&lt;/tr&gt;
-                &lt;tr&gt;&lt;td align="right"&gt;&lt;b&gt;{:}&lt;/b&gt;&lt;/td&gt;&lt;td&gt;{:}&lt;/td&gt;&lt;/tr&gt;
+                &lt;table cellpadding=&quot;5&quot;&gt;
+                &lt;tr&gt;&lt;td align=&quot;right&quot;&gt;&lt;b&gt;{:}&lt;/b&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;{:} {:}&lt;/td&gt;&lt;/tr&gt;
+                &lt;tr&gt;&lt;td align=&quot;right&quot;&gt;&lt;b&gt;{:}&lt;/b&gt;&lt;/td&gt;&lt;td&gt;{:} {:}&lt;/td&gt;&lt;/tr&gt;
+                &lt;tr&gt;&lt;td align=&quot;right&quot;&gt;&lt;b&gt;{:}&lt;/b&gt;&lt;/td&gt;&lt;td&gt;{:}&lt;/td&gt;&lt;/tr&gt;
+                &lt;tr&gt;&lt;td align=&quot;right&quot;&gt;&lt;b&gt;{:}&lt;/b&gt;&lt;/td&gt;&lt;td&gt;{:} {:}&lt;/td&gt;&lt;/tr&gt;
+                &lt;tr&gt;&lt;td align=&quot;right&quot;&gt;&lt;b&gt;{:2.2%} / {:} days&lt;/b&gt;&lt;/td&gt;&lt;td&gt;{:}&lt;/td&gt;&lt;/tr&gt;
+                &lt;tr&gt;&lt;td align=&quot;right&quot;&gt;&lt;b&gt;{:}&lt;/b&gt;&lt;/td&gt;&lt;td&gt;{:}&lt;/td&gt;&lt;/tr&gt;
+                &lt;tr&gt;&lt;td align=&quot;right&quot;&gt;&lt;b&gt;{:}&lt;/b&gt;&lt;/td&gt;&lt;td&gt;{:}&lt;/td&gt;&lt;/tr&gt;
                 &lt;/table&gt;
                 </source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="86"></location>
+        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="103"/>
         <source>Universal Dividend UD(t) in</source>
         <translation>Универсальный дивиденд УД(t) в</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="86"></location>
+        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="103"/>
         <source>Monetary Mass M(t-1) in</source>
         <translation>Денежная масса M(t-1) в</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="86"></location>
+        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="103"/>
         <source>Members N(t)</source>
         <translation>Члены N(t)</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="86"></location>
+        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="103"/>
         <source>Monetary Mass per member M(t-1)/N(t) in</source>
         <translation>Денежная масса на члена M(t-1)/N(t) в</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="86"></location>
+        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="103"/>
         <source>Actual growth c = UD(t)/[M(t-1)/N(t)]</source>
         <translation>Фактический рост c = UD(t)/[M(t-1)/N(t)]</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="86"></location>
+        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="103"/>
         <source>Last UD date and time (t)</source>
         <translation>Дата и время последнего УД (t)</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="86"></location>
+        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="103"/>
         <source>Next UD date and time (t+1)</source>
         <translation>Дата и время следующего УД (t+1)</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="158"></location>
+        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="175"/>
         <source>No Universal Dividend created yet.</source>
         <translation>Универсальный дивиденд еще не создан.</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="133"></location>
+        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="150"/>
         <source>
-                &lt;table cellpadding="5"&gt;
-                &lt;tr&gt;&lt;td align="right"&gt;&lt;b&gt;{:}&lt;/b&gt;&lt;/td&gt;&lt;td&gt;{:}&lt;/td&gt;&lt;/tr&gt;
-                &lt;tr&gt;&lt;td align="right"&gt;&lt;b&gt;{:}&lt;/b&gt;&lt;/td&gt;&lt;td&gt;{:}&lt;/td&gt;&lt;/tr&gt;
-                &lt;tr&gt;&lt;td align="right"&gt;&lt;b&gt;{:}&lt;/b&gt;&lt;/td&gt;&lt;td&gt;{:}&lt;/td&gt;&lt;/tr&gt;
+                &lt;table cellpadding=&quot;5&quot;&gt;
+                &lt;tr&gt;&lt;td align=&quot;right&quot;&gt;&lt;b&gt;{:}&lt;/b&gt;&lt;/td&gt;&lt;td&gt;{:}&lt;/td&gt;&lt;/tr&gt;
+                &lt;tr&gt;&lt;td align=&quot;right&quot;&gt;&lt;b&gt;{:}&lt;/b&gt;&lt;/td&gt;&lt;td&gt;{:}&lt;/td&gt;&lt;/tr&gt;
+                &lt;tr&gt;&lt;td align=&quot;right&quot;&gt;&lt;b&gt;{:}&lt;/b&gt;&lt;/td&gt;&lt;td&gt;{:}&lt;/td&gt;&lt;/tr&gt;
                 &lt;/table&gt;
                 </source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="133"></location>
+        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="150"/>
         <source>{:2.0%} / {:} days</source>
         <translation>{:2.0%} / {:} дней</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="133"></location>
+        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="150"/>
         <source>Fundamental growth (c) / Delta time (dt)</source>
         <translation>Основной рост (c) / Дельта времени (dt)</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="133"></location>
+        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="150"/>
         <source>UD(t+1) = MAX { UD(t) ; c &amp;#215; M(t) / N(t+1) }</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="133"></location>
+        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="150"/>
         <source>Universal Dividend (formula)</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="133"></location>
+        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="150"/>
         <source>{:} = MAX {{ {:} {:} ; {:2.0%} &amp;#215; {:} {:} / {:} }}</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="133"></location>
+        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="150"/>
         <source>Universal Dividend (computed)</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="161"></location>
+        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="178"/>
         <source>
-            &lt;table cellpadding="5"&gt;
-            &lt;tr&gt;&lt;td align="right"&gt;&lt;b&gt;{:2.0%} / {:} days&lt;/b&gt;&lt;/td&gt;&lt;td&gt;{:}&lt;/td&gt;&lt;/tr&gt;
-            &lt;tr&gt;&lt;td align="right"&gt;&lt;b&gt;{:}&lt;/b&gt;&lt;/td&gt;&lt;td&gt;{:} {:}&lt;/td&gt;&lt;/tr&gt;
-            &lt;tr&gt;&lt;td align="right"&gt;&lt;b&gt;{:}&lt;/b&gt;&lt;/td&gt;&lt;td&gt;{:}&lt;/td&gt;&lt;/tr&gt;
-            &lt;tr&gt;&lt;td align="right"&gt;&lt;b&gt;{:}&lt;/b&gt;&lt;/td&gt;&lt;td&gt;{:}&lt;/td&gt;&lt;/tr&gt;
-            &lt;tr&gt;&lt;td align="right"&gt;&lt;b&gt;{:}&lt;/b&gt;&lt;/td&gt;&lt;td&gt;{:}&lt;/td&gt;&lt;/tr&gt;
-            &lt;tr&gt;&lt;td align="right"&gt;&lt;b&gt;{:}&lt;/b&gt;&lt;/td&gt;&lt;td&gt;{:}&lt;/td&gt;&lt;/tr&gt;
-            &lt;tr&gt;&lt;td align="right"&gt;&lt;b&gt;{:}&lt;/b&gt;&lt;/td&gt;&lt;td&gt;{:}&lt;/td&gt;&lt;/tr&gt;
-            &lt;tr&gt;&lt;td align="right"&gt;&lt;b&gt;{:2.0%}&lt;/b&gt;&lt;/td&gt;&lt;td&gt;{:}&lt;/td&gt;&lt;/tr&gt;
+            &lt;table cellpadding=&quot;5&quot;&gt;
+            &lt;tr&gt;&lt;td align=&quot;right&quot;&gt;&lt;b&gt;{:2.0%} / {:} days&lt;/b&gt;&lt;/td&gt;&lt;td&gt;{:}&lt;/td&gt;&lt;/tr&gt;
+            &lt;tr&gt;&lt;td align=&quot;right&quot;&gt;&lt;b&gt;{:}&lt;/b&gt;&lt;/td&gt;&lt;td&gt;{:} {:}&lt;/td&gt;&lt;/tr&gt;
+            &lt;tr&gt;&lt;td align=&quot;right&quot;&gt;&lt;b&gt;{:}&lt;/b&gt;&lt;/td&gt;&lt;td&gt;{:}&lt;/td&gt;&lt;/tr&gt;
+            &lt;tr&gt;&lt;td align=&quot;right&quot;&gt;&lt;b&gt;{:}&lt;/b&gt;&lt;/td&gt;&lt;td&gt;{:}&lt;/td&gt;&lt;/tr&gt;
+            &lt;tr&gt;&lt;td align=&quot;right&quot;&gt;&lt;b&gt;{:}&lt;/b&gt;&lt;/td&gt;&lt;td&gt;{:}&lt;/td&gt;&lt;/tr&gt;
+            &lt;tr&gt;&lt;td align=&quot;right&quot;&gt;&lt;b&gt;{:}&lt;/b&gt;&lt;/td&gt;&lt;td&gt;{:}&lt;/td&gt;&lt;/tr&gt;
+            &lt;tr&gt;&lt;td align=&quot;right&quot;&gt;&lt;b&gt;{:}&lt;/b&gt;&lt;/td&gt;&lt;td&gt;{:}&lt;/td&gt;&lt;/tr&gt;
+            &lt;tr&gt;&lt;td align=&quot;right&quot;&gt;&lt;b&gt;{:2.0%}&lt;/b&gt;&lt;/td&gt;&lt;td&gt;{:}&lt;/td&gt;&lt;/tr&gt;
             &lt;/table&gt;
             </source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="161"></location>
+        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="178"/>
         <source>Fundamental growth (c)</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="161"></location>
+        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="178"/>
         <source>Initial Universal Dividend UD(0) in</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="161"></location>
+        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="178"/>
         <source>Time period (dt) in days (86400 seconds) between two UD</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="161"></location>
+        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="178"/>
         <source>Number of blocks used for calculating median time</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="161"></location>
+        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="178"/>
         <source>The average time in seconds for writing 1 block (wished time)</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="161"></location>
+        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="178"/>
         <source>The number of blocks required to evaluate again PoWMin value</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="161"></location>
+        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="178"/>
         <source>The number of previous blocks to check for personalized difficulty</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="161"></location>
+        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="178"/>
         <source>The percent of previous issuers to reach for personalized difficulty</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="196"></location>
+        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="213"/>
         <source>
-            &lt;table cellpadding="5"&gt;
-            &lt;tr&gt;&lt;td align="right"&gt;&lt;b&gt;{:}&lt;/b&gt;&lt;/td&gt;&lt;td&gt;{:}&lt;/td&gt;&lt;/tr&gt;
-            &lt;tr&gt;&lt;td align="right"&gt;&lt;b&gt;{:}&lt;/b&gt;&lt;/td&gt;&lt;td&gt;{:}&lt;/td&gt;&lt;/tr&gt;
-            &lt;tr&gt;&lt;td align="right"&gt;&lt;b&gt;{:}&lt;/b&gt;&lt;/td&gt;&lt;td&gt;{:}&lt;/td&gt;&lt;/tr&gt;
-            &lt;tr&gt;&lt;td align="right"&gt;&lt;b&gt;{:}&lt;/b&gt;&lt;/td&gt;&lt;td&gt;{:}&lt;/td&gt;&lt;/tr&gt;
-            &lt;tr&gt;&lt;td align="right"&gt;&lt;b&gt;{:}&lt;/b&gt;&lt;/td&gt;&lt;td&gt;{:}&lt;/td&gt;&lt;/tr&gt;
-            &lt;tr&gt;&lt;td align="right"&gt;&lt;b&gt;{:}&lt;/b&gt;&lt;/td&gt;&lt;td&gt;{:}&lt;/td&gt;&lt;/tr&gt;
+            &lt;table cellpadding=&quot;5&quot;&gt;
+            &lt;tr&gt;&lt;td align=&quot;right&quot;&gt;&lt;b&gt;{:}&lt;/b&gt;&lt;/td&gt;&lt;td&gt;{:}&lt;/td&gt;&lt;/tr&gt;
+            &lt;tr&gt;&lt;td align=&quot;right&quot;&gt;&lt;b&gt;{:}&lt;/b&gt;&lt;/td&gt;&lt;td&gt;{:}&lt;/td&gt;&lt;/tr&gt;
+            &lt;tr&gt;&lt;td align=&quot;right&quot;&gt;&lt;b&gt;{:}&lt;/b&gt;&lt;/td&gt;&lt;td&gt;{:}&lt;/td&gt;&lt;/tr&gt;
+            &lt;tr&gt;&lt;td align=&quot;right&quot;&gt;&lt;b&gt;{:}&lt;/b&gt;&lt;/td&gt;&lt;td&gt;{:}&lt;/td&gt;&lt;/tr&gt;
+            &lt;tr&gt;&lt;td align=&quot;right&quot;&gt;&lt;b&gt;{:}&lt;/b&gt;&lt;/td&gt;&lt;td&gt;{:}&lt;/td&gt;&lt;/tr&gt;
+            &lt;tr&gt;&lt;td align=&quot;right&quot;&gt;&lt;b&gt;{:}&lt;/b&gt;&lt;/td&gt;&lt;td&gt;{:}&lt;/td&gt;&lt;/tr&gt;
             &lt;/table&gt;
             </source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="196"></location>
+        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="213"/>
         <source>Minimum delay between 2 identical certifications (in days)</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="196"></location>
+        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="213"/>
         <source>Maximum age of a valid signature (in days)</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="196"></location>
+        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="213"/>
         <source>Minimum quantity of signatures to be part of the WoT</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="196"></location>
+        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="213"/>
         <source>Minimum quantity of valid made certifications to be part of the WoT for distance rule</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="196"></location>
+        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="213"/>
         <source>Maximum age of a valid membership (in days)</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="196"></location>
+        <location filename="../../../src/cutecoin/gui/informations_tab.py" line="213"/>
         <source>Maximum distance between each WoT member and a newcomer</source>
         <translation type="unfinished"></translation>
     </message>
@@ -1176,229 +1253,230 @@ Revoking your UID can only success if it is not already validated by the network
 <context>
     <name>MainWindow</name>
     <message>
-        <location filename="../../ui/mainwindow.ui" line="30"></location>
+        <location filename="../../ui/mainwindow.ui" line="30"/>
         <source>Fi&amp;le</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../ui/mainwindow.ui" line="131"></location>
+        <location filename="../../ui/mainwindow.ui" line="131"/>
         <source>Account</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../ui/mainwindow.ui" line="50"></location>
+        <location filename="../../ui/mainwindow.ui" line="50"/>
         <source>&amp;Open</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../ui/mainwindow.ui" line="65"></location>
+        <location filename="../../ui/mainwindow.ui" line="65"/>
         <source>&amp;Help</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../ui/mainwindow.ui" line="76"></location>
+        <location filename="../../ui/mainwindow.ui" line="76"/>
         <source>Manage accounts</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../ui/mainwindow.ui" line="81"></location>
+        <location filename="../../ui/mainwindow.ui" line="81"/>
         <source>Configure trustable nodes</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../ui/mainwindow.ui" line="106"></location>
+        <location filename="../../ui/mainwindow.ui" line="106"/>
         <source>Send a message</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../ui/mainwindow.ui" line="111"></location>
+        <location filename="../../ui/mainwindow.ui" line="111"/>
         <source>Send money</source>
         <translation type="unfinished">Отправить деньги</translation>
     </message>
     <message>
-        <location filename="../../ui/mainwindow.ui" line="116"></location>
+        <location filename="../../ui/mainwindow.ui" line="116"/>
         <source>Remove contact</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../ui/mainwindow.ui" line="121"></location>
+        <location filename="../../ui/mainwindow.ui" line="121"/>
         <source>Save</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../ui/mainwindow.ui" line="126"></location>
+        <location filename="../../ui/mainwindow.ui" line="126"/>
         <source>&amp;Quit</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../ui/mainwindow.ui" line="136"></location>
+        <location filename="../../ui/mainwindow.ui" line="136"/>
         <source>&amp;Transfer money</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../ui/mainwindow.ui" line="141"></location>
+        <location filename="../../ui/mainwindow.ui" line="141"/>
         <source>&amp;Configure</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../ui/mainwindow.ui" line="146"></location>
+        <location filename="../../ui/mainwindow.ui" line="146"/>
         <source>&amp;Import</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../ui/mainwindow.ui" line="151"></location>
+        <location filename="../../ui/mainwindow.ui" line="151"/>
         <source>&amp;Export</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../ui/mainwindow.ui" line="161"></location>
+        <location filename="../../ui/mainwindow.ui" line="161"/>
         <source>&amp;Set as default</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../ui/mainwindow.ui" line="166"></location>
+        <location filename="../../ui/mainwindow.ui" line="166"/>
         <source>A&amp;bout</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../ui/mainwindow.ui" line="171"></location>
+        <location filename="../../ui/mainwindow.ui" line="171"/>
         <source>&amp;Preferences</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../ui/mainwindow.ui" line="176"></location>
+        <location filename="../../ui/mainwindow.ui" line="176"/>
         <source>&amp;Add account</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/mainwindow.py" line="211"></location>
+        <location filename="../../../src/cutecoin/gui/mainwindow.py" line="211"/>
         <source>Latest release : {version}</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/mainwindow.py" line="218"></location>
+        <location filename="../../../src/cutecoin/gui/mainwindow.py" line="218"/>
         <source>Download link</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/mainwindow.py" line="225"></location>
-        <source>
-        &lt;h1&gt;Cutecoin&lt;/h1&gt;
-
-        &lt;p&gt;Python/Qt uCoin client&lt;/p&gt;
-
-        &lt;p&gt;Version : {:}&lt;/p&gt;
-        {new_version_text}
-
-        &lt;p&gt;License : MIT&lt;/p&gt;
-
-        &lt;p&gt;&lt;b&gt;Authors&lt;/b&gt;&lt;/p&gt;
-
-        &lt;p&gt;inso&lt;/p&gt;
-        &lt;p&gt;vit&lt;/p&gt;
-        &lt;p&gt;canercandan&lt;/p&gt;
-        </source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../../../src/cutecoin/gui/mainwindow.py" line="250"></location>
+        <location filename="../../../src/cutecoin/gui/mainwindow.py" line="251"/>
         <source>Please get the latest release {version}</source>
         <translation type="unfinished">Пожалуйста, получите последний выпуск {version}</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/mainwindow.py" line="285"></location>
+        <location filename="../../../src/cutecoin/gui/mainwindow.py" line="283"/>
         <source>Edit</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/mainwindow.py" line="288"></location>
+        <location filename="../../../src/cutecoin/gui/mainwindow.py" line="286"/>
         <source>Delete</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/mainwindow.py" line="305"></location>
+        <location filename="../../../src/cutecoin/gui/mainwindow.py" line="303"/>
         <source>CuteCoin {0}</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/mainwindow.py" line="332"></location>
+        <location filename="../../../src/cutecoin/gui/mainwindow.py" line="330"/>
         <source>CuteCoin {0} - Account : {1}</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/mainwindow.py" line="350"></location>
+        <location filename="../../../src/cutecoin/gui/mainwindow.py" line="348"/>
         <source>Export an account</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/mainwindow.py" line="351"></location>
+        <location filename="../../../src/cutecoin/gui/mainwindow.py" line="349"/>
         <source>All account files (*.acc)</source>
-        <translation type="unfinished"></translation>
+        <translation type="unfinished">Все файлы аккаунта (*.acc)</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/mainwindow.py" line="352"></location>
+        <location filename="../../../src/cutecoin/gui/mainwindow.py" line="350"/>
         <source>Export</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../ui/mainwindow.ui" line="40"></location>
+        <location filename="../../ui/mainwindow.ui" line="40"/>
         <source>Acco&amp;unt</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../ui/mainwindow.ui" line="44"></location>
+        <location filename="../../ui/mainwindow.ui" line="44"/>
         <source>Co&amp;ntacts</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../ui/mainwindow.ui" line="86"></location>
+        <location filename="../../ui/mainwindow.ui" line="86"/>
         <source>A&amp;dd a contact</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../ui/mainwindow.ui" line="156"></location>
+        <location filename="../../ui/mainwindow.ui" line="156"/>
         <source>C&amp;ertification</source>
         <translation type="unfinished"></translation>
     </message>
+    <message>
+        <location filename="../../../src/cutecoin/gui/mainwindow.py" line="225"/>
+        <source>
+        &lt;h1&gt;Cutecoin&lt;/h1&gt;
+
+        &lt;p&gt;Python/Qt uCoin client&lt;/p&gt;
+
+        &lt;p&gt;Version : {:}&lt;/p&gt;
+        {new_version_text}
+
+        &lt;p&gt;License : GPLv3&lt;/p&gt;
+
+        &lt;p&gt;&lt;b&gt;Authors&lt;/b&gt;&lt;/p&gt;
+
+        &lt;p&gt;inso&lt;/p&gt;
+        &lt;p&gt;vit&lt;/p&gt;
+        &lt;p&gt;Moul&lt;/p&gt;
+        &lt;p&gt;canercandan&lt;/p&gt;
+        </source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>MemberDialog</name>
     <message>
-        <location filename="../../../src/cutecoin/gui/member.py" line="46"></location>
+        <location filename="../../../src/cutecoin/gui/member.py" line="46"/>
         <source>not a member</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/member.py" line="60"></location>
+        <location filename="../../../src/cutecoin/gui/member.py" line="60"/>
         <source>
-            &lt;table cellpadding="5"&gt;
-            &lt;tr&gt;&lt;td align="right"&gt;&lt;b&gt;{:}&lt;/b&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;{:}&lt;/td&gt;&lt;/tr&gt;
-            &lt;tr&gt;&lt;td align="right"&gt;&lt;b&gt;{:}&lt;/b&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;{:}&lt;/td&gt;&lt;/tr&gt;
+            &lt;table cellpadding=&quot;5&quot;&gt;
+            &lt;tr&gt;&lt;td align=&quot;right&quot;&gt;&lt;b&gt;{:}&lt;/b&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;{:}&lt;/td&gt;&lt;/tr&gt;
+            &lt;tr&gt;&lt;td align=&quot;right&quot;&gt;&lt;b&gt;{:}&lt;/b&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;{:}&lt;/td&gt;&lt;/tr&gt;
             </source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/member.py" line="64"></location>
+        <location filename="../../../src/cutecoin/gui/member.py" line="64"/>
         <source>Public key</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/member.py" line="64"></location>
+        <location filename="../../../src/cutecoin/gui/member.py" line="64"/>
         <source>Join date</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/member.py" line="87"></location>
-        <source>&lt;tr&gt;&lt;td align="right"&gt;&lt;b&gt;{:}&lt;/b&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;{:}&lt;/td&gt;&lt;/tr&gt;</source>
+        <location filename="../../../src/cutecoin/gui/member.py" line="87"/>
+        <source>&lt;tr&gt;&lt;td align=&quot;right&quot;&gt;&lt;b&gt;{:}&lt;/b&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;{:}&lt;/td&gt;&lt;/tr&gt;</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/member.py" line="73"></location>
+        <location filename="../../../src/cutecoin/gui/member.py" line="73"/>
         <source>Distance</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/member.py" line="80"></location>
+        <location filename="../../../src/cutecoin/gui/member.py" line="80"/>
         <source>Path</source>
         <translation type="unfinished"></translation>
     </message>
@@ -1406,62 +1484,62 @@ Revoking your UID can only success if it is not already validated by the network
 <context>
     <name>NetworkFilterProxyModel</name>
     <message>
-        <location filename="../../../src/cutecoin/models/network.py" line="47"></location>
+        <location filename="../../../src/cutecoin/models/network.py" line="48"/>
         <source>Address</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/models/network.py" line="48"></location>
+        <location filename="../../../src/cutecoin/models/network.py" line="49"/>
         <source>Port</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/models/network.py" line="49"></location>
+        <location filename="../../../src/cutecoin/models/network.py" line="50"/>
         <source>Block</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/models/network.py" line="51"></location>
+        <location filename="../../../src/cutecoin/models/network.py" line="52"/>
         <source>UID</source>
         <translation type="unfinished">ИДП</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/models/network.py" line="52"></location>
+        <location filename="../../../src/cutecoin/models/network.py" line="53"/>
         <source>Member</source>
         <translation type="unfinished">Член</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/models/network.py" line="53"></location>
+        <location filename="../../../src/cutecoin/models/network.py" line="54"/>
         <source>Pubkey</source>
         <translation type="unfinished">Открытый ключ</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/models/network.py" line="54"></location>
+        <location filename="../../../src/cutecoin/models/network.py" line="55"/>
         <source>Software</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/models/network.py" line="55"></location>
+        <location filename="../../../src/cutecoin/models/network.py" line="56"/>
         <source>Version</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/models/network.py" line="68"></location>
+        <location filename="../../../src/cutecoin/models/network.py" line="69"/>
         <source>yes</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/models/network.py" line="68"></location>
+        <location filename="../../../src/cutecoin/models/network.py" line="69"/>
         <source>no</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/models/network.py" line="68"></location>
+        <location filename="../../../src/cutecoin/models/network.py" line="69"/>
         <source>offline</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/models/network.py" line="50"></location>
+        <location filename="../../../src/cutecoin/models/network.py" line="51"/>
         <source>Hash</source>
         <translation type="unfinished"></translation>
     </message>
@@ -1469,22 +1547,22 @@ Revoking your UID can only success if it is not already validated by the network
 <context>
     <name>NetworkTabWidget</name>
     <message>
-        <location filename="../../ui/network_tab.ui" line="14"></location>
+        <location filename="../../ui/network_tab.ui" line="14"/>
         <source>Form</source>
         <translation type="unfinished">Формуляр</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/network_tab.py" line="68"></location>
+        <location filename="../../../src/cutecoin/gui/network_tab.py" line="70"/>
         <source>Unset root node</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/network_tab.py" line="74"></location>
+        <location filename="../../../src/cutecoin/gui/network_tab.py" line="76"/>
         <source>Set as root node</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/network_tab.py" line="80"></location>
+        <location filename="../../../src/cutecoin/gui/network_tab.py" line="82"/>
         <source>Open in browser</source>
         <translation type="unfinished"></translation>
     </message>
@@ -1492,22 +1570,22 @@ Revoking your UID can only success if it is not already validated by the network
 <context>
     <name>NetworkTableModel</name>
     <message>
-        <location filename="../../../src/cutecoin/models/network.py" line="135"></location>
+        <location filename="../../../src/cutecoin/models/network.py" line="136"/>
         <source>Online</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/models/network.py" line="136"></location>
+        <location filename="../../../src/cutecoin/models/network.py" line="137"/>
         <source>Offline</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/models/network.py" line="137"></location>
+        <location filename="../../../src/cutecoin/models/network.py" line="138"/>
         <source>Unsynchronized</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/models/network.py" line="138"></location>
+        <location filename="../../../src/cutecoin/models/network.py" line="139"/>
         <source>Corrupted</source>
         <translation type="unfinished"></translation>
     </message>
@@ -1515,37 +1593,37 @@ Revoking your UID can only success if it is not already validated by the network
 <context>
     <name>PasswordAskerDialog</name>
     <message>
-        <location filename="../../ui/password_asker.ui" line="14"></location>
+        <location filename="../../ui/password_asker.ui" line="14"/>
         <source>Password</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../ui/password_asker.ui" line="23"></location>
+        <location filename="../../ui/password_asker.ui" line="23"/>
         <source>Please enter your account password</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../ui/password_asker.ui" line="32"></location>
+        <location filename="../../ui/password_asker.ui" line="32"/>
         <source>Remember my password during this session</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/password_asker.py" line="65"></location>
+        <location filename="../../../src/cutecoin/gui/password_asker.py" line="66"/>
         <source>Bad password</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/password_asker.py" line="65"></location>
+        <location filename="../../../src/cutecoin/gui/password_asker.py" line="66"/>
         <source>Non printable characters in password</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/password_asker.py" line="71"></location>
+        <location filename="../../../src/cutecoin/gui/password_asker.py" line="72"/>
         <source>Failed to get private key</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/password_asker.py" line="71"></location>
+        <location filename="../../../src/cutecoin/gui/password_asker.py" line="72"/>
         <source>Wrong password typed. Cannot open the private key</source>
         <translation type="unfinished"></translation>
     </message>
@@ -1553,133 +1631,118 @@ Revoking your UID can only success if it is not already validated by the network
 <context>
     <name>PreferencesDialog</name>
     <message>
-        <location filename="../../../src/cutecoin/gui/preferences.py" line="83"></location>
+        <location filename="../../ui/preferences.ui" line="14"/>
         <source>Preferences</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../ui/preferences.ui" line="115"></location>
+        <location filename="../../ui/preferences.ui" line="115"/>
         <source>Default account</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../ui/preferences.ui" line="129"></location>
+        <location filename="../../ui/preferences.ui" line="129"/>
         <source>Default &amp;referential</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../ui/preferences.ui" line="166"></location>
+        <location filename="../../ui/preferences.ui" line="166"/>
         <source>Enable expert mode</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../ui/preferences.ui" line="201"></location>
+        <location filename="../../ui/preferences.ui" line="201"/>
         <source>Digits after commas </source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../ui/preferences.ui" line="215"></location>
+        <location filename="../../ui/preferences.ui" line="215"/>
         <source>Language</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../ui/preferences.ui" line="249"></location>
+        <location filename="../../ui/preferences.ui" line="249"/>
         <source>Maximize Window at Startup</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../ui/preferences.ui" line="276"></location>
+        <location filename="../../ui/preferences.ui" line="276"/>
         <source>Enable notifications</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/preferences.py" line="83"></location>
-        <source>A restart is needed to apply your new preferences.</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../../ui/preferences.ui" line="106"></location>
-        <source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;&lt;span style=" font-size:16pt; font-weight:600;"&gt;General settings&lt;/span&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
+        <location filename="../../ui/preferences.ui" line="106"/>
+        <source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;&lt;span style=&quot; font-size:16pt; font-weight:600;&quot;&gt;General settings&lt;/span&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../ui/preferences.ui" line="192"></location>
-        <source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;&lt;span style=" font-size:16pt; font-weight:600;"&gt;Display settings&lt;/span&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
+        <location filename="../../ui/preferences.ui" line="192"/>
+        <source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;&lt;span style=&quot; font-size:16pt; font-weight:600;&quot;&gt;Display settings&lt;/span&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../ui/preferences.ui" line="303"></location>
+        <location filename="../../ui/preferences.ui" line="303"/>
         <source>Use International System of Units</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../ui/preferences.ui" line="329"></location>
-        <source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;&lt;span style=" font-size:16pt; font-weight:600;"&gt;Network settings&lt;/span&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
+        <location filename="../../ui/preferences.ui" line="329"/>
+        <source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;&lt;span style=&quot; font-size:16pt; font-weight:600;&quot;&gt;Network settings&lt;/span&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../ui/preferences.ui" line="336"></location>
-        <source>Use a proxy server</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../../ui/preferences.ui" line="348"></location>
-        <source>Proxy type : </source>
+        <location filename="../../ui/preferences.ui" line="345"/>
+        <source>Proxy server address : </source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../ui/preferences.ui" line="356"></location>
-        <source>HTTP</source>
-        <translation type="unfinished"></translation>
+        <location filename="../../ui/preferences.ui" line="355"/>
+        <source>:</source>
+        <translation type="unfinished">:</translation>
     </message>
     <message>
-        <location filename="../../ui/preferences.ui" line="361"></location>
-        <source>SOCKS5</source>
+        <location filename="../../ui/preferences.ui" line="336"/>
+        <source>Use a http proxy server</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../ui/preferences.ui" line="386"></location>
-        <source>Proxy server address : </source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../../ui/preferences.ui" line="396"></location>
-        <source>:</source>
+        <location filename="../../ui/preferences.ui" line="379"/>
+        <source>Automatically refresh identities informations</source>
         <translation type="unfinished"></translation>
     </message>
 </context>
 <context>
     <name>ProcessConfigureAccount</name>
     <message>
-        <location filename="../../../src/cutecoin/gui/process_cfg_account.py" line="158"></location>
+        <location filename="../../../src/cutecoin/gui/process_cfg_account.py" line="158"/>
         <source>New account</source>
-        <translation type="unfinished"></translation>
+        <translation type="unfinished">новый аккаунт</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/process_cfg_account.py" line="165"></location>
+        <location filename="../../../src/cutecoin/gui/process_cfg_account.py" line="165"/>
         <source>Configure {0}</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/process_cfg_account.py" line="180"></location>
+        <location filename="../../../src/cutecoin/gui/process_cfg_account.py" line="180"/>
         <source>Ok</source>
         <translation type="unfinished">ОК</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/process_cfg_account.py" line="215"></location>
+        <location filename="../../../src/cutecoin/gui/process_cfg_account.py" line="215"/>
         <source>Warning</source>
-        <translation type="unfinished"></translation>
+        <translation type="unfinished">Внимание</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/process_cfg_account.py" line="215"></location>
+        <location filename="../../../src/cutecoin/gui/process_cfg_account.py" line="215"/>
         <source>This action will delete your account locally.
 Please note your key parameters (salt and password) if you wish to recover it later.
-Your account won't be removed from the networks it joined.
+Your account won&apos;t be removed from the networks it joined.
 Are you sure ?</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/process_cfg_account.py" line="238"></location>
+        <location filename="../../../src/cutecoin/gui/process_cfg_account.py" line="238"/>
         <source>Error</source>
         <translation type="unfinished">Ошибка</translation>
     </message>
@@ -1687,27 +1750,27 @@ Are you sure ?</source>
 <context>
     <name>ProcessConfigureCommunity</name>
     <message>
-        <location filename="../../../src/cutecoin/gui/process_cfg_community.py" line="206"></location>
+        <location filename="../../../src/cutecoin/gui/process_cfg_community.py" line="221"/>
         <source>Configure community {0}</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/process_cfg_community.py" line="209"></location>
+        <location filename="../../../src/cutecoin/gui/process_cfg_community.py" line="224"/>
         <source>Add a community</source>
         <translation type="unfinished">Добавить сообщество</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/process_cfg_community.py" line="243"></location>
+        <location filename="../../../src/cutecoin/gui/process_cfg_community.py" line="258"/>
         <source>Error</source>
         <translation type="unfinished">Ошибка</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/process_cfg_community.py" line="272"></location>
+        <location filename="../../../src/cutecoin/gui/process_cfg_community.py" line="287"/>
         <source>Delete</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/process_cfg_community.py" line="216"></location>
+        <location filename="../../../src/cutecoin/gui/process_cfg_community.py" line="216"/>
         <source>{0} : {1}</source>
         <translation type="obsolete">{0} : {1}</translation>
     </message>
@@ -1715,17 +1778,17 @@ Are you sure ?</source>
 <context>
     <name>Quantitative</name>
     <message>
-        <location filename="../../../src/cutecoin/core/money/quantitative.py" line="5"></location>
+        <location filename="../../../src/cutecoin/core/money/quantitative.py" line="5"/>
         <source>Units</source>
         <translation type="unfinished">Единицы</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/core/money/quantitative.py" line="7"></location>
+        <location filename="../../../src/cutecoin/core/money/quantitative.py" line="7"/>
         <source>{0}</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/core/money/quantitative.py" line="6"></location>
+        <location filename="../../../src/cutecoin/core/money/quantitative.py" line="6"/>
         <source>{0} {1}{2}</source>
         <translation type="unfinished"></translation>
     </message>
@@ -1733,17 +1796,17 @@ Are you sure ?</source>
 <context>
     <name>QuantitativeZSum</name>
     <message>
-        <location filename="../../../src/cutecoin/core/money/quant_zerosum.py" line="6"></location>
+        <location filename="../../../src/cutecoin/core/money/quant_zerosum.py" line="6"/>
         <source>Quant Z-sum</source>
         <translation type="unfinished">Колич. Z-сумма</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/core/money/quant_zerosum.py" line="7"></location>
+        <location filename="../../../src/cutecoin/core/money/quant_zerosum.py" line="7"/>
         <source>{0} Q0 {1}</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/core/money/quant_zerosum.py" line="8"></location>
+        <location filename="../../../src/cutecoin/core/money/quant_zerosum.py" line="8"/>
         <source>Q0 {0}</source>
         <translation type="unfinished"></translation>
     </message>
@@ -1751,17 +1814,17 @@ Are you sure ?</source>
 <context>
     <name>Relative</name>
     <message>
-        <location filename="../../../src/cutecoin/core/money/relative.py" line="5"></location>
+        <location filename="../../../src/cutecoin/core/money/relative.py" line="5"/>
         <source>UD</source>
         <translation type="unfinished">УД</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/core/money/relative.py" line="6"></location>
+        <location filename="../../../src/cutecoin/core/money/relative.py" line="6"/>
         <source>{0} {1}UD {2}</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/core/money/relative.py" line="7"></location>
+        <location filename="../../../src/cutecoin/core/money/relative.py" line="7"/>
         <source>UD {0}</source>
         <translation type="unfinished">УД {0}</translation>
     </message>
@@ -1769,17 +1832,17 @@ Are you sure ?</source>
 <context>
     <name>RelativeZSum</name>
     <message>
-        <location filename="../../../src/cutecoin/core/money/relative_zerosum.py" line="6"></location>
+        <location filename="../../../src/cutecoin/core/money/relative_zerosum.py" line="6"/>
         <source>Relat Z-sum</source>
         <translation type="unfinished">Относит. Z-сумма</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/core/money/relative_zerosum.py" line="7"></location>
+        <location filename="../../../src/cutecoin/core/money/relative_zerosum.py" line="7"/>
         <source>{0} R0 {1}</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/core/money/relative_zerosum.py" line="8"></location>
+        <location filename="../../../src/cutecoin/core/money/relative_zerosum.py" line="8"/>
         <source>R0 {0}</source>
         <translation type="unfinished"></translation>
     </message>
@@ -1787,7 +1850,7 @@ Are you sure ?</source>
 <context>
     <name>Scene</name>
     <message>
-        <location filename="../../../src/cutecoin/gui/views/wot.py" line="157"></location>
+        <location filename="../../../src/cutecoin/gui/views/wot.py" line="158"/>
         <source>Certification expires at {0}</source>
         <translation type="unfinished"></translation>
     </message>
@@ -1795,50 +1858,62 @@ Are you sure ?</source>
 <context>
     <name>StepPageInit</name>
     <message>
-        <location filename="../../../src/cutecoin/gui/process_cfg_community.py" line="67"></location>
+        <location filename="../../../src/cutecoin/gui/process_cfg_community.py" line="93"/>
         <source>Could not find your identity on the network.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/process_cfg_community.py" line="100"></location>
-        <source>Could not connect.</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../../../src/cutecoin/gui/process_cfg_community.py" line="92"></location>
+        <location filename="../../../src/cutecoin/gui/process_cfg_community.py" line="123"/>
         <source>Broadcasting identity...</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/process_cfg_community.py" line="98"></location>
-        <source>Pubkey already exists on the network</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../../../src/cutecoin/gui/process_cfg_community.py" line="110"></location>
+        <location filename="../../../src/cutecoin/gui/process_cfg_community.py" line="127"/>
         <source>UID broadcast</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/process_cfg_community.py" line="110"></location>
+        <location filename="../../../src/cutecoin/gui/process_cfg_community.py" line="127"/>
         <source>Identity broadcasted to the network</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/process_cfg_community.py" line="124"></location>
+        <location filename="../../../src/cutecoin/gui/process_cfg_community.py" line="134"/>
         <source>Error</source>
         <translation type="unfinished">Ошибка</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/process_cfg_community.py" line="124"></location>
+        <location filename="../../../src/cutecoin/gui/process_cfg_community.py" line="124"/>
         <source>{0} : {1}</source>
-        <translation type="unfinished">{0} : {1}</translation>
+        <translation type="obsolete">{0} : {1}</translation>
+    </message>
+    <message>
+        <location filename="../../../src/cutecoin/gui/process_cfg_community.py" line="95"/>
+        <source>Your pubkey or UID is different on the network.
+    Yours : {0}, the network : {1}</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../../src/cutecoin/gui/process_cfg_community.py" line="134"/>
+        <source>{0}</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../../src/cutecoin/gui/process_cfg_community.py" line="138"/>
+        <source>Your pubkey or UID was already found on the network.
+Yours : {0}, the network : {1}</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../../src/cutecoin/gui/process_cfg_community.py" line="141"/>
+        <source>Your account already exists on the network</source>
+        <translation type="unfinished"></translation>
     </message>
 </context>
 <context>
     <name>Toast</name>
     <message>
-        <location filename="../../ui/toast.ui" line="14"></location>
+        <location filename="../../ui/toast.ui" line="14"/>
         <source>MainWindow</source>
         <translation type="unfinished"></translation>
     </message>
@@ -1846,68 +1921,68 @@ Are you sure ?</source>
 <context>
     <name>TransactionsTabWidget</name>
     <message>
-        <location filename="../../../src/cutecoin/gui/transactions_tab.py" line="118"></location>
+        <location filename="../../../src/cutecoin/gui/transactions_tab.py" line="135"/>
         <source>Received {0} {1} from {2} transfers</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/transactions_tab.py" line="122"></location>
+        <location filename="../../../src/cutecoin/gui/transactions_tab.py" line="139"/>
         <source>New transactions received</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/transactions_tab.py" line="151"></location>
+        <location filename="../../../src/cutecoin/gui/transactions_tab.py" line="170"/>
         <source>Actions</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/transactions_tab.py" line="166"></location>
+        <location filename="../../../src/cutecoin/gui/transactions_tab.py" line="185"/>
         <source>Send again</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/transactions_tab.py" line="171"></location>
+        <location filename="../../../src/cutecoin/gui/transactions_tab.py" line="190"/>
         <source>Cancel</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/transactions_tab.py" line="177"></location>
+        <location filename="../../../src/cutecoin/gui/transactions_tab.py" line="196"/>
         <source>Informations</source>
         <translation type="unfinished">Данные</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/transactions_tab.py" line="182"></location>
+        <location filename="../../../src/cutecoin/gui/transactions_tab.py" line="201"/>
         <source>Add as contact</source>
         <translation type="unfinished">Добавить контакт</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/transactions_tab.py" line="187"></location>
+        <location filename="../../../src/cutecoin/gui/transactions_tab.py" line="206"/>
         <source>Send money</source>
         <translation type="unfinished">Отправить деньги</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/transactions_tab.py" line="193"></location>
+        <location filename="../../../src/cutecoin/gui/transactions_tab.py" line="212"/>
         <source>View in Web of Trust</source>
         <translation type="unfinished">Посмотреть в Сети доверия</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/transactions_tab.py" line="198"></location>
+        <location filename="../../../src/cutecoin/gui/transactions_tab.py" line="217"/>
         <source>Copy pubkey to clipboard</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/transactions_tab.py" line="276"></location>
+        <location filename="../../../src/cutecoin/gui/transactions_tab.py" line="283"/>
         <source>Warning</source>
-        <translation type="unfinished"></translation>
+        <translation type="unfinished">Внимание</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/transactions_tab.py" line="276"></location>
+        <location filename="../../../src/cutecoin/gui/transactions_tab.py" line="283"/>
         <source>Are you sure ?
 This money transfer will be removed and not sent.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/transactions_tab.py" line="137"></location>
+        <location filename="../../../src/cutecoin/gui/transactions_tab.py" line="155"/>
         <source>{:}</source>
         <translation type="unfinished"></translation>
     </message>
@@ -1915,123 +1990,128 @@ This money transfer will be removed and not sent.</source>
 <context>
     <name>TransferMoneyDialog</name>
     <message>
-        <location filename="../../ui/transfer.ui" line="14"></location>
+        <location filename="../../ui/transfer.ui" line="14"/>
         <source>Transfer money</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../ui/transfer.ui" line="20"></location>
+        <location filename="../../ui/transfer.ui" line="20"/>
         <source>Community</source>
         <translation type="unfinished">Сообщество</translation>
     </message>
     <message>
-        <location filename="../../ui/transfer.ui" line="32"></location>
+        <location filename="../../ui/transfer.ui" line="32"/>
         <source>Transfer money to</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../ui/transfer.ui" line="40"></location>
+        <location filename="../../ui/transfer.ui" line="40"/>
         <source>Contact</source>
-        <translation type="unfinished">Контакт</translation>
+        <translation type="obsolete">Контакт</translation>
     </message>
     <message>
-        <location filename="../../ui/transfer.ui" line="80"></location>
+        <location filename="../../ui/transfer.ui" line="80"/>
         <source>Key</source>
         <translation type="unfinished">Ключ</translation>
     </message>
     <message>
-        <location filename="../../ui/transfer.ui" line="148"></location>
+        <location filename="../../ui/transfer.ui" line="148"/>
         <source> UD</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../ui/transfer.ui" line="166"></location>
+        <location filename="../../ui/transfer.ui" line="166"/>
         <source>Transaction message</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/transfer.py" line="77"></location>
+        <location filename="../../../src/cutecoin/gui/transfer.py" line="106"/>
         <source>Money transfer</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/transfer.py" line="77"></location>
+        <location filename="../../../src/cutecoin/gui/transfer.py" line="106"/>
         <source>No amount. Please give the transfert amount</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/transfer.py" line="99"></location>
+        <location filename="../../../src/cutecoin/gui/transfer.py" line="137"/>
         <source>Transfer</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/transfer.py" line="99"></location>
+        <location filename="../../../src/cutecoin/gui/transfer.py" line="124"/>
         <source>Success sending money to {0}</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/transfer.py" line="111"></location>
+        <location filename="../../../src/cutecoin/gui/transfer.py" line="111"/>
         <source>Error</source>
-        <translation type="unfinished">Ошибка</translation>
+        <translation type="obsolete">Ошибка</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/transfer.py" line="111"></location>
+        <location filename="../../../src/cutecoin/gui/transfer.py" line="111"/>
         <source>{0} : {1}</source>
-        <translation type="unfinished">{0} : {1}</translation>
+        <translation type="obsolete">{0} : {1}</translation>
     </message>
     <message>
-        <location filename="../../ui/transfer.ui" line="61"></location>
+        <location filename="../../ui/transfer.ui" line="61"/>
         <source>&amp;Recipient public key</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../ui/transfer.ui" line="106"></location>
+        <location filename="../../ui/transfer.ui" line="106"/>
         <source>Wallet</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../ui/transfer.ui" line="125"></location>
+        <location filename="../../ui/transfer.ui" line="125"/>
         <source>Available money : </source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../ui/transfer.ui" line="134"></location>
+        <location filename="../../ui/transfer.ui" line="134"/>
         <source>Amount</source>
         <translation type="unfinished"></translation>
     </message>
+    <message>
+        <location filename="../../ui/transfer.ui" line="40"/>
+        <source>Con&amp;tact</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>TxFilterProxyModel</name>
     <message>
-        <location filename="../../../src/cutecoin/models/txhistory.py" line="158"></location>
-        <source>{0} / {1} validations</source>
+        <location filename="../../../src/cutecoin/models/txhistory.py" line="165"/>
+        <source>{0} / {1} confirmations</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/models/txhistory.py" line="162"></location>
-        <source>Validating... {0} %</source>
+        <location filename="../../../src/cutecoin/models/txhistory.py" line="169"/>
+        <source>Confirming... {0} %</source>
         <translation type="unfinished"></translation>
     </message>
 </context>
 <context>
     <name>WalletsTab</name>
     <message>
-        <location filename="../../ui/wallets_tab.ui" line="14"></location>
+        <location filename="../../ui/wallets_tab.ui" line="14"/>
         <source>Form</source>
         <translation type="unfinished">Формуляр</translation>
     </message>
     <message>
-        <location filename="../../ui/wallets_tab.ui" line="34"></location>
+        <location filename="../../ui/wallets_tab.ui" line="34"/>
         <source>Balance</source>
-        <translation type="unfinished"></translation>
+        <translation type="unfinished">Баланс</translation>
     </message>
     <message>
-        <location filename="../../ui/wallets_tab.ui" line="47"></location>
+        <location filename="../../ui/wallets_tab.ui" line="47"/>
         <source>label_balance</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../ui/wallets_tab.ui" line="57"></location>
+        <location filename="../../ui/wallets_tab.ui" line="57"/>
         <source>label_balance_range</source>
         <translation type="unfinished"></translation>
     </message>
@@ -2039,7 +2119,7 @@ This money transfer will be removed and not sent.</source>
 <context>
     <name>WalletsTabWidget</name>
     <message>
-        <location filename="../../../src/cutecoin/gui/wallets_tab.py" line="124"></location>
+        <location filename="../../../src/cutecoin/gui/wallets_tab.py" line="124"/>
         <source>Not a member</source>
         <translation type="obsolete">Не член</translation>
     </message>
@@ -2047,17 +2127,17 @@ This money transfer will be removed and not sent.</source>
 <context>
     <name>WalletsTableModel</name>
     <message>
-        <location filename="../../../src/cutecoin/models/wallets.py" line="72"></location>
+        <location filename="../../../src/cutecoin/models/wallets.py" line="72"/>
         <source>Name</source>
         <translation type="unfinished">Имя</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/models/wallets.py" line="72"></location>
+        <location filename="../../../src/cutecoin/models/wallets.py" line="72"/>
         <source>Amount</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/models/wallets.py" line="72"></location>
+        <location filename="../../../src/cutecoin/models/wallets.py" line="72"/>
         <source>Pubkey</source>
         <translation type="unfinished">Открытый ключ</translation>
     </message>
@@ -2065,86 +2145,91 @@ This money transfer will be removed and not sent.</source>
 <context>
     <name>WoT.Node</name>
     <message>
-        <location filename="../../../src/cutecoin/gui/views/wot.py" line="290"></location>
+        <location filename="../../../src/cutecoin/gui/views/wot.py" line="294"/>
         <source>Informations</source>
         <translation type="unfinished">Данные</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/views/wot.py" line="295"></location>
+        <location filename="../../../src/cutecoin/gui/views/wot.py" line="299"/>
         <source>Add as contact</source>
         <translation type="unfinished">Добавить контакт</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/views/wot.py" line="300"></location>
+        <location filename="../../../src/cutecoin/gui/views/wot.py" line="304"/>
         <source>Send money</source>
         <translation type="unfinished">Отправить деньги</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/views/wot.py" line="305"></location>
+        <location filename="../../../src/cutecoin/gui/views/wot.py" line="309"/>
         <source>Certify identity</source>
         <translation type="unfinished">Удостоверить личность</translation>
     </message>
+    <message>
+        <location filename="../../../src/cutecoin/gui/views/wot.py" line="314"/>
+        <source>Copy pubkey</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>WotTabWidget</name>
     <message>
-        <location filename="../../ui/wot_tab.ui" line="14"></location>
+        <location filename="../../ui/wot_tab.ui" line="14"/>
         <source>Form</source>
         <translation type="unfinished">Формуляр</translation>
     </message>
     <message>
-        <location filename="../../ui/wot_tab.ui" line="33"></location>
+        <location filename="../../ui/wot_tab.ui" line="33"/>
         <source>Center the view on me</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/wot_tab.py" line="33"></location>
+        <location filename="../../../src/cutecoin/gui/wot_tab.py" line="37"/>
         <source>Research a pubkey, an uid...</source>
         <translation type="unfinished">Исследовать открытый ключ, ИДП ...</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/wot_tab.py" line="123"></location>
+        <location filename="../../../src/cutecoin/gui/wot_tab.py" line="141"/>
         <source>
-                    &lt;table cellpadding="5"&gt;
-                    &lt;tr&gt;&lt;td align="right"&gt;&lt;b&gt;{:}&lt;/b&gt;&lt;/td&gt;&lt;td&gt;{:}&lt;/td&gt;&lt;/tr&gt;
-                    &lt;tr&gt;&lt;td align="right"&gt;&lt;b&gt;{:}&lt;/b&gt;&lt;/td&gt;&lt;td&gt;{:}&lt;/td&gt;&lt;/tr&gt;
-                    &lt;tr&gt;&lt;td align="right"&gt;&lt;b&gt;{:}&lt;/b&gt;&lt;/td&gt;&lt;td&gt;{:}&lt;/td&gt;&lt;/tr&gt;
+                    &lt;table cellpadding=&quot;5&quot;&gt;
+                    &lt;tr&gt;&lt;td align=&quot;right&quot;&gt;&lt;b&gt;{:}&lt;/b&gt;&lt;/td&gt;&lt;td&gt;{:}&lt;/td&gt;&lt;/tr&gt;
+                    &lt;tr&gt;&lt;td align=&quot;right&quot;&gt;&lt;b&gt;{:}&lt;/b&gt;&lt;/td&gt;&lt;td&gt;{:}&lt;/td&gt;&lt;/tr&gt;
+                    &lt;tr&gt;&lt;td align=&quot;right&quot;&gt;&lt;b&gt;{:}&lt;/b&gt;&lt;/td&gt;&lt;td&gt;{:}&lt;/td&gt;&lt;/tr&gt;
                     &lt;/table&gt;
                     </source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/wot_tab.py" line="105"></location>
+        <location filename="../../../src/cutecoin/gui/wot_tab.py" line="123"/>
         <source>Membership</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/wot_tab.py" line="123"></location>
+        <location filename="../../../src/cutecoin/gui/wot_tab.py" line="141"/>
         <source>Last renewal on {:}, expiration on {:}</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/wot_tab.py" line="141"></location>
+        <location filename="../../../src/cutecoin/gui/wot_tab.py" line="159"/>
         <source>Your web of trust</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/wot_tab.py" line="141"></location>
+        <location filename="../../../src/cutecoin/gui/wot_tab.py" line="159"/>
         <source>Certified by {:} members; Certifier of {:} members</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/wot_tab.py" line="141"></location>
+        <location filename="../../../src/cutecoin/gui/wot_tab.py" line="159"/>
         <source>Not a member</source>
         <translation type="unfinished">Не член</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/wot_tab.py" line="141"></location>
+        <location filename="../../../src/cutecoin/gui/wot_tab.py" line="159"/>
         <source>
-                &lt;table cellpadding="5"&gt;
-                &lt;tr&gt;&lt;td align="right"&gt;&lt;b&gt;{:}&lt;/b&gt;&lt;/td&gt;&lt;td&gt;{:}&lt;/td&gt;&lt;/tr&gt;
-                &lt;tr&gt;&lt;td align="right"&gt;&lt;b&gt;{:}&lt;/b&gt;&lt;/td&gt;&lt;/tr&gt;
-                &lt;tr&gt;&lt;td align="right"&gt;&lt;b&gt;{:}&lt;/b&gt;&lt;/td&gt;&lt;td&gt;{:}&lt;/td&gt;&lt;/tr&gt;
+                &lt;table cellpadding=&quot;5&quot;&gt;
+                &lt;tr&gt;&lt;td align=&quot;right&quot;&gt;&lt;b&gt;{:}&lt;/b&gt;&lt;/td&gt;&lt;td&gt;{:}&lt;/td&gt;&lt;/tr&gt;
+                &lt;tr&gt;&lt;td align=&quot;right&quot;&gt;&lt;b&gt;{:}&lt;/b&gt;&lt;/td&gt;&lt;/tr&gt;
+                &lt;tr&gt;&lt;td align=&quot;right&quot;&gt;&lt;b&gt;{:}&lt;/b&gt;&lt;/td&gt;&lt;td&gt;{:}&lt;/td&gt;&lt;/tr&gt;
                 &lt;/table&gt;
                 </source>
         <translation type="unfinished"></translation>
@@ -2153,32 +2238,32 @@ This money transfer will be removed and not sent.</source>
 <context>
     <name>self.config_dialog</name>
     <message>
-        <location filename="../../../src/cutecoin/gui/process_cfg_community.py" line="170"></location>
+        <location filename="../../../src/cutecoin/gui/process_cfg_community.py" line="185"/>
         <source>Ok</source>
         <translation type="unfinished">ОК</translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/process_cfg_account.py" line="68"></location>
+        <location filename="../../../src/cutecoin/gui/process_cfg_account.py" line="68"/>
         <source>Forbidden : salt is too short</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/process_cfg_account.py" line="72"></location>
+        <location filename="../../../src/cutecoin/gui/process_cfg_account.py" line="72"/>
         <source>Forbidden : password is too short</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/process_cfg_account.py" line="76"></location>
+        <location filename="../../../src/cutecoin/gui/process_cfg_account.py" line="76"/>
         <source>Forbidden : Invalid characters in salt field</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/process_cfg_account.py" line="80"></location>
+        <location filename="../../../src/cutecoin/gui/process_cfg_account.py" line="80"/>
         <source>Forbidden : Invalid characters in password field</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../../src/cutecoin/gui/process_cfg_account.py" line="86"></location>
+        <location filename="../../../src/cutecoin/gui/process_cfg_account.py" line="86"/>
         <source>Error : passwords are different</source>
         <translation type="unfinished"></translation>
     </message>
@@ -2186,23 +2271,23 @@ This money transfer will be removed and not sent.</source>
 <context>
     <name>transactionsTabWidget</name>
     <message>
-        <location filename="../../ui/transactions_tab.ui" line="14"></location>
+        <location filename="../../ui/transactions_tab.ui" line="14"/>
         <source>Form</source>
         <translation type="unfinished">Формуляр</translation>
     </message>
     <message>
-        <location filename="../../ui/transactions_tab.ui" line="63"></location>
+        <location filename="../../ui/transactions_tab.ui" line="63"/>
         <source>dd/MM/yyyy</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../ui/transactions_tab.ui" line="20"></location>
+        <location filename="../../ui/transactions_tab.ui" line="20"/>
         <source>Balance</source>
-        <translation type="unfinished"></translation>
+        <translation type="unfinished">Баланс</translation>
     </message>
     <message>
-        <location filename="../../ui/transactions_tab.ui" line="33"></location>
-        <source>label_balance</source>
+        <location filename="../../ui/transactions_tab.ui" line="33"/>
+        <source>loading...</source>
         <translation type="unfinished"></translation>
     </message>
 </context>
diff --git a/res/icons/AUTHORS b/res/icons/AUTHORS
index 701840e29eb80d91e0847f992f5c19f87b7ca972..23af4ae9d95d73a77e3cc96aee08e56473c1843c 100644
--- a/res/icons/AUTHORS
+++ b/res/icons/AUTHORS
@@ -23,4 +23,6 @@ noun_178785_cc.svg : by Jevgeni Striganov
 noun_41979_cc.svg : by by hunotika
 noun_155533_cc.svg : by anbileru adaleru
 noun_155520_cc.svg : by anbileru adaleru
-noun_155540_cc.svg : by anbileru adaleru
\ No newline at end of file
+noun_155540_cc.svg : by anbileru adaleru
+noun_100552_cc.svg : by Rui
+noun_178537_cc.svg : by Nathan David Smith
\ No newline at end of file
diff --git a/res/icons/icons.qrc b/res/icons/icons.qrc
index 8fe92ad92db25a2c85261a719b8b1844ae52af9f..d90ac81e928c98e47dba6f3254738262727428bd 100644
--- a/res/icons/icons.qrc
+++ b/res/icons/icons.qrc
@@ -1,5 +1,7 @@
 <RCC>
   <qresource prefix="icons">
+    <file alias="guest_icon">noun_178537_cc.svg</file>
+    <file alias="menu_icon">noun_100552_cc.svg</file>
     <file alias="leave_icon">noun_155520_cc.svg</file>
     <file alias="new_membership">noun_155540_cc.svg</file>
     <file alias="payment_icon">noun_178785_cc.svg</file>
diff --git a/res/icons/noun_100552_cc.svg b/res/icons/noun_100552_cc.svg
new file mode 100644
index 0000000000000000000000000000000000000000..1b50ff338383d00b204925d5afc9fc8a40bb325f
--- /dev/null
+++ b/res/icons/noun_100552_cc.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" x="0px" y="0px" viewBox="0 0 960 700" enable-background="new 0 0 960 560" xml:space="preserve"><g><rect x="256.7" y="256.4" fill="#000000" width="436.1" height="52.3"/></g><g><rect x="256.7" y="396" fill="#000000" width="436.1" height="52.3"/></g><g><rect x="256.7" y="116.9" fill="#000000" width="436.1" height="52.3"/></g><text x="0" y="575" fill="#000000" font-size="5px" font-weight="bold" font-family="'Helvetica Neue', Helvetica, Arial-Unicode, Arial, Sans-serif">Created by Rui</text><text x="0" y="580" fill="#000000" font-size="5px" font-weight="bold" font-family="'Helvetica Neue', Helvetica, Arial-Unicode, Arial, Sans-serif">from the Noun Project</text></svg>
\ No newline at end of file
diff --git a/res/icons/noun_178537_cc.svg b/res/icons/noun_178537_cc.svg
new file mode 100644
index 0000000000000000000000000000000000000000..c0574f2b34f326ff88b15108a571d53978bbeba7
--- /dev/null
+++ b/res/icons/noun_178537_cc.svg
@@ -0,0 +1,44 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   version="1.1"
+   x="0px"
+   y="0px"
+   viewBox="0 0 100 125"
+   enable-background="new 0 0 100 100"
+   xml:space="preserve"
+   id="svg2"
+   inkscape:version="0.91 r13725"
+   sodipodi:docname="noun_178537_cc.svg"><metadata
+     id="metadata14"><rdf:RDF><cc:Work
+         rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" /></cc:Work></rdf:RDF></metadata><defs
+     id="defs12" /><sodipodi:namedview
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1"
+     objecttolerance="10"
+     gridtolerance="10"
+     guidetolerance="10"
+     inkscape:pageopacity="0"
+     inkscape:pageshadow="2"
+     inkscape:window-width="1366"
+     inkscape:window-height="712"
+     id="namedview10"
+     showgrid="false"
+     inkscape:zoom="1.888"
+     inkscape:cx="50"
+     inkscape:cy="62.5"
+     inkscape:window-x="0"
+     inkscape:window-y="0"
+     inkscape:window-maximized="1"
+     inkscape:current-layer="svg2" /><path
+     d="m 50,13.6 c -26.9,0 -48.8,21.8 -48.8,48.8 0,27 21.9,48.7 48.8,48.7 26.9,0 48.8,-21.8 48.8,-48.8 0,-27 -21.9,-48.7 -48.8,-48.7 z m 0.1,81.9 c -3,0 -5.5,-2.5 -5.5,-5.5 0,-3.1 2.5,-5.6 5.5,-5.6 3.1,0.1 5.6,2.5 5.6,5.6 0,3 -2.5,5.5 -5.6,5.5 z M 61.9,57.4 c -1.4,1.7 -2.8,3.1 -4.1,4.2 -3.5,3.5 -5.5,5.5 -5.5,9.6 0,1.2 -1,2.2 -2.2,2.2 -1.2,0 -2.2,-1 -2.2,-2.2 0,-5.8 3,-8.9 6.8,-12.7 1.2,-1.2 2.5,-2.5 3.9,-4.1 2.2,-2.5 3.5,-5.6 3.5,-8.8 0.1,-3.2 -1.2,-6.3 -3.5,-8.6 -4.8,-4.7 -12.5,-4.7 -17.2,0.1 -2.3,2.3 -3.6,5.3 -3.6,8.6 0,1.2 -1,2.2 -2.2,2.2 -1.2,0 -2.2,-1 -2.2,-2.2 0,-4.4 1.8,-8.6 4.9,-11.8 6.5,-6.5 17,-6.5 23.5,0 3.2,3.3 4.8,7.5 4.8,11.9 -0.1,4.2 -1.7,8.3 -4.7,11.6 z"
+     id="path4"
+     inkscape:connector-curvature="0" /></svg>
\ No newline at end of file
diff --git a/res/ui/community_cfg.ui b/res/ui/community_cfg.ui
index 408cf47d40b91f5bc117fb7a2ed3ec55f1ca4752..f5743e91376736441b4f6af78d0e47b1afb72b7b 100644
--- a/res/ui/community_cfg.ui
+++ b/res/ui/community_cfg.ui
@@ -126,6 +126,23 @@
            </property>
           </widget>
          </item>
+         <item>
+          <widget class="QPushButton" name="button_guest">
+           <property name="text">
+            <string>Connect as a guest</string>
+           </property>
+           <property name="icon">
+            <iconset resource="../icons/icons.qrc">
+             <normaloff>:/icons/guest_icon</normaloff>:/icons/guest_icon</iconset>
+           </property>
+           <property name="iconSize">
+            <size>
+             <width>32</width>
+             <height>32</height>
+            </size>
+           </property>
+          </widget>
+         </item>
          <item>
           <widget class="QLabel" name="label_error">
            <property name="text">
diff --git a/res/ui/community_view.ui b/res/ui/community_view.ui
index 45b86c534c47c9c4f877f78c6344554a8a402e8d..213060dc7294aa314a1b2b10781c79ac7865d500 100644
--- a/res/ui/community_view.ui
+++ b/res/ui/community_view.ui
@@ -104,6 +104,32 @@
         </property>
        </widget>
       </item>
+      <item>
+       <widget class="QToolButton" name="toolbutton_menu">
+        <property name="text">
+         <string/>
+        </property>
+        <property name="icon">
+         <iconset resource="../icons/icons.qrc">
+          <normaloff>:/icons/menu_icon</normaloff>:/icons/menu_icon</iconset>
+        </property>
+        <property name="iconSize">
+         <size>
+          <width>32</width>
+          <height>32</height>
+         </size>
+        </property>
+        <property name="popupMode">
+         <enum>QToolButton::InstantPopup</enum>
+        </property>
+        <property name="autoRaise">
+         <bool>false</bool>
+        </property>
+        <property name="arrowType">
+         <enum>Qt::NoArrow</enum>
+        </property>
+       </widget>
+      </item>
      </layout>
     </widget>
    </item>
diff --git a/res/ui/informations_tab.ui b/res/ui/informations_tab.ui
index da2198252f2ae26d0adff941fa928e51534b1119..9d691ca06e970a6235324333267d8f39cc7f1b95 100644
--- a/res/ui/informations_tab.ui
+++ b/res/ui/informations_tab.ui
@@ -38,8 +38,8 @@ QGroupBox::title {
        <rect>
         <x>0</x>
         <y>0</y>
-        <width>518</width>
-        <height>717</height>
+        <width>522</width>
+        <height>721</height>
        </rect>
       </property>
       <layout class="QVBoxLayout" name="verticalLayout_5">
@@ -58,7 +58,7 @@ QGroupBox::title {
           <item>
            <widget class="QLabel" name="label_general">
             <property name="text">
-             <string>label_general</string>
+             <string/>
             </property>
             <property name="scaledContents">
              <bool>false</bool>
@@ -80,7 +80,7 @@ QGroupBox::title {
           <item>
            <widget class="QLabel" name="label_rules">
             <property name="text">
-             <string>label_rules</string>
+             <string/>
             </property>
             <property name="alignment">
              <set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop</set>
@@ -99,7 +99,7 @@ QGroupBox::title {
           <item>
            <widget class="QLabel" name="label_money">
             <property name="text">
-             <string>label_money</string>
+             <string/>
             </property>
             <property name="alignment">
              <set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop</set>
@@ -118,7 +118,7 @@ QGroupBox::title {
           <item>
            <widget class="QLabel" name="label_wot">
             <property name="text">
-             <string>label_wot</string>
+             <string/>
             </property>
             <property name="alignment">
              <set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop</set>
diff --git a/res/ui/preferences.ui b/res/ui/preferences.ui
index cd29dddabdc898f26ca91d8e1dff81829b53cd5b..a6225bc512b842bd025b28c499770254824ebe59 100644
--- a/res/ui/preferences.ui
+++ b/res/ui/preferences.ui
@@ -96,7 +96,7 @@
      <item>
       <widget class="QStackedWidget" name="stackedWidget">
        <property name="currentIndex">
-        <number>1</number>
+        <number>2</number>
        </property>
        <widget class="QWidget" name="page">
         <layout class="QVBoxLayout" name="verticalLayout_7">
@@ -333,51 +333,10 @@
          <item>
           <widget class="QCheckBox" name="checkbox_proxy">
            <property name="text">
-            <string>Use a proxy server</string>
+            <string>Use a http proxy server</string>
            </property>
           </widget>
          </item>
-         <item>
-          <layout class="QHBoxLayout" name="horizontalLayout_11">
-           <property name="topMargin">
-            <number>6</number>
-           </property>
-           <item>
-            <widget class="QLabel" name="label_8">
-             <property name="text">
-              <string>Proxy type : </string>
-             </property>
-            </widget>
-           </item>
-           <item>
-            <widget class="QComboBox" name="combox_proxytype">
-             <item>
-              <property name="text">
-               <string>HTTP</string>
-              </property>
-             </item>
-             <item>
-              <property name="text">
-               <string>SOCKS5</string>
-              </property>
-             </item>
-            </widget>
-           </item>
-           <item>
-            <spacer name="horizontalSpacer_4">
-             <property name="orientation">
-              <enum>Qt::Horizontal</enum>
-             </property>
-             <property name="sizeHint" stdset="0">
-              <size>
-               <width>40</width>
-               <height>20</height>
-              </size>
-             </property>
-            </spacer>
-           </item>
-          </layout>
-         </item>
          <item>
           <layout class="QHBoxLayout" name="horizontalLayout_9">
            <item>
@@ -409,6 +368,20 @@
            </property>
           </widget>
          </item>
+         <item>
+          <layout class="QHBoxLayout" name="horizontalLayout_11">
+           <property name="topMargin">
+            <number>6</number>
+           </property>
+           <item>
+            <widget class="QCheckBox" name="checkbox_auto_refresh">
+             <property name="text">
+              <string>Automatically refresh identities informations</string>
+             </property>
+            </widget>
+           </item>
+          </layout>
+         </item>
          <item>
           <spacer name="verticalSpacer_3">
            <property name="orientation">
diff --git a/res/ui/transactions_tab.ui b/res/ui/transactions_tab.ui
index b459a6950f465ba297e35a1279cb9bd18fac0e67..f32e7ebae129d4805b8fd1d023e548617972a9bb 100644
--- a/res/ui/transactions_tab.ui
+++ b/res/ui/transactions_tab.ui
@@ -15,7 +15,7 @@
   </property>
   <layout class="QVBoxLayout" name="verticalLayout">
    <item>
-    <widget class="QGroupBox" name="groupBox_2">
+    <widget class="QGroupBox" name="groupbox_balance">
      <property name="title">
       <string>Balance</string>
      </property>
@@ -30,7 +30,7 @@
          </font>
         </property>
         <property name="text">
-         <string>label_balance</string>
+         <string>loading...</string>
         </property>
         <property name="alignment">
          <set>Qt::AlignHCenter|Qt::AlignTop</set>
diff --git a/res/ui/transfer.ui b/res/ui/transfer.ui
index c3230ec3129a9164c67ce4ea4c89314ba5693358..d258290a8cd86addfc12749be43ec20cf359f106 100644
--- a/res/ui/transfer.ui
+++ b/res/ui/transfer.ui
@@ -37,7 +37,7 @@
         <item>
          <widget class="QRadioButton" name="radio_contact">
           <property name="text">
-           <string>Contact</string>
+           <string>Con&amp;tact</string>
           </property>
           <property name="checked">
            <bool>true</bool>
@@ -286,6 +286,22 @@
     </hint>
    </hints>
   </connection>
+  <connection>
+   <sender>spinbox_amount</sender>
+   <signal>valueChanged(double)</signal>
+   <receiver>TransferMoneyDialog</receiver>
+   <slot>amount_changed()</slot>
+   <hints>
+    <hint type="sourcelabel">
+     <x>209</x>
+     <y>292</y>
+    </hint>
+    <hint type="destinationlabel">
+     <x>247</x>
+     <y>219</y>
+    </hint>
+   </hints>
+  </connection>
  </connections>
  <slots>
   <slot>open_manage_wallet_coins()</slot>
diff --git a/setup.py b/setup.py
index 8381c99f10c33e2b372d154589ab156d3562c04a..fdbd26063c7afaf690ecfa95b59d35efbe10ab1f 100644
--- a/setup.py
+++ b/setup.py
@@ -3,23 +3,28 @@
 
 # source d'inspiration: http://wiki.wxpython.org/cx_freeze
 
-import sys, os, subprocess, multiprocessing
+import sys, os, subprocess, multiprocessing, site
 from cx_Freeze import setup, Executable
 from PyQt5 import QtCore
+from os import listdir
+from os.path import isfile, join
 
 #############################################################################
 # preparation des options
-sys.path.append(os.path.abspath(os.path.join(os.path.dirname(__file__), 'lib')))
 sys.path.append(os.path.abspath(os.path.join(os.path.dirname(__file__), 'src')))
 
 print(sys.path)
+print("Environnement:")
+print(os.environ)
 includes = ["sip", "re", "json", "logging",
             "hashlib", "os", "urllib",
-            "ucoinpy", "pylibscrypt"]
-excludes = ['.git']
-packages = ["libnacl", "encodings"]
+            "ucoinpy", "pylibscrypt", "aiohttp", "asyncio",
+            "quamash", "jsonschema"]
+exclude = ['.git']
+packages = ["libnacl", "encodings", "jsonschema"]
 
 includefiles = []
+zipincludes = []
 
 if sys.platform == "win32":
     app = QtCore.QCoreApplication(sys.argv)
@@ -30,8 +35,14 @@ if sys.platform == "win32":
         if os.path.isfile(os.path.join(os.path.dirname(path), "libEGL.dll")):
             libEGL_path = os.path.join(os.path.dirname(path), "libEGL.dll")
 
-    if 'CONDA_ENV_PATH' in os.environ:
-	# Check if we are in Conda env
+    if 'CONDA_DEFAULT_ENV' in os.environ:
+            # Check if we are in Conda env
+        schemas = os.path.join(site.getsitepackages()[1], "jsonschema", "schemas")
+
+        onlyfiles = [ f for f in listdir(schemas) if isfile(join(schemas,f)) ]
+        for f in onlyfiles:
+            zipincludes.append((os.path.join(schemas, f), os.path.join("jsonschema", "schemas", f)))
+
         path = QtCore.QCoreApplication.libraryPaths()[0]
         libEGL_path = os.path.join(path, "Scripts", "libEGL.dll")
         libsodium_path = os.path.join(path, "Scripts", "libsodium.dll")
@@ -52,18 +63,36 @@ elif sys.platform == "darwin":
 else:
     libsodium_path = ""
     print(QtCore.QCoreApplication.libraryPaths())
+    schemas = os.path.join(site.getsitepackages()[0], "jsonschema", "schemas")
+    onlyfiles = [ f for f in listdir(schemas) if isfile(join(schemas,f)) ]
+    for f in onlyfiles:
+        zipincludes.append((os.path.join(schemas, f), os.path.join("jsonschema", "schemas", f)))
+
     # Check if we are in Conda env
     if 'CONDA_ENV_PATH' in os.environ:
         libsodium_path = os.path.join(os.environ['CONDA_ENV_PATH'], "lib",
                                       "libsodium.so.13")
         includefiles.append((libsodium_path, "libsodium.so.13"))
 
+        
+print("Includes : ")
+print(includes)
+print("Excludes : ")
+print(exclude)
+print("Include files : ")
+print(includefiles)
+print("Zip files : ")
+print(zipincludes)
+print("Packages : ")
+print(packages)
+print(sys.path)
 
 options = {"path": sys.path,
            "includes": includes,
            "include_files": includefiles,
-           "excludes": excludes,
+           "excludes": exclude,
            "packages": packages,
+           "zip_includes": zipincludes
            }
 
 #############################################################################
@@ -87,7 +116,7 @@ target = Executable(
 # creation du setup
 setup(
     name = "cutecoin",
-    version = "0.10",
+    version = "0.11",
     description = "UCoin client",
     author = "Inso",
     options = {"build_exe": options},
diff --git a/src/cutecoin/core/account.py b/src/cutecoin/core/account.py
index 35bb49181f3623346d6aca6b2e982858cefea9b5..a441cd642de3759e99d6bad7d769eda8da93e2ca 100644
--- a/src/cutecoin/core/account.py
+++ b/src/cutecoin/core/account.py
@@ -19,10 +19,11 @@ from . import money
 from .wallet import Wallet
 from .community import Community
 from .registry import LocalState
-from ..tools.exceptions import ContactAlreadyExists
+from ..tools.exceptions import ContactAlreadyExists, NoPeerAvailable
 from ..tools.decorators import asyncify
-from ..core.net.api import bma as qtbma
-from ..core.net.api.bma import PROTOCOL_VERSION
+from ucoinpy.api import bma
+from ucoinpy.api.bma import PROTOCOL_VERSION
+from aiohttp.errors import ClientError
 
 
 class Account(QObject):
@@ -31,14 +32,9 @@ class Account(QObject):
     Each account has only one key, and a key can
     be locally referenced by only one account.
     """
-    loading_progressed = pyqtSignal(int, int)
-    loading_finished = pyqtSignal(list)
+    loading_progressed = pyqtSignal(Community, int, int)
+    loading_finished = pyqtSignal(Community, list)
     wallets_changed = pyqtSignal()
-    membership_broadcasted = pyqtSignal()
-    certification_broadcasted = pyqtSignal()
-    selfcert_broadcasted = pyqtSignal()
-    revoke_broadcasted = pyqtSignal()
-    broadcast_error = pyqtSignal(int, str)
 
     def __init__(self, salt, pubkey, name, communities, wallets, contacts, identities_registry):
         """
@@ -63,7 +59,6 @@ class Account(QObject):
         self.communities = communities
         self.wallets = wallets
         self.contacts = contacts
-        self._refreshing = False
         self._identities_registry = identities_registry
         self._current_ref = 0
 
@@ -84,7 +79,7 @@ class Account(QObject):
         return account
 
     @classmethod
-    def load(cls, json_data, network_manager, identities_registry):
+    def load(cls, json_data, identities_registry):
         """
         Factory method to create an Account object from its json view.
         :rtype : cutecoin.core.account.Account
@@ -108,7 +103,7 @@ class Account(QObject):
 
         communities = []
         for data in json_data['communities']:
-            community = Community.load(network_manager, data)
+            community = Community.load(data)
             communities.append(community)
 
         account = cls(salt, pubkey, name, communities, wallets,
@@ -160,38 +155,75 @@ class Account(QObject):
         .. note:: emit the Account pyqtSignal loading_progressed during refresh
         """
         logging.debug("Start refresh transactions")
-        if not self._refreshing:
-            self._refreshing = True
-            loaded_wallets = 0
-            received_list = []
-            values = {}
-            maximums = {}
-
-            def progressing(value, maximum, hash):
-                #logging.debug("Loading = {0} : {1} : {2}".format(value, maximum, loaded_wallets))
-                values[hash] = value
-                maximums[hash] = maximum
-                account_value = sum(values.values())
-                account_max = sum(maximums.values())
-                self.loading_progressed.emit(account_value, account_max)
-
-            def wallet_finished(received):
-                logging.debug("Finished loading wallet")
-                nonlocal loaded_wallets
-                loaded_wallets += 1
-                if loaded_wallets == len(self.wallets):
-                    logging.debug("All wallets loaded")
-                    self._refreshing = False
-                    self.loading_finished.emit(received_list)
-                    for w in self.wallets:
-                        w.refresh_progressed.disconnect(progressing)
-                        w.refresh_finished.disconnect(wallet_finished)
-
-            for w in self.wallets:
-                w.refresh_progressed.connect(progressing)
-                w.refresh_finished.connect(wallet_finished)
-                w.init_cache(app, community)
-                w.refresh_transactions(community, received_list)
+        loaded_wallets = 0
+        received_list = []
+        values = {}
+        maximums = {}
+
+        def progressing(value, maximum, hash):
+            #logging.debug("Loading = {0} : {1} : {2}".format(value, maximum, loaded_wallets))
+            values[hash] = value
+            maximums[hash] = maximum
+            account_value = sum(values.values())
+            account_max = sum(maximums.values())
+            self.loading_progressed.emit(community, account_value, account_max)
+
+        def wallet_finished(received):
+            logging.debug("Finished loading wallet")
+            nonlocal loaded_wallets
+            loaded_wallets += 1
+            if loaded_wallets == len(self.wallets):
+                logging.debug("All wallets loaded")
+                self._refreshing = False
+                self.loading_finished.emit(community, received_list)
+                for w in self.wallets:
+                    w.refresh_progressed.disconnect(progressing)
+                    w.refresh_finished.disconnect(wallet_finished)
+
+        for w in self.wallets:
+            w.refresh_progressed.connect(progressing)
+            w.refresh_finished.connect(wallet_finished)
+            w.init_cache(app, community)
+            w.refresh_transactions(community, received_list)
+
+    def rollback_transaction(self, app, community):
+        """
+        Refresh the local account cache
+        This needs n_wallets * n_communities cache refreshing to end
+
+        .. note:: emit the Account pyqtSignal loading_progressed during refresh
+        """
+        logging.debug("Start refresh transactions")
+        loaded_wallets = 0
+        received_list = []
+        values = {}
+        maximums = {}
+
+        def progressing(value, maximum, hash):
+            #logging.debug("Loading = {0} : {1} : {2}".format(value, maximum, loaded_wallets))
+            values[hash] = value
+            maximums[hash] = maximum
+            account_value = sum(values.values())
+            account_max = sum(maximums.values())
+            self.loading_progressed.emit(community, account_value, account_max)
+
+        def wallet_finished(received):
+            logging.debug("Finished loading wallet")
+            nonlocal loaded_wallets
+            loaded_wallets += 1
+            if loaded_wallets == len(self.wallets):
+                logging.debug("All wallets loaded")
+                self._refreshing = False
+                self.loading_finished.emit(community, received_list)
+                for w in self.wallets:
+                    w.refresh_progressed.disconnect(progressing)
+                    w.refresh_finished.disconnect(wallet_finished)
+
+        for w in self.wallets:
+            w.refresh_progressed.connect(progressing)
+            w.refresh_finished.connect(wallet_finished)
+            w.init_cache(app, community)
+            w.rollback_transactions(community, received_list)
 
     def set_display_referential(self, index):
         self._current_ref = index
@@ -278,6 +310,96 @@ class Account(QObject):
             value += val
         return value
 
+    @asyncio.coroutine
+    def check_registered(self, community):
+        """
+        Checks for the pubkey and the uid of an account in a community
+        :param cutecoin.core.Community community: The community we check for registration
+        :return: (True if found, local value, network value)
+        """
+        def _parse_uid_certifiers(data):
+            return self.name == data['uid'], self.name, data['uid']
+
+        def _parse_uid_lookup(data):
+            timestamp = 0
+            found_uid = ""
+            for result in data['results']:
+                if result["pubkey"] == self.pubkey:
+                    uids = result['uids']
+                    for uid_data in uids:
+                        if uid_data["meta"]["timestamp"] > timestamp:
+                            timestamp = uid_data["meta"]["timestamp"]
+                            found_uid = uid_data["uid"]
+            return self.name == found_uid, self.name, found_uid
+
+        def _parse_pubkey_certifiers(data):
+            return self.pubkey == data['pubkey'], self.pubkey, data['pubkey']
+
+        def _parse_pubkey_lookup(data):
+            timestamp = 0
+            found_uid = ""
+            found_result = ["", ""]
+            for result in data['results']:
+                uids = result['uids']
+                for uid_data in uids:
+                    if uid_data["meta"]["timestamp"] > timestamp:
+                        timestamp = uid_data["meta"]["timestamp"]
+                        found_uid = uid_data["uid"]
+                if found_uid == self.name:
+                    found_result = result['pubkey'], found_uid
+            if found_result[1] == self.name:
+                return self.pubkey == found_result[0], self.pubkey, found_result[0]
+            else:
+                return False, self.pubkey, None
+
+        @asyncio.coroutine
+        def execute_requests(parsers, search):
+            tries = 0
+            request = bma.wot.CertifiersOf
+            nonlocal registered
+            #TODO: The algorithm is quite dirty
+            #Multiplying the tries without any reason...
+            while tries < 3 and not registered[0] and not registered[2]:
+                try:
+                    data = yield from community.bma_access.simple_request(request,
+                                                                          req_args={'search': search})
+                    if data:
+                        registered = parsers[request](data)
+                    tries += 1
+                except ValueError as e:
+                    if '404' in str(e) or '400' in str(e):
+                        if request == bma.wot.CertifiersOf:
+                            request = bma.wot.Lookup
+                            tries = 0
+                        else:
+                            tries += 1
+                    else:
+                        tries += 1
+                except asyncio.TimeoutError:
+                    tries += 1
+                except ClientError:
+                    tries += 1
+
+        registered = (False, self.name, None)
+        # We execute search based on pubkey
+        # And look for account UID
+        uid_parsers = {
+                    bma.wot.CertifiersOf: _parse_uid_certifiers,
+                    bma.wot.Lookup: _parse_uid_lookup
+                   }
+        yield from execute_requests(uid_parsers, self.pubkey)
+
+        # If the uid wasn't found when looking for the pubkey
+        # We look for the uid and check for the pubkey
+        if not registered[0] and not registered[2]:
+            pubkey_parsers = {
+                        bma.wot.CertifiersOf: _parse_pubkey_certifiers,
+                        bma.wot.Lookup: _parse_pubkey_lookup
+                       }
+            yield from execute_requests(pubkey_parsers, self.name)
+
+        return registered
+
     @asyncio.coroutine
     def send_selfcert(self, password, community):
         """
@@ -295,38 +417,19 @@ class Account(QObject):
         key = SigningKey(self.salt, password)
         selfcert.sign([key])
         logging.debug("Key publish : {0}".format(selfcert.signed_raw()))
-        replies = community.bma_access.broadcast(qtbma.wot.Add, {}, {'pubkey': self.pubkey,
-                                              'self_': selfcert.signed_raw(),
-                                              'other': ""})
-        for r in replies:
-            r.finished.connect(lambda reply=r: self.__handle_selfcert_replies(replies, reply))
-
-    def __handle_selfcert_replies(self, replies, reply):
-        """
-        Handle the reply, if the request was accepted, disconnect
-        all other replies
 
-        :param QNetworkReply reply: The reply of this handler
-        :param list of QNetworkReply replies: All request replies
-        :return:
-        """
-        strdata = bytes(reply.readAll()).decode('utf-8')
-        logging.debug("Received reply : {0} : {1}".format(reply.error(), strdata))
-        if reply.error() == QNetworkReply.NoError:
-            for r in replies:
-                try:
-                    r.disconnect()
-                except TypeError as e:
-                    if "disconnect()" in str(e):
-                        logging.debug("Could not disconnect a reply")
-                    else:
-                        raise
-            self.selfcert_broadcasted.emit()
-        else:
-            for r in replies:
-                if not r.isFinished() or r.error() == QNetworkReply.NoError:
-                    return
-            self.broadcast_error.emit(r.error(), strdata)
+        responses = yield from community.bma_access.broadcast(bma.wot.Add, {}, {'pubkey': self.pubkey,
+                                              'self_': selfcert.signed_raw(),
+                                              'other': {}})
+        result = (False, "")
+        for r in responses:
+            if r.status == 200:
+                result = (True, (yield from r.json()))
+            elif not result[0]:
+                result = (False, (yield from r.text()))
+            else:
+                yield from r.release()
+        return result
 
     @asyncio.coroutine
     def send_membership(self, password, community, mstype):
@@ -345,43 +448,23 @@ class Account(QObject):
         selfcert = yield from self_identity.selfcert(community)
 
         membership = Membership(PROTOCOL_VERSION, community.currency,
-                                selfcert.pubkey, blockid['number'],
-                                blockid['hash'], mstype, selfcert.uid,
+                                selfcert.pubkey, blockid.number,
+                                blockid.sha_hash, mstype, selfcert.uid,
                                 selfcert.timestamp, None)
         key = SigningKey(self.salt, password)
         membership.sign([key])
         logging.debug("Membership : {0}".format(membership.signed_raw()))
-        replies = community.bma_access.broadcast(qtbma.blockchain.Membership, {},
-                            {'membership': membership.signed_raw()})
-        for r in replies:
-            r.finished.connect(lambda reply=r: self.__handle_membership_replies(replies, reply))
-
-    def __handle_membership_replies(self, replies, reply):
-        """
-        Handle the reply, if the request was accepted, disconnect
-        all other replies
-
-        :param QNetworkReply reply: The reply of this handler
-        :param list of QNetworkReply replies: All request replies
-        :return:
-        """
-        strdata = bytes(reply.readAll()).decode('utf-8')
-        logging.debug("Received reply : {0} : {1}".format(reply.error(), strdata))
-        if reply.error() == QNetworkReply.NoError:
-            for r in replies:
-                try:
-                    r.disconnect()
-                except TypeError as e:
-                    if "disconnect()" in str(e):
-                        logging.debug("Could not disconnect a reply")
-                    else:
-                        raise
-            self.membership_broadcasted.emit()
-        else:
-            for r in replies:
-                if not r.isFinished() or r.error() == QNetworkReply.NoError:
-                    return
-            self.broadcast_error.emit(r.error(), strdata)
+        responses = yield from community.bma_access.broadcast(bma.blockchain.Membership, {},
+                        {'membership': membership.signed_raw()})
+        result = (False, "")
+        for r in responses:
+            if r.status == 200:
+                result = (True, (yield from r.json()))
+            elif not result[0]:
+                result = (False, (yield from r.text()))
+            else:
+                yield from r.release()
+        return result
 
     @asyncio.coroutine
     def certify(self, password, community, pubkey):
@@ -396,49 +479,32 @@ class Account(QObject):
         blockid = yield from community.blockid()
         identity = yield from self._identities_registry.future_find(pubkey, community)
         selfcert = yield from identity.selfcert(community)
-        certification = Certification(PROTOCOL_VERSION, community.currency,
-                                      self.pubkey, pubkey,
-                                      blockid['number'], blockid['hash'], None)
-
-        key = SigningKey(self.salt, password)
-        certification.sign(selfcert, [key])
-        signed_cert = certification.signed_raw(selfcert)
-        logging.debug("Certification : {0}".format(signed_cert))
-
-        data = {'pubkey': pubkey,
-                'self_': selfcert.signed_raw(),
-                'other': "{0}\n".format(certification.inline())}
-        logging.debug("Posted data : {0}".format(data))
-        replies = community.bma_access.broadcast(qtbma.wot.Add, {}, data)
-        for r in replies:
-            r.finished.connect(lambda reply=r: self.__handle_certification_reply(replies, reply))
-
-    def __handle_certification_reply(self, replies, reply):
-        """
-        Handle the reply, if the request was accepted, disconnect
-        all other replies
-
-        :param QNetworkReply reply: The reply of this handler
-        :param list of QNetworkReply replies: All request replies
-        :return:
-        """
-        strdata = bytes(reply.readAll()).decode('utf-8')
-        logging.debug("Received reply : {0} : {1}".format(reply.error(), strdata))
-        if reply.error() == QNetworkReply.NoError:
-            for r in replies:
-                try:
-                    r.disconnect()
-                except TypeError as e:
-                    if "disconnect()" in str(e):
-                        logging.debug("Could not disconnect a reply")
-                    else:
-                        raise
-            self.certification_broadcasted.emit()
+        if selfcert:
+            certification = Certification(PROTOCOL_VERSION, community.currency,
+                                          self.pubkey, pubkey,
+                                          blockid.number, blockid.sha_hash, None)
+
+            key = SigningKey(self.salt, password)
+            certification.sign(selfcert, [key])
+            signed_cert = certification.signed_raw(selfcert)
+            logging.debug("Certification : {0}".format(signed_cert))
+
+            data = {'pubkey': pubkey,
+                    'self_': selfcert.signed_raw(),
+                    'other': "{0}\n".format(certification.inline())}
+            logging.debug("Posted data : {0}".format(data))
+            responses = yield from community.bma_access.broadcast(bma.wot.Add, {}, data)
+            result = (False, "")
+            for r in responses:
+                if r.status == 200:
+                    result = (True, (yield from r.json()))
+                elif not result[0]:
+                    result = (False, (yield from r.text()))
+                else:
+                    yield from r.release()
+            return result
         else:
-            for r in replies:
-                if not r.isFinished() or r.error() == QNetworkReply.NoError:
-                    return
-            self.broadcast_error.emit(r.error(), strdata)
+            return (False, self.tr("Could not find user self certification."))
 
     @asyncio.coroutine
     def revoke(self, password, community):
@@ -451,7 +517,7 @@ class Account(QObject):
         revoked = yield from self._identities_registry.future_find(self.pubkey, community)
 
         revocation = Revocation(PROTOCOL_VERSION, community.currency, None)
-        selfcert = revoked.selfcert(community)
+        selfcert = yield from revoked.selfcert(community)
 
         key = SigningKey(self.salt, password)
         revocation.sign(selfcert, [key])
@@ -465,36 +531,16 @@ class Account(QObject):
             'sig': revocation.signatures[0]
         }
         logging.debug("Posted data : {0}".format(data))
-        replies = community.broadcast(qtbma.wot.Revoke, {}, data)
-        for r in replies:
-            r.finished.connect(lambda reply=r: self.__handle_certification_reply(replies, reply))
-
-    def __handle_revoke_reply(self, replies, reply):
-        """
-        Handle the reply, if the request was accepted, disconnect
-        all other replies
-
-        :param QNetworkReply reply: The reply of this handler
-        :param list of QNetworkReply replies: All request replies
-        :return:
-        """
-        strdata = bytes(reply.readAll()).decode('utf-8')
-        logging.debug("Received reply : {0} : {1}".format(reply.error(), strdata))
-        if reply.error() == QNetworkReply.NoError:
-            for r in replies:
-                try:
-                    r.disconnect()
-                except TypeError as e:
-                    if "disconnect()" in str(e):
-                        logging.debug("Could not disconnect a reply")
-                    else:
-                        raise
-            self.revoke_broadcasted.emit()
-        else:
-            for r in replies:
-                if not r.isFinished() or r.error() == QNetworkReply.NoError:
-                    return
-            self.broadcast_error.emit(r.error(), strdata)
+        responses = yield from community.bma_access.broadcast(bma.wot.Revoke, {}, data)
+        result = (False, "")
+        for r in responses:
+            if r.status == 200:
+                result = (True, (yield from r.json()))
+            elif not result[0]:
+                result = (False, (yield from r.text()))
+            else:
+                yield from r.release()
+        return result
 
     def start_coroutines(self):
         for c in self.communities:
diff --git a/src/cutecoin/core/app.py b/src/cutecoin/core/app.py
index 75721e8b5a4689da4fbb012f1ca1dcd618f5bec4..a018dc0215ad9cd2c01e2fbe1c360dd869979f54 100644
--- a/src/cutecoin/core/app.py
+++ b/src/cutecoin/core/app.py
@@ -10,17 +10,21 @@ import tarfile
 import shutil
 import json
 import datetime
-import i18n_rc
+import asyncio
+import aiohttp
+import time
 
 from PyQt5.QtCore import QObject, pyqtSignal, pyqtSlot, \
 QUrl, QTranslator, QCoreApplication, QLocale
-from PyQt5.QtNetwork import QNetworkAccessManager, QNetworkReply, QNetworkRequest, QNetworkProxy
-
+from ucoinpy.api.bma import API
+from aiohttp.connector import ProxyConnector
 from . import config
 from .account import Account
 from .registry.identities import IdentitiesRegistry
 from .. import __version__
 from ..tools.exceptions import NameAlreadyExists, BadAccountFile
+from ..tools.decorators import asyncify
+import i18n_rc
 
 
 class Application(QObject):
@@ -33,12 +37,11 @@ class Application(QObject):
 
     version_requested = pyqtSignal()
 
-    def __init__(self, qapp, loop, network_manager, identities_registry):
+    def __init__(self, qapp, loop, identities_registry):
         """
         Init a new "cutecoin" application
         :param QCoreApplication qapp: Qt Application
         :param quamash.QEventLoop loop: quamash.QEventLoop instance
-        :param QNetworkAccessManager network_manager: QNetworkAccessManager instance
         :param IdentitiesRegistry identities_registry: IdentitiesRegistry instance
         :return:
         """
@@ -51,8 +54,8 @@ class Application(QObject):
         self.available_version = (True,
                                   __version__,
                                   "")
+        self._translator = QTranslator(self.qapp)
         self._identities_registry = identities_registry
-        self._network_manager = network_manager
         self.preferences = {'account': "",
                             'lang': 'en_GB',
                             'ref': 0,
@@ -64,25 +67,30 @@ class Application(QObject):
                             'proxy_type': "HTTP",
                             'proxy_address': "",
                             'proxy_port': 8080,
-                            'international_system_of_units': True
+                            'international_system_of_units': True,
+                            'auto_refresh': False
+                            }
+
+        self.notifications = {'membership_expire_soon':
+                                  [
+                                      self.tr("Warning : Your membership is expiring soon."),
+                                      0
+                                   ],
+                            'warning_certifications':
+                                    [
+                                        self.tr("Warning : Your could miss certifications soon."),
+                                        0
+                                    ]
                             }
 
     @classmethod
     def startup(cls, argv, qapp, loop):
         config.parse_arguments(argv)
-        network_manager = QNetworkAccessManager()
         identities_registry = IdentitiesRegistry()
-        app = cls(qapp, loop, network_manager, identities_registry)
+        app = cls(qapp, loop, identities_registry)
         app.load()
         app.switch_language()
-        if app.preferences['enable_proxy'] is True:
-            proxytypes = {"HTTP": QNetworkProxy.HttpProxy,
-                          "SOCKS5": QNetworkProxy.Socks5Proxy}
-            qtproxy = QNetworkProxy(proxytypes[app.preferences.get('proxy_type', "HTTP")],
-                                    app.preferences['proxy_address'],
-                                    app.preferences['proxy_port'])
-            network_manager.setProxy(qtproxy)
-
+        app.set_proxy()
         if app.preferences["account"] != "":
             account = app.get_account(app.preferences["account"])
             app.change_current_account(account)
@@ -101,16 +109,27 @@ class Application(QObject):
 
         return app
 
+    def set_proxy(self):
+        if self.preferences['enable_proxy'] is True:
+            API.aiohttp_connector = ProxyConnector("http://{0}:{1}".format(
+                                    self.preferences['proxy_address'],
+                                    self.preferences['proxy_port']))
+        else:
+            API.aiohttp_connector = None
+
     def switch_language(self):
-        translator = QTranslator(self.qapp)
         logging.debug("Loading translations")
         locale = self.preferences['lang']
         QLocale.setDefault(QLocale(locale))
-        if translator.load(":/i18n/{0}".format(locale)):
-            if QCoreApplication.installTranslator(translator):
+        QCoreApplication.removeTranslator(self._translator)
+        self._translator = QTranslator(self.qapp)
+        if locale == "en_GB":
+            QCoreApplication.installTranslator(self._translator)
+        elif self._translator.load(":/i18n/{0}".format(locale)):
+            if QCoreApplication.installTranslator(self._translator):
                 logging.debug("Loaded i18n/{0}".format(locale))
-        else:
-            logging.debug("Couldn't load translation")
+            else:
+                logging.debug("Couldn't load translation")
 
     def get_account(self, name):
         """
@@ -145,10 +164,6 @@ class Application(QObject):
     def identities_registry(self):
         return self._identities_registry
 
-    @property
-    def network_manager(self):
-        return self._network_manager
-
     def add_account(self, account):
         self.accounts[account.name] = account
 
@@ -233,10 +248,18 @@ class Application(QObject):
                                     account_name, 'properties')
         with open(account_path, 'r') as json_data:
             data = json.load(json_data)
-            account = Account.load(data, self._network_manager, self._identities_registry)
+            account = Account.load(data, self._identities_registry)
             self.load_cache(account)
             self.accounts[account_name] = account
 
+            for community in account.communities:
+                community.network.blockchain_rollback.connect(community.rollback_cache)
+                community.network.new_block_mined.connect(lambda b, co=community:
+                                                          account.refresh_transactions(self, co))
+                community.network.blockchain_rollback.connect(lambda b, co=community:
+                                                              account.rollback_transaction(self, co))
+                community.network.root_nodes_changed.connect(lambda acc=account: self.save(acc))
+
     def load_cache(self, account):
         """
         Load an account cache
@@ -286,7 +309,6 @@ class Application(QObject):
         """
         Load the preferences.
         """
-
         try:
             preferences_path = os.path.join(config.parameters['home'],
                                             'preferences')
@@ -313,6 +335,8 @@ class Application(QObject):
         with open(preferences_path, 'w') as outfile:
             json.dump(preferences, outfile, indent=4)
 
+        self.set_proxy()
+
     def save(self, account):
         """
         Save an account
@@ -340,10 +364,13 @@ class Application(QObject):
         """
         identities_path = os.path.join(config.parameters['home'],
                                     '__identities__')
-        with open(identities_path, 'w')as outfile:
+        buffer_path = identities_path + ".buf"
+        with open(buffer_path, 'w') as outfile:
             data = self.identities_registry.jsonify()
             data['version'] = __version__
-            json.dump(data, outfile, indent=4, sort_keys=True)
+            for chunk in json.JSONEncoder().iterencode(data):
+                outfile.write(chunk)
+        shutil.move(buffer_path, identities_path)
 
     def save_wallet(self, account, wallet):
         """
@@ -358,10 +385,13 @@ class Application(QObject):
                                      account.name, '__cache__'))
         wallet_path = os.path.join(config.parameters['home'],
                                    account.name, '__cache__', wallet.pubkey + "_wal")
-        with open(wallet_path, 'w') as outfile:
+        buffer_path = wallet_path + ".buf"
+        with open(buffer_path, 'w') as outfile:
             data = wallet.jsonify_caches()
             data['version'] = __version__
-            json.dump(data, outfile, indent=4, sort_keys=True)
+            for chunk in json.JSONEncoder().iterencode(data):
+                outfile.write(chunk)
+        shutil.move(buffer_path, wallet_path)
 
     def save_cache(self, account):
         """
@@ -384,17 +414,24 @@ class Application(QObject):
             network_path = os.path.join(config.parameters['home'],
                                         account.name, '__cache__',
                                         community.currency + '_network')
+            buffer_path = network_path + ".buf"
 
-            with open(network_path, 'w') as outfile:
+            with open(buffer_path, 'w') as outfile:
                 data = dict()
                 data['network'] = community.network.jsonify()
                 data['version'] = __version__
-                json.dump(data, outfile, indent=4, sort_keys=True)
+                for chunk in json.JSONEncoder().iterencode(data):
+                    outfile.write(chunk)
+            shutil.move(buffer_path, network_path)
 
-            with open(bma_path, 'w') as outfile:
+            buffer_path = bma_path + ".buf"
+
+            with open(buffer_path, 'w') as outfile:
                 data['cache'] = community.bma_access.jsonify()
                 data['version'] = __version__
-                json.dump(data, outfile, indent=4, sort_keys=True)
+                for chunk in json.JSONEncoder().iterencode(data):
+                    outfile.write(chunk)
+            shutil.move(buffer_path, bma_path)
 
     def import_account(self, file, name):
         """
@@ -463,32 +500,35 @@ class Application(QObject):
 
         self.save_registries()
 
+    @asyncify
+    @asyncio.coroutine
     def get_last_version(self):
-        url = QUrl("https://api.github.com/repos/ucoin-io/cutecoin/releases")
-        request = QNetworkRequest(url)
-        reply = self._network_manager.get(request)
-        reply.finished.connect(self.read_available_version)
-
-    @pyqtSlot(QNetworkReply)
-    def read_available_version(self):
-        latest = None
-        reply = self.sender()
-        releases = reply.readAll().data().decode('utf-8')
-        logging.debug(releases)
-        if reply.error() == QNetworkReply.NoError:
-            for r in json.loads(releases):
-                if not latest:
-                    latest = r
-                else:
-                    latest_date = datetime.datetime.strptime(latest['published_at'], "%Y-%m-%dT%H:%M:%SZ")
-                    date = datetime.datetime.strptime(r['published_at'], "%Y-%m-%dT%H:%M:%SZ")
-                    if latest_date < date:
+        if self.preferences['enable_proxy'] is True:
+            connector = ProxyConnector("http://{0}:{1}".format(
+                                    self.preferences['proxy_address'],
+                                    self.preferences['proxy_port']))
+        else:
+            connector = None
+        try:
+            response = yield from asyncio.wait_for(aiohttp.get("https://api.github.com/repos/ucoin-io/cutecoin/releases",
+                                                               connector=connector), timeout=15)
+            if response.status == 200:
+                releases = yield from response.json()
+                for r in releases:
+                    if not latest:
                         latest = r
-            latest_version = latest["tag_name"]
-            version = (__version__ == latest_version,
-                       latest_version,
-                       latest["html_url"])
-            logging.debug("Found version : {0}".format(latest_version))
-            logging.debug("Current version : {0}".format(__version__))
-            self.available_version = version
-        self.version_requested.emit()
+                    else:
+                        latest_date = datetime.datetime.strptime(latest['published_at'], "%Y-%m-%dT%H:%M:%SZ")
+                        date = datetime.datetime.strptime(r['published_at'], "%Y-%m-%dT%H:%M:%SZ")
+                        if latest_date < date:
+                            latest = r
+                latest_version = latest["tag_name"]
+                version = (__version__ == latest_version,
+                           latest_version,
+                           latest["html_url"])
+                logging.debug("Found version : {0}".format(latest_version))
+                logging.debug("Current version : {0}".format(__version__))
+                self.available_version = version
+            self.version_requested.emit()
+        except aiohttp.errors.ClientError as e:
+            logging.debug("Could not connect to github : {0}".format(str(e)))
diff --git a/src/cutecoin/core/community.py b/src/cutecoin/core/community.py
index 18be5087c8972ee7f4a8fe1999eaaed8d5f6754e..2d463c45d08a656c0e0be54895d0913c6f5dbd38 100644
--- a/src/cutecoin/core/community.py
+++ b/src/cutecoin/core/community.py
@@ -15,7 +15,8 @@ from PyQt5.QtCore import QObject, pyqtSignal
 
 from ..tools.exceptions import NoPeerAvailable
 from .net.network import Network
-from .net.api import bma as qtbma
+from ucoinpy.api import bma
+from ucoinpy.documents import Block, BlockId
 from .net.api.bma.access import BmaAccess
 
 
@@ -43,27 +44,27 @@ class Community(QObject):
         self._bma_access = bma_access
 
     @classmethod
-    def create(cls, network_manager, node):
+    def create(cls, node):
         """
         Create a community from its first node.
 
         :param node: The first Node of the community
         """
-        network = Network.create(network_manager, node)
+        network = Network.create(node)
         bma_access = BmaAccess.create(network)
         community = cls(node.currency, network, bma_access)
         logging.debug("Creating community")
         return community
 
     @classmethod
-    def load(cls, network_manager, json_data):
+    def load(cls, json_data):
         """
         Load a community from json
 
         :param dict json_data: The community as a dict in json format
         """
         currency = json_data['currency']
-        network = Network.from_json(network_manager, currency, json_data['peers'])
+        network = Network.from_json(currency, json_data['peers'])
         bma_access = BmaAccess.create(network)
         community = cls(currency, network, bma_access)
         return community
@@ -140,12 +141,13 @@ class Community(QObject):
         :return: The computed UD or 1 if no UD was generated.
         """
         block = yield from self.get_ud_block()
-        if block and block != qtbma.blockchain.Block.null_value:
+        if block:
+            parameters = yield from self.parameters()
             return math.ceil(
                 max(
-                    self.dividend,
+                    (yield from self.dividend()),
                     float(0) if block['membersCount'] == 0 else
-                    self.parameters['c'] * block['monetaryMass'] / block['membersCount']
+                    parameters['c'] * block['monetaryMass'] / block['membersCount']
                 )
             )
 
@@ -160,17 +162,25 @@ class Community(QObject):
         :param int x: Get the 'x' older block with UD in it
         :return: The last block with universal dividend.
         """
-        udblocks = yield from self.bma_access.future_request(qtbma.blockchain.UD)
-        blocks = udblocks['result']['blocks']
-        if len(blocks) > 0:
-            index = len(blocks)-(1+x)
-            if index < 0:
-                index = 0
-            block_number = blocks[index]
-            block = yield from self.bma_access.future_request(qtbma.blockchain.Block,
-                                 req_args={'number': block_number})
-            return block
-        else:
+        try:
+            udblocks = yield from self.bma_access.future_request(bma.blockchain.UD)
+            blocks = udblocks['result']['blocks']
+            if len(blocks) > 0:
+                index = len(blocks)-(1+x)
+                if index < 0:
+                    index = 0
+                block_number = blocks[index]
+                block = yield from self.bma_access.future_request(bma.blockchain.Block,
+                                     req_args={'number': block_number})
+                return block
+            else:
+                return None
+        except ValueError as e:
+            if '404' in e:
+                logging.debug(str(e))
+                return None
+        except NoPeerAvailable as e:
+            logging.debug(str(e))
             return None
 
     @asyncio.coroutine
@@ -181,10 +191,13 @@ class Community(QObject):
         :return: The monetary mass value
         """
         # Get cached block by block number
-        block_number = self.network.latest_block_number
-        block = yield from self.bma_access.future_request(self, qtbma.blockchain.Block,
-                             req_args={'number': block_number})
-        return block['monetaryMass']
+        block_number = self.network.current_blockid.number
+        if block_number:
+            block = yield from self.bma_access.future_request(bma.blockchain.Block,
+                                 req_args={'number': block_number})
+            return block['monetaryMass']
+        else:
+            return 0
 
     @asyncio.coroutine
     def nb_members(self):
@@ -195,14 +208,35 @@ class Community(QObject):
         """
         try:
             # Get cached block by block number
-            block_number = self.network.latest_block_number
-            block = yield from self.bma_access.future_request(qtbma.blockchain.Block,
+            block_number = self.network.current_blockid.number
+            block = yield from self.bma_access.future_request(bma.blockchain.Block,
                                  req_args={'number': block_number})
             return block['membersCount']
         except ValueError as e:
             if '404' in e:
                 return 0
         except NoPeerAvailable as e:
+            logging.debug(str(e))
+            return 0
+
+    @asyncio.coroutine
+    def time(self):
+        """
+        Get the blockchain time
+        :return: The community blockchain time
+        :rtype: int
+        """
+        try:
+            # Get cached block by block number
+            block_number = self.network.current_blockid.number
+            block = yield from self.bma_access.future_request(bma.blockchain.Block,
+                                 req_args={'number': block_number})
+            return block['medianTime']
+        except ValueError as e:
+            if '404' in e:
+                return 0
+        except NoPeerAvailable as e:
+            logging.debug(str(e))
             return 0
 
     @property
@@ -230,7 +264,7 @@ class Community(QObject):
         """
         Return community parameters in bma format
         """
-        return self.bma_access.future_request(qtbma.blockchain.Parameters)
+        return self.bma_access.future_request(bma.blockchain.Parameters)
 
     @asyncio.coroutine
     def certification_expired(self, certtime):
@@ -238,7 +272,8 @@ class Community(QObject):
         Return True if the certificaton time is too old
         """
         parameters = yield from self.parameters()
-        return time.time() - certtime > parameters['sigValidity']
+        blockchain_time = yield from self.time()
+        return blockchain_time - certtime > parameters['sigValidity']
 
     def add_node(self, node):
         """
@@ -264,10 +299,12 @@ class Community(QObject):
         :param int number: The block number. If none, returns current block.
         """
         if number is None:
-            data = self.bma_access.future_request(qtbma.blockchain.Current)
+            block_number = self.network.current_blockid.number
+            data = yield from self.bma_access.future_request(bma.blockchain.Block,
+                                 req_args={'number': block_number})
         else:
             logging.debug("Requesting block {0}".format(number))
-            data = self.bma_access.future_request(qtbma.blockchain.Block,
+            data = yield from self.bma_access.future_request(bma.blockchain.Block,
                                 req_args={'number': number})
         return data
 
@@ -278,11 +315,16 @@ class Community(QObject):
 
         :return: The current block ID as [NUMBER-HASH] format.
         """
-        block = yield from self.bma_access.future_request(qtbma.blockchain.Current)
-        signed_raw = "{0}{1}\n".format(block['raw'], block['signature'])
-        block_hash = hashlib.sha1(signed_raw.encode("ascii")).hexdigest().upper()
-        block_number = block['number']
-        return {'number': block_number, 'hash': block_hash}
+        try:
+            block_number = self.network.current_blockid.number
+            block = yield from self.bma_access.future_request(bma.blockchain.Block,
+                                 req_args={'number': block_number})
+            signed_raw = "{0}{1}\n".format(block['raw'], block['signature'])
+        except ValueError as e:
+            if '404' in str(e):
+                return BlockId.empty()
+
+        return Block.from_signed_raw(signed_raw).blockid
 
     @asyncio.coroutine
     def members_pubkeys(self):
@@ -291,7 +333,7 @@ class Community(QObject):
 
         :return: All members pubkeys.
         """
-        memberships = yield from self.bma_access.future_request(qtbma.wot.Members)
+        memberships = yield from self.bma_access.future_request(bma.wot.Members)
         return [m['pubkey'] for m in memberships["results"]]
 
     def start_coroutines(self):
@@ -300,6 +342,9 @@ class Community(QObject):
     def stop_coroutines(self):
         self.network.stop_coroutines()
 
+    def rollback_cache(self):
+        self._bma_access.rollback()
+
     def jsonify(self):
         """
         Jsonify the community datas.
diff --git a/src/cutecoin/core/config.py b/src/cutecoin/core/config.py
index d05225baad61fc31a0cbc2e59e77ef4289c8cb95..bd3446891e380eb8bb3fc0644f47bfd8771a1b3c 100644
--- a/src/cutecoin/core/config.py
+++ b/src/cutecoin/core/config.py
@@ -42,7 +42,7 @@ def parse_arguments(argv):
     (options, args) = parser.parse_args(argv)
 
     if options.debug:
-        logging.basicConfig(format='%(levelname)s:%(module)s:%(message)s',
+        logging.basicConfig(format='%(levelname)s:%(module)s:%(funcName)s:%(message)s',
             level=logging.DEBUG)
     elif options.verbose:
         logging.basicConfig(format='%(levelname)s:%(message)s',
diff --git a/src/cutecoin/core/graph.py b/src/cutecoin/core/graph.py
index 96576a1315c2925116e4f63af2b24fc04383e104..669461734d288e1265e213c884b055153e49faec 100644
--- a/src/cutecoin/core/graph.py
+++ b/src/cutecoin/core/graph.py
@@ -4,6 +4,7 @@ import asyncio
 from PyQt5.QtCore import QLocale, QDateTime
 from ..core.registry import Identity, BlockchainState
 from ..tools.decorators import asyncify
+from ..tools.exceptions import NoPeerAvailable
 from cutecoin.gui.views.wot import NODE_STATUS_HIGHLIGHTED, NODE_STATUS_OUT, ARC_STATUS_STRONG, ARC_STATUS_WEAK
 
 
@@ -55,13 +56,28 @@ class Graph(object):
         """
         path = list()
 
+        # if from_identity has no certifications, we can not make a path
+        certifier_list = yield from from_identity.unique_valid_certifiers_of(self.app.identities_registry, self.community)
+        certified_list = yield from from_identity.unique_valid_certified_by(self.app.identities_registry, self.community)
+        print (certifier_list, certified_list)
+        if not certifier_list and not certified_list:
+            logging.debug('from_identity has no certifications : can not calculate wot path')
+            return path
+
+        # if to_identity has no certifications, we can not make a path
+        certifier_list = yield from to_identity.unique_valid_certifiers_of(self.app.identities_registry, self.community)
+        certified_list = yield from to_identity.unique_valid_certified_by(self.app.identities_registry, self.community)
+        if not certifier_list and not certified_list:
+            logging.debug('to_identity has no certifications : can not calculate wot path')
+            return path
+
         logging.debug("path between %s to %s..." % (from_identity.uid, to_identity.uid))
         if from_identity.pubkey not in self._graph.keys():
             self.add_identity(from_identity)
-            certifier_list = yield from from_identity.certifiers_of(self.app.identities_registry,
+            certifier_list = yield from from_identity.unique_valid_certifiers_of(self.app.identities_registry,
                                                                     self.community)
             yield from self.add_certifier_list(certifier_list, from_identity, to_identity)
-            certified_list = yield from from_identity.certified_by(self.app.identities_registry,
+            certified_list = yield from from_identity.unique_valid_certified_by(self.app.identities_registry,
                                                                    self.community)
             yield from self.add_certified_list(certified_list, from_identity, to_identity)
 
@@ -69,7 +85,7 @@ class Graph(object):
             # recursively feed graph searching for account node...
             yield from self.explore_to_find_member(to_identity,
                                                    self._graph[from_identity.pubkey]['connected'], list())
-        if len(self._graph[from_identity.pubkey]['connected']) > 0:
+        if len(self._graph[from_identity.pubkey]['connected']) > 0 and to_identity.pubkey in self._graph:
             # calculate path of nodes between identity and to_identity
             path = yield from self.find_shortest_path(self._graph[from_identity.pubkey],
                                                       self._graph[to_identity.pubkey])
@@ -89,7 +105,7 @@ class Graph(object):
         :param list connected:  Optional, default=None, Pubkey list of the connected nodes
         around the current scanned node
         :param list done:       Optional, default=None, List of node already scanned
-        :return:
+        :return: False when the identity is added in the graph
         """
         # functions keywords args are persistent... Need to reset it with None trick
         connected = connected or (list() and (connected is None))
@@ -107,23 +123,23 @@ class Graph(object):
                                                                                      self.community)
             yield from self.add_certifier_list(certifier_list, identity_selected, identity)
             if identity.pubkey in tuple(self._graph.keys()):
-                return False
+                return True
             certified_list = yield from identity_selected.unique_valid_certified_by(self.app.identities_registry,
                                                                                     self.community)
             yield from self.add_certified_list(certified_list, identity_selected, identity)
             if identity.pubkey in tuple(self._graph.keys()):
-                return False
+                return True
             if node['id'] not in tuple(done):
                 done.append(node['id'])
             if len(done) >= len(self._graph):
-                return True
-            result = yield from self.explore_to_find_member(identity,
+                return False
+            found = yield from self.explore_to_find_member(identity,
                                                             self._graph[identity_selected.pubkey]['connected'],
                                                             done)
-            if not result:
-                return False
+            if found:
+                return True
 
-        return True
+        return False
 
     @asyncio.coroutine
     def find_shortest_path(self, start, end, path=None):
@@ -160,75 +176,79 @@ class Graph(object):
         :return:
         """
         if self.community:
-            yield from self.refresh_signature_validity()
-            #  add certifiers of uid
-            for certifier in tuple(certifier_list):
-                # add only valid certification...
-                if (time.time() - certifier['cert_time']) > self.signature_validity:
-                    continue
-                # new node
-                if certifier['identity'].pubkey not in self._graph.keys():
-                    node_status = 0
-                    is_member = yield from certifier['identity'].is_member(self.community)
-                    if certifier['identity'].pubkey == identity_account.pubkey:
-                        node_status += NODE_STATUS_HIGHLIGHTED
-                    if is_member is False:
-                        node_status += NODE_STATUS_OUT
-                    self._graph[certifier['identity'].pubkey] = {
-                        'id': certifier['identity'].pubkey,
-                        'arcs': list(),
-                        'text': certifier['identity'].uid,
-                        'tooltip': certifier['identity'].pubkey,
-                        'status': node_status,
-                        'connected': [identity.pubkey]
-                    }
-
-                # keep only the latest certification
-                if self._graph[certifier['identity'].pubkey]['arcs']:
-                    if certifier['cert_time'] < self._graph[certifier['identity'].pubkey]['arcs'][0]['cert_time']:
+            try:
+                yield from self.refresh_signature_validity()
+                #  add certifiers of uid
+                for certifier in tuple(certifier_list):
+                    # add only valid certification...
+                    if (time.time() - certifier['cert_time']) > self.signature_validity:
                         continue
-                # display validity status
-                if (time.time() - certifier['cert_time']) > self.ARC_STATUS_STRONG_time:
-                    arc_status = ARC_STATUS_WEAK
-                else:
-                    arc_status = ARC_STATUS_STRONG
+                    # new node
+                    if certifier['identity'].pubkey not in self._graph.keys():
+                        node_status = 0
+                        is_member = yield from certifier['identity'].is_member(self.community)
+                        if certifier['identity'].pubkey == identity_account.pubkey:
+                            node_status += NODE_STATUS_HIGHLIGHTED
+                        if is_member is False:
+                            node_status += NODE_STATUS_OUT
+                        self._graph[certifier['identity'].pubkey] = {
+                            'id': certifier['identity'].pubkey,
+                            'arcs': list(),
+                            'text': certifier['identity'].uid,
+                            'tooltip': certifier['identity'].pubkey,
+                            'status': node_status,
+                            'connected': [identity.pubkey]
+                        }
 
-                arc = {
-                    'id': identity.pubkey,
-                    'status': arc_status,
-                    'tooltip': QLocale.toString(
-                        QLocale(),
-                        QDateTime.fromTime_t(certifier['cert_time'] + self.signature_validity).date(),
-                        QLocale.dateFormat(QLocale(), QLocale.ShortFormat)
-                    ),
-                    'cert_time': certifier['cert_time']
-                }
+                    # keep only the latest certification
+                    if self._graph[certifier['identity'].pubkey]['arcs']:
+                        if certifier['cert_time'] < self._graph[certifier['identity'].pubkey]['arcs'][0]['cert_time']:
+                            continue
+                    # display validity status
+                    if (time.time() - certifier['cert_time']) > self.ARC_STATUS_STRONG_time:
+                        arc_status = ARC_STATUS_WEAK
+                    else:
+                        arc_status = ARC_STATUS_STRONG
 
-                if certifier['block_number']:
-                    current_validations = self.community.network.latest_block_number - certifier['block_number']
-                else:
-                    current_validations = 0
-                members_pubkeys = yield from self.community.members_pubkeys()
-                max_validation = self.community.network.fork_window(members_pubkeys) + 1
+                    arc = {
+                        'id': identity.pubkey,
+                        'status': arc_status,
+                        'tooltip': QLocale.toString(
+                            QLocale(),
+                            QDateTime.fromTime_t(certifier['cert_time'] + self.signature_validity).date(),
+                            QLocale.dateFormat(QLocale(), QLocale.ShortFormat)
+                        ),
+                        'cert_time': certifier['cert_time']
+                    }
 
-                # Current validation can be negative if self.community.network.latest_block_number
-                # is not refreshed yet
-                if max_validation > current_validations > 0:
-                    if self.app.preferences['expert_mode']:
-                        arc['validation_text'] = "{0}/{1}".format(current_validations,
-                                                                  max_validation)
+                    current_block_number = self.community.network.current_blockid.number
+                    if current_block_number and certifier['block_number']:
+                        current_confirmations = current_block_number - certifier['block_number'] + 1
                     else:
-                        validation = current_validations / max_validation * 100
-                        arc['validation_text'] = "{0} %".format(QLocale().toString(float(validation), 'f', 0))
-                else:
-                    arc['validation_text'] = None
+                        current_confirmations = 0
+                    members_pubkeys = yield from self.community.members_pubkeys()
+                    max_confirmation = self.community.network.fork_window(members_pubkeys) + 1
 
-                #  add arc to certifier
-                self._graph[certifier['identity'].pubkey]['arcs'].append(arc)
-                # if certifier node not in identity nodes
-                if certifier['identity'].pubkey not in tuple(self._graph[identity.pubkey]['connected']):
-                    # add certifier node to identity node
-                    self._graph[identity.pubkey]['connected'].append(certifier['identity'].pubkey)
+                    # Current confirmation can be negative if self.community.network.current_blockid.number
+                    # is not refreshed yet
+                    if max_confirmation > current_confirmations >= 0:
+                        if self.app.preferences['expert_mode']:
+                            arc['confirmation_text'] = "{0}/{1}".format(current_confirmations,
+                                                                      max_confirmation)
+                        else:
+                            confirmation = current_confirmations / max_confirmation * 100
+                            arc['confirmation_text'] = "{0} %".format(QLocale().toString(float(confirmation), 'f', 0))
+                    else:
+                        arc['confirmation_text'] = None
+
+                    #  add arc to certifier
+                    self._graph[certifier['identity'].pubkey]['arcs'].append(arc)
+                    # if certifier node not in identity nodes
+                    if certifier['identity'].pubkey not in tuple(self._graph[identity.pubkey]['connected']):
+                        # add certifier node to identity node
+                        self._graph[identity.pubkey]['connected'].append(certifier['identity'].pubkey)
+            except NoPeerAvailable as e:
+                logging.debug(str(e))
 
     @asyncio.coroutine
     def add_certified_list(self, certified_list, identity, identity_account):
@@ -239,81 +259,87 @@ class Graph(object):
         :param identity identity_account:   Account identity instance
         :return:
         """
-        yield from self.refresh_signature_validity()
-        # add certified by uid
-        for certified in tuple(certified_list):
-            # add only valid certification...
-            if (time.time() - certified['cert_time']) > self.signature_validity:
-                continue
-            if certified['identity'].pubkey not in self._graph.keys():
-                node_status = 0
-                is_member = yield from certified['identity'].is_member(self.community)
-                if certified['identity'].pubkey == identity_account.pubkey:
-                    node_status += NODE_STATUS_HIGHLIGHTED
-                if is_member is False:
-                    node_status += NODE_STATUS_OUT
-                self._graph[certified['identity'].pubkey] = {
-                    'id': certified['identity'].pubkey,
-                    'arcs': list(),
-                    'text': certified['identity'].uid,
-                    'tooltip': certified['identity'].pubkey,
-                    'status': node_status,
-                    'connected': [identity.pubkey]
-                }
-            # display validity status
-            if (time.time() - certified['cert_time']) > self.ARC_STATUS_STRONG_time:
-                arc_status = ARC_STATUS_WEAK
-            else:
-                arc_status = ARC_STATUS_STRONG
-            arc = {
-                'id': certified['identity'].pubkey,
-                'status': arc_status,
-                'tooltip': QLocale.toString(
-                    QLocale(),
-                    QDateTime.fromTime_t(certified['cert_time'] + self.signature_validity).date(),
-                    QLocale.dateFormat(QLocale(), QLocale.ShortFormat)
-                ),
-                'cert_time': certified['cert_time']
-            }
 
-            if certified['block_number']:
-                current_validations = self.community.network.latest_block_number - certified['block_number']
-            else:
-                current_validations = 0
-            members_pubkeys = yield from self.community.members_pubkeys()
-            max_validations = self.community.network.fork_window(members_pubkeys) + 1
+        if self.community:
+            try:
+                yield from self.refresh_signature_validity()
+                # add certified by uid
+                for certified in tuple(certified_list):
+                    # add only valid certification...
+                    if (time.time() - certified['cert_time']) > self.signature_validity:
+                        continue
+                    if certified['identity'].pubkey not in self._graph.keys():
+                        node_status = 0
+                        is_member = yield from certified['identity'].is_member(self.community)
+                        if certified['identity'].pubkey == identity_account.pubkey:
+                            node_status += NODE_STATUS_HIGHLIGHTED
+                        if is_member is False:
+                            node_status += NODE_STATUS_OUT
+                        self._graph[certified['identity'].pubkey] = {
+                            'id': certified['identity'].pubkey,
+                            'arcs': list(),
+                            'text': certified['identity'].uid,
+                            'tooltip': certified['identity'].pubkey,
+                            'status': node_status,
+                            'connected': [identity.pubkey]
+                        }
+                    # display validity status
+                    if (time.time() - certified['cert_time']) > self.ARC_STATUS_STRONG_time:
+                        arc_status = ARC_STATUS_WEAK
+                    else:
+                        arc_status = ARC_STATUS_STRONG
+                    arc = {
+                        'id': certified['identity'].pubkey,
+                        'status': arc_status,
+                        'tooltip': QLocale.toString(
+                            QLocale(),
+                            QDateTime.fromTime_t(certified['cert_time'] + self.signature_validity).date(),
+                            QLocale.dateFormat(QLocale(), QLocale.ShortFormat)
+                        ),
+                        'cert_time': certified['cert_time']
+                    }
 
-            if max_validations > current_validations > 0:
-                if self.app.preferences['expert_mode']:
-                    arc['validation_text'] = "{0}/{1}".format(current_validations,
-                                                              max_validations)
-                else:
-                    validation = current_validations / max_validations * 100
-                    validation = 100 if validation > 100 else validation
-                    arc['validation_text'] = "{0} %".format(QLocale().toString(float(validation), 'f', 0))
-            else:
-                arc['validation_text'] = None
+                    current_block_number = self.community.network.current_blockid.number
+                    if current_block_number and certified['block_number']:
+                        current_confirmations = current_block_number - certified['block_number'] + 1
+                    else:
+                        current_confirmations = 0
+                    members_pubkeys = yield from self.community.members_pubkeys()
+                    max_confirmations = self.community.network.fork_window(members_pubkeys) + 1
+
+                    if max_confirmations > current_confirmations >= 0:
+                        if self.app.preferences['expert_mode']:
+                            arc['confirmation_text'] = "{0}/{1}".format(current_confirmations,
+                                                                      max_confirmations)
+                        else:
+                            confirmation = current_confirmations / max_confirmations * 100
+                            confirmation = 100 if confirmation > 100 else confirmation
+                            arc['confirmation_text'] = "{0} %".format(QLocale().toString(float(confirmation), 'f', 0))
+                    else:
+                        arc['confirmation_text'] = None
 
-            # replace old arc if this one is more recent
-            new_arc = True
-            index = 0
-            for a in self._graph[identity.pubkey]['arcs']:
-                # if same arc already exists...
-                if a['id'] == arc['id']:
-                    # if arc more recent, dont keep old one...
-                    if arc['cert_time'] >= a['cert_time']:
-                        self._graph[identity.pubkey]['arcs'][index] = arc
-                    new_arc = False
-                index += 1
+                    # replace old arc if this one is more recent
+                    new_arc = True
+                    index = 0
+                    for a in self._graph[identity.pubkey]['arcs']:
+                        # if same arc already exists...
+                        if a['id'] == arc['id']:
+                            # if arc more recent, dont keep old one...
+                            if arc['cert_time'] >= a['cert_time']:
+                                self._graph[identity.pubkey]['arcs'][index] = arc
+                            new_arc = False
+                        index += 1
 
-            #  if arc not in graph...
-            if new_arc:
-                # add arc in graph
-                self._graph[identity.pubkey]['arcs'].append(arc)
-            # if certified node not in identity nodes
-            if certified['identity'].pubkey not in tuple(self._graph[identity.pubkey]['connected']):
-                # add certified node to identity node
-                self._graph[identity.pubkey]['connected'].append(certified['identity'].pubkey)
+                    #  if arc not in graph...
+                    if new_arc:
+                        # add arc in graph
+                        self._graph[identity.pubkey]['arcs'].append(arc)
+                    # if certified node not in identity nodes
+                    if certified['identity'].pubkey not in tuple(self._graph[identity.pubkey]['connected']):
+                        # add certified node to identity node
+                        self._graph[identity.pubkey]['connected'].append(certified['identity'].pubkey)
+            except NoPeerAvailable as e:
+                logging.debug(str(e))
 
     def add_identity(self, identity, status=None, arcs=None, connected=None):
         """
diff --git a/src/cutecoin/core/money/quant_zerosum.py b/src/cutecoin/core/money/quant_zerosum.py
index 9c410877997a8a36c8a27c0ff7972cc1bd44f1ba..01330dc5666ff9b7915e955a8d72e0748ddd7c37 100644
--- a/src/cutecoin/core/money/quant_zerosum.py
+++ b/src/cutecoin/core/money/quant_zerosum.py
@@ -49,10 +49,8 @@ class QuantitativeZSum:
     @asyncio.coroutine
     def localized(self, units=False, international_system=False):
         value = yield from self.value()
-        if international_system:
-            pass
-        else:
-            localized_value = QLocale().toString(float(value), 'f', 0)
+
+        localized_value = QLocale().toString(float(value), 'f', 0)
 
         if units:
             return QCoreApplication.translate("QuantitativeZSum",
@@ -64,5 +62,5 @@ class QuantitativeZSum:
 
     @asyncio.coroutine
     def diff_localized(self, units=False, international_system=False):
-        localized = yield from  Quantitative(self.amount, self.community, self.app).localized(units, international_system)
+        localized = yield from Quantitative(self.amount, self.community, self.app).localized(units, international_system)
         return localized
\ No newline at end of file
diff --git a/src/cutecoin/core/money/quantitative.py b/src/cutecoin/core/money/quantitative.py
index 29d4a58bdf9bbb766b24d13678bff44ecca549f2..b14f919b7e505cf9911fadeb389adadcb49a0548 100644
--- a/src/cutecoin/core/money/quantitative.py
+++ b/src/cutecoin/core/money/quantitative.py
@@ -51,7 +51,8 @@ class Quantitative():
 
         if prefix_index < len(prefixes):
             prefix = prefixes[prefix_index]
-            localized_value = QLocale().toString(float(scientific_value), 'f', 3)
+            localized_value = QLocale().toString(float(scientific_value), 'f',
+                                                 self.app.preferences['digits_after_comma'])
         else:
             localized_value = QLocale().toString(float(value), 'f', 0)
 
diff --git a/src/cutecoin/core/money/relative.py b/src/cutecoin/core/money/relative.py
index 15cde10ef7bf7bf7193c7f1fa1784bd0819bad98..44c3848b25fd0c7dcb8be77fb4256b1b17668ccb 100644
--- a/src/cutecoin/core/money/relative.py
+++ b/src/cutecoin/core/money/relative.py
@@ -57,9 +57,11 @@ 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), 'f',
+                                                 self.app.preferences['digits_after_comma'])
         else:
-            localized_value = QLocale().toString(float(value), 'f', self.app.preferences['digits_after_comma'])
+            localized_value = QLocale().toString(float(value), 'f',
+                                                 self.app.preferences['digits_after_comma'])
 
         return localized_value, prefix
 
diff --git a/src/cutecoin/core/money/relative_zerosum.py b/src/cutecoin/core/money/relative_zerosum.py
index 4202a72a5fd53a58fe301a76ea62ffeb4ab5f944..974faa0705cf16bd4a774fdda7d27c6d4ca4f27b 100644
--- a/src/cutecoin/core/money/relative_zerosum.py
+++ b/src/cutecoin/core/money/relative_zerosum.py
@@ -41,6 +41,7 @@ class RelativeZSum:
             relative_value = self.amount / float(dividend)
             relative_median = median / dividend
         else:
+            relative_value = self.amount
             relative_median = 0
         return relative_value - relative_median
 
@@ -51,10 +52,8 @@ class RelativeZSum:
     @asyncio.coroutine
     def localized(self, units=False, international_system=False):
         value = yield from self.value()
-        if international_system:
-            pass
-        else:
-            localized_value = QLocale().toString(float(value), 'f', self.app.preferences['digits_after_comma'])
+
+        localized_value = QLocale().toString(float(value), 'f', self.app.preferences['digits_after_comma'])
 
         if units:
             return QCoreApplication.translate("RelativeZSum", RelativeZSum._REF_STR_)\
@@ -64,12 +63,9 @@ class RelativeZSum:
             return localized_value
 
     def diff_localized(self, units=False, international_system=False):
-        value = self.differential()
+        value = yield from self.differential()
 
-        if international_system:
-            pass
-        else:
-            localized_value = QLocale().toString(float(value), 'f', self.app.preferences['digits_after_comma'])
+        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/cutecoin/core/net/api/bma/__init__.py b/src/cutecoin/core/net/api/bma/__init__.py
index 9e6132c085043cb39514de46798e72763aa138a7..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 100644
--- a/src/cutecoin/core/net/api/bma/__init__.py
+++ b/src/cutecoin/core/net/api/bma/__init__.py
@@ -1,150 +0,0 @@
-
-
-__all__ = ['api']
-
-from PyQt5.QtNetwork import QNetworkRequest, QNetworkReply
-from PyQt5.QtCore import QUrl, QUrlQuery, QTimer, QObject, pyqtSlot
-import logging
-import asyncio
-import json
-
-logger = logging.getLogger("ucoin")
-
-PROTOCOL_VERSION = "1"
-
-@asyncio.coroutine
-def timeout(reply, seconds):
-    #logging.debug("Sleep timeout...")
-    yield from asyncio.sleep(seconds)
-    if reply.isRunning():
-        #logging.debug("Reply aborted because of timeout")
-        reply.abort()
-
-
-class ConnectionHandler(object):
-    """Helper class used by other API classes to ease passing server connection information."""
-
-    def __init__(self, network_manager, server, port):
-        """
-        Arguments:
-        - `server`: server hostname
-        - `port`: port number
-        """
-
-        self.network_manager = network_manager
-        self.server = server
-        self.port = port
-
-    def __str__(self):
-        return 'connection info: %s:%d' % (self.server, self.port)
-
-
-class API(object):
-    """APIRequest is a class used as an interface. The intermediate derivated classes are the modules and the leaf classes are the API requests."""
-
-    def __init__(self, conn_handler, module):
-        """
-        Asks a module in order to create the url used then by derivated classes.
-
-        Arguments:
-        - `module`: module name
-        - `connection_handler`: connection handler
-        """
-
-        self.module = module
-        self.conn_handler = conn_handler
-        self.headers = {}
-
-    def reverse_url(self, path):
-        """
-        Reverses the url using self.url and path given in parameter.
-
-        Arguments:
-        - `path`: the request path
-        """
-
-        server, port = self.conn_handler.server, self.conn_handler.port
-
-        url = 'http://%s:%d/%s' % (server, port, self.module)
-        return url + path
-
-    def get(self, **kwargs):
-        """wrapper of overloaded __get__ method."""
-
-        return self.__get__(**kwargs)
-
-    def post(self, **kwargs):
-        """wrapper of overloaded __post__ method."""
-
-        logger.debug('do some work with')
-
-        data = self.__post__(**kwargs)
-
-        logger.debug('and send back')
-
-        return data
-
-    def __get__(self, **kwargs):
-        """interface purpose for GET request"""
-
-        pass
-
-    def __post__(self, **kwargs):
-        """interface purpose for POST request"""
-
-        pass
-
-    def requests_get(self, path, **kwargs):
-        """
-        Requests GET wrapper in order to use API parameters.
-
-        Arguments:
-        - `path`: the request path
-        """
-        query = QUrlQuery()
-        for k,v in kwargs.items():
-            query.addQueryItem(k, v);
-        url = QUrl(self.reverse_url(path))
-        url.setQuery(query)
-        request = QNetworkRequest(url)
-        logging.debug(url.toString())
-
-        reply = self.conn_handler.network_manager.get(request)
-        asyncio.async(timeout(reply, 15))
-
-        return reply
-
-    def requests_post(self, path, **kwargs):
-        """
-        Requests POST wrapper in order to use API parameters.
-
-        Arguments:
-        - `path`: the request path
-        """
-        if 'self_' in kwargs:
-            kwargs['self'] = kwargs.pop('self_')
-
-        logging.debug("POST : {0}".format(kwargs))
-        post_data = QUrlQuery()
-        for k, v in kwargs.items():
-            if type(k) is str:
-                k = k.replace("+", "%2b")
-            if type(v) is str:
-                v = v.replace("+", "%2b")
-            else:
-                v = json.dumps(v)
-                v = v.replace("+", "%2b")
-            post_data.addQueryItem(k, v)
-        url = QUrl(self.reverse_url(path))
-        url.setQuery(post_data)
-
-        request = QNetworkRequest(url)
-        request.setHeader(QNetworkRequest.ContentTypeHeader,
-            "application/x-www-form-urlencoded")
-        reply = self.conn_handler.network_manager.post(request,
-                             post_data.toString(QUrl.FullyEncoded).encode('utf-8'))
-        logging.debug(url.toString(QUrl.FullyEncoded))
-        asyncio.async(timeout(reply, 15))
-        return reply
-
-from . import network, blockchain, tx, wot, ud, node
diff --git a/src/cutecoin/core/net/api/bma/access.py b/src/cutecoin/core/net/api/bma/access.py
index 1ee9ab476890087366aa0b3bef1750eb580f6749..9c4210cff5523dec87e05a2368a87a97812a227d 100644
--- a/src/cutecoin/core/net/api/bma/access.py
+++ b/src/cutecoin/core/net/api/bma/access.py
@@ -1,13 +1,14 @@
 from PyQt5.QtCore import QObject, pyqtSlot
 from PyQt5.QtNetwork import QNetworkReply
-from . import wot
-from . import blockchain, ConnectionHandler
+from ucoinpy.api import bma
 from .....tools.exceptions import NoPeerAvailable
 from ..... import __version__
 import logging
-import json
+from aiohttp.errors import ClientError
 import asyncio
 import random
+import jsonschema
+from distutils.version import StrictVersion
 
 
 class BmaAccess(QObject):
@@ -15,7 +16,7 @@ class BmaAccess(QObject):
     This class is used to access BMA API.
     """
 
-    __saved_requests = [str(blockchain.Block), str(blockchain.Parameters)]
+    __saved_requests = [str(bma.blockchain.Block), str(bma.blockchain.Parameters)]
 
     def __init__(self, data, network):
         """
@@ -26,6 +27,7 @@ class BmaAccess(QObject):
         """
         super().__init__()
         self._data = data
+        self._rollback_to = None
         self._pending_requests = {}
         self._network = network
 
@@ -51,11 +53,12 @@ class BmaAccess(QObject):
         :param dict data: The cache in json format
         """
         data = {}
-        for entry in json_data:
+        for entry in json_data['entries']:
             key = entry['key']
             cache_key = (key[0], key[1], key[2], key[3], key[4])
             data[cache_key] = entry['value']
         self._data = data
+        self._rollback_to = json_data['rollback']
 
     def jsonify(self):
         """
@@ -68,7 +71,8 @@ class BmaAccess(QObject):
         for d in data:
             entries.append({'key': d,
                             'value': data[d]})
-        return entries
+        return {'rollback': self._rollback_to,
+                'entries': entries}
 
     @staticmethod
     def _gen_cache_key(request, req_args, get_args):
@@ -88,9 +92,15 @@ class BmaAccess(QObject):
         """
         def ordered(obj):
             if isinstance(obj, dict):
-                return sorted((k, ordered(v)) for k, v in obj.items())
+                try:
+                    return sorted((k, ordered(v)) for k, v in obj.items())
+                except TypeError:
+                    return obj
             if isinstance(obj, list):
-                return sorted(ordered(x) for x in obj)
+                try:
+                    return sorted(ordered(x) for x in obj)
+                except TypeError:
+                    return obj
             else:
                 return obj
         return ordered(first) == ordered(second)
@@ -100,21 +110,47 @@ class BmaAccess(QObject):
         Get data from the cache
         :param request: The requested data
         :param cache_key: The key
-        :return:
+        :rtype: tuple[bool, dict]
         """
         cache_key = BmaAccess._gen_cache_key(request, req_args, get_args)
         if cache_key in self._data.keys():
             cached_data = self._data[cache_key]
             need_reload = True
-            if str(request) in BmaAccess.__saved_requests \
-                or cached_data['metadata']['block_hash'] == self._network.latest_block_hash:
+            # If we detected a rollback
+            # We reload if we don't know if this block changed or not
+            if self._rollback_to:
+                if request is bma.blockchain.Block:
+                    if get_args["number"] >= self._rollback_to:
+                        need_reload = True
+                if request is bma.blockchain.Parameters and self._rollback_to == 0:
+                    need_reload = True
+            elif str(request) in BmaAccess.__saved_requests \
+                or cached_data['metadata']['block_hash'] == self._network.current_blockid.sha_hash:
                 need_reload = False
             ret_data = cached_data['value']
         else:
             need_reload = True
-            ret_data = request.null_value
+            ret_data = None
         return need_reload, ret_data
 
+    def _update_rollback(self, request, req_args, get_args, data):
+        """
+        Update the rollback
+
+        If the request is a bma/blockchain/Block, we check if
+        the hash answered is the same as our hash, in which case,
+        we know that the rollback didn't reset blocks before this one
+        :param class request: A bma request class calling for data
+        :param dict req_args: Arguments to pass to the request constructor
+        :param dict get_args: Arguments to pass to the request __get__ method
+        :param dict data: Json data got from the blockchain
+        """
+        if self._rollback_to and request is bma.blockchain.Block:
+            if get_args['number'] >= self._rollback_to:
+                cache_key = BmaAccess._gen_cache_key(request, req_args, get_args)
+                if cache_key in self._data and self._data[cache_key]['value']['hash'] == data['hash']:
+                    self._rollback_to = get_args['number']
+
     def _update_cache(self, request, req_args, get_args, data):
         """
         Update data in cache and returns True if cached data changed
@@ -125,19 +161,59 @@ class BmaAccess(QObject):
         :return: True if data changed
         :rtype: bool
         """
+        self._update_rollback(request, req_args, get_args, data)
+
         cache_key = BmaAccess._gen_cache_key(request, req_args, get_args)
         if cache_key not in self._data:
             self._data[cache_key] = {'metadata': {},
                                      'value': {}}
 
-        self._data[cache_key]['metadata']['block_number'] = self._network.latest_block_number
-        self._data[cache_key]['metadata']['block_hash'] = self._network.latest_block_hash
+        self._data[cache_key]['metadata']['block_number'] = self._network.current_blockid.number
+        self._data[cache_key]['metadata']['block_hash'] = self._network.current_blockid.sha_hash
         self._data[cache_key]['metadata']['cutecoin_version'] = __version__
         if not self._compare_json(self._data[cache_key]['value'], data):
             self._data[cache_key]['value'] = data
             return True
         return False
 
+    def _invalidate_cache(self, post_request):
+        """
+        Invalidate data depending on posted request
+        :param class post_request: The posted request
+        """
+        invalidated = {bma.wot.Add: bma.wot.Lookup}
+        if post_request in invalidated:
+            invalidated_cache = self._data.copy()
+            for data in self._data:
+                if data[0] == str(invalidated[post_request]):
+                    invalidated_cache.pop(data)
+            self._data = invalidated_cache
+
+    def rollback(self):
+        """
+        When a rollback is detected, we move the rollback cursor to 0
+        """
+        self._rollback_to = 0
+
+    def filter_nodes(self, request, nodes):
+        def compare_versions(node, version):
+            if node.version and node.version != '':
+                try:
+                    return StrictVersion(node.version) > StrictVersion(version)
+                except TypeError:
+                    return False
+            else:
+                return False
+        filters = {
+            bma.ud.History: lambda n: compare_versions(n, "0.11.0"),
+            bma.tx.History: lambda n: compare_versions(n, "0.11.0")
+        }
+        if request in filters:
+            return [n for n in nodes if filters[request](n)]
+        else:
+            return nodes
+
+    @asyncio.coroutine
     def future_request(self, request, req_args={}, get_args={}):
         """
         Start a request to the network and returns a future.
@@ -148,34 +224,37 @@ class BmaAccess(QObject):
         :return: The future data
         :rtype: dict
         """
-        def handle_future_reply(reply):
-            if reply.error() == QNetworkReply.NoError:
-                strdata = bytes(reply.readAll()).decode('utf-8')
-                json_data = json.loads(strdata)
-                self._update_cache(request, req_args, get_args, json_data)
-                if not future_data.cancelled():
-                    future_data.set_result(json_data)
-            elif not future_data.cancelled():
-                future_data.set_result(request.null_value)
-
-        future_data = asyncio.Future()
         data = self._get_from_cache(request, req_args, get_args)
         need_reload = data[0]
+        json_data = data[1]
 
-        if need_reload:
-            nodes = self._network.synced_nodes
-            if len(nodes) > 0:
+        nodes = self.filter_nodes(request, self._network.synced_nodes)
+        if need_reload and len(nodes) > 0:
+            tries = 0
+            while tries < 3:
                 node = random.choice(nodes)
-                conn_handler = node.endpoint.conn_handler(self._network.network_manager)
+                conn_handler = node.endpoint.conn_handler()
                 req = request(conn_handler, **req_args)
-                reply = req.get(**get_args)
-                reply.finished.connect(lambda: handle_future_reply(reply))
-            else:
-                raise NoPeerAvailable("", len(nodes))
-        else:
-            future_data.set_result(data[1])
-        return future_data
+                try:
+                    json_data = yield from req.get(**get_args)
+                    self._update_cache(request, req_args, get_args, json_data)
+                    return json_data
+                except ValueError as e:
+                    if '404' in str(e) or '400' in str(e):
+                        raise
+                    tries += 1
+                except ClientError:
+                    tries += 1
+                except asyncio.TimeoutError:
+                    tries += 1
+                except jsonschema.ValidationError as e:
+                    logging.debug(str(e))
+                    tries += 1
+        if len(nodes) == 0 or json_data is None:
+            raise NoPeerAvailable("", len(nodes))
+        return json_data
 
+    @asyncio.coroutine
     def simple_request(self, request, req_args={}, get_args={}):
         """
         Start a request to the network but don't cache its result.
@@ -185,15 +264,30 @@ class BmaAccess(QObject):
         :param dict get_args: Arguments to pass to the request __get__ method
         :return: The returned data if cached = True else return the QNetworkReply
         """
-        nodes = self._network.synced_nodes
+        nodes = self.filter_nodes(request, self._network.synced_nodes)
         if len(nodes) > 0:
             node = random.choice(nodes)
-            req = request(node.endpoint.conn_handler(self._network.network_manager), **req_args)
-            reply = req.get(**get_args)
-            return reply
+            req = request(node.endpoint.conn_handler(), **req_args)
+            tries = 0
+            while tries < 3:
+                try:
+                    json_data = yield from req.get(**get_args)
+                    return json_data
+                except ValueError as e:
+                    if '404' in str(e) or '400' in str(e):
+                        raise
+                    tries += 1
+                except ClientError:
+                    tries += 1
+                except asyncio.TimeoutError:
+                    tries += 1
+                except jsonschema.ValidationError as e:
+                    logging.debug(str(e))
+                    tries += 1
         else:
             raise NoPeerAvailable("", len(nodes))
 
+    @asyncio.coroutine
     def broadcast(self, request, req_args={}, post_args={}):
         """
         Broadcast data to a network.
@@ -210,10 +304,22 @@ class BmaAccess(QObject):
         """
         nodes = self._network.online_nodes
         replies = []
-        for node in nodes:
-            logging.debug("Trying to connect to : " + node.pubkey)
-            conn_handler = node.endpoint.conn_handler(self._network.network_manager)
-            req = request(conn_handler, **req_args)
-            reply = req.post(**post_args)
-            replies.append(reply)
+        if len(nodes) > 0:
+            for node in nodes:
+                logging.debug("Trying to connect to : " + node.pubkey)
+                conn_handler = node.endpoint.conn_handler()
+                req = request(conn_handler, **req_args)
+                try:
+                    reply = yield from req.post(**post_args)
+                    replies.append(reply)
+                except ValueError as e:
+                    if '404' in str(e) or '400' in str(e):
+                        raise
+                except ClientError:
+                    pass
+                except asyncio.TimeoutError:
+                    pass
+            self._invalidate_cache(request)
+        else:
+            raise NoPeerAvailable("", len(nodes))
         return tuple(replies)
diff --git a/src/cutecoin/core/net/api/bma/blockchain/__init__.py b/src/cutecoin/core/net/api/bma/blockchain/__init__.py
deleted file mode 100644
index eecdfa3de4798cc7a24ef953e7ff87bea95fed7c..0000000000000000000000000000000000000000
--- a/src/cutecoin/core/net/api/bma/blockchain/__init__.py
+++ /dev/null
@@ -1,251 +0,0 @@
-#
-# This program is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program.  If not, see <http://www.gnu.org/licenses/>.
-#
-# Authors:
-# Caner Candan <caner@candan.fr>, http://caner.candan.fr
-#
-
-from .. import API, logging
-
-logger = logging.getLogger("ucoin/blockchain")
-
-
-class Blockchain(API):
-    def __init__(self, conn_handler, module='blockchain'):
-        super(Blockchain, self).__init__(conn_handler, module)
-
-
-class Parameters(Blockchain):
-    """GET the blockchain parameters used by this node."""
-
-    def __get__(self, **kwargs):
-        return self.requests_get('/parameters', **kwargs)
-
-    null_value = {
-        'currency': "",
-        'c': 0,
-        'dt': 0,
-        'ud0': 0,
-        'sigDelay': 0,
-        'sigValidity': 0,
-        'sigQty': 0,
-        'sigWoT': 0,
-        'msValidity': 0,
-        'stepMax': 0,
-        'medianTimeBlocks': 0,
-        'avgGenTime': 0,
-        'dtDiffEval': 0,
-        'blocksRot': 0,
-        'percentRot': 0
-    }
-
-
-class Membership(Blockchain):
-    """GET/POST a Membership document."""
-
-    null_value = \
-        {
-            "pubkey": "",
-            "uid": "",
-            "sigDate": 0,
-            "memberships": []
-        }
-
-    def __init__(self, conn_handler, search=None):
-        super().__init__(conn_handler)
-        self.search = search
-
-    def __post__(self, **kwargs):
-        assert 'membership' in kwargs
-
-        return self.requests_post('/membership', **kwargs)
-
-    def __get__(self, **kwargs):
-        assert self.search is not None
-        return self.requests_get('/memberships/%s' % self.search, **kwargs)
-
-
-class Block(Blockchain):
-    """GET/POST a block from/to the blockchain."""
-    null_value = {
-        "version": 1,
-        "nonce": 0,
-        "number": -1,
-        "powMin": 0,
-        "time": 0,
-        "medianTime": 0,
-        "membersCount": 0,
-        "monetaryMass": 0,
-        "currency": "",
-        "issuer": "",
-        "signature": "",
-        "hash": "",
-        "previousHash": "",
-        "previousIssuer": "",
-        "dividend": 0,
-        "membersChanges": [],
-        "identities": [],
-        "joiners": [],
-        "actives": [],
-        "leavers": [],
-        "excluded": [],
-        "certifications": [],
-        "transactions": [],
-        "raw": ""
-    }
-
-    def __init__(self, conn_handler, number=None):
-        """
-        Use the number parameter in order to select a block number.
-
-        Arguments:
-        - `number`: block number to select
-        """
-
-        super(Block, self).__init__(conn_handler)
-
-        self.number = number
-
-    def __get__(self, **kwargs):
-        assert self.number is not None
-        return self.requests_get('/block/%d' % self.number, **kwargs)
-
-    def __post__(self, **kwargs):
-        assert 'block' in kwargs
-        assert 'signature' in kwargs
-
-        return self.requests_post('/block', **kwargs)
-
-
-class Current(Blockchain):
-    """GET, same as block/[number], but return last accepted block."""
-    null_value = {
-        "version": 1,
-        "nonce": 0,
-        "number": -1,
-        "powMin": 0,
-        "time": 0,
-        "medianTime": 0,
-        "membersCount": 0,
-        "monetaryMass": 0,
-        "currency": "",
-        "issuer": "",
-        "signature": "",
-        "hash": "",
-        "previousHash": None,
-        "previousIssuer": None,
-        "dividend": None,
-        "membersChanges": [],
-        "identities": [],
-        "joiners": [],
-        "actives": [],
-        "leavers": [],
-        "excluded": [],
-        "certifications": [],
-        "transactions": [],
-        "raw": ""
-    }
-
-    def __get__(self, **kwargs):
-        return self.requests_get('/current', **kwargs)
-
-
-class Hardship(Blockchain):
-    """GET hardship level for given member's fingerprint for writing next block."""
-
-    def __init__(self, conn_handler, fingerprint):
-        """
-        Use the number parameter in order to select a block number.
-
-        Arguments:
-        - `fingerprint`: member fingerprint
-        """
-
-        super(Hardship, self).__init__(conn_handler)
-
-        self.fingerprint = fingerprint
-
-    def __get__(self, **kwargs):
-        assert self.fingerprint is not None
-        return self.requests_get('/hardship/%s' % self.fingerprint.upper(), **kwargs)
-
-
-class Newcomers(Blockchain):
-    """GET, return block numbers containing newcomers."""
-
-    def __get__(self, **kwargs):
-        return self.requests_get('/with/newcomers', **kwargs)
-
-
-class Certifications(Blockchain):
-    """GET, return block numbers containing certifications."""
-
-    def __get__(self, **kwargs):
-        return self.requests_get('/with/certs', **kwargs)
-
-
-class Joiners(Blockchain):
-    """GET, return block numbers containing joiners."""
-
-    def __get__(self, **kwargs):
-        return self.requests_get('/with/joiners', **kwargs)
-
-
-class Actives(Blockchain):
-    """GET, return block numbers containing actives."""
-
-    def __get__(self, **kwargs):
-        return self.requests_get('/with/actives', **kwargs)
-
-
-class Leavers(Blockchain):
-    """GET, return block numbers containing leavers."""
-
-    def __get__(self, **kwargs):
-        return self.requests_get('/with/leavers', **kwargs)
-
-
-class Excluded(Blockchain):
-    """GET, return block numbers containing excluded."""
-
-    def __get__(self, **kwargs):
-        return self.requests_get('/with/excluded', **kwargs)
-
-
-class UD(Blockchain):
-    """GET, return block numbers containing universal dividend."""
-    null_value = \
-        {
-            "result":
-                {
-                    "blocks": []
-                }
-        }
-
-    def __get__(self, **kwargs):
-        return self.requests_get('/with/ud', **kwargs)
-
-
-class TX(Blockchain):
-    """GET, return block numbers containing transactions."""
-    null_value = \
-        {
-            "result":
-                {
-                    "blocks": []
-                }
-        }
-
-    def __get__(self, **kwargs):
-        return self.requests_get('/with/tx', **kwargs)
diff --git a/src/cutecoin/core/net/api/bma/network/__init__.py b/src/cutecoin/core/net/api/bma/network/__init__.py
deleted file mode 100644
index 252219946af9fd6471dd6f20bf3f95659173d19c..0000000000000000000000000000000000000000
--- a/src/cutecoin/core/net/api/bma/network/__init__.py
+++ /dev/null
@@ -1,35 +0,0 @@
-#
-# This program is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program.  If not, see <http://www.gnu.org/licenses/>.
-#
-# Authors:
-# Caner Candan <caner@candan.fr>, http://caner.candan.fr
-#
-
-from .. import API, logging
-
-logger = logging.getLogger("ucoin/network")
-
-
-class Network(API):
-    def __init__(self, conn_handler, module='network'):
-        super(Network, self).__init__(conn_handler, module)
-
-
-class Peering(Network):
-    """GET peering information about a peer."""
-
-    def __get__(self, **kwargs):
-        return self.requests_get('/peering', **kwargs)
-
-from . import peering
diff --git a/src/cutecoin/core/net/api/bma/network/peering/__init__.py b/src/cutecoin/core/net/api/bma/network/peering/__init__.py
deleted file mode 100644
index 8da405735be29d99eaea8c590d6c328b3d95a954..0000000000000000000000000000000000000000
--- a/src/cutecoin/core/net/api/bma/network/peering/__init__.py
+++ /dev/null
@@ -1,51 +0,0 @@
-#
-# This program is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program.  If not, see <http://www.gnu.org/licenses/>.
-#
-# Authors:
-# Caner Candan <caner@candan.fr>, http://caner.candan.fr
-#
-
-from .. import Network, logging
-
-logger = logging.getLogger("ucoin/network/peering")
-
-
-class Base(Network):
-    def __init__(self, conn_handler):
-        super(Base, self).__init__(conn_handler, 'network/peering')
-
-
-class Peers(Base):
-    """GET peering entries of every node inside the currency network."""
-
-    def __get__(self, **kwargs):
-        """creates a generator with one peering entry per iteration."""
-
-        return self.requests_get('/peers', **kwargs)
-
-    def __post__(self, **kwargs):
-        assert 'entry' in kwargs
-        assert 'signature' in kwargs
-
-        return self.requests_post('/peers', **kwargs)
-
-
-class Status(Base):
-    """POST a network status document to this node in order notify of its status."""
-
-    def __post__(self, **kwargs):
-        assert 'status' in kwargs
-        assert 'signature' in kwargs
-
-        return self.requests_post('/status', **kwargs)
diff --git a/src/cutecoin/core/net/api/bma/node/__init__.py b/src/cutecoin/core/net/api/bma/node/__init__.py
deleted file mode 100644
index fc15e1d876f8b5feaa4f4ef7713f746a2fb8d84c..0000000000000000000000000000000000000000
--- a/src/cutecoin/core/net/api/bma/node/__init__.py
+++ /dev/null
@@ -1,37 +0,0 @@
-#
-# This program is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program.  If not, see <http://www.gnu.org/licenses/>.
-#
-# Authors:
-# Caner Candan <caner@candan.fr>, http://caner.candan.fr
-#
-
-from .. import API, logging
-
-logger = logging.getLogger("ucoin/node")
-
-
-class Node(API):
-    def __init__(self, connection_handler, module='node'):
-        super(Node, self).__init__(connection_handler, module)
-
-
-class Summary(Node):
-    """GET Certification data over a member."""
-
-    def __init__(self, connection_handler, module='node'):
-        super(Summary, self).__init__(connection_handler, module)
-
-    def __get__(self, **kwargs):
-        return self.requests_get('/summary', **kwargs)
-
diff --git a/src/cutecoin/core/net/api/bma/tx/__init__.py b/src/cutecoin/core/net/api/bma/tx/__init__.py
deleted file mode 100644
index 22b63d450be93484ef6888a7872aea6e5e1ac8ad..0000000000000000000000000000000000000000
--- a/src/cutecoin/core/net/api/bma/tx/__init__.py
+++ /dev/null
@@ -1,78 +0,0 @@
-#
-# This program is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program.  If not, see <http://www.gnu.org/licenses/>.
-#
-# Authors:
-# Caner Candan <caner@candan.fr>, http://caner.candan.fr
-#
-
-from .. import API, logging
-
-logger = logging.getLogger("ucoin/tx")
-
-
-class Tx(API):
-    def __init__(self, conn_handler, module='tx'):
-        super(Tx, self).__init__(conn_handler, module)
-
-
-class Process(Tx):
-    """POST a transaction."""
-
-    def __post__(self, **kwargs):
-        assert 'transaction' in kwargs
-
-        return self.requests_post('/process', **kwargs)
-
-
-class History(Tx):
-    """Get transaction sources."""
-
-    null_value = {
-        "currency": "",
-        "pubkey": "",
-        "history": {
-            "sent": [],
-            "received": []
-        }
-    }
-
-    def __init__(self, conn_handler, pubkey, module='tx'):
-        super(Tx, self).__init__(conn_handler, module)
-        self.pubkey = pubkey
-
-    def __get__(self, **kwargs):
-        assert self.pubkey is not None
-        return self.requests_get('/history/%s' % self.pubkey, **kwargs)
-
-
-class Sources(Tx):
-    """Get transaction sources."""
-
-    null_value = {
-                "currency": "",
-                "pubkey": "",
-                "sources":
-                [
-                ]
-            }
-
-    def __init__(self, conn_handler, pubkey, module='tx'):
-        super(Tx, self).__init__(conn_handler, module)
-        self.pubkey = pubkey
-
-    def __get__(self, **kwargs):
-        assert self.pubkey is not None
-        return self.requests_get('/sources/%s' % self.pubkey, **kwargs)
-
-from . import history
\ No newline at end of file
diff --git a/src/cutecoin/core/net/api/bma/tx/history/__init__.py b/src/cutecoin/core/net/api/bma/tx/history/__init__.py
deleted file mode 100644
index 471c4579c0eee3ebe9c5b7582e0fa84ad28601e9..0000000000000000000000000000000000000000
--- a/src/cutecoin/core/net/api/bma/tx/history/__init__.py
+++ /dev/null
@@ -1,41 +0,0 @@
-#
-# This program is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program.  If not, see <http://www.gnu.org/licenses/>.
-#
-# Authors:
-# Caner Candan <caner@candan.fr>, http://caner.candan.fr
-#
-
-from .. import History, logging
-
-logger = logging.getLogger("ucoin/tx")
-
-
-class Blocks(History):
-    def __init__(self, conn_handler, pubkey, from_, to_, module='tx'):
-        super(Blocks, self).__init__(conn_handler, pubkey, module)
-        self.from_ = from_
-        self.to_ = to_
-
-    null_value = {
-        "hash": "",
-        "currency": "",
-        "pubkey": "",
-        "history": {
-            "sent": [],
-            "received": []
-        }
-    }
-
-    def __get__(self, **kwargs):
-        return self.requests_get('/history/%s/blocks/%s/%s' % (self.pubkey, self.from_, self.to_), **kwargs)
diff --git a/src/cutecoin/core/net/api/bma/ud/__init__.py b/src/cutecoin/core/net/api/bma/ud/__init__.py
deleted file mode 100644
index 39ef282632a6288d0b103b702e2ef62dfe712235..0000000000000000000000000000000000000000
--- a/src/cutecoin/core/net/api/bma/ud/__init__.py
+++ /dev/null
@@ -1,47 +0,0 @@
-#
-# This program is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program.  If not, see <http://www.gnu.org/licenses/>.
-#
-# Authors:
-# Caner Candan <caner@candan.fr>, http://caner.candan.fr
-#
-
-from .. import API, logging
-
-logger = logging.getLogger("ucoin/ud")
-
-
-class Ud(API):
-    def __init__(self, conn_handler, module='ud'):
-        super(Ud, self).__init__(conn_handler, module)
-
-
-
-class History(Ud):
-    """Get UD history."""
-
-    null_value = {
-        "currency": "",
-        "pubkey": "",
-        "history": {
-            "history": []
-        }
-    }
-
-    def __init__(self, conn_handler, pubkey, module='ud'):
-        super(Ud, self).__init__(conn_handler, module)
-        self.pubkey = pubkey
-
-    def __get__(self, **kwargs):
-        assert self.pubkey is not None
-        return self.requests_get('/history/%s' % self.pubkey, **kwargs)
diff --git a/src/cutecoin/core/net/api/bma/wot/__init__.py b/src/cutecoin/core/net/api/bma/wot/__init__.py
deleted file mode 100644
index 7fb27cffb2a7b36c0e2d8ae31882c73e98952c7e..0000000000000000000000000000000000000000
--- a/src/cutecoin/core/net/api/bma/wot/__init__.py
+++ /dev/null
@@ -1,123 +0,0 @@
-#
-# This program is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program.  If not, see <http://www.gnu.org/licenses/>.
-#
-# Authors:
-# Caner Candan <caner@candan.fr>, http://caner.candan.fr
-#
-
-from .. import API, logging
-
-logger = logging.getLogger("ucoin/wot")
-
-
-class WOT(API):
-    def __init__(self, conn_handler, module='wot'):
-        super(WOT, self).__init__(conn_handler, module)
-
-
-class Add(WOT):
-    """POST Public key data."""
-
-    def __post__(self, **kwargs):
-        assert 'pubkey' in kwargs
-        assert 'self_' in kwargs
-        assert 'other' in kwargs
-
-        return self.requests_post('/add', **kwargs)
-
-
-class Revoke(WOT):
-    """POST Public key data."""
-
-    def __post__(self, **kwargs):
-        assert 'pubkey' in kwargs
-        assert 'self_' in kwargs
-
-        return self.requests_post('/revoke', **kwargs)
-
-
-class Lookup(WOT):
-    """GET Public key data."""
-    null_value = \
-        {
-            "partial": False,
-            "results": []
-        }
-
-    def __init__(self, conn_handler, search, module='wot'):
-        super(WOT, self).__init__(conn_handler, module)
-
-        self.search = search
-
-    def __get__(self, **kwargs):
-        assert self.search is not None
-
-        return self.requests_get('/lookup/%s' % self.search, **kwargs)
-
-
-class CertifiersOf(WOT):
-    """GET Certification data over a member."""
-    null_value = \
-        {
-            "pubkey": "",
-            "uid": "",
-            "isMember": False,
-            "certifications": []
-        }
-
-    def __init__(self, conn_handler, search, module='wot'):
-        super(WOT, self).__init__(conn_handler, module)
-
-        self.search = search
-
-    def __get__(self, **kwargs):
-        assert self.search is not None
-
-        return self.requests_get('/certifiers-of/%s' % self.search, **kwargs)
-
-
-class CertifiedBy(WOT):
-    """GET Certification data from a member."""
-    null_value = \
-        {
-            "pubkey": "",
-            "uid": "",
-            "isMember": False,
-            "certifications": []
-        }
-
-    def __init__(self, conn_handler, search, module='wot'):
-        super(WOT, self).__init__(conn_handler, module)
-
-        self.search = search
-
-    def __get__(self, **kwargs):
-        assert self.search is not None
-
-        return self.requests_get('/certified-by/%s' % self.search, **kwargs)
-
-
-class Members(WOT):
-    """GET List all current members of the Web of Trust."""
-
-    null_value = \
-        {
-            "results": []
-        }
-
-    def __init__(self, conn_handler, module='wot'):
-        super(WOT, self).__init__(conn_handler, module)
-
-    def __get__(self, **kwargs):
-        return self.requests_get('/members', **kwargs)
diff --git a/src/cutecoin/core/net/endpoint.py b/src/cutecoin/core/net/endpoint.py
deleted file mode 100644
index 7ddbf792520195a42a29522a05cfa5ece496a1f9..0000000000000000000000000000000000000000
--- a/src/cutecoin/core/net/endpoint.py
+++ /dev/null
@@ -1,76 +0,0 @@
-import re
-import ucoinpy
-from .api.bma import ConnectionHandler
-
-HANDLED_API=["BASIC_MERKLED_API"]
-
-class Endpoint():
-    """
-    Describing endpoints
-    """
-    def __init__(self, pyendpoint):
-        self.pyendpoint = pyendpoint
-
-    @staticmethod
-    def from_inline(inline):
-        for api in HANDLED_API:
-            if (inline.startswith(api)):
-                if (api == "BASIC_MERKLED_API"):
-                    return BMAEndpoint.from_inline(inline)
-        return UnknownEndpoint.from_inline(inline)
-
-    @property
-    def server(self):
-        return self.pyendpoint.server
-
-    @property
-    def ipv4(self):
-        return self.pyendpoint.ipv4
-
-    @property
-    def ipv6(self):
-        return self.pyendpoint.ipv6
-
-    @property
-    def port(self):
-        return self.pyendpoint.port
-
-
-class UnknownEndpoint(Endpoint):
-
-    def __init__(self, pyendpoint):
-        super().__init__(pyendpoint)
-
-    @classmethod
-    def from_inline(cls, inline):
-        endpoint = ucoinpy.documents.peer.UnknownEndpoint.from_inline(inline)
-        return cls(endpoint)
-
-    def inline(self):
-        self.pyendpoint.inline()
-
-
-class BMAEndpoint(Endpoint):
-    re_inline = re.compile('^BASIC_MERKLED_API(?: ([a-z0-9-_.]*(?:.[a-zA-Z])))?(?: ((?:[0-9.]{1,4}){4}))?(?: ((?:[0-9a-f:]{4,5}){4,8}))?(?: ([0-9]+))$')
-
-    def __init__(self, pyendpoint):
-        super().__init__(pyendpoint)
-
-    @classmethod
-    def from_inline(cls, inline):
-        endpoint = ucoinpy.documents.peer.BMAEndpoint.from_inline(inline)
-        return cls(endpoint)
-
-    def inline(self):
-        return self.pyendpoint.inline()
-
-    def conn_handler(self, network_manager):
-        if self.server:
-            return ConnectionHandler(network_manager,
-                                     self.pyendpoint.server, self.pyendpoint.port)
-        elif self.ipv4:
-            return ConnectionHandler(network_manager, self.pyendpoint.ipv4,
-                                     self.pyendpoint.port)
-        else:
-            return ConnectionHandler(network_manager,
-                                     self.pyendpoint.ipv6, self.pyendpoint.port)
diff --git a/src/cutecoin/core/net/network.py b/src/cutecoin/core/net/network.py
index 62b26dcf1689041346cfaf8a09f058aae2d409cf..fee491afc730ffceffa253de7ce1c94eb4f65919 100644
--- a/src/cutecoin/core/net/network.py
+++ b/src/cutecoin/core/net/network.py
@@ -3,16 +3,14 @@ Created on 24 févr. 2015
 
 @author: inso
 """
-from cutecoin.core.net.node import Node
-
+from .node import Node
+from ...tools.exceptions import InvalidNodeCurrency
 import logging
 import statistics
 import time
 import asyncio
 from ucoinpy.documents.peer import Peer
-from ucoinpy.documents.block import Block
-
-from .api import bma as qtbma
+from ucoinpy.documents.block import Block, BlockId
 from PyQt5.QtCore import pyqtSignal, pyqtSlot, QObject, QTimer
 from collections import Counter
 
@@ -23,9 +21,11 @@ class Network(QObject):
     given community.
     """
     nodes_changed = pyqtSignal()
+    root_nodes_changed = pyqtSignal()
     new_block_mined = pyqtSignal(int)
+    blockchain_rollback = pyqtSignal(int)
 
-    def __init__(self, network_manager, currency, nodes):
+    def __init__(self, currency, nodes):
         """
         Constructor of a network
 
@@ -39,12 +39,11 @@ class Network(QObject):
             self.add_node(n)
         self.currency = currency
         self._must_crawl = False
-        self.network_manager = network_manager
-        self._block_found = self.latest_block_hash
+        self._block_found = self.current_blockid
         self._timer = QTimer()
 
     @classmethod
-    def create(cls, network_manager, node):
+    def create(cls, node):
         """
         Create a new network with one knew node
         Crawls the nodes from the first node to build the
@@ -53,7 +52,7 @@ class Network(QObject):
         :param node: The first knew node of the network
         """
         nodes = [node]
-        network = cls(network_manager, node.currency, nodes)
+        network = cls(node.currency, nodes)
         return network
 
     def merge_with_json(self, json_data):
@@ -64,7 +63,7 @@ class Network(QObject):
         :param dict json_data: Nodes in json format
         """
         for data in json_data:
-            node = Node.from_json(self.network_manager, self.currency, data)
+            node = Node.from_json(self.currency, data)
             if node.pubkey not in [n.pubkey for n in self.nodes]:
                 self.add_node(node)
                 logging.debug("Loading : {:}".format(data['pubkey']))
@@ -73,13 +72,19 @@ class Network(QObject):
                 other_node._uid = node.uid
                 other_node._version = node.version
                 other_node._software = node.software
-                if other_node.block['hash'] != node.block['hash']:
+                switch = False
+                if other_node.block and node.block:
+                    if other_node.block['hash'] != node.block['hash']:
+                        switch = True
+                else:
+                    switch = True
+                if switch:
                     other_node.set_block(node.block)
                     other_node.last_change = node.last_change
                     other_node.state = node.state
 
     @classmethod
-    def from_json(cls, network_manager, currency, json_data):
+    def from_json(cls, currency, json_data):
         """
         Load a network from a configured community
 
@@ -88,10 +93,9 @@ class Network(QObject):
         """
         nodes = []
         for data in json_data:
-            node = Node.from_json(network_manager, currency, data)
+            node = Node.from_json(currency, data)
             nodes.append(node)
-        network = cls(network_manager, currency, nodes)
-        # We block the signals until loading the nodes cache
+        network = cls(currency, nodes)
         return network
 
     def jsonify(self):
@@ -160,32 +164,18 @@ class Network(QObject):
         return self._root_nodes
 
     @property
-    def latest_block_number(self):
+    def current_blockid(self):
         """
         Get the latest block considered valid
         It is the most frequent last block of every known nodes
         """
-        blocks_numbers = [n.block['number'] for n in self.synced_nodes
-                          if n.block != qtbma.blockchain.Block.null_value]
-        if len(blocks_numbers) > 0:
-            return blocks_numbers[0]
+        blocks = [n.block for n in self.synced_nodes if n.block]
+        if len(blocks) > 0:
+            return BlockId(blocks[0]['number'], blocks[0]['hash'])
         else:
-            return 0
+            return BlockId.empty()
 
-    @property
-    def latest_block_hash(self):
-        """
-        Get the latest block considered valid
-        It is the most frequent last block of every known nodes
-        """
-        blocks_hash = [n.block['hash'] for n in self.synced_nodes
-                       if n.block != qtbma.blockchain.Block.null_value]
-        if len(blocks_hash) > 0:
-            return blocks_hash[0]
-        else:
-            return Block.Empty_Hash
-
-    def check_nodes_sync(self):
+    def _check_nodes_sync(self):
         """
         Check nodes sync with the following rules :
         1 : The block of the majority
@@ -194,18 +184,18 @@ class Network(QObject):
         4 : The biggest number or timestamp
         """
         # rule number 1 : block of the majority
-        blocks = [n.block['hash'] for n in self.nodes if n.block != qtbma.blockchain.Block.null_value]
+        blocks = [n.block['hash'] for n in self.online_nodes if n.block]
         blocks_occurences = Counter(blocks)
         blocks_by_occurences = {}
         for key, value in blocks_occurences.items():
-            the_block = [n.block for n in self.nodes if n.block['hash'] == key][0]
+            the_block = [n.block for n in self.online_nodes if n.block and n.block['hash'] == key][0]
             if value not in blocks_by_occurences:
                 blocks_by_occurences[value] = [the_block]
             else:
                 blocks_by_occurences[value].append(the_block)
 
         if len(blocks_by_occurences) == 0:
-            for n in [n for n in self._nodes if n.state in (Node.ONLINE, Node.DESYNCED)]:
+            for n in [n for n in self.online_nodes if n.state in (Node.ONLINE, Node.DESYNCED)]:
                 n.state = Node.ONLINE
             return
 
@@ -239,19 +229,32 @@ class Network(QObject):
         else:
             synced_block_hash = blocks_by_occurences[most_present][0]['hash']
 
-        for n in [n for n in self._nodes if n.state in (Node.ONLINE, Node.DESYNCED)]:
-            if n.block['hash'] == synced_block_hash:
+        for n in self.online_nodes:
+            if n.block and n.block['hash'] == synced_block_hash:
                 n.state = Node.ONLINE
             else:
                 n.state = Node.DESYNCED
 
+    def _check_nodes_unique(self):
+        """
+        Check that all nodes are unique by them pubkeys
+        """
+        pubkeys = set()
+        unique_nodes = []
+        for n in self.nodes:
+            if n.pubkey not in pubkeys:
+                unique_nodes.append(n)
+                pubkeys.add(n.pubkey)
+
+        self._nodes = unique_nodes
+
     def fork_window(self, members_pubkeys):
         """
         Get the medium of the fork window of the nodes members of a community
         :return: the medium fork window of knew network
         """
         fork_windows = [n.fork_window for n in self.online_nodes if n.software != ""
-                                  and n.pubkey in members_pubkeys]
+                        and n.pubkey in members_pubkeys]
         if len(fork_windows) > 0:
             return int(statistics.median(fork_windows))
         else:
@@ -263,6 +266,8 @@ class Network(QObject):
         """
         self._nodes.append(node)
         node.changed.connect(self.handle_change)
+        node.error.connect(self.handle_error)
+        node.identity_changed.connect(self.handle_identity_change)
         node.neighbour_found.connect(self.handle_new_node)
         logging.debug("{:} connected".format(node.pubkey[:5]))
 
@@ -271,12 +276,14 @@ class Network(QObject):
         Add a node to the root nodes list
         """
         self._root_nodes.append(node)
+        self.root_nodes_changed.emit()
 
     def remove_root_node(self, index):
         """
         Remove a node from the root nodes list
         """
         self._root_nodes.pop(index)
+        self.root_nodes_changed.emit()
 
     def is_root_node(self, node):
         """
@@ -294,7 +301,7 @@ class Network(QObject):
 
     def refresh_once(self):
         for node in self._nodes:
-            node.refresh()
+            node.refresh(manual=True)
 
     @asyncio.coroutine
     def discover_network(self):
@@ -306,8 +313,8 @@ class Network(QObject):
         while self.continue_crawling():
             for node in self.nodes:
                 if self.continue_crawling():
-                    yield from asyncio.sleep(2)
                     node.refresh()
+                    yield from asyncio.sleep(15)
         logging.debug("End of network discovery")
 
     @pyqtSlot(Peer, str)
@@ -315,25 +322,52 @@ class Network(QObject):
         pubkeys = [n.pubkey for n in self.nodes]
         if peer.pubkey not in pubkeys:
             logging.debug("New node found : {0}".format(peer.pubkey[:5]))
-            node = Node.from_peer(self.network_manager, self.currency, peer, pubkey)
-            self.add_node(node)
+            try:
+                node = Node.from_peer(self.currency, peer, pubkey)
+                self.add_node(node)
+                self.nodes_changed.emit()
+            except InvalidNodeCurrency as e:
+                logging.debug(str(e))
+
+    @pyqtSlot()
+    def handle_identity_change(self):
+        node = self.sender()
+        if node in self._root_nodes:
+            self.root_nodes_changed.emit()
+        self.nodes_changed.emit()
+
+    @pyqtSlot()
+    def handle_error(self):
+        node = self.sender()
+        if node.state in (Node.OFFLINE, Node.CORRUPTED) and \
+                                node.last_change + 3600 < time.time():
+            node.disconnect()
+            self.nodes.remove(node)
             self.nodes_changed.emit()
 
     @pyqtSlot()
     def handle_change(self):
         node = self.sender()
-        if node.state in (Node.ONLINE, Node.DESYNCED):
-            self.check_nodes_sync()
-            self.nodes_changed.emit()
-        else:
-            if node.last_change + 3600 < time.time():
-                node.disconnect()
-                self.nodes.remove(node)
-                self.nodes_changed.emit()
 
-        logging.debug("{0} -> {1}".format(self._block_found[:10], self.latest_block_hash[:10]))
-        if self._block_found != self.latest_block_hash and node.state == Node.ONLINE:
-            logging.debug("Latest block changed : {0}".format(self.latest_block_number))
-            self._block_found = self.latest_block_hash
-            # Do not emit block change for empty block
-            self.new_block_mined.emit(self.latest_block_number)
+        if node.state in (Node.ONLINE, Node.DESYNCED):
+            self._check_nodes_sync()
+        self._check_nodes_unique()
+        self.nodes_changed.emit()
+
+        if node.state == Node.ONLINE:
+            logging.debug("{0} -> {1}".format(self._block_found.sha_hash[:10], self.current_blockid.sha_hash[:10]))
+            if self._block_found.sha_hash != self.current_blockid.sha_hash:
+                logging.debug("Latest block changed : {0}".format(self.current_blockid.number))
+                # If new latest block is lower than the previously found one
+                # or if the previously found block is different locally
+                # than in the main chain, we declare a rollback
+                if self._block_found.number and \
+                                self.current_blockid.number <= self._block_found.number \
+                        or node.main_chain_previous_block and \
+                                        node.main_chain_previous_block['hash'] != self._block_found.sha_hash:
+
+                    self._block_found = self.current_blockid
+                    self.blockchain_rollback.emit(self.current_blockid.number)
+                else:
+                    self._block_found = self.current_blockid
+                    self.new_block_mined.emit(self.current_blockid.number)
diff --git a/src/cutecoin/core/net/node.py b/src/cutecoin/core/net/node.py
index 38aaf17d5989986e0a063ba1af6f72d8b3e359ec..e57e96cc4aad17fffc804fde731f0334a67b1574 100644
--- a/src/cutecoin/core/net/node.py
+++ b/src/cutecoin/core/net/node.py
@@ -4,25 +4,24 @@ Created on 21 févr. 2015
 @author: inso
 """
 
-from ucoinpy.documents.peer import Peer
-from ucoinpy.documents.block import Block
+from ucoinpy.documents.peer import Peer, Endpoint, BMAEndpoint
 from ...tools.exceptions import InvalidNodeCurrency
-from ..net.api import bma as qtbma
-from ..net.endpoint import Endpoint, BMAEndpoint
-from ..net.api.bma import ConnectionHandler
+from ...tools.decorators import asyncify
+from ucoinpy.api import bma as bma
+from ucoinpy.api.bma import ConnectionHandler
 
 import asyncio
+from aiohttp.errors import ClientError, DisconnectedError
 import logging
 import time
-import json
+import jsonschema
 
-from PyQt5.QtCore import QObject, pyqtSignal, pyqtSlot
-from PyQt5.QtNetwork import QNetworkReply, QNetworkRequest
+from PyQt5.QtCore import QObject, pyqtSignal
 
 
 class Node(QObject):
     """
-    A node is a peer seend from the client point of view.
+    A node is a peer send from the client point of view.
     This node can have multiple states :
     - ONLINE : The node is available for requests
     - OFFLINE: The node is disconnected
@@ -36,19 +35,21 @@ class Node(QObject):
     CORRUPTED = 4
 
     changed = pyqtSignal()
+    error = pyqtSignal()
+    identity_changed = pyqtSignal()
     neighbour_found = pyqtSignal(Peer, str)
 
-    def __init__(self, network_manager, currency, endpoints, uid, pubkey, block,
+    def __init__(self, currency, endpoints, uid, pubkey, block,
                  state, last_change, last_merkle, software, version, fork_window):
         """
         Constructor
         """
         super().__init__()
-        self.network_manager = network_manager
         self._endpoints = endpoints
         self._uid = uid
         self._pubkey = pubkey
         self._block = block
+        self.main_chain_previous_block = None
         self._state = state
         self._neighbours = []
         self._currency = currency
@@ -57,10 +58,11 @@ class Node(QObject):
         self._software = software
         self._version = version
         self._fork_window = fork_window
+        self._refresh_counter = 0
 
     @classmethod
     @asyncio.coroutine
-    def from_address(cls, network_manager, currency, address, port):
+    def from_address(cls, currency, address, port):
         """
         Factory method to get a node from a given address
 
@@ -68,72 +70,59 @@ class Node(QObject):
          the currency it should have, for example if its the first one we add
         :param str address: The node address
         :param int port: The node port
+        :return: A new node
+        :rtype: cutecoin.core.net.Node
         """
-        def handle_reply(reply):
-            if reply.error() == QNetworkReply.NoError:
-                strdata = bytes(reply.readAll()).decode('utf-8')
-                nonlocal peer_data
-                peer_data = json.loads(strdata)
-                future_reply.set_result(True)
-            else:
-                future_reply.set_result(False)
-
-        future_reply = asyncio.Future()
-        peer_data = {}
-        reply = qtbma.network.Peering(ConnectionHandler(network_manager, address, port)).get()
-        reply.finished.connect(lambda: handle_reply(reply))
-
-        yield from future_reply
-        if future_reply.result():
-            peer = Peer.from_signed_raw("{0}{1}\n".format(peer_data['raw'],
-                                                      peer_data['signature']))
-
-            if currency is not None:
-                if peer.currency != currency:
-                    raise InvalidNodeCurrency(peer.currency, currency)
-
-            node = cls(network_manager, peer.currency,
-                       [Endpoint.from_inline(e.inline()) for e in peer.endpoints],
-                       "", peer.pubkey, qtbma.blockchain.Block.null_value, Node.ONLINE, time.time(),
-                       {'root': "", 'leaves': []}, "", "", 0)
-            logging.debug("Node from address : {:}".format(str(node)))
-            return node
-        else:
-            return None
+        peer_data = yield from bma.network.Peering(ConnectionHandler(address, port)).get()
+
+        peer = Peer.from_signed_raw("{0}{1}\n".format(peer_data['raw'],
+                                                  peer_data['signature']))
+
+        if currency is not None:
+            if peer.currency != currency:
+                raise InvalidNodeCurrency(peer.currency, currency)
+
+        node = cls(peer.currency,
+                   [Endpoint.from_inline(e.inline()) for e in peer.endpoints],
+                   "", peer.pubkey, None, Node.ONLINE, time.time(),
+                   {'root': "", 'leaves': []}, "", "", 0)
+        logging.debug("Node from address : {:}".format(str(node)))
+        return node
 
     @classmethod
-    def from_peer(cls, network_manager, currency, peer, pubkey):
+    def from_peer(cls, currency, peer, pubkey):
         """
         Factory method to get a node from a peer document.
 
         :param str currency: The node currency. None if we don't know\
          the currency it should have, for example if its the first one we add
         :param peer: The peer document
+        :return: A new node
+        :rtype: cutecoin.core.net.Node
         """
         if currency is not None:
             if peer.currency != currency:
                 raise InvalidNodeCurrency(peer.currency, currency)
 
-        node = cls(network_manager, peer.currency,
-                    [Endpoint.from_inline(e.inline()) for e in peer.endpoints],
-                   "", pubkey, qtbma.blockchain.Block.null_value,
-                   Node.ONLINE, time.time(),
+        node = cls(peer.currency, peer.endpoints,
+                   "", pubkey, None,
+                   Node.OFFLINE, time.time(),
                    {'root': "", 'leaves': []},
                    "", "", 0)
         logging.debug("Node from peer : {:}".format(str(node)))
         return node
 
     @classmethod
-    def from_json(cls, network_manager, currency, data):
+    def from_json(cls, currency, data):
         endpoints = []
         uid = ""
         pubkey = ""
         software = ""
         version = ""
         fork_window = 0
-        block = qtbma.blockchain.Block.null_value
+        block = None
         last_change = time.time()
-        state = Node.ONLINE
+        state = Node.OFFLINE
         logging.debug(data)
         for endpoint_data in data['endpoints']:
             endpoints.append(Endpoint.from_inline(endpoint_data))
@@ -165,7 +154,7 @@ class Node(QObject):
         if 'fork_window' in data:
             fork_window = data['fork_window']
 
-        node = cls(network_manager, currency, endpoints,
+        node = cls(currency, endpoints,
                    uid, pubkey, block,
                    state, last_change,
                    {'root': "", 'leaves': []},
@@ -259,17 +248,20 @@ class Node(QObject):
 
     @last_change.setter
     def last_change(self, val):
-        logging.debug("{:} | Changed state : {:}".format(self.pubkey[:5],
-                                                         val))
+        #logging.debug("{:} | Changed state : {:}".format(self.pubkey[:5],
+        #                                                val))
         self._last_change = val
 
     @state.setter
     def state(self, new_state):
-        logging.debug("{:} | Last state : {:} / new state : {:}".format(self.pubkey[:5],
-                                                                        self.state, new_state))
+        #logging.debug("{:} | Last state : {:} / new state : {:}".format(self.pubkey[:5],
+        #                                                               self.state, new_state))
         if self._state != new_state:
             self.last_change = time.time()
-        self._state = new_state
+            self._state = new_state
+            self.changed.emit()
+        if new_state in (Node.OFFLINE, Node.ONLINE):
+            self.error.emit()
 
     @property
     def fork_window(self):
@@ -281,193 +273,254 @@ class Node(QObject):
             self._fork_window = new_fork_window
             self.changed.emit()
 
-    def check_noerror(self, error_code, status_code):
-        if error_code == QNetworkReply.NoError:
-            if status_code in (200, 404):
-                if self.state == Node.OFFLINE:
-                    self.state = Node.ONLINE
-                return True
-        self.state = Node.OFFLINE
-        return False
-
-    @pyqtSlot()
-    def refresh(self):
-        logging.debug("Refresh block")
+    def refresh(self, manual=False):
+        """
+        Refresh all data of this node
+        :param bool manual: True if the refresh was manually initiated
+        """
         self.refresh_block()
-        logging.debug("Refresh info")
-        self.refresh_informations()
-        logging.debug("Refresh uid")
-        self.refresh_uid()
-        logging.debug("Refresh peers")
         self.refresh_peers()
-        logging.debug("Refresh summary")
-        self.refresh_summary()
 
+        if self._refresh_counter % 20 == 0 or manual:
+            self.refresh_informations()
+            self.refresh_uid()
+            self.refresh_summary()
+            self._refresh_counter = self._refresh_counter if manual else 1
+        else:
+            self._refresh_counter += 1
+
+    @asyncify
+    @asyncio.coroutine
     def refresh_block(self):
-        conn_handler = self.endpoint.conn_handler(self.network_manager)
+        """
+        Refresh the blocks of this node
+        """
+        conn_handler = self.endpoint.conn_handler()
 
         logging.debug("Requesting {0}".format(conn_handler))
-        reply = qtbma.blockchain.Current(conn_handler).get()
-        reply.finished.connect(self.handle_block_reply)
-
-    @pyqtSlot()
-    def handle_block_reply(self):
-        reply = self.sender()
-        status_code = reply.attribute(QNetworkRequest.HttpStatusCodeAttribute)
-
-        if self.check_noerror(reply.error(), status_code):
-            if status_code == 200:
-                strdata = bytes(reply.readAll()).decode('utf-8')
-                block_data = json.loads(strdata)
-                block_hash = block_data['hash']
-            elif status_code == 404:
-                self.set_block(qtbma.blockchain.Block.null_value)
-
-            if block_hash != self.block['hash']:
-                self.set_block(block_data)
-                logging.debug("Changed block {0} -> {1}".format(self.block['number'],
-                                                                block_data['number']))
-                self.changed.emit()
-
-        else:
-            logging.debug("Error in block reply")
+        try:
+            block_data = yield from bma.blockchain.Current(conn_handler).get()
+            block_hash = block_data['hash']
+            self.state = Node.ONLINE
+
+            if not self.block or block_hash != self.block['hash']:
+                try:
+                    if self.block:
+                        self.main_chain_previous_block = yield from bma.blockchain.Block(conn_handler,
+                                                                                     self.block['number']).get()
+                except ValueError as e:
+                    if '404' in str(e):
+                        self.main_chain_previous_block = None
+                    logging.debug("Error in previous block reply :  {0}".format(self.pubkey))
+                    logging.debug(str(e))
+                    self.changed.emit()
+                except ClientError:
+                    logging.debug("Client error : {0}".format(self.pubkey))
+                    self.state = Node.OFFLINE
+                except DisconnectedError:
+                    logging.debug("Disconnected error : {0}".format(self.pubkey))
+                    self.state = Node.OFFLINE
+                except asyncio.TimeoutError:
+                    logging.debug("Timeout error : {0}".format(self.pubkey))
+                    self.state = Node.OFFLINE
+                except jsonschema.ValidationError:
+                    logging.debug("Validation error : {0}".format(self.pubkey))
+                    self.state = Node.CORRUPTED
+                finally:
+                    self.set_block(block_data)
+                    logging.debug("Changed block {0} -> {1}".format(self.block['number'],
+                                                                    block_data['number']))
+                    self.changed.emit()
+        except ValueError as e:
+            if '404' in str(e):
+                self.main_chain_previous_block = None
+                self.set_block(None)
+            logging.debug("Error in block reply :  {0}".format(self.pubkey))
+            logging.debug(str(e))
             self.changed.emit()
-
+        except ClientError:
+            logging.debug("Client error : {0}".format(self.pubkey))
+            self.state = Node.OFFLINE
+        except DisconnectedError:
+            logging.debug("Disconnected error : {0}".format(self.pubkey))
+            self.state = Node.OFFLINE
+        except asyncio.TimeoutError:
+            logging.debug("Timeout error : {0}".format(self.pubkey))
+            self.state = Node.OFFLINE
+
+    @asyncify
+    @asyncio.coroutine
     def refresh_informations(self):
-        conn_handler = self.endpoint.conn_handler(self.network_manager)
-
-        peering_reply = qtbma.network.Peering(conn_handler).get()
-        peering_reply.finished.connect(self.handle_peering_reply)
-
-    @pyqtSlot()
-    def handle_peering_reply(self):
-        reply = self.sender()
-        status_code = reply.attribute(QNetworkRequest.HttpStatusCodeAttribute)
+        """
+        Refresh basic information (pubkey and currency)
+        """
+        conn_handler = self.endpoint.conn_handler()
 
-        if self.check_noerror(reply.error(), status_code):
-            strdata = bytes(reply.readAll()).decode('utf-8')
-            peering_data = json.loads(strdata)
+        try:
+            peering_data = yield from bma.network.Peering(conn_handler).get()
             logging.debug(peering_data)
             node_pubkey = peering_data["pubkey"]
             node_currency = peering_data["currency"]
+            self.state = Node.ONLINE
 
-            change = False
             if node_pubkey != self.pubkey:
                 self._pubkey = node_pubkey
-                change = True
+                self.identity_changed.emit()
 
             if node_currency != self.currency:
                 self.state = Node.CORRUPTED
                 logging.debug("Change : new state corrupted")
-                change = True
-
-            if change:
                 self.changed.emit()
-        else:
-            logging.debug("Error in peering reply")
-            self.changed.emit()
 
+        except ValueError as e:
+            logging.debug("Error in peering reply : {0}".format(str(e)))
+            self.changed.emit()
+        except ClientError:
+            logging.debug("Client error : {0}".format(self.pubkey))
+            self.state = Node.OFFLINE
+        except asyncio.TimeoutError:
+            logging.debug("Timeout error : {0}".format(self.pubkey))
+            self.state = Node.OFFLINE
+        except DisconnectedError:
+            logging.debug("Disconnected error : {0}".format(self.pubkey))
+            self.state = Node.OFFLINE
+        except jsonschema.ValidationError:
+            logging.debug("Validation error : {0}".format(self.pubkey))
+            self.state = Node.CORRUPTED
+
+    @asyncify
+    @asyncio.coroutine
     def refresh_summary(self):
-        conn_handler = self.endpoint.conn_handler(self.network_manager)
-
-        summary_reply = qtbma.node.Summary(conn_handler).get()
-        summary_reply.finished.connect(self.handle_summary_reply)
-
-    @pyqtSlot()
-    def handle_summary_reply(self):
-        reply = self.sender()
-        status_code = reply.attribute(QNetworkRequest.HttpStatusCodeAttribute)
+        """
+        Refresh the summary of this node
+        """
+        conn_handler = self.endpoint.conn_handler()
 
-        if self.check_noerror(reply.error(), status_code):
-            strdata = bytes(reply.readAll()).decode('utf-8')
-            summary_data = json.loads(strdata)
+        try:
+            summary_data = yield from bma.node.Summary(conn_handler).get()
             self.software = summary_data["ucoin"]["software"]
             self.version = summary_data["ucoin"]["version"]
+            self.state = Node.ONLINE
             if "forkWindowSize" in summary_data["ucoin"]:
                 self.fork_window = summary_data["ucoin"]["forkWindowSize"]
             else:
                 self.fork_window = 0
-        else:
+        except ValueError as e:
+            logging.debug("Error in summary : {0}".format(e))
             self.changed.emit()
-
+        except ClientError:
+            logging.debug("Client error : {0}".format(self.pubkey))
+            self.state = Node.OFFLINE
+        except asyncio.TimeoutError:
+            logging.debug("Timeout error : {0}".format(self.pubkey))
+            self.state = Node.OFFLINE
+        except DisconnectedError:
+            logging.debug("Disconnected error : {0}".format(self.pubkey))
+            self.state = Node.OFFLINE
+        except jsonschema.ValidationError:
+            logging.debug("Validation error : {0}".format(self.pubkey))
+            self.state = Node.CORRUPTED
+
+    @asyncify
+    @asyncio.coroutine
     def refresh_uid(self):
-        conn_handler = self.endpoint.conn_handler(self.network_manager)
-        uid_reply = qtbma.wot.Lookup(conn_handler, self.pubkey).get()
-        uid_reply.finished.connect(self.handle_uid_reply)
-        uid_reply.error.connect(lambda code: logging.debug("Error : {0}".format(code)))
-
-    @pyqtSlot()
-    def handle_uid_reply(self):
-        reply = self.sender()
-        status_code = reply.attribute( QNetworkRequest.HttpStatusCodeAttribute );
-
-        if self.check_noerror(reply.error(), status_code):
-            uid = ''
-            if status_code == 200:
-                strdata = bytes(reply.readAll()).decode('utf-8')
-                data = json.loads(strdata)
-                timestamp = 0
-                for result in data['results']:
-                    if result["pubkey"] == self.pubkey:
-                        uids = result['uids']
-                        for uid in uids:
-                            if uid["meta"]["timestamp"] > timestamp:
-                                timestamp = uid["meta"]["timestamp"]
-                                uid = uid["uid"]
-            elif status_code == 404:
-                logging.debug("UID not found")
-
+        """
+        Refresh the node UID
+        """
+        conn_handler = self.endpoint.conn_handler()
+        try:
+            data = yield from bma.wot.Lookup(conn_handler, self.pubkey).get()
+            self.state = Node.ONLINE
+            timestamp = 0
+            uid = ""
+            for result in data['results']:
+                if result["pubkey"] == self.pubkey:
+                    uids = result['uids']
+                    for uid in uids:
+                        if uid["meta"]["timestamp"] > timestamp:
+                            timestamp = uid["meta"]["timestamp"]
+                            uid = uid["uid"]
             if self._uid != uid:
                 self._uid = uid
-                self.changed.emit()
-        else:
-            logging.debug("error in uid reply")
-            self.changed.emit()
-
+                self.identity_changed.emit()
+        except ValueError as e:
+            if '404' in str(e):
+                logging.debug("UID not found")
+            else:
+                logging.debug("error in uid reply")
+                self.identity_changed.emit()
+        except ClientError:
+            logging.debug("Client error : {0}".format(self.pubkey))
+            self.state = Node.OFFLINE
+        except asyncio.TimeoutError:
+            logging.debug("Timeout error : {0}".format(self.pubkey))
+            self.state = Node.OFFLINE
+        except DisconnectedError:
+            logging.debug("Disconnected error : {0}".format(self.pubkey))
+            self.state = Node.OFFLINE
+        except jsonschema.ValidationError:
+            logging.debug("Validation error : {0}".format(self.pubkey))
+            self.state = Node.CORRUPTED
+
+    @asyncify
+    @asyncio.coroutine
     def refresh_peers(self):
-        conn_handler = self.endpoint.conn_handler(self.network_manager)
-
-        reply = qtbma.network.peering.Peers(conn_handler).get(leaves='true')
-        reply.finished.connect(self.handle_peers_reply)
-        reply.error.connect(lambda code: logging.debug("Error : {0}".format(code)))
-
-    @pyqtSlot()
-    def handle_peers_reply(self):
-        reply = self.sender()
-        status_code = reply.attribute(QNetworkRequest.HttpStatusCodeAttribute)
+        """
+        Refresh the list of peers knew by this node
+        """
+        conn_handler = self.endpoint.conn_handler()
 
-        if self.check_noerror(reply.error(), status_code):
-            strdata = bytes(reply.readAll()).decode('utf-8')
-            peers_data = json.loads(strdata)
+        try:
+            peers_data = yield from bma.network.peering.Peers(conn_handler).get(leaves='true')
+            self.state = Node.ONLINE
             if peers_data['root'] != self._last_merkle['root']:
                 leaves = [leaf for leaf in peers_data['leaves']
                           if leaf not in self._last_merkle['leaves']]
                 for leaf_hash in leaves:
-                    conn_handler = self.endpoint.conn_handler(self.network_manager)
-                    leaf_reply = qtbma.network.peering.Peers(conn_handler).get(leaf=leaf_hash)
-                    leaf_reply.finished.connect(self.handle_leaf_reply)
+                    try:
+                        leaf_data = yield from bma.network.peering.Peers(conn_handler).get(leaf=leaf_hash)
+                        if "raw" in leaf_data['leaf']['value']:
+                            peer_doc = Peer.from_signed_raw("{0}{1}\n".format(leaf_data['leaf']['value']['raw'],
+                                                                        leaf_data['leaf']['value']['signature']))
+                            pubkey = leaf_data['leaf']['value']['pubkey']
+                            self.neighbour_found.emit(peer_doc, pubkey)
+                        else:
+                            logging.debug("Incorrect leaf reply")
+                    except ValueError as e:
+                        logging.debug("Error in leaf reply")
+                        self.changed.emit()
+                    except ClientError:
+                        logging.debug("Client error : {0}".format(self.pubkey))
+                        self.state = Node.OFFLINE
+                    except asyncio.TimeoutError:
+                        logging.debug("Timeout error : {0}".format(self.pubkey))
+                        self.state = Node.OFFLINE
+                    except DisconnectedError:
+                        logging.debug("Disconnected error : {0}".format(self.pubkey))
+                        self.state = Node.OFFLINE
+                    except jsonschema.ValidationError:
+                        logging.debug("Validation error : {0}".format(self.pubkey))
+                        self.state = Node.CORRUPTED
                 self._last_merkle = {'root' : peers_data['root'],
                                      'leaves': peers_data['leaves']}
-        else:
+        except ValueError as e:
             logging.debug("Error in peers reply")
             self.changed.emit()
-
-    @pyqtSlot()
-    def handle_leaf_reply(self):
-        reply = self.sender()
-        status_code = reply.attribute(QNetworkRequest.HttpStatusCodeAttribute)
-
-        if self.check_noerror(reply.error(), status_code):
-            strdata = bytes(reply.readAll()).decode('utf-8')
-            leaf_data = json.loads(strdata)
-            peer_doc = Peer.from_signed_raw("{0}{1}\n".format(leaf_data['leaf']['value']['raw'],
-                                                        leaf_data['leaf']['value']['signature']))
-            pubkey = leaf_data['leaf']['value']['pubkey']
-            self.neighbour_found.emit(peer_doc, pubkey)
-        else:
-            logging.debug("Error in leaf reply")
-            self.changed.emit()
+        except ClientError:
+            logging.debug("Client error : {0}".format(self.pubkey))
+            self.state = Node.OFFLINE
+        except asyncio.TimeoutError:
+            logging.debug("Timeout error : {0}".format(self.pubkey))
+            self.state = Node.OFFLINE
+        except DisconnectedError:
+            logging.debug("Disconnected error : {0}".format(self.pubkey))
+            self.state = Node.OFFLINE
+        except jsonschema.ValidationError:
+            logging.debug("Validation error : {0}".format(self.pubkey))
+            self.state = Node.CORRUPTED
 
     def __str__(self):
-        return ','.join([str(self.pubkey), str(self.endpoint.server), str(self.endpoint.ipv4), str(self.endpoint.port), str(self.block['number']),
+        return ','.join([str(self.pubkey), str(self.endpoint.server),
+                         str(self.endpoint.ipv4), str(self.endpoint.port),
+                         str(self.block['number'] if self.block else "None"),
                          str(self.currency), str(self.state), str(self.neighbours)])
diff --git a/src/cutecoin/core/registry/identities.py b/src/cutecoin/core/registry/identities.py
index eea2f3d778697ee7dde857170215c25b1dee3072..014cf22ce0203809250f8b44a7edcfb11f647f3c 100644
--- a/src/cutecoin/core/registry/identities.py
+++ b/src/cutecoin/core/registry/identities.py
@@ -1,10 +1,12 @@
 from PyQt5.QtNetwork import QNetworkReply, QNetworkRequest
-from cutecoin.core.net.api import bma as qtbma
+from ucoinpy.api import bma
 from .identity import Identity, LocalState, BlockchainState
 
 import json
 import asyncio
 import logging
+from aiohttp.errors import ClientError
+from ...tools.exceptions import NoPeerAvailable
 
 
 class IdentitiesRegistry:
@@ -15,7 +17,7 @@ class IdentitiesRegistry:
         """
         Initializer of the IdentitiesRegistry
 
-        :param list of Identity instances:
+        :param dict instances: A dictionary containing identities based on communities
         :return: An IdentitiesRegistry object
         :rtype: IdentitiesRegistry
         """
@@ -28,55 +30,46 @@ class IdentitiesRegistry:
         :param dict json_data: The identities in json format
         """
         instances = {}
-
-        for person_data in json_data['registry']:
-            pubkey = person_data['pubkey']
-            if pubkey not in instances:
-                person = Identity.from_json(person_data)
-                instances[person.pubkey] = person
+        for currency in json_data['registry']:
+            instances[currency] = {}
+            for person_data in json_data['registry'][currency]:
+                pubkey = person_data['pubkey']
+                if pubkey not in instances:
+                    person = Identity.from_json(person_data)
+                    instances[currency][person.pubkey] = person
         self._instances = instances
 
     def jsonify(self):
-        identities_json = []
-        for identity in self._instances.values():
-            identities_json.append(identity.jsonify())
-        return {'registry': identities_json}
+        communities_json = {}
+        for currency in self._instances:
+            identities_json = []
+            for identity in self._instances[currency].values():
+                identities_json.append(identity.jsonify())
+            communities_json[currency] = identities_json
+        return {'registry': communities_json}
+
+    def _identities(self, community):
+        """
+        If the registry do not have data for this community
+        Create a new dict and return it
+        :param  cutecoin.core.Community community: the community
+        :return: The identities of the community
+        :rtype: dict
+        """
+        try:
+            return self._instances[community.currency]
+        except KeyError:
+            self._instances[community.currency] = {}
+            return self._identities(community)
 
     @asyncio.coroutine
-    def future_find(self, pubkey, community):
-        def handle_certifiersof_reply(reply, tries=0):
-            err = reply.error()
-            # https://github.com/ucoin-io/ucoin/issues/146
-            if reply.error() == QNetworkReply.NoError \
-                    or reply.error() == QNetworkReply.ContentNotFoundError \
-                    or reply.error() == QNetworkReply.ProtocolInvalidOperationError:
-                status_code = reply.attribute(QNetworkRequest.HttpStatusCodeAttribute)
-                if status_code == 200:
-                    strdata = bytes(reply.readAll()).decode('utf-8')
-                    data = json.loads(strdata)
-
-                    identity.uid = data['uid']
-                    identity.local_state = LocalState.PARTIAL
-                    identity.blockchain_state = BlockchainState.VALIDATED
-                    logging.debug("Lookup : found {0}".format(identity))
-                    if not future_identity.cancelled():
-                        future_identity.set_result(identity)
-                else:
-                    reply = community.bma_access.simple_request(qtbma.wot.Lookup,
-                                                                req_args={'search': pubkey})
-                    reply.finished.connect(lambda: handle_lookup_reply(reply))
-            elif tries < 3:
-                reply = community.bma_access.simple_request(qtbma.wot.CertifiersOf, req_args={'search': pubkey})
-                reply.finished.connect(lambda: handle_certifiersof_reply(reply, tries=tries+1))
-            elif not future_identity.cancelled():
-                future_identity.set_result(identity)
-
-        def handle_lookup_reply(reply, tries=0):
-            status_code = reply.attribute(QNetworkRequest.HttpStatusCodeAttribute)
-            if reply.error() == QNetworkReply.NoError and status_code == 200:
-                strdata = bytes(reply.readAll()).decode('utf-8')
-                data = json.loads(strdata)
-
+    def _find_by_lookup(self, pubkey, community):
+        identity = self._identities(community)[pubkey]
+        lookup_tries = 0
+        while lookup_tries < 3:
+            try:
+                data = yield from community.bma_access.simple_request(bma.wot.Lookup,
+                                                            req_args={'search': pubkey})
                 timestamp = 0
                 for result in data['results']:
                     if result["pubkey"] == identity.pubkey:
@@ -86,34 +79,50 @@ class IdentitiesRegistry:
                             if uid_data["meta"]["timestamp"] > timestamp:
                                 timestamp = uid_data["meta"]["timestamp"]
                                 identity_uid = uid_data["uid"]
-                        identity.uid = identity_uid
-                        identity.blockchain_state = BlockchainState.BUFFERED
-                        identity.local_state = LocalState.PARTIAL
-                        logging.debug("Lookup : found {0}".format(identity))
-                        if not future_identity.cancelled():
-                            future_identity.set_result(identity)
-                        return
-                if not future_identity.cancelled():
-                        future_identity.set_result(identity)
-            elif tries < 3:
-                reply = community.bma_access.simple_request(qtbma.wot.Lookup, req_args={'search': pubkey})
-                reply.finished.connect(lambda: handle_lookup_reply(reply, tries=tries+1))
-            elif not future_identity.cancelled():
-                future_identity.set_result(identity)
+                                identity.uid = identity_uid
+                                identity.blockchain_state = BlockchainState.BUFFERED
+                                identity.local_state = LocalState.PARTIAL
+                return identity
+            except ValueError as e:
+                lookup_tries += 1
+            except asyncio.TimeoutError:
+                lookup_tries += 1
+            except ClientError:
+                lookup_tries += 1
+            except NoPeerAvailable:
+                return identity
+        return identity
 
-        future_identity = asyncio.Future()
-        if pubkey in self._instances:
-            identity = self._instances[pubkey]
-            if not future_identity.cancelled():
-                future_identity.set_result(identity)
+    @asyncio.coroutine
+    def future_find(self, pubkey, community):
+        if pubkey in self._identities(community):
+            identity = self._identities(community)[pubkey]
         else:
             identity = Identity.empty(pubkey)
-            self._instances[pubkey] = identity
-            reply = community.bma_access.simple_request(qtbma.wot.CertifiersOf, req_args={'search': pubkey})
-            reply.finished.connect(lambda: handle_certifiersof_reply(reply))
-        return future_identity
-
-    def from_handled_data(self, uid, pubkey, blockchain_state):
+            self._identities(community)[pubkey] = identity
+            tries = 0
+            while tries < 3 and identity.local_state == LocalState.NOT_FOUND:
+                try:
+                    data = yield from community.bma_access.simple_request(bma.wot.CertifiersOf,
+                                                                          req_args={'search': pubkey})
+                    identity.uid = data['uid']
+                    identity.local_state = LocalState.PARTIAL
+                    identity.blockchain_state = BlockchainState.VALIDATED
+                except ValueError as e:
+                    if '404' in str(e) or '400' in str(e):
+                        identity = yield from self._find_by_lookup(pubkey, community)
+                        return identity
+                    else:
+                        tries += 1
+                except asyncio.TimeoutError:
+                    tries += 1
+                except ClientError:
+                    tries += 1
+                except NoPeerAvailable:
+                    return identity
+        return identity
+
+    def from_handled_data(self, uid, pubkey, blockchain_state, community):
         """
         Get a person from a metadata dict.
         A metadata dict has a 'text' key corresponding to the person uid,
@@ -122,13 +131,13 @@ class IdentitiesRegistry:
         :param dict metadata: The person metadata
         :return: A new person if pubkey wasn't knwon, else the existing instance.
         """
-        if pubkey in self._instances:
-            if self._instances[pubkey].blockchain_state == BlockchainState.NOT_FOUND:
-                self._instances[pubkey].blockchain_state = blockchain_state
-            elif self._instances[pubkey].blockchain_state != BlockchainState.VALIDATED \
+        identities = self._identities(community)
+        if pubkey in identities:
+            if self._identities(community)[pubkey].blockchain_state == BlockchainState.NOT_FOUND:
+                self._identities(community)[pubkey].blockchain_state = blockchain_state
+            elif self._identities(community)[pubkey].blockchain_state != BlockchainState.VALIDATED \
                     and blockchain_state == BlockchainState.VALIDATED:
-                self._instances[pubkey].blockchain_state = blockchain_state
-                self._instances[pubkey].inner_data_changed.emit("BlockchainState")
+                self._identities(community)[pubkey].blockchain_state = blockchain_state
 
             # TODO: Random bug in ucoin makes the uid change without reason in requests answers
             # https://github.com/ucoin-io/ucoin/issues/149
@@ -136,11 +145,11 @@ class IdentitiesRegistry:
             #    self._instances[pubkey].uid = uid
             #    self._instances[pubkey].inner_data_changed.emit("BlockchainState")
 
-            if self._instances[pubkey].local_state == LocalState.NOT_FOUND:
-                self._instances[pubkey].local_state = LocalState.COMPLETED
+            if self._identities(community)[pubkey].local_state == LocalState.NOT_FOUND:
+                self._identities(community)[pubkey].local_state = LocalState.COMPLETED
 
-            return self._instances[pubkey]
+            return self._identities(community)[pubkey]
         else:
             identity = Identity.from_handled_data(uid, pubkey, blockchain_state)
-            self._instances[pubkey] = identity
+            self._identities(community)[pubkey] = identity
             return identity
diff --git a/src/cutecoin/core/registry/identity.py b/src/cutecoin/core/registry/identity.py
index fb65737c7cf07982ea385fe2968737ab47dc5c5b..c944dddde0548b1508a21d36d0ca4d6b0fa0c41e 100644
--- a/src/cutecoin/core/registry/identity.py
+++ b/src/cutecoin/core/registry/identity.py
@@ -10,10 +10,11 @@ import asyncio
 from enum import Enum
 
 from ucoinpy.documents.certification import SelfCertification
+from ucoinpy.api import bma as bma
+from ucoinpy.api.bma import PROTOCOL_VERSION
+
 from ...tools.exceptions import Error, NoPeerAvailable,\
                                         MembershipNotFoundError
-from ..net.api import bma as qtbma
-from ..net.api.bma import PROTOCOL_VERSION
 from PyQt5.QtCore import QObject, pyqtSignal
 
 
@@ -97,7 +98,7 @@ class Identity(QObject):
         :rtype: ucoinpy.documents.certification.SelfCertification
         """
         timestamp = 0
-        lookup_data = yield from community.bma_access.future_request(qtbma.wot.Lookup, req_args={'search': self.pubkey})
+        lookup_data = yield from community.bma_access.future_request(bma.wot.Lookup, req_args={'search': self.pubkey})
         for result in lookup_data['results']:
             if result["pubkey"] == self.pubkey:
                 uids = result['uids']
@@ -124,16 +125,19 @@ class Identity(QObject):
         :param cutecoin.core.community.Community community: The community target to request the join date
         :return: A datetime object
         """
-        search = yield from community.bma_access.future_request(qtbma.blockchain.Membership, {'search': self.pubkey})
-        if search != qtbma.blockchain.Membership.null_value:
+        try:
+            search = yield from community.bma_access.future_request(bma.blockchain.Membership,
+                                                                    {'search': self.pubkey})
             if len(search['memberships']) > 0:
                 membership_data = search['memberships'][0]
-                block = yield from community.bma_access.future_request(qtbma.blockchain.Block,
+                block = yield from community.bma_access.future_request(bma.blockchain.Block,
                                 req_args={'number': membership_data['blockNumber']})
-                if block != qtbma.blockchain.Block.null_value:
-                    return block['medianTime']
-            return None
-        else:
+                return block['medianTime']
+        except ValueError as e:
+            if '404' in str(e) or '400' in str(e):
+                raise MembershipNotFoundError(self.pubkey, community.name)
+        except NoPeerAvailable as e:
+            logging.debug(str(e))
             raise MembershipNotFoundError(self.pubkey, community.name)
 
     @asyncio.coroutine
@@ -142,18 +146,17 @@ class Identity(QObject):
             membership = yield from self.membership(community)
             join_block_number = membership['blockNumber']
             try:
-                join_block = yield from community.bma_access.future_request(qtbma.blockchain.Block,
+                join_block = yield from community.bma_access.future_request(bma.blockchain.Block,
                                 req_args={'number': join_block_number})
 
-                parameters = yield from community.bma_access.future_request(qtbma.blockchain.Parameters)
-                if join_block != qtbma.blockchain.Block.null_value \
-                        and parameters != qtbma.blockchain.Parameters.null_value:
-                    join_date = join_block['medianTime']
-                    expiration_date = join_date + parameters['sigValidity']
-                else:
-                    return None
+                parameters = yield from community.bma_access.future_request(bma.blockchain.Parameters)
+                join_date = join_block['medianTime']
+                expiration_date = join_date + parameters['sigValidity']
             except NoPeerAvailable:
                 expiration_date = None
+            except ValueError as e:
+                logging.debug("Expiration date not found")
+                expiration_date = None
         except MembershipNotFoundError:
             expiration_date = None
         return expiration_date
@@ -167,11 +170,13 @@ class Identity(QObject):
 
         :param cutecoin.core.community.Community community: The community target to request the join date
         :return: The membership data in BMA json format
+        :rtype: dict
         """
-        search = yield from community.bma_access.future_request(qtbma.blockchain.Membership,
+        try:
+            search = yield from community.bma_access.future_request(bma.blockchain.Membership,
                                            {'search': self.pubkey})
-        if search != qtbma.blockchain.Membership.null_value:
             block_number = -1
+            membership_data = None
             for ms in search['memberships']:
                 if ms['blockNumber'] > block_number:
                     block_number = ms['blockNumber']
@@ -180,15 +185,23 @@ class Identity(QObject):
                             membership_data = ms
                     else:
                         membership_data = ms
-            return membership_data
-        else:
+            if membership_data:
+                return membership_data
+            else:
+                raise MembershipNotFoundError(self.pubkey, community.name)
+
+        except ValueError as e:
+            if '404' in str(e) or '400' in str(e):
+                raise MembershipNotFoundError(self.pubkey, community.name)
+        except NoPeerAvailable as e:
+            logging.debug(str(e))
             raise MembershipNotFoundError(self.pubkey, community.name)
 
     @asyncio.coroutine
     def published_uid(self, community):
-        data = yield from community.bma_access.future_request(qtbma.wot.Lookup,
+        try:
+            data = yield from community.bma_access.future_request(bma.wot.Lookup,
                                  req_args={'search': self.pubkey})
-        if data != qtbma.wot.Lookup.null_value:
             timestamp = 0
 
             for result in data['results']:
@@ -201,6 +214,23 @@ class Identity(QObject):
                             person_uid = uid_data["uid"]
                         if person_uid == self.uid:
                             return True
+        except ValueError as e:
+            if '404' in str(e):
+                return False
+        except NoPeerAvailable as e:
+            logging.debug(str(e))
+        return False
+
+    @asyncio.coroutine
+    def uid_is_revokable(self, community):
+        published = yield from self.published_uid(community)
+        if published:
+            try:
+                yield from community.bma_access.future_request(bma.wot.CertifiersOf,
+                                                               {'search': self.pubkey})
+            except ValueError as e:
+                if '404' in str(e) or '400' in str(e):
+                    return True
         return False
 
     @asyncio.coroutine
@@ -211,9 +241,17 @@ class Identity(QObject):
         :param cutecoin.core.community.Community community: The community target to request the join date
         :return: True if the person is a member of a community
         """
-        certifiers = yield from community.bma_access.future_request(qtbma.wot.CertifiersOf, {'search': self.pubkey})
-        if certifiers != qtbma.wot.CertifiersOf.null_value:
+        try:
+            certifiers = yield from community.bma_access.future_request(bma.wot.CertifiersOf,
+                                                                        {'search': self.pubkey})
             return certifiers['isMember']
+        except ValueError as e:
+            if '404' in str(e) or '400' in str(e):
+                pass
+            else:
+                raise
+        except NoPeerAvailable as e:
+            logging.debug(str(e))
         return False
 
     @asyncio.coroutine
@@ -224,100 +262,144 @@ class Identity(QObject):
         :param cutecoin.core.registry.identities.IdentitiesRegistry identities_registry: The identities registry
         :param cutecoin.core.community.Community community: The community target to request the join date
         :return: The list of the certifiers of this community
+        :rtype: list
         """
-        data = yield from community.bma_access.future_request(qtbma.wot.CertifiersOf, {'search': self.pubkey})
-
         certifiers = list()
+        try:
+            data = yield from community.bma_access.future_request(bma.wot.CertifiersOf,
+                                                                  {'search': self.pubkey})
 
-        if data == qtbma.wot.CertifiersOf.null_value:
-            logging.debug('bma.wot.CertifiersOf request error')
-            data = yield from community.bma_access.future_request(qtbma.wot.Lookup, {'search': self.pubkey})
-            if data == qtbma.wot.Lookup.null_value:
-                logging.debug('bma.wot.Lookup request error')
-            else:
-                for result in data['results']:
-                    if result["pubkey"] == self.pubkey:
-                        for uid_data in result['uids']:
-                            for certifier_data in uid_data['others']:
-                                for uid in certifier_data['uids']:
-                                    # add a certifier
-                                    certifier = {}
-                                    certifier['identity'] = identities_registry.from_handled_data(uid,
-                                                                                                  certifier_data['pubkey'],
-                                                                          BlockchainState.BUFFERED)
-                                    block = yield from community.bma_access.future_request(qtbma.blockchain.Block,
-                                                                         {'number': certifier_data['meta']['block_number']})
-                                    certifier['cert_time'] = block['medianTime']
-                                    certifier['block_number'] = None
-
-                                    certifiers.append(certifier)
-        else:
             for certifier_data in data['certifications']:
                 certifier = {}
                 certifier['identity'] = identities_registry.from_handled_data(certifier_data['uid'],
                                                                               certifier_data['pubkey'],
-                                                                              BlockchainState.VALIDATED)
+                                                                              BlockchainState.VALIDATED,
+                                                                              community)
                 certifier['cert_time'] = certifier_data['cert_time']['medianTime']
-                certifier['block_number'] = certifier_data['cert_time']['block']
+                if 'written' in certifier_data and type(certifier_data['written']) is dict:
+                    certifier['block_number'] = certifier_data['written']['number']
+                else:
+                    certifier['block_number'] = certifier_data['cert_time']['block']
+
                 certifiers.append(certifier)
+        except ValueError as e:
+            if '404' in str(e):
+                logging.debug('bma.wot.CertifiersOf request error: {0}'.format(str(e)))
+            else:
+                logging.debug(str(e))
+        except NoPeerAvailable as e:
+            logging.debug(str(e))
+
+        try:
+            data = yield from community.bma_access.future_request(bma.wot.Lookup, {'search': self.pubkey})
+            for result in data['results']:
+                if result["pubkey"] == self.pubkey:
+                    self._refresh_uid(result['uids'])
+                    for uid_data in result['uids']:
+                        for certifier_data in uid_data['others']:
+                            for uid in certifier_data['uids']:
+                                # add a certifier
+                                certifier = {}
+                                certifier['identity'] = identities_registry.\
+                                    from_handled_data(uid,
+                                                      certifier_data['pubkey'],
+                                                      BlockchainState.BUFFERED,
+                                                      community)
+                                block = yield from community.bma_access.future_request(bma.blockchain.Block,
+                                                                     {'number': certifier_data['meta']['block_number']})
+                                certifier['cert_time'] = block['medianTime']
+                                certifier['block_number'] = None
+
+                                certifiers.append(certifier)
+        except ValueError as e:
+            logging.debug("Lookup error : {0}".format(str(e)))
+        except NoPeerAvailable as e:
+            logging.debug(str(e))
         return certifiers
 
     @asyncio.coroutine
     def unique_valid_certifiers_of(self, identities_registry, community):
+        """
+        Get the certifications in the blockchain and in the pools
+        Get only unique and last certification for each pubkey
+        :param cutecoin.core.registry.identities.IdentitiesRegistry identities_registry: The identities registry
+        :param cutecoin.core.community.Community community: The community target to request the join date
+        :return: The list of the certifiers of this community
+        :rtype: list
+        """
         certifier_list = yield from self.certifiers_of(identities_registry, community)
         unique_valid = []
         #  add certifiers of uid
         for certifier in tuple(certifier_list):
             # add only valid certification...
-            cert_expired = yield from community.certification_expired(certifier['cert_time'])
-            if cert_expired:
-                continue
-
-            # keep only the latest certification
-            already_found = [c['identity'].pubkey for c in unique_valid]
-            if certifier['identity'].pubkey in already_found:
-                index = already_found.index(certifier['identity'].pubkey)
-                if certifier['cert_time'] > unique_valid[index]['cert_time']:
-                    unique_valid[index] = certifier
-            else:
-                unique_valid.append(certifier)
+            try:
+                cert_expired = yield from community.certification_expired(certifier['cert_time'])
+            except NoPeerAvailable:
+                logging.debug("No peer available")
+                cert_expired = True
+
+            if not cert_expired:
+                # keep only the latest certification
+                already_found = [c['identity'].pubkey for c in unique_valid]
+                if certifier['identity'].pubkey in already_found:
+                    index = already_found.index(certifier['identity'].pubkey)
+                    if certifier['cert_time'] > unique_valid[index]['cert_time']:
+                        unique_valid[index] = certifier
+                else:
+                    unique_valid.append(certifier)
         return unique_valid
 
     @asyncio.coroutine
     def certified_by(self, identities_registry, community):
         """
         Get the list of persons certified by this person
+        :param cutecoin.core.registry.IdentitiesRegistry identities_registry: The registry
+        :param cutecoin.core.Community community: The community
 
         :param cutecoin.core.community.Community community: The community target to request the join date
         :return: The list of the certified persons of this community in BMA json format
+        :rtype: list
         """
-        data = yield from community.bma_access.future_request(qtbma.wot.CertifiedBy, {'search': self.pubkey})
         certified_list = list()
-        if data == qtbma.wot.CertifiedBy.null_value:
-            logging.debug('bma.wot.CertifiersOf request error')
-            data = yield from community.bma_access.future_request(qtbma.wot.Lookup, {'search': self.pubkey})
-            if data == qtbma.wot.Lookup.null_value:
-                logging.debug('bma.wot.Lookup request error')
-            else:
-                for result in data['results']:
-                    if result["pubkey"] == self.pubkey:
-                        for certified_data in result['signed']:
-                            certified = {}
-                            certified['identity'] = identities_registry.from_handled_data(certified_data['uid'],
-                                                                              certified_data['pubkey'],
-                                                                              BlockchainState.BUFFERED)
-                            certified['cert_time'] = certified_data['meta']['timestamp']
-                            certified['block_number'] = None
-                            certified_list.append(certified)
-        else:
+        try:
+            data = yield from community.bma_access.future_request(bma.wot.CertifiedBy, {'search': self.pubkey})
             for certified_data in data['certifications']:
                 certified = {}
                 certified['identity'] = identities_registry.from_handled_data(certified_data['uid'],
                                                                               certified_data['pubkey'],
-                                                                              BlockchainState.VALIDATED)
+                                                                              BlockchainState.VALIDATED,
+                                                                              community)
                 certified['cert_time'] = certified_data['cert_time']['medianTime']
-                certified['block_number'] = certified_data['cert_time']['block']
+                if 'written' in certified_data and type(certified_data['written']) is dict:
+                    certified['block_number'] = certified_data['written']['number']
+                else:
+                    certified['block_number'] = certified_data['cert_time']['block']
                 certified_list.append(certified)
+        except ValueError as e:
+            if '404' in str(e):
+                logging.debug('bma.wot.CertifiersOf request error')
+        except NoPeerAvailable as e:
+            logging.debug(str(e))
+
+        try:
+            data = yield from community.bma_access.future_request(bma.wot.Lookup, {'search': self.pubkey})
+            for result in data['results']:
+                if result["pubkey"] == self.pubkey:
+                    self._refresh_uid(result['uids'])
+                    for certified_data in result['signed']:
+                        certified = {}
+                        certified['identity'] = identities_registry.from_handled_data(certified_data['uid'],
+                                                                          certified_data['pubkey'],
+                                                                          BlockchainState.BUFFERED,
+                                                                          community)
+                        certified['cert_time'] = certified_data['meta']['timestamp']
+                        certified['block_number'] = None
+                        certified_list.append(certified)
+        except ValueError as e:
+            if '404' in str(e):
+                logging.debug('bma.wot.Lookup request error')
+        except NoPeerAvailable as e:
+            logging.debug(str(e))
         return certified_list
 
     @asyncio.coroutine
@@ -327,18 +409,21 @@ class Identity(QObject):
         #  add certifiers of uid
         for certified in tuple(certified_list):
             # add only valid certification...
-            cert_expired = yield from community.certification_expired(certified['cert_time'])
-            if cert_expired:
-                continue
-
-            # keep only the latest certification
-            already_found = [c['identity'].pubkey for c in unique_valid]
-            if certified['identity'].pubkey in already_found:
-                index = already_found.index(certified['identity'].pubkey)
-                if certified['cert_time'] > unique_valid[index]['cert_time']:
-                    unique_valid[index] = certified
-            else:
-                unique_valid.append(certified)
+            try:
+                cert_expired = yield from community.certification_expired(certified['cert_time'])
+            except NoPeerAvailable:
+                logging.debug("No peer available")
+                cert_expired = True
+
+            if not cert_expired:
+                # keep only the latest certification
+                already_found = [c['identity'].pubkey for c in unique_valid]
+                if certified['identity'].pubkey in already_found:
+                    index = already_found.index(certified['identity'].pubkey)
+                    if certified['cert_time'] > unique_valid[index]['cert_time']:
+                        unique_valid[index] = certified
+                else:
+                    unique_valid.append(certified)
         return unique_valid
 
     @asyncio.coroutine
@@ -352,6 +437,21 @@ class Identity(QObject):
         current_time = time.time()
         return expiration_date - current_time
 
+    def _refresh_uid(self, uids):
+        """
+        Refresh UID from uids list, got from a successful lookup request
+        :param list uids: UIDs got from a lookup request
+        """
+        timestamp = 0
+        if self.local_state == LocalState.NOT_FOUND:
+            for uid_data in uids:
+                if uid_data["meta"]["timestamp"] > timestamp:
+                    timestamp = uid_data["meta"]["timestamp"]
+                    identity_uid = uid_data["uid"]
+                    self.uid = identity_uid
+                    self.blockchain_state = BlockchainState.BUFFERED
+                    self.local_state = LocalState.PARTIAL
+
     def jsonify(self):
         """
         Get the community as dict in json format.
diff --git a/src/cutecoin/core/transfer.py b/src/cutecoin/core/transfer.py
index f64303d7b34a8cfd2fa7fdcbf8d4a23986ecdcfb..f2376d9e88adbed7f834af8354a793269cca4072 100644
--- a/src/cutecoin/core/transfer.py
+++ b/src/cutecoin/core/transfer.py
@@ -5,17 +5,17 @@ Created on 31 janv. 2015
 """
 import logging
 import asyncio
-from .net.api import bma as qtbma
-from PyQt5.QtCore import pyqtSignal, pyqtSlot, QObject
-from PyQt5.QtNetwork import QNetworkReply
+from ucoinpy.api import bma
+from ucoinpy.documents import Block, BlockId
+from PyQt5.QtCore import pyqtSignal, QObject
 import hashlib
+from enum import Enum
 
 
-class Transfer(QObject):
+class TransferState(Enum):
     """
-    A transfer is the lifecycle of a transaction.
     TO_SEND means the transaction wasn't sent yet
-    AWAITING means the transaction is waiting to reach K blockchain validation
+    AWAITING means the transaction is waiting to reach K blockchain confrmation
     VALIDATED means the transaction was validated locally and is considered present in the blockchain
     REFUSED means the transaction took too long to be registered in the blockchain,
     therefore it is considered as refused
@@ -29,10 +29,15 @@ class Transfer(QObject):
     REFUSED = 3
     DROPPED = 5
 
+
+class Transfer(QObject):
+    """
+    A transfer is the lifecycle of a transaction.
+    """
     transfer_broadcasted = pyqtSignal(str)
     broadcast_error = pyqtSignal(int, str)
 
-    def __init__(self, hash, state, metadata):
+    def __init__(self, sha_hash, state, blockid, metadata, locally_created):
         """
         The constructor of a transfer.
         Check for metadata keys which must be present :
@@ -43,12 +48,12 @@ class Transfer(QObject):
         - amount
         - comment
 
-        :param txdoc: The Transaction ucoinpy object
-        :param state: The state of the Transfer (TO_SEND, AWAITING, VALIDATED, REFUSED or DROPPED)
-        :param metadata: The transfer metadata
+        :param str sha_hash: The hash of the transaction
+        :param TransferState state: The state of the Transfer
+        :param ucoinpy.documents.BlockId blockid: The blockid of the transaction in the blockchain
+        :param dict metadata: The transfer metadata
         """
         assert('receiver' in metadata)
-        assert('block' in metadata)
         assert('time' in metadata)
         assert('issuer' in metadata)
         assert('amount' in metadata)
@@ -58,30 +63,88 @@ class Transfer(QObject):
         assert('txid' in metadata)
         super().__init__()
 
-        self.hash = hash
+        self.sha_hash = sha_hash
         self.state = state
+        self.blockid = blockid
+        self._locally_created = locally_created
         self._metadata = metadata
 
+        self._table_states = {
+            (TransferState.TO_SEND, (list, Block)):
+                (
+                    (self._broadcast_success, lambda l, b: self._wait(b), TransferState.AWAITING),
+                    (lambda l,b: self._broadcast_failure(l), None, TransferState.REFUSED),
+                ),
+            (TransferState.TO_SEND, ()):
+                ((self._is_locally_created, self._drop, TransferState.DROPPED),),
+
+            (TransferState.AWAITING, (bool, Block)):
+                ((self._found_in_block, lambda r, b: self._be_validating(b), TransferState.VALIDATING),),
+            (TransferState.AWAITING, (bool, Block, int, int)):
+                ((self._not_found_in_blockchain, None, TransferState.REFUSED),),
+
+            (TransferState.VALIDATING, (bool, Block, int)):
+                ((self._reached_enough_confrmation, None, TransferState.VALIDATED),),
+            (TransferState.VALIDATING, (bool, Block)):
+                ((self._rollback_and_removed, lambda r, b: self._drop(), TransferState.DROPPED),),
+
+            (TransferState.VALIDATED, (bool, Block, int)):
+                ((self._rollback_in_fork_window, lambda r, b, i: self._be_validating(b), TransferState.VALIDATING),),
+
+            (TransferState.VALIDATED, (bool, Block)):
+                (
+                    (self._rollback_and_removed, lambda r, b: self._drop(), TransferState.DROPPED),
+                    (self._rollback_and_local, lambda r, b: self._wait(b), TransferState.AWAITING),
+                ),
+
+            (TransferState.REFUSED, ()):
+                ((self._is_locally_created, self._drop, TransferState.DROPPED),)
+        }
+
     @classmethod
     def initiate(cls, metadata):
         """
         Create a new transfer in a "TO_SEND" state.
+        :param dict metadata: The computed metadata of the transfer
+        :return: A new transfer
+        :rtype: Transfer
         """
-        return cls(None, Transfer.TO_SEND, metadata)
+        return cls(None, TransferState.TO_SEND, None, metadata, True)
 
     @classmethod
-    def create_from_blockchain(cls, hash, state, metadata):
+    def create_from_blockchain(cls, hash, blockid, metadata):
         """
         Create a new transfer sent from another cutecoin instance
+        :param str hash: The transaction hash
+        :param ucoinpy.documents.BlockId blockid: The block id were we found the tx
+        :param dict metadata: The computed metadata of the transaction
+        :return: A new transfer
+        :rtype: Transfer
         """
-        return cls(hash, state, metadata)
+        return cls(hash, TransferState.VALIDATING, blockid, metadata, False)
 
     @classmethod
     def load(cls, data):
         """
         Create a new transfer from a dict in json format.
+        :param dict data: The loaded data
+        :return: A new transfer
+        :rtype: Transfer
+        """
+        return cls(data['hash'],
+                   TransferState[data['state']],
+                   BlockId.from_str(data['blockid']) if data['blockid'] else None,
+                   data['metadata'], data['local'])
+
+    def jsonify(self):
+        """
+        :return: The transfer as a dict in json format
         """
-        return cls(data['hash'], data['state'], data['metadata'])
+        return {'hash': self.sha_hash,
+                'state': self.state.name,
+                'blockid': str(self.blockid) if self.blockid else None,
+                'metadata': self._metadata,
+                'local': self._locally_created}
 
     @property
     def metadata(self):
@@ -90,13 +153,178 @@ class Transfer(QObject):
         """
         return self._metadata
 
-    def jsonify(self):
+    def _not_found_in_blockchain(self, rollback, block, mediantime_target, mediantime_blocks):
         """
-        :return: The transfer as a dict in json format
+        Check if the transaction could not be found in the blockchain
+        :param bool rollback: True if we are in a rollback procedure
+        :param ucoinpy.documents.Block block: The block to look for the tx
+        :param int mediantime_target: The mediantime to mine a block in the community parameters
+        :param int mediantime_blocks: The number of block used to derive the mediantime
+        :return: True if the transaction could not be found in a given time
+        :rtype: bool
+        """
+        if not rollback:
+            for tx in block.transactions:
+                if tx.sha_hash == self.sha_hash:
+                    return False
+            if block.time > self.metadata['time'] + mediantime_target*mediantime_blocks:
+                return True
+        return False
+
+    def _found_in_block(self, rollback, block):
+        """
+        Check if the transaction can be found in the blockchain
+        :param bool rollback: True if we are in a rollback procedure
+        :param ucoinpy.documents.Block block: The block to check for the transaction
+        :return: True if the transaction was found
+        :rtype: bool
+        """
+        if not rollback:
+            for tx in block.transactions:
+                if tx.sha_hash == self.sha_hash:
+                    return True
+        return False
+
+    def _broadcast_success(self, ret_codes, block):
+        """
+        Check if the retcode is 200 after a POST
+        :param list ret_codes: The POST return codes of the broadcast
+        :param ucoinpy.documents.Block block: The current block used for transition.
+        :return: True if the post was successful
+        :rtype: bool
+        """
+        return 200 in ret_codes
+
+    def _broadcast_failure(self, ret_codes):
+        """
+        Check if no retcode is 200 after a POST
+        :param list ret_codes: The POST return codes of the broadcast
+        :return: True if the post was failed
+        :rtype: bool
+        """
+        return 200 not in ret_codes
+
+    def _reached_enough_confrmation(self, rollback, current_block, fork_window):
+        """
+        Check if the transfer reached enough confrmation in the blockchain
+        :param bool rollback: True if we are in a rollback procedure
+        :param ucoinpy.documents.Block current_block: The current block of the main blockchain
+        :param int fork_window: The number of confrmations needed on the network
+        :return: True if the transfer reached enough confrmations
+        :rtype: bool
+        """
+        return not rollback and self.blockid.number + fork_window <= current_block.number
+
+    def _rollback_and_removed(self, rollback, block):
+        """
+        Check if the transfer is not in the block anymore
+        :param bool rollback: True if we are in a rollback procedure
+        :param ucoinpy.documents.Block block: The block to check for the transaction
+        :return: True if the transfer is not found in the block
         """
-        return {'hash': self.hash,
-                'state': self.state,
-                'metadata': self._metadata}
+        if rollback:
+            if not block or block.blockid != self.blockid:
+                return True
+            else:
+                return self.sha_hash not in [t.sha_hash for t in block.transactions]
+        return False
+
+    def _rollback_in_fork_window(self, rollback, current_block, fork_window):
+        """
+        Check if the transfer is not in the block anymore
+        :param bool rollback: True if we are in a rollback procedure
+        :param ucoinpy.documents.Block current_block: The block to check for the transaction
+        :return: True if the transfer is found in the block
+        """
+        if rollback:
+            return self.blockid.number + fork_window > current_block.number
+        return False
+
+    def _rollback_and_local(self, rollback, block):
+        """
+        Check if the transfer is not in the block anymore
+        :param bool rollback: True if we are in a rollback procedure
+        :param ucoinpy.documents.Block block: The block to check for the transaction
+        :return: True if the transfer is found in the block
+        """
+        if rollback and self._locally_created and block.blockid == self.blockid:
+            return self.sha_hash not in [t.sha_hash for t in block.transactions]
+        return False
+
+    def _is_locally_created(self):
+        """
+        Check if we can send back the transaction if it was locally created
+        :return: True if the transaction was locally created
+        """
+        return self._locally_created
+
+    def _wait(self, current_block):
+        """
+        Set the transfer as AWAITING confrmation.
+        :param ucoinpy.documents.Block current_block: Current block of the main blockchain
+        """
+        self.blockid = current_block.blockid
+        self._metadata['time'] = current_block.mediantime
+
+    def _be_validating(self, block):
+        """
+        Action when the transfer ins found in a block
+
+        :param bool rollback: True if we are in a rollback procedure
+        :param ucoinpy.documents.Block block: The block checked
+        """
+        self.blockid = block.blockid
+        self._metadata['time'] = block.mediantime
+
+    def _drop(self):
+        """
+        Cancel the transfer locally.
+        The transfer state becomes TransferState.DROPPED.
+        """
+        self.blockid = None
+
+    def _try_transition(self, transition_key, inputs):
+        """
+        Try the transition defined by the given transition_key
+        with inputs
+        :param tuple transition_key: The transition key in the table states
+        :param tuple inputs: The inputs
+        :return: True if the transition was applied
+        :rtype: bool
+        """
+        if len(inputs) == len(transition_key[1]):
+            for i, input in enumerate(inputs):
+                if type(input) is not transition_key[1][i]:
+                    return False
+            for transition in self._table_states[transition_key]:
+                if transition[0](*inputs):
+                    logging.debug("{0} : {1} --> {2}".format(self.sha_hash[:5], self.state.name,
+                                                             transition[2].name))
+                    # If the transition changes data, apply changes
+                    if transition[1]:
+                        transition[1](*inputs)
+                    self.state = transition[2]
+                    return True
+        return False
+
+    def run_state_transitions(self, inputs):
+        """
+        Try all current state transitions with inputs
+        :param tuple inputs: The inputs passed to the transitions
+        :return: True if the transaction changed state
+        :rtype: bool
+        """
+        transition_keys = [k for k in self._table_states.keys() if k[0] == self.state]
+        for key in transition_keys:
+            if self._try_transition(key, inputs):
+                return True
+        return False
+
+    def cancel(self):
+        """
+        Cancel a local transaction
+        """
+        self.run_state_transitions(())
 
     @asyncio.coroutine
     def send(self, txdoc, community):
@@ -108,70 +336,22 @@ class Transfer(QObject):
         :param txdoc: A transaction ucoinpy object
         :param community: The community target of the transaction
         """
-        replies = community.bma_access.broadcast(qtbma.tx.Process,
-                    post_args={'transaction': txdoc.signed_raw()})
-        for r in replies:
-            r.finished.connect(lambda reply=r: self.__handle_transfers_reply(replies, reply))
-
-        self.state = Transfer.AWAITING
-        self.hash = hashlib.sha1(txdoc.signed_raw().encode("ascii")).hexdigest().upper()
+        self.sha_hash = txdoc.sha_hash
+        responses = yield from community.bma_access.broadcast(bma.tx.Process,
+                post_args={'transaction': txdoc.signed_raw()})
         blockid = yield from community.blockid()
-        block = yield from community.bma_access.future_request(qtbma.blockchain.Block,
-                                  req_args={'number': blockid['number']})
-        if block != qtbma.blockchain.Block.null_value:
-            self._metadata['block'] = blockid['number']
-            self._metadata['time'] = block['medianTime']
-
-    def __handle_transfers_reply(self, replies, reply):
-        strdata = bytes(reply.readAll()).decode('utf-8')
-        logging.debug("Received reply : {0} : {1}".format(reply.error(), strdata))
-        if reply.error() == QNetworkReply.NoError:
-            for r in replies:
-                try:
-                    r.disconnect()
-                except TypeError as e:
-                    if "disconnect()" in str(e):
-                        logging.debug("Could not disconnect a reply")
-            self.transfer_broadcasted.emit(self.metadata['receiver_uid'])
-        else:
-            for r in replies:
-                if not r.isFinished() or r.error() == QNetworkReply.NoError:
-                    return
-            self.broadcast_error.emit(r.error(), strdata)
-
-    def check_registered(self, txhash, block_number, time, data_validation):
-        """
-        Check if the transfer was registered in a block.
-        Update the transfer state to VALIDATED if it was registered.
-
-        :param txhash: A transaction ucoinpy object found in the block
-        :param int block_number: The block number checked
-        :param int time: The time of the block
-        """
-        if txhash == self.hash:
-            if self.state == Transfer.AWAITING:
-                self.state = Transfer.VALIDATING
-                self._metadata['block'] = block_number
-                self._metadata['time'] = time
-            elif self.state == Transfer.VALIDATING and \
-                    self._metadata['block'] - block_number > data_validation:
-                self.state = Transfer.VALIDATED
-
-    def check_refused(self, time, block_time, mediantime_blocks):
-        """
-        Check if the transfer was refused
-        If more than block_time*15 seconds passed since
-        transfer, it is considered as refused.
-
-        :param int block: The current block number
-        """
-        if time > self._metadata['time'] + block_time*mediantime_blocks*10:
-            self.state = Transfer.REFUSED
-
-    def drop(self):
-        """
-        Cancel the transfer locally.
-        The transfer state becomes "DROPPED".
-        """
-        self.state = Transfer.DROPPED
-
+        block = yield from community.bma_access.future_request(bma.blockchain.Block,
+                                  req_args={'number': blockid.number})
+        signed_raw = "{0}{1}\n".format(block['raw'], block['signature'])
+        block_doc = Block.from_signed_raw(signed_raw)
+        result = (False, "")
+        for r in responses:
+            if r.status == 200:
+                result = (True, (yield from r.json()))
+            elif not result[0]:
+                result = (False, (yield from r.text()))
+            else:
+                yield from r.text()
+        self.run_state_transitions(([r.status for r in responses], block_doc))
+        self.run_state_transitions(([r.status for r in responses]))
+        return result
diff --git a/src/cutecoin/core/txhistory.py b/src/cutecoin/core/txhistory.py
index 6105ac21ca128a912199a21318cce90a7df08fb9..d6f5214b090386d2ef074c8e680be15660c7555c 100644
--- a/src/cutecoin/core/txhistory.py
+++ b/src/cutecoin/core/txhistory.py
@@ -1,11 +1,11 @@
 import asyncio
 import logging
 import hashlib
-from .transfer import Transfer
+from .transfer import Transfer, TransferState
 from ucoinpy.documents.transaction import InputSource, OutputSource
 from ucoinpy.documents.block import Block
-from ..tools.exceptions import LookupFailureError
-from .net.api import bma as qtbma
+from ..tools.exceptions import LookupFailureError, NoPeerAvailable
+from ucoinpy.api import  bma
 
 
 class TxHistory():
@@ -14,7 +14,7 @@ class TxHistory():
         self.wallet = wallet
         self.app = app
         self._stop_coroutines = False
-
+        self._running_refresh = []
         self._transfers = []
         self.available_sources = []
         self._dividends = []
@@ -38,6 +38,7 @@ class TxHistory():
             self.available_sources.append(InputSource.from_inline(s['inline']))
 
         for d in data['dividends']:
+            d['state'] = TransferState[d['state']]
             self._dividends.append(d)
 
         self.latest_block = data['latest_block']
@@ -53,7 +54,8 @@ class TxHistory():
             data_sources.append({'inline': "{0}\n".format(s.inline())})
 
         data_dividends = []
-        for d in self._dividends:
+        for d in self._dividends.copy():
+            d['state'] = d['state'].name
             data_dividends.append(d)
 
         return {'latest_block': self.latest_block,
@@ -63,7 +65,7 @@ class TxHistory():
 
     @property
     def transfers(self):
-        return [t for t in self._transfers if t.state != Transfer.DROPPED]
+        return [t for t in self._transfers if t.state != TransferState.DROPPED]
 
     @property
     def dividends(self):
@@ -72,25 +74,50 @@ class TxHistory():
     def stop_coroutines(self):
         self._stop_coroutines = True
 
-    @staticmethod
-    @asyncio.coroutine
-    def _validation_state(community, block_number, current_block):
-        members_pubkeys = yield from community.members_pubkeys()
-        if block_number + community.network.fork_window(members_pubkeys) + 1 < current_block["number"]:
-            state = Transfer.VALIDATED
-        else:
-            state = Transfer.VALIDATING
-        return state
+    def _get_block_doc(self, community, number):
+        """
+        Retrieve the current block document
+        :param cutecoin.core.Community community: The community we look for a block
+        :param int number: The block number to retrieve
+        :return: the block doc or None if no block was found
+        """
+        tries = 0
+        block_doc = None
+        block = None
+        while block is None and tries < 3:
+            try:
+                block = yield from community.bma_access.future_request(bma.blockchain.Block,
+                                      req_args={'number': number})
+                signed_raw = "{0}{1}\n".format(block['raw'],
+                                           block['signature'])
+                try:
+                    block_doc = Block.from_signed_raw(signed_raw)
+                except TypeError:
+                    logging.debug("Error in {0}".format(number))
+                    block = None
+                    tries += 1
+            except ValueError as e:
+                if '404' in str(e):
+                    block = None
+                    tries += 1
+        return block_doc
 
     @asyncio.coroutine
-    def _parse_transaction(self, community, tx, block_number,
-                           mediantime, received_list,
-                           current_block, txid):
+    def _parse_transaction(self, community, tx, blockid,
+                           mediantime, received_list, txid):
+        """
+        Parse a transaction
+        :param cutecoin.core.Community community: The community
+        :param ucoinpy.documents.Transaction tx: The tx json data
+        :param ucoinpy.documents.BlockId blockid: The block id where we found the tx
+        :param int mediantime: Median time on the network
+        :param list received_list: The list of received transactions
+        :param int txid: The latest txid
+        :return: the found transaction
+        """
         receivers = [o.pubkey for o in tx.outputs
                      if o.pubkey != tx.issuers[0]]
 
-        state = yield from TxHistory._validation_state(community, block_number, current_block)
-
         if len(receivers) == 0:
             receivers = [tx.issuers[0]]
 
@@ -106,162 +133,278 @@ class TxHistory():
         except LookupFailureError:
             receiver_uid = ""
 
-        metadata = {'block': block_number,
+        metadata = {
                     'time': mediantime,
                     'comment': tx.comment,
                     'issuer': tx.issuers[0],
                     'issuer_uid': issuer_uid,
                     'receiver': receivers[0],
                     'receiver_uid': receiver_uid,
-                    'txid': txid}
+                    'txid': txid
+                    }
 
         in_issuers = len([i for i in tx.issuers
                      if i == self.wallet.pubkey]) > 0
         in_outputs = len([o for o in tx.outputs
                        if o.pubkey == self.wallet.pubkey]) > 0
-        awaiting = [t for t in self._transfers
-                    if t.state in (Transfer.AWAITING, Transfer.VALIDATING)]
 
         # We check if the transaction correspond to one we sent
         # but not from this cutecoin Instance
         tx_hash = hashlib.sha1(tx.signed_raw().encode("ascii")).hexdigest().upper()
-        if tx_hash not in [t.hash for t in awaiting]:
-            # If the wallet pubkey is in the issuers we sent this transaction
-            if in_issuers:
-                outputs = [o for o in tx.outputs
-                           if o.pubkey != self.wallet.pubkey]
-                amount = 0
-                for o in outputs:
-                    amount += o.amount
-                metadata['amount'] = amount
-                transfer = Transfer.create_from_blockchain(tx_hash,
-                                                           state,
-                                                     metadata.copy())
-                return transfer
-            # If we are not in the issuers,
-            # maybe it we are in the recipients of this transaction
-            elif in_outputs:
-                outputs = [o for o in tx.outputs
-                           if o.pubkey == self.wallet.pubkey]
-                amount = 0
-                for o in outputs:
-                    amount += o.amount
-                metadata['amount'] = amount
-
-                if tx_hash not in [t.hash for t in awaiting]:
-                    transfer = Transfer.create_from_blockchain(tx_hash,
-                                                               state,
-                                                         metadata.copy())
-                    received_list.append(transfer)
-                    return transfer
-        else:
-            transfer = [t for t in awaiting if t.hash == tx_hash][0]
-
-            transfer.check_registered(tx_hash, current_block['number'], mediantime,
-                                      community.network.fork_window(community.members_pubkeys()) + 1)
+        # If the wallet pubkey is in the issuers we sent this transaction
+        if in_issuers:
+            outputs = [o for o in tx.outputs
+                       if o.pubkey != self.wallet.pubkey]
+            amount = 0
+            for o in outputs:
+                amount += o.amount
+            metadata['amount'] = amount
+            transfer = Transfer.create_from_blockchain(tx_hash,
+                                                       blockid,
+                                                 metadata.copy())
+            return transfer
+        # If we are not in the issuers,
+        # maybe it we are in the recipients of this transaction
+        elif in_outputs:
+            outputs = [o for o in tx.outputs
+                       if o.pubkey == self.wallet.pubkey]
+            amount = 0
+            for o in outputs:
+                amount += o.amount
+            metadata['amount'] = amount
+
+            transfer = Transfer.create_from_blockchain(tx_hash,
+                                                       blockid,
+                                                 metadata.copy())
+            received_list.append(transfer)
+            return transfer
         return None
 
     @asyncio.coroutine
-    def _parse_block(self, community, block_number, received_list, current_block, txmax):
-        block = yield from community.bma_access.future_request(qtbma.blockchain.Block,
-                                  req_args={'number': block_number})
-        signed_raw = "{0}{1}\n".format(block['raw'],
-                                       block['signature'])
+    def _parse_block(self, community, block_number, received_list, txmax):
+        """
+        Parse a block
+        :param cutecoin.core.Community community: The community
+        :param int block_number: The block to request
+        :param list received_list: The list where we are appending transactions
+        :param int txmax: Latest tx id
+        :return: The list of transfers sent
+        """
+        block_doc = yield from self._get_block_doc(community, block_number)
         transfers = []
-        try:
-            block_doc = Block.from_signed_raw(signed_raw)
-        except:
-            logging.debug("Error in {0}".format(block_number))
-            raise
-        for (txid, tx) in enumerate(block_doc.transactions):
-            transfer = yield from self._parse_transaction(community, tx, block_number,
-                                    block_doc.mediantime, received_list,
-                                    current_block, txid+txmax)
-            if transfer != None:
-                logging.debug("Transfer amount : {0}".format(transfer.metadata['amount']))
-                transfers.append(transfer)
-            else:
-                logging.debug("None transfer")
+        if block_doc:
+            for transfer in [t for t in self._transfers if t.state == TransferState.AWAITING]:
+                transfer.run_state_transitions((False, block_doc))
+
+            new_tx = [t for t in block_doc.transactions
+                      if t.sha_hash not in [trans.sha_hash for trans in self._transfers]
+                      ]
+
+            for (txid, tx) in enumerate(new_tx):
+                transfer = yield from self._parse_transaction(community, tx, block_doc.blockid,
+                                        block_doc.mediantime, received_list, txid+txmax)
+                if transfer != None:
+                    #logging.debug("Transfer amount : {0}".format(transfer.metadata['amount']))
+                    transfers.append(transfer)
+                else:
+                    pass
+                    #logging.debug("None transfer")
+        else:
+            logging.debug("Could not find or parse block {0}".format(block_number))
         return transfers
 
     @asyncio.coroutine
     def request_dividends(self, community, parsed_block):
-        dividends_data = qtbma.ud.History.null_value
         for i in range(0, 6):
-            if dividends_data == qtbma.ud.History.null_value:
-                dividends_data = yield from community.bma_access.future_request(qtbma.ud.History,
+            try:
+                dividends_data = yield from community.bma_access.future_request(bma.ud.History,
                                                 req_args={'pubkey': self.wallet.pubkey})
 
-        dividends = dividends_data['history']['history']
-        for d in dividends:
-            if d['block_number'] < parsed_block:
-                dividends.remove(d)
-        return dividends
+                dividends = dividends_data['history']['history'].copy()
+
+                for d in dividends:
+                    if d['block_number'] < parsed_block:
+                        dividends.remove(d)
+                return dividends
+            except ValueError as e:
+                if '404' in str(e):
+                    pass
+        return {}
 
     @asyncio.coroutine
-    def refresh(self, community, received_list):
+    def _refresh(self, community, block_number_from, block_to, received_list):
         """
         Refresh last transactions
 
         :param cutecoin.core.Community community: The community
         :param list received_list: List of transactions received
         """
-        current_block = yield from community.bma_access.future_request(qtbma.blockchain.Block,
-                                req_args={'number': community.network.latest_block_number})
-        members_pubkeys = yield from community.members_pubkeys()
-        # We look for the first block to parse, depending on awaiting and validating transfers and ud...
-        blocks = [tx.metadata['block'] for tx in self._transfers
-                  if tx.state in (Transfer.AWAITING, Transfer.VALIDATING)] +\
-                 [ud['block_number'] for ud in self._dividends
-                  if ud['state'] in (Transfer.AWAITING, Transfer.VALIDATING)] +\
-                 [max(0, self.latest_block - community.network.fork_window(members_pubkeys))]
-        parsed_block = min(set(blocks))
-        logging.debug("Refresh from : {0} to {1}".format(self.latest_block, current_block['number']))
-        dividends = yield from self.request_dividends(community, parsed_block)
-        with_tx_data = yield from community.bma_access.future_request(qtbma.blockchain.TX)
-        blocks_with_tx = with_tx_data['result']['blocks']
         new_transfers = []
         new_dividends = []
-        # Lets look if transactions took too long to be validated
-        awaiting = [t for t in self._transfers
-                    if t.state == Transfer.AWAITING]
-        while parsed_block < current_block['number']:
-            udid = 0
-            for d in [ud for ud in dividends if ud['block_number'] == parsed_block]:
-                state = yield from TxHistory._validation_state(community, d['block_number'], current_block)
-
-                if d['block_number'] not in [ud['block_number'] for ud in self._dividends]:
-                    d['id'] = udid
-                    d['state'] = state
-                    new_dividends.append(d)
-                    udid += 1
-                else:
-                    known_dividend = [ud for ud in self._dividends
-                                      if ud['block_number'] == d['block_number']][0]
-                    known_dividend['state'] = state
-
-            # We parse only blocks with transactions
-            if parsed_block in blocks_with_tx:
-                transfers = yield from self._parse_block(community, parsed_block,
-                                                         received_list, current_block,
-                                                         udid + len(new_transfers))
-                new_transfers += transfers
-
-            self.wallet.refresh_progressed.emit(parsed_block, current_block['number'], self.wallet.pubkey)
-            parsed_block += 1
-
-        if current_block['number'] > self.latest_block:
-            self.available_sources = yield from self.wallet.future_sources(community)
-            if self._stop_coroutines:
-                return
-            self.latest_block = current_block['number']
-
-        for transfer in awaiting:
-            transfer.check_refused(current_block['medianTime'],
-                                   community.parameters['avgGenTime'],
-                                   community.parameters['medianTimeBlocks'])
+        try:
+            logging.debug("Refresh from : {0} to {1}".format(block_number_from, block_to['number']))
+            dividends = yield from self.request_dividends(community, block_number_from)
+            with_tx_data = yield from community.bma_access.future_request(bma.blockchain.TX)
+            members_pubkeys = yield from community.members_pubkeys()
+            fork_window = community.network.fork_window(members_pubkeys)
+            blocks_with_tx = with_tx_data['result']['blocks']
+            while block_number_from <= block_to['number']:
+                udid = 0
+                for d in [ud for ud in dividends if ud['block_number'] == block_number_from]:
+                    state = TransferState.VALIDATED if block_number_from + fork_window <= block_to['number'] \
+                        else TransferState.VALIDATING
+
+                    if d['block_number'] not in [ud['block_number'] for ud in self._dividends]:
+                        d['id'] = udid
+                        d['state'] = state
+                        new_dividends.append(d)
+
+                        udid += 1
+                    else:
+                        known_dividend = [ud for ud in self._dividends
+                                          if ud['block_number'] == d['block_number']][0]
+                        known_dividend['state'] = state
+
+                # We parse only blocks with transactions
+                if block_number_from in blocks_with_tx:
+                    transfers = yield from self._parse_block(community, block_number_from,
+                                                             received_list,
+                                                             udid + len(new_transfers))
+                    new_transfers += transfers
+
+                self.wallet.refresh_progressed.emit(block_number_from, block_to['number'], self.wallet.pubkey)
+                block_number_from += 1
+
+            signed_raw = "{0}{1}\n".format(block_to['raw'],
+                                       block_to['signature'])
+            block_to = Block.from_signed_raw(signed_raw)
+            for transfer in [t for t in self._transfers + new_transfers if t.state == TransferState.VALIDATING]:
+                transfer.run_state_transitions((False, block_to, fork_window))
+
+            # We check if latest parsed block_number is a new high number
+            if block_number_from > self.latest_block:
+                self.available_sources = yield from self.wallet.sources(community)
+                if self._stop_coroutines:
+                    return
+                self.latest_block = block_number_from
+
+            parameters = yield from community.parameters()
+            for transfer in [t for t in self._transfers if t.state == TransferState.AWAITING]:
+                transfer.run_state_transitions((False, block_to,
+                                                parameters['avgGenTime'], parameters['medianTimeBlocks']))
+        except NoPeerAvailable as e:
+            logging.debug(str(e))
+            self.wallet.refresh_finished.emit([])
+            return
 
         self._transfers = self._transfers + new_transfers
         self._dividends = self._dividends + new_dividends
 
         self.wallet.refresh_finished.emit(received_list)
+
+    @asyncio.coroutine
+    def _check_block(self, community, block_number):
+        """
+        Parse a block
+        :param cutecoin.core.Community community: The community
+        :param int block_number: The block to check for transfers
+        """
+        block_doc = yield from self._get_block_doc(community, block_number)
+
+        # We check if transactions are still present
+        for transfer in [t for t in self._transfers
+                         if t.state in (TransferState.VALIDATING, TransferState.VALIDATED) and
+                         t.blockid.number == block_number]:
+            if transfer.blockid.sha_hash == block_doc.blockid.sha_hash:
+                return True
+            transfer.run_state_transitions((True, block_doc))
+        return False
+
+    @asyncio.coroutine
+    def _rollback(self, community):
+        """
+        Rollback last transactions until we find one still present
+        in the main blockchain
+
+        :param cutecoin.core.Community community: The community
+        """
+        try:
+            logging.debug("Rollback from : {0}".format(self.latest_block))
+            # We look for the block goal to check for rollback,
+            #  depending on validating and validated transfers...
+            tx_blocks = [tx.blockid.number for tx in self._transfers
+                          if tx.state in (TransferState.VALIDATED, TransferState.VALIDATING) and
+                          tx.blockid is not None]
+            tx_blocks.reverse()
+            for i, block_number in enumerate(tx_blocks):
+                self.wallet.refresh_progressed.emit(i, len(tx_blocks), self.wallet.pubkey)
+                if (yield from self._check_block(community, block_number)):
+                    break
+
+            current_block = yield from self._get_block_doc(community, community.network.current_blockid.number)
+            members_pubkeys = yield from community.members_pubkeys()
+            fork_window = community.network.fork_window(members_pubkeys)
+            # We check if transactions VALIDATED are in the fork window now
+            for transfer in [t for t in self._transfers
+                             if t.state == TransferState.VALIDATED]:
+                transfer.run_state_transitions((True, current_block, fork_window))
+        except NoPeerAvailable:
+            logging.debug("No peer available")
+
+    @asyncio.coroutine
+    def refresh(self, community, received_list):
+        # We update the block goal
+        try:
+            current_block_number = community.network.current_blockid.number
+            if current_block_number:
+                current_block = yield from community.bma_access.future_request(bma.blockchain.Block,
+                                        req_args={'number': current_block_number})
+                members_pubkeys = yield from community.members_pubkeys()
+                # We look for the first block to parse, depending on awaiting and validating transfers and ud...
+                tx_blocks = [tx.blockid.number for tx in self._transfers
+                          if tx.state in (TransferState.AWAITING, TransferState.VALIDATING) \
+                         and tx.blockid is not None]
+                ud_blocks = [ud['block_number'] for ud in self._dividends
+                          if ud['state'] in (TransferState.AWAITING, TransferState.VALIDATING)]
+                blocks = tx_blocks + ud_blocks + \
+                         [max(0, self.latest_block - community.network.fork_window(members_pubkeys))]
+                block_from = min(set(blocks))
+
+                yield from self._wait_for_previous_refresh()
+                if block_from < current_block["number"]:
+                    # Then we start a new one
+                    logging.debug("Starts a new refresh")
+                    task = asyncio.async(self._refresh(community, block_from, current_block, received_list))
+                    self._running_refresh.append(task)
+        except ValueError as e:
+            logging.debug("Block not found")
+        except NoPeerAvailable:
+            logging.debug("No peer available")
+
+    @asyncio.coroutine
+    def rollback(self, community, received_list):
+        yield from self._wait_for_previous_refresh()
+        # Then we start a new one
+        logging.debug("Starts a new rollback")
+        task = asyncio.async(self._rollback(community))
+        self._running_refresh.append(task)
+
+        # Then we start a refresh to check for new transactions
+        yield from self.refresh(community, received_list)
+
+    @asyncio.coroutine
+    def _wait_for_previous_refresh(self):
+        # We wait for current refresh coroutines
+        if len(self._running_refresh) > 0:
+            logging.debug("Wait for the end of previous refresh")
+            done, pending = yield from asyncio.wait(self._running_refresh)
+            for cor in done:
+                try:
+                    self._running_refresh.remove(cor)
+                except ValueError:
+                    logging.debug("Task already removed.")
+            for p in pending:
+                logging.debug("Still waiting for : {0}".format(p))
+            logging.debug("Previous refresh finished")
+        else:
+            logging.debug("No previous refresh")
diff --git a/src/cutecoin/core/txhistory_indexation.py b/src/cutecoin/core/txhistory_indexation.py
index 399f1f064bf7f5a385b6f156a55dae6fce5b34de..b1abc41b4defe05304683c2dbd27709906e9dbfb 100644
--- a/src/cutecoin/core/txhistory_indexation.py
+++ b/src/cutecoin/core/txhistory_indexation.py
@@ -3,7 +3,7 @@ import logging
 from .transfer import Transfer
 from ucoinpy.documents.transaction import InputSource, OutputSource
 from ..tools.exceptions import LookupFailureError
-from .net.api import bma as qtbma
+from ucoinpy.api import bma
 
 
 class TxHistory():
@@ -166,8 +166,8 @@ class TxHistory():
         :param cutecoin.core.Community community: The community
         :param list received_list: List of transactions received
         """
-        current_block = yield from community.bma_access.future_request(qtbma.blockchain.Block,
-                                req_args={'number': community.network.latest_block_number})
+        current_block = yield from community.bma_access.future_request(bma.blockchain.Block,
+                                req_args={'number': community.network.current_blockid.number})
         members_pubkeys = yield from community.members_pubkeys()
         # We look for the first block to parse, depending on awaiting and validating transfers and ud...
         blocks = [tx.metadata['block'] for tx in self._transfers
@@ -177,10 +177,10 @@ class TxHistory():
                  [max(0, self.latest_block - community.network.fork_window(members_pubkeys))]
         parsed_block = min(set(blocks))
         logging.debug("Refresh from : {0} to {1}".format(self.latest_block, current_block['number']))
-        dividends_data = qtbma.ud.History.null_value
+        dividends_data = bma.ud.History.null_value
         for i in range(0, 6):
-            if dividends_data == qtbma.ud.History.null_value:
-                dividends_data = yield from community.bma_access.future_request(qtbma.ud.History,
+            if dividends_data == bma.ud.History.null_value:
+                dividends_data = yield from community.bma_access.future_request(bma.ud.History,
                                                 req_args={'pubkey': self.wallet.pubkey})
 
         dividends = dividends_data['history']['history']
@@ -208,16 +208,16 @@ class TxHistory():
                                       if ud['block_number'] == d['block_number']][0]
                     known_dividend['state'] = state
 
-            tx_history = qtbma.tx.history.Blocks.null_value
+            tx_history = bma.tx.history.Blocks.null_value
             for i in range(0, 6):
-                if tx_history == qtbma.tx.history.Blocks.null_value:
-                    tx_history = yield from community.bma_access.future_request(qtbma.tx.history.Blocks,
+                if tx_history == bma.tx.history.Blocks.null_value:
+                    tx_history = yield from community.bma_access.future_request(bma.tx.history.Blocks,
                                                           req_args={'pubkey': self.wallet.pubkey,
                                                                  'from_':str(parsed_block),
                                                                  'to_': str(parsed_block + 99)})
             # If after 6 requests we still get wrong data
             # we continue to next loop
-            if tx_history == qtbma.tx.history.Blocks.null_value:
+            if tx_history == bma.tx.history.Blocks.null_value:
                 continue
 
             # We parse only blocks with transactions
@@ -239,7 +239,7 @@ class TxHistory():
             parsed_block += 100
 
         if current_block['number'] > self.latest_block:
-            self.available_sources = yield from self.wallet.future_sources(community)
+            self.available_sources = yield from self.wallet.sources(community)
             if self._stop_coroutines:
                 return
             self.latest_block = current_block['number']
diff --git a/src/cutecoin/core/wallet.py b/src/cutecoin/core/wallet.py
index faa268b8085d264aa73ea57eec32a5cc9b1eec89..d7b0f901971bf2b416e42ada9776d480720c750a 100644
--- a/src/cutecoin/core/wallet.py
+++ b/src/cutecoin/core/wallet.py
@@ -7,8 +7,8 @@ Created on 1 févr. 2014
 from ucoinpy.documents.transaction import InputSource, OutputSource, Transaction
 from ucoinpy.key import SigningKey
 
-from .net.api import bma as qtbma
-from .net.api.bma import PROTOCOL_VERSION
+from ucoinpy.api import bma
+from ucoinpy.api.bma import PROTOCOL_VERSION
 from ..tools.exceptions import NotEnoughMoneyError, NoPeerAvailable, LookupFailureError
 from .transfer import Transfer
 from .txhistory import TxHistory
@@ -26,8 +26,6 @@ class Wallet(QObject):
     """
     refresh_progressed = pyqtSignal(int, int, str)
     refresh_finished = pyqtSignal(list)
-    transfer_broadcasted = pyqtSignal(str)
-    broadcast_error = pyqtSignal(int, str)
 
     def __init__(self, walletid, pubkey, name, identities_registry):
         """
@@ -114,6 +112,15 @@ class Wallet(QObject):
         logging.debug("Refresh transactions for {0}".format(self.pubkey))
         asyncio.async(self.caches[community.currency].refresh(community, received_list))
 
+    def rollback_transactions(self, community, received_list):
+        """
+        Rollback the transactions of this wallet for the specified community.
+
+        :param community: The community to refresh its cache
+        """
+        logging.debug("Refresh transactions for {0}".format(self.pubkey))
+        asyncio.async(self.caches[community.currency].rollback(community, received_list))
+
     def check_password(self, salt, password):
         """
         Check if wallet password is ok.
@@ -218,10 +225,14 @@ class Wallet(QObject):
         :param int amount: The amount of money to transfer
         :param str message: The message to send with the transfer
         """
-        blockid = yield from community.blockid()
-        block_number = blockid['number']
-        block = yield from community.bma_access.future_request(qtbma.blockchain.Block,
-                                  req_args={'number': block_number})
+        try:
+            blockid = yield from community.blockid()
+            block = yield from community.bma_access.future_request(bma.blockchain.Block,
+                                      req_args={'number': blockid.number})
+        except ValueError as e:
+            if '404' in str(e):
+                return (False, "Could not send transfer with null blockchain")
+
         time = block['medianTime']
         txid = len(block['transactions'])
         key = None
@@ -272,24 +283,7 @@ class Wallet(QObject):
 
         tx.sign([key])
         logging.debug("Transaction : {0}".format(tx.signed_raw()))
-        transfer.transfer_broadcasted.connect(self.transfer_broadcasted)
-        transfer.broadcast_error.connect(self.broadcast_error)
-        yield from transfer.send(tx, community)
-
-    @asyncio.coroutine
-    def future_sources(self, community):
-        """
-        Get available sources in a given community
-
-        :param cutecoin.core.community.Community community: The community where we want available sources
-        :return: List of InputSource ucoinpy objects
-        """
-        data = yield from community.bma_access.future_request(qtbma.tx.Sources,
-                                 req_args={'pubkey': self.pubkey})
-        tx = []
-        for s in data['sources']:
-            tx.append(InputSource.from_bma(s))
-        return tx
+        return (yield from transfer.send(tx, community))
 
     @asyncio.coroutine
     def sources(self, community):
@@ -299,11 +293,14 @@ class Wallet(QObject):
         :param cutecoin.core.community.Community community: The community where we want available sources
         :return: List of InputSource ucoinpy objects
         """
-        data = yield from community.bma_access.future_request(qtbma.tx.Sources,
-                                 req_args={'pubkey': self.pubkey})
         tx = []
-        for s in data['sources']:
-            tx.append(InputSource.from_bma(s))
+        try:
+            data = yield from community.bma_access.future_request(bma.tx.Sources,
+                                     req_args={'pubkey': self.pubkey})
+            for s in data['sources']:
+                tx.append(InputSource.from_bma(s))
+        except NoPeerAvailable as e:
+            logging.debug(str(e))
         return tx
 
     def transfers(self, community):
diff --git a/src/cutecoin/gui/certification.py b/src/cutecoin/gui/certification.py
index cd2baf04c42615f0f39132f7622adf2c0dd2db55..3ec8c7387f2e4355c9edf6ef62fbed07ce926ef0 100644
--- a/src/cutecoin/gui/certification.py
+++ b/src/cutecoin/gui/certification.py
@@ -3,15 +3,19 @@ Created on 24 dec. 2014
 
 @author: inso
 """
-from PyQt5.QtWidgets import QDialog, QMessageBox, QDialogButtonBox, QApplication
-from PyQt5.QtCore import Qt, pyqtSlot
-from ..gen_resources.certification_uic import Ui_CertificationDialog
-from . import toast
-from ..core.net.api import bma as qtbma
-from ..tools.decorators import asyncify
 import asyncio
 import logging
 
+from PyQt5.QtWidgets import QDialog, QDialogButtonBox, QApplication
+
+from PyQt5.QtCore import Qt
+
+from ..gen_resources.certification_uic import Ui_CertificationDialog
+from cutecoin.gui.widgets import toast
+from cutecoin.gui.widgets.dialogs import QAsyncMessageBox
+from ..tools.decorators import asyncify
+from ..tools.exceptions import NoPeerAvailable
+
 
 class CertificationDialog(QDialog, Ui_CertificationDialog):
     """
@@ -35,14 +39,17 @@ class CertificationDialog(QDialog, Ui_CertificationDialog):
         for contact in certifier.contacts:
             self.combo_contact.addItem(contact['name'])
 
-    @staticmethod
-    def certify_identity(app, account, password_asker, community, identity):
-        dialog = CertificationDialog(app, account, password_asker)
+    @classmethod
+    @asyncio.coroutine
+    def certify_identity(cls, app, account, password_asker, community, identity):
+        dialog = cls(app, account, password_asker)
         dialog.combo_community.setCurrentText(community.name)
         dialog.edit_pubkey.setText(identity.pubkey)
         dialog.radio_pubkey.setChecked(True)
-        return dialog.exec_()
+        return (yield from dialog.async_exec())
 
+    @asyncify
+    @asyncio.coroutine
     def accept(self):
         if self.radio_contact.isChecked():
             index = self.combo_contact.currentIndex()
@@ -50,34 +57,29 @@ class CertificationDialog(QDialog, Ui_CertificationDialog):
         else:
             pubkey = self.edit_pubkey.text()
 
-        password = self.password_asker.exec_()
+        password = yield from self.password_asker.async_exec()
         if password == "":
             return
-
         QApplication.setOverrideCursor(Qt.WaitCursor)
-        self.account.certification_broadcasted.connect(lambda: self.certification_sent(pubkey,
-                                                                                       self.community.currency))
-        self.account.broadcast_error.connect(self.handle_error)
-
-        asyncio.async(self.account.certify(password, self.community, pubkey))
-
-    def certification_sent(self, pubkey, currency):
-        toast.display(self.tr("Certification"),
-                      self.tr("Success certifying {0} from {1}").format(pubkey, currency))
-        self.account.certification_broadcasted.disconnect()
-        self.account.broadcast_error.disconnect(self.handle_error)
-        QApplication.restoreOverrideCursor()
-        super().accept()
-
-    @pyqtSlot(int, str)
-    def handle_error(self, error_code, text):
-        if self.app.preferences['notifications']:
-            toast.display(self.tr("Error"), self.tr("{0} : {1}".format(error_code, text)))
-        #else:
-        #    QMessageBox.Critical(self, self.tr("Error", self.tr("{0} : {1}".format(error_code, text))))
-        self.account.certification_broadcasted.disconnect()
-        self.account.broadcast_error.disconnect(self.handle_error)
-        QApplication.restoreOverrideCursor()
+        result = yield from self.account.certify(password, self.community, pubkey)
+        if result[0]:
+            if self.app.preferences['notifications']:
+                toast.display(self.tr("Certification"),
+                              self.tr("Success sending certification"))
+            else:
+                yield from QAsyncMessageBox.information(self, self.tr("Certification"),
+                                             self.tr("Success sending certification"))
+            QApplication.restoreOverrideCursor()
+            super().accept()
+        else:
+            if self.app.preferences['notifications']:
+                toast.display(self.tr("Certification"), self.tr("Could not broadcast certification : {0}"
+                                                                .format(result[1])))
+            else:
+                yield from QAsyncMessageBox.critical(self, self.tr("Certification"),
+                                          self.tr("Could not broadcast certification : {0}"
+                                                                .format(result[1])))
+            QApplication.restoreOverrideCursor()
 
     def change_current_community(self, index):
         self.community = self.account.communities[index]
@@ -88,8 +90,16 @@ class CertificationDialog(QDialog, Ui_CertificationDialog):
     def refresh(self):
         account_identity = yield from self.account.identity(self.community)
         is_member = yield from account_identity.is_member(self.community)
-        block_0 = yield from self.community.get_block(0)
-        if is_member or block_0 == qtbma.blockchain.Block.null_value:
+        try:
+            block_0 = yield from self.community.get_block(0)
+        except ValueError as e:
+            if '404' in str(e) or '000' in str(e):
+                block_0 = None
+        except NoPeerAvailable as e:
+            logging.debug(str(e))
+            block_0 = None
+
+        if is_member or not block_0:
             self.button_box.button(QDialogButtonBox.Ok).setEnabled(True)
             self.button_box.button(QDialogButtonBox.Ok).setText(self.tr("&Ok"))
         else:
@@ -104,4 +114,4 @@ class CertificationDialog(QDialog, Ui_CertificationDialog):
         future = asyncio.Future()
         self.finished.connect(lambda r: future.set_result(r))
         self.open()
-        return future
\ No newline at end of file
+        return future
diff --git a/src/cutecoin/gui/community_tile.py b/src/cutecoin/gui/community_tile.py
index f6c3df18f7769a908f2b29eb1687822975c7cb12..2c437f52928f6454efcdd6884c2f3aea31de0f1a 100644
--- a/src/cutecoin/gui/community_tile.py
+++ b/src/cutecoin/gui/community_tile.py
@@ -2,11 +2,23 @@
 @author: inso
 """
 
-from PyQt5.QtWidgets import QFrame, QLabel, QVBoxLayout, QLayout, QPushButton
-from PyQt5.QtGui import QPalette
-from PyQt5.QtCore import QEvent, QSize, pyqtSignal
-from ..tools.decorators import asyncify
 import asyncio
+import enum
+
+from PyQt5.QtWidgets import QFrame, QLabel, QVBoxLayout, QLayout
+from PyQt5.QtCore import QSize, pyqtSignal
+from ucoinpy.documents.block import Block
+
+from ..tools.decorators import asyncify
+from ..tools.exceptions import NoPeerAvailable
+from cutecoin.gui.widgets.busy import Busy
+
+
+@enum.unique
+class CommunityState(enum.Enum):
+    NOT_INIT = 0
+    OFFLINE = 1
+    READY = 2
 
 
 class CommunityTile(QFrame):
@@ -16,59 +28,112 @@ class CommunityTile(QFrame):
         super().__init__(parent)
         self.app = app
         self.community = community
+        self.community.network.nodes_changed.connect(self.handle_nodes_change)
         self.text_label = QLabel()
         self.setLayout(QVBoxLayout())
         self.layout().setSizeConstraint(QLayout.SetFixedSize)
         self.layout().addWidget(self.text_label)
         self.setFrameShape(QFrame.StyledPanel)
         self.setFrameShadow(QFrame.Raised)
+        self.busy = Busy(self)
+        self.busy.hide()
+        self._state = CommunityState.NOT_INIT
         self.refresh()
 
     def sizeHint(self):
         return QSize(250, 250)
 
+    def handle_nodes_change(self):
+        if len(self.community.network.online_nodes) > 0:
+            if self.community.network.current_blockid.sha_hash == Block.Empty_Hash:
+                state = CommunityState.NOT_INIT
+            else:
+                state = CommunityState.READY
+        else:
+            state = CommunityState.OFFLINE
+
+        if state != self._state:
+            self.refresh()
+
     @asyncify
     @asyncio.coroutine
     def refresh(self):
-        current_block = yield from self.community.get_block(self.community.network.latest_block_number)
-        members_pubkeys = yield from self.community.members_pubkeys()
-        amount = yield from self.app.current_account.amount(self.community)
-        localized_amount = yield from self.app.current_account.current_ref(amount,
-                                                    self.community, self.app).localized(units=True,
-                                        international_system=self.app.preferences['international_system_of_units'])
-        if current_block['monetaryMass']:
-            localized_monetary_mass = yield from self.app.current_account.current_ref(current_block['monetaryMass'],
-                                                    self.community, self.app).localized(units=True,
-                                        international_system=self.app.preferences['international_system_of_units'])
-        else:
-            localized_monetary_mass = ""
-        status = self.tr("Member") if self.app.current_account.pubkey in members_pubkeys \
-            else self.tr("Non-Member")
-        description = """<html>
-        <body>
-        <p>
-        <span style=" font-size:16pt; font-weight:600;">{currency}</span>
-        </p>
-        <p>{nb_members} {members_label}</p>
-        <p><span style=" font-weight:600;">{monetary_mass_label}</span> : {monetary_mass}</p>
-        <p><span style=" font-weight:600;">{status_label}</span> : {status}</p>
-        <p><span style=" font-weight:600;">{balance_label}</span> : {balance}</p>
-        </body>
-        </html>""".format(currency=self.community.currency,
-                          nb_members=len(members_pubkeys),
-                          members_label=self.tr("members"),
-                          monetary_mass_label=self.tr("Monetary mass"),
-                          monetary_mass=localized_monetary_mass,
-                          status_label=self.tr("Status"),
-                          status=status,
-                          balance_label=self.tr("Balance"),
-                          balance=localized_amount)
-        self.text_label.setText(description)
+        self.busy.show()
+        self.setFixedSize(QSize(150, 150))
+        try:
+            current_block = yield from self.community.get_block()
+            members_pubkeys = yield from self.community.members_pubkeys()
+            amount = yield from self.app.current_account.amount(self.community)
+            localized_amount = yield from self.app.current_account.current_ref(amount,
+                                                        self.community, self.app).localized(units=True,
+                                            international_system=self.app.preferences['international_system_of_units'])
+            if current_block['monetaryMass']:
+                localized_monetary_mass = yield from self.app.current_account.current_ref(current_block['monetaryMass'],
+                                                        self.community, self.app).localized(units=True,
+                                            international_system=self.app.preferences['international_system_of_units'])
+            else:
+                localized_monetary_mass = ""
+            status = self.tr("Member") if self.app.current_account.pubkey in members_pubkeys \
+                else self.tr("Non-Member")
+            description = """<html>
+            <body>
+            <p>
+            <span style=" font-size:16pt; font-weight:600;">{currency}</span>
+            </p>
+            <p>{nb_members} {members_label}</p>
+            <p><span style=" font-weight:600;">{monetary_mass_label}</span> : {monetary_mass}</p>
+            <p><span style=" font-weight:600;">{status_label}</span> : {status}</p>
+            <p><span style=" font-weight:600;">{balance_label}</span> : {balance}</p>
+            </body>
+            </html>""".format(currency=self.community.currency,
+                              nb_members=len(members_pubkeys),
+                              members_label=self.tr("members"),
+                              monetary_mass_label=self.tr("Monetary mass"),
+                              monetary_mass=localized_monetary_mass,
+                              status_label=self.tr("Status"),
+                              status=status,
+                              balance_label=self.tr("Balance"),
+                              balance=localized_amount)
+            self.text_label.setText(description)
+            self._state = CommunityState.READY
+        except NoPeerAvailable:
+            description = """<html>
+            <body>
+            <p>
+            <span style=" font-size:16pt; font-weight:600;">{currency}</span>
+            </p>
+            <p>{message}</p>
+            </body>
+            </html>""".format(currency=self.community.currency,
+                              message=self.tr("Not connected"))
+            self.text_label.setText(description)
+            self._state = CommunityState.OFFLINE
+        except ValueError as e:
+            if '404' in str(e):
+                description = """<html>
+                <body>
+                <p>
+                <span style=" font-size:16pt; font-weight:600;">{currency}</span>
+                </p>
+                <p>{message}</p>
+                </body>
+                </html>""".format(currency=self.community.currency,
+                              message=self.tr("Community not initialized"))
+                self.text_label.setText(description)
+                self._state = CommunityState.NOT_INIT
+            else:
+                raise
+
+        self.busy.hide()
 
     def mousePressEvent(self, event):
         self.clicked.emit()
         return super().mousePressEvent(event)
 
+    def resizeEvent(self, event):
+        self.busy.resize(event.size())
+        super().resizeEvent(event)
+
     def enterEvent(self, event):
         self.setStyleSheet("color: rgb(0, 115, 173);")
         return super().enterEvent(event)
diff --git a/src/cutecoin/gui/community_view.py b/src/cutecoin/gui/community_view.py
index 39b822482af2c7cf635916942b928a286c1250ed..52d35196eccba18486485fc2b629acc1b5c1010f 100644
--- a/src/cutecoin/gui/community_view.py
+++ b/src/cutecoin/gui/community_view.py
@@ -4,19 +4,22 @@ Created on 2 févr. 2014
 @author: inso
 """
 
-import time
 import logging
-from PyQt5.QtWidgets import QWidget, QMessageBox, QDialog
-from PyQt5.QtCore import QModelIndex, pyqtSlot, QDateTime, QLocale, QEvent
+import asyncio
+import time
+
+from PyQt5.QtWidgets import QWidget, QMessageBox, QDialog, QPushButton, QTabBar, QAction
+from PyQt5.QtCore import pyqtSlot, QDateTime, QLocale, QEvent
+
 from PyQt5.QtGui import QIcon
 
-from ..core.net.api import bma as qtbma
 from .wot_tab import WotTabWidget
 from .identities_tab import IdentitiesTabWidget
 from .transactions_tab import TransactionsTabWidget
 from .network_tab import NetworkTabWidget
-from . import toast
-import asyncio
+from .informations_tab import InformationsTabWidget
+from cutecoin.gui.widgets.dialogs import QAsyncMessageBox
+from cutecoin.gui.widgets import toast
 from ..tools.exceptions import MembershipNotFoundError, LookupFailureError, NoPeerAvailable
 from ..tools.decorators import asyncify, once_at_a_time, cancel_once_task
 from ..gen_resources.community_view_uic import Ui_CommunityWidget
@@ -40,11 +43,6 @@ class CommunityWidget(QWidget, Ui_CommunityWidget):
         self.status_label = status_label
 
         self.status_info = []
-        self.status_infotext = {'membership_expire_soon':
-                            self.tr("Warning : Your membership is expiring soon."),
-                            'warning_certifications':
-                            self.tr("Warning : Your could miss certifications soon.")
-                            }
 
         super().setupUi(self)
 
@@ -54,11 +52,15 @@ class CommunityWidget(QWidget, Ui_CommunityWidget):
 
         self.tab_history = TransactionsTabWidget(self.app)
 
+        self.tab_informations = InformationsTabWidget(self.app)
+
         self.tab_network = NetworkTabWidget(self.app)
         self.tab_identities.view_in_wot.connect(self.tab_wot.draw_graph)
         self.tab_identities.view_in_wot.connect(lambda: self.tabs.setCurrentWidget(self.tab_wot))
         self.tab_history.view_in_wot.connect(self.tab_wot.draw_graph)
         self.tab_history.view_in_wot.connect(lambda: self.tabs.setCurrentWidget(self.tab_wot))
+        self.tab_identities.money_sent.connect(lambda: self.tab_history.table_history.model().sourceModel().refresh_transfers())
+        self.tab_wot.money_sent.connect(lambda: self.tab_history.table_history.model().sourceModel().refresh_transfers())
 
         self.tabs.addTab(self.tab_history,
                                  QIcon(':/icons/tx_icon'),
@@ -76,6 +78,31 @@ class CommunityWidget(QWidget, Ui_CommunityWidget):
                                  QIcon(":/icons/network_icon"),
                                  self.tr("Network"))
 
+        action_showinfo = QAction(self.tr("Show informations"), self.toolbutton_menu)
+
+        def show_info():
+            if self.tabs.indexOf(self.tab_informations) == -1:
+                self.tabs.addTab(self.tab_informations,
+                                         QIcon(":/icons/informations_icon"),
+                                         self.tr("Informations"))
+                style = self.app.qapp.style()
+                icon = style.standardIcon(style.SP_DockWidgetCloseButton)
+                close_button = QPushButton(icon, '')
+                close_button.clicked.connect(lambda: self.tabs.removeTab(self.tabs.indexOf(self.tab_informations)))
+                close_button.setStyleSheet('border-style: inset;')
+                self.tabs.tabBar().setTabButton(4, QTabBar.RightSide, close_button)
+
+        action_showinfo.triggered.connect(show_info)
+        self.toolbutton_menu.addAction(action_showinfo)
+
+        self.action_publish_uid = QAction(self.tr("Publish UID"), self.toolbutton_menu)
+        self.action_publish_uid.triggered.connect(self.publish_uid)
+        self.toolbutton_menu.addAction(self.action_publish_uid)
+
+        self.action_revoke_uid = QAction(self.tr("Revoke UID"), self.toolbutton_menu)
+        self.action_revoke_uid.triggered.connect(self.revoke_uid)
+        self.toolbutton_menu.addAction(self.action_revoke_uid)
+
         self.button_membership.clicked.connect(self.send_membership_demand)
 
     def cancel_once_tasks(self):
@@ -85,22 +112,14 @@ class CommunityWidget(QWidget, Ui_CommunityWidget):
 
     def change_account(self, account, password_asker):
         self.cancel_once_tasks()
-        if self.account:
-            self.account.broadcast_error.disconnect(self.handle_broadcast_error)
-            self.account.membership_broadcasted.disconnect(self.handle_membership_broadcasted)
-            self.account.selfcert_broadcasted.disconnect(self.handle_selfcert_broadcasted)
 
         self.account = account
 
-        if self.account:
-            self.account.broadcast_error.connect(self.handle_broadcast_error)
-            self.account.membership_broadcasted.connect(self.handle_membership_broadcasted)
-            self.account.selfcert_broadcasted.connect(self.handle_selfcert_broadcasted)
-
         self.password_asker = password_asker
         self.tab_wot.change_account(account, self.password_asker)
         self.tab_identities.change_account(account, self.password_asker)
         self.tab_history.change_account(account, self.password_asker)
+        self.tab_informations.change_account(account)
 
     def change_community(self, community):
         self.cancel_once_tasks()
@@ -109,6 +128,7 @@ class CommunityWidget(QWidget, Ui_CommunityWidget):
         self.tab_wot.change_community(community)
         self.tab_history.change_community(community)
         self.tab_identities.change_community(community)
+        self.tab_informations.change_community(community)
 
         if self.community:
             self.community.network.new_block_mined.disconnect(self.refresh_block)
@@ -118,6 +138,7 @@ class CommunityWidget(QWidget, Ui_CommunityWidget):
             community.network.nodes_changed.connect(self.refresh_status)
             self.label_currency.setText(community.currency)
         self.community = community
+        self.refresh_status()
         self.refresh_quality_buttons()
 
     @pyqtSlot(str)
@@ -148,26 +169,32 @@ class CommunityWidget(QWidget, Ui_CommunityWidget):
             if will_expire_soon:
                 days = int(expiration_time / 3600 / 24)
                 if days > 0:
-                    self.status_info.append('membership_expire_soon')
+                    if 'membership_expire_soon' not in self.status_info:
+                        self.status_info.append('membership_expire_soon')
 
-                    if self.app.preferences['notifications']:
+                    if self.app.preferences['notifications'] and\
+                            self.app.notifications['membership_expire_soon'][1]+24*3600 < time.time():
                         toast.display(self.tr("Membership expiration"),
                                   self.tr("<b>Warning : Membership expiration in {0} days</b>").format(days))
+                        self.app.notifications['membership_expire_soon'][1] = time.time()
 
             certifiers_of = yield from person.unique_valid_certifiers_of(self.app.identities_registry,
                                                                          self.community)
             if len(certifiers_of) < parameters['sigQty']:
-                self.status_info.append('warning_certifications')
-                if self.app.preferences['notifications']:
+                if 'warning_certifications' not in self.status_info:
+                    self.status_info.append('warning_certifications')
+                if self.app.preferences['notifications'] and\
+                        self.app.notifications['warning_certifications'][1]+24*3600 < time.time():
                     toast.display(self.tr("Certifications number"),
                               self.tr("<b>Warning : You are certified by only {0} persons, need {1}</b>")
                               .format(len(certifiers_of),
                                      parameters['sigQty']))
+                    self.app.notifications['warning_certifications'][1] = time.time()
 
         except MembershipNotFoundError as e:
             pass
-
-        self.tab_history.start_progress()
+        except NoPeerAvailable:
+            logging.debug("No peer available")
         self.refresh_data()
 
     def refresh_data(self):
@@ -186,15 +213,32 @@ class CommunityWidget(QWidget, Ui_CommunityWidget):
         """
         logging.debug("Refresh status")
         if self.community:
-            text = self.tr(" Block {0}").format(self.community.network.latest_block_number)
-
-            block = yield from self.community.get_block(self.community.network.latest_block_number)
-            if block != qtbma.blockchain.Block.null_value:
-                text += " ( {0} )".format(QLocale.toString(
-                            QLocale(),
-                            QDateTime.fromTime_t(block['medianTime']),
-                            QLocale.dateTimeFormat(QLocale(), QLocale.NarrowFormat)
-                        ))
+            text = ""
+
+            current_block_number = self.community.network.current_blockid.number
+            if current_block_number:
+                text += self.tr(" Block {0}").format(current_block_number)
+                try:
+                    block = yield from self.community.get_block(current_block_number)
+                    text += " ({0})".format(QLocale.toString(
+                                QLocale(),
+                                QDateTime.fromTime_t(block['medianTime']),
+                                QLocale.dateTimeFormat(QLocale(), QLocale.NarrowFormat)
+                            ))
+                except NoPeerAvailable as e:
+                    logging.debug(str(e))
+                    text += " ( ### ) "
+                except ValueError as e:
+                    logging.debug(str(e))
+
+            if len(self.community.network.synced_nodes) == 0:
+                self.button_membership.setEnabled(False)
+                self.button_certification.setEnabled(False)
+                self.button_send_money.setEnabled(False)
+            else:
+                self.button_membership.setEnabled(True)
+                self.button_certification.setEnabled(True)
+                self.button_send_money.setEnabled(True)
 
             if self.community.network.quality > 0.66:
                 icon = '<img src=":/icons/connected" width="12" height="12"/>'
@@ -202,13 +246,21 @@ class CommunityWidget(QWidget, Ui_CommunityWidget):
                 icon = '<img src=":/icons/weak_connect" width="12" height="12"/>'
             else:
                 icon = '<img src=":/icons/disconnected" width="12" height="12"/>'
-            status_infotext = " - ".join([self.status_infotext[info] for info in self.status_info])
+
+            status_infotext = " - ".join([self.app.notifications[info][0] for info in self.status_info])
             label_text = "{0}{1}".format(icon, text)
             if status_infotext != "":
                 label_text += " - {0}".format(status_infotext)
 
             if self.app.preferences['expert_mode']:
-                label_text += self.tr(" - Median fork window : {0}").format(self.community.network.fork_window(self.community.members_pubkeys()))
+                try:
+                    members_pubkeys = yield from self.community.members_pubkeys()
+                    label_text += self.tr(" - Median fork window : {0}")\
+                        .format(self.community.network.fork_window(members_pubkeys))
+                except NoPeerAvailable as e:
+                    logging.debug(str(e))
+                    label_text += self.tr(" - Median fork window : {0}")\
+                        .format("#")
 
             self.status_label.setText(label_text)
 
@@ -219,24 +271,29 @@ class CommunityWidget(QWidget, Ui_CommunityWidget):
         if self.account and self.community:
             try:
                 account_identity = yield from self.account.identity(self.community)
-                published_uid = account_identity.published_uid(self.community)
+                published_uid = yield from account_identity.published_uid(self.community)
+                uid_is_revokable = yield from account_identity.uid_is_revokable(self.community)
                 if published_uid:
                     logging.debug("UID Published")
+                    self.action_revoke_uid.setEnabled(uid_is_revokable)
                     is_member = account_identity.is_member(self.community)
                     if is_member:
                         self.button_membership.setText(self.tr("Renew membership"))
-                        self.button_membership.show()
-                        self.button_certification.show()
+                        self.button_membership.setEnabled(True)
+                        self.button_certification.setEnabled(True)
+                        self.action_publish_uid.setEnabled(False)
                     else:
                         logging.debug("Not a member")
                         self.button_membership.setText(self.tr("Send membership demand"))
-                        self.button_membership.show()
-                        if self.community.get_block(0) != qtbma.blockchain.Block.null_value:
-                            self.button_certification.hide()
+                        self.button_membership.setEnabled(True)
+                        self.action_publish_uid.setEnabled(False)
+                        if self.community.get_block(0) is not None:
+                            self.button_certification.setEnable(False)
                 else:
                     logging.debug("UID not published")
-                    self.button_membership.hide()
-                    self.button_certification.hide()
+                    self.button_membership.setEnabled(False)
+                    self.button_certification.setEnabled(False)
+                    self.action_publish_uid.setEnabled(True)
             except LookupFailureError:
                 self.button_membership.hide()
                 self.button_certification.hide()
@@ -248,15 +305,32 @@ class CommunityWidget(QWidget, Ui_CommunityWidget):
         if self.community and self.tab_history.table_history.model():
             self.tab_history.table_history.model().sourceModel().refresh_transfers()
             self.tab_history.refresh_balance()
+            self.tab_informations.refresh()
 
-    def send_membership_demand(self):
-        password = self.password_asker.exec_()
+    @asyncify
+    @asyncio.coroutine
+    def send_membership_demand(self, checked=False):
+        password = yield from self.password_asker.async_exec()
         if self.password_asker.result() == QDialog.Rejected:
             return
-        asyncio.async(self.account.send_membership(password, self.community, 'IN'))
+        result = yield from self.account.send_membership(password, self.community, 'IN')
+        if result[0]:
+            if self.app.preferences['notifications']:
+                toast.display(self.tr("Membership"), self.tr("Success sending Membership demand"))
+            else:
+                yield from QAsyncMessageBox.information(self, self.tr("Membership"),
+                                                        self.tr("Success sending Membership demand"))
+        else:
+            if self.app.preferences['notifications']:
+                toast.display(self.tr("Membership"), result[1])
+            else:
+                yield from QAsyncMessageBox.critical(self, self.tr("Membership"),
+                                                        result[1])
 
+    @asyncify
+    @asyncio.coroutine
     def send_membership_leaving(self):
-        reply = QMessageBox.warning(self, self.tr("Warning"),
+        reply = yield from QAsyncMessageBox.warning(self, self.tr("Warning"),
                              self.tr("""Are you sure ?
 Sending a leaving demand  cannot be canceled.
 The process to join back the community later will have to be done again.""")
@@ -265,70 +339,59 @@ The process to join back the community later will have to be done again.""")
             password = self.password_asker.exec_()
             if self.password_asker.result() == QDialog.Rejected:
                 return
+            result = yield from self.account.send_membership(password, self.community, 'OUT')
+            if result[0]:
+                if self.app.preferences['notifications']:
+                    toast.display(self.tr("Revoke"), self.tr("Success sending Revoke demand"))
+                else:
+                    yield from QAsyncMessageBox.information(self, self.tr("Revoke"),
+                                                            self.tr("Success sending Revoke demand"))
+            else:
+                if self.app.preferences['notifications']:
+                    toast.display(self.tr("Revoke"), result[1])
+                else:
+                    yield from QAsyncMessageBox.critical(self, self.tr("Revoke"),
+                                                         result[1])
 
-            asyncio.async(self.account.send_membership(password, self.community, 'OUT'))
-
-    def publish_uid(self):
-        reply = QMessageBox.warning(self, self.tr("Warning"),
-                             self.tr("""Are you sure ?
-Publishing your UID can be canceled by Revoke UID.""")
-.format(self.account.pubkey), QMessageBox.Ok | QMessageBox.Cancel)
-        if reply == QMessageBox.Ok:
-            password = self.password_asker.exec_()
-            if self.password_asker.result() == QDialog.Rejected:
-                return
-
-            try:
-                self.account.send_selfcert(password, self.community)
-                toast.display(self.tr("UID Publishing"),
-                              self.tr("Success publishing your UID"))
-            except ValueError as e:
-                QMessageBox.critical(self, self.tr("Publish UID error"),
-                                  str(e))
-            except NoPeerAvailable as e:
-                QMessageBox.critical(self, self.tr("Network error"),
-                                     self.tr("Couldn't connect to network : {0}").format(e),
-                                     QMessageBox.Ok)
-            except Exception as e:
-                 QMessageBox.critical(self, self.tr("Error"),
-                                      "{0}".format(e),
-                                      QMessageBox.Ok)
-
-    def revoke_uid(self):
-        reply = QMessageBox.warning(self, self.tr("Warning"),
-                                 self.tr("""Are you sure ?
-Revoking your UID can only success if it is not already validated by the network.""")
-.format(self.account.pubkey), QMessageBox.Ok | QMessageBox.Cancel)
-        if reply == QMessageBox.Ok:
-            password = self.password_asker.exec_()
-            if self.password_asker.result() == QDialog.Rejected:
-                return
-
-            asyncio.async(self.account.revoke(password, self.community))
-
-    def handle_membership_broadcasted(self):
-        if self.app.preferences['notifications']:
-            toast.display(self.tr("Membership"), self.tr("Success sending Membership demand"))
-        else:
-            QMessageBox.information(self, self.tr("Membership"), self.tr("Success sending Membership demand"))
-
-    def handle_revoke_broadcasted(self):
-        if self.app.preferences['notifications']:
-            toast.display(self.tr("Revoke"), self.tr("Success sending Revoke demand"))
-        else:
-            QMessageBox.information(self, self.tr("Revoke"), self.tr("Success sending Revoke demand"))
-
-    def handle_selfcert_broadcasted(self):
-        if self.app.preferences['notifications']:
-            toast.display(self.tr("Self Certification"), self.tr("Success sending Self Certification document"))
+    @asyncify
+    @asyncio.coroutine
+    def publish_uid(self, checked=False):
+        password = yield from self.password_asker.async_exec()
+        if self.password_asker.result() == QDialog.Rejected:
+            return
+        result = yield from self.account.send_selfcert(password, self.community)
+        if result[0]:
+            if self.app.preferences['notifications']:
+                toast.display(self.tr("UID"), self.tr("Success publishing your UID"))
+            else:
+                yield from QAsyncMessageBox.information(self, self.tr("Membership"),
+                                                        self.tr("Success publishing your UID"))
         else:
-            QMessageBox.information(self.tr("Self Certification"), self.tr("Success sending Self Certification document"))
+            if self.app.preferences['notifications']:
+                toast.display(self.tr("UID"), result[1])
+            else:
+                yield from QAsyncMessageBox.critical(self, self.tr("UID"),
+                                                        result[1])
 
-    def handle_broadcast_error(self, error, strdata):
-        if self.app.preferences['notifications']:
-            toast.display(error, strdata)
+    @asyncify
+    @asyncio.coroutine
+    def revoke_uid(self, checked=False):
+        password = yield from self.password_asker.async_exec()
+        if self.password_asker.result() == QDialog.Rejected:
+            return
+        result = yield from self.account.revoke(password, self.community)
+        if result[0]:
+            if self.app.preferences['notifications']:
+                toast.display(self.tr("Revoke UID"), self.tr("Your UID was revoked successfully."))
+            else:
+                yield from QAsyncMessageBox.information(self, self.tr("Membership"),
+                                                        self.tr("Your UID was revoked successfully."))
         else:
-            QMessageBox.error(error, strdata)
+            if self.app.preferences['notifications']:
+                toast.display(self.tr("Revoke UID"), result[1])
+            else:
+                yield from QAsyncMessageBox.critical(self, self.tr("UID"),
+                                                        result[1])
 
     def showEvent(self, QShowEvent):
         """
diff --git a/src/cutecoin/gui/homescreen.py b/src/cutecoin/gui/homescreen.py
index 85f21a1671999dc048c77dea6bfd764be1cb4474..b60ca759ca2fb632f4428581049bb652be8a47e0 100644
--- a/src/cutecoin/gui/homescreen.py
+++ b/src/cutecoin/gui/homescreen.py
@@ -84,6 +84,7 @@ class HomeScreenWidget(QWidget, Ui_HomescreenWidget):
         :param QShowEvent:
         :return:
         """
+        self.frame_communities.refresh_content()
         self.status_label.setText("")
 
     def changeEvent(self, event):
diff --git a/src/cutecoin/gui/identities_tab.py b/src/cutecoin/gui/identities_tab.py
index d8b40b4a70b6483e7457b0d95228f770b9b84d14..ed4515044923af0dd9a90b2f0a3df6502676dbb3 100644
--- a/src/cutecoin/gui/identities_tab.py
+++ b/src/cutecoin/gui/identities_tab.py
@@ -4,20 +4,24 @@ Created on 2 févr. 2014
 @author: inso
 """
 
+import asyncio
 import logging
+
 from PyQt5.QtCore import Qt, pyqtSignal, QEvent
-from PyQt5.QtGui import QIcon, QCursor
-from PyQt5.QtWidgets import QWidget, QMessageBox, QAction, QMenu, QDialog, \
+from PyQt5.QtGui import QCursor
+from PyQt5.QtWidgets import QWidget, QAction, QMenu, QDialog, \
                             QAbstractItemView
+from ucoinpy.api import bma
+
 from ..models.identities import IdentitiesFilterProxyModel, IdentitiesTableModel
 from ..gen_resources.identities_tab_uic import Ui_IdentitiesTab
 from .contact import ConfigureContactDialog
 from .member import MemberDialog
 from .transfer import TransferMoneyDialog
+from cutecoin.gui.widgets.busy import Busy
 from .certification import CertificationDialog
-import asyncio
-from ..core.net.api import bma as qtbma
 from ..core.registry import Identity
+from ..tools.exceptions import NoPeerAvailable
 from ..tools.decorators import asyncify, once_at_a_time, cancel_once_task
 
 
@@ -27,6 +31,7 @@ class IdentitiesTabWidget(QWidget, Ui_IdentitiesTab):
     classdocs
     """
     view_in_wot = pyqtSignal(Identity)
+    money_sent = pyqtSignal()
 
     def __init__(self, app):
         """
@@ -52,6 +57,8 @@ class IdentitiesTabWidget(QWidget, Ui_IdentitiesTab):
         self.table_identities.customContextMenuRequested.connect(self.identity_context_menu)
         self.table_identities.sortByColumn(0, Qt.AscendingOrder)
         self.table_identities.resizeColumnsToContents()
+        identities_model.modelAboutToBeReset.connect(lambda: self.table_identities.setEnabled(False))
+        identities_model.modelReset.connect(lambda: self.table_identities.setEnabled(True))
 
         members_action = QAction(self.tr("Members"), self)
         members_action.triggered.connect(self._async_search_members)
@@ -61,11 +68,15 @@ class IdentitiesTabWidget(QWidget, Ui_IdentitiesTab):
         self.button_search.addAction(direct_connections)
         self.button_search.clicked.connect(self._async_execute_search_text)
 
+        self.busy = Busy(self.table_identities)
+        self.busy.hide()
+
     def cancel_once_tasks(self):
         cancel_once_task(self, self.identity_context_menu)
         cancel_once_task(self, self._async_execute_search_text)
         cancel_once_task(self, self._async_search_members)
         cancel_once_task(self, self._async_search_direct_connections)
+        cancel_once_task(self, self.refresh_identities)
 
     def change_account(self, account, password_asker):
         self.cancel_once_tasks()
@@ -114,11 +125,16 @@ class IdentitiesTabWidget(QWidget, Ui_IdentitiesTab):
             view_wot.triggered.connect(self.view_wot)
             view_wot.setData(identity)
 
+            copy_pubkey = QAction(self.tr("Copy pubkey"), self)
+            copy_pubkey.triggered.connect(self.copy_identity_pubkey)
+            copy_pubkey.setData(identity)
+
             menu.addAction(informations)
             menu.addAction(add_contact)
             menu.addAction(send_money)
             menu.addAction(certify)
             menu.addAction(view_wot)
+            menu.addAction(copy_pubkey)
 
             # Show the context menu.
             menu.popup(QCursor.pos())
@@ -150,21 +166,31 @@ class IdentitiesTabWidget(QWidget, Ui_IdentitiesTab):
         if result == QDialog.Accepted:
             self.window().refresh_contacts()
 
+    @asyncify
+    @asyncio.coroutine
     def send_money_to_identity(self, identity):
-        if isinstance(identity, str):
-            pubkey = identity
-        else:
-            pubkey = identity.pubkey
-        result = TransferMoneyDialog.send_money_to_identity(self.app, self.account, self.password_asker,
+        result = yield from TransferMoneyDialog.send_money_to_identity(self.app, self.account, self.password_asker,
                                                             self.community, identity)
         if result == QDialog.Accepted:
-            currency_tab = self.window().currencies_tabwidget.currentWidget()
-            currency_tab.tab_history.table_history.model().sourceModel().refresh_transfers()
+            self.money_sent.emit()
 
+    @asyncify
+    @asyncio.coroutine
     def certify_identity(self, identity):
-        CertificationDialog.certify_identity(self.app, self.account, self.password_asker,
+        yield from CertificationDialog.certify_identity(self.app, self.account, self.password_asker,
                                              self.community, identity)
 
+    def copy_identity_pubkey(self):
+        """
+        Copy the identity pubkey to the clipboard
+
+        :param cutecoin.core.registry.Identity identity: The identity
+        """
+        identity = self.sender().data()
+        cb = self.app.qapp.clipboard()
+        cb.clear(mode=cb.Clipboard)
+        cb.setText(identity.pubkey, mode=cb.Clipboard)
+
     def view_wot(self):
         identity = self.sender().data()
         self.view_in_wot.emit(identity)
@@ -173,17 +199,26 @@ class IdentitiesTabWidget(QWidget, Ui_IdentitiesTab):
     @asyncify
     @asyncio.coroutine
     def _async_execute_search_text(self, checked):
+        cancel_once_task(self, self._async_search_members)
+        cancel_once_task(self, self._async_search_direct_connections)
+
+        self.busy.show()
         text = self.edit_textsearch.text()
         if len(text) < 2:
             return
-        response = yield from self.community.bma_access.future_request(qtbma.wot.Lookup, {'search': text})
-        identities = []
-        for identity_data in response['results']:
-            identity = yield from self.app.identities_registry.future_find(identity_data['pubkey'], self.community)
-            identities.append(identity)
+        try:
+            response = yield from self.community.bma_access.future_request(bma.wot.Lookup, {'search': text})
+            identities = []
+            for identity_data in response['results']:
+                identity = yield from self.app.identities_registry.future_find(identity_data['pubkey'], self.community)
+                identities.append(identity)
 
-        self.edit_textsearch.clear()
-        self.refresh_identities(identities)
+            self.edit_textsearch.clear()
+            yield from self.refresh_identities(identities)
+        except ValueError as e:
+            logging.debug(str(e))
+        finally:
+            self.busy.hide()
 
     @once_at_a_time
     @asyncify
@@ -192,7 +227,11 @@ class IdentitiesTabWidget(QWidget, Ui_IdentitiesTab):
         """
         Search members of community and display found members
         """
+        cancel_once_task(self, self._async_execute_search_text)
+        cancel_once_task(self, self._async_search_direct_connections)
+
         if self.community:
+            self.busy.show()
             pubkeys = yield from self.community.members_pubkeys()
             identities = []
             for p in pubkeys:
@@ -200,7 +239,8 @@ class IdentitiesTabWidget(QWidget, Ui_IdentitiesTab):
                 identities.append(identity)
 
             self.edit_textsearch.clear()
-            self.refresh_identities(identities)
+            yield from self.refresh_identities(identities)
+            self.busy.hide()
 
     @once_at_a_time
     @asyncify
@@ -209,29 +249,43 @@ class IdentitiesTabWidget(QWidget, Ui_IdentitiesTab):
         """
         Search members of community and display found members
         """
+        cancel_once_task(self, self._async_search_members)
+        cancel_once_task(self, self._async_execute_search_text)
+
         if self.account and self.community:
-            self_identity = yield from self.account.identity(self.community)
-            account_connections = []
-            certs_of = yield from self_identity.unique_valid_certifiers_of(self.app.identities_registry, self.community)
-            for p in certs_of:
-                account_connections.append(p['identity'])
-            certifiers_of = [p for p in account_connections]
-            certs_by = yield from self_identity.unique_valid_certified_by(self.app.identities_registry, self.community)
-            for p in certs_by:
-                account_connections.append(p['identity'])
-            certified_by = [p for p in account_connections
-                      if p.pubkey not in [i.pubkey for i in certifiers_of]]
-            identities = certifiers_of + certified_by
-            self.refresh_identities(identities)
+            try:
+                yield from self.refresh_identities([])
+                self.busy.show()
+                self_identity = yield from self.account.identity(self.community)
+                account_connections = []
+                certs_of = yield from self_identity.unique_valid_certifiers_of(self.app.identities_registry, self.community)
+                for p in certs_of:
+                    account_connections.append(p['identity'])
+                certifiers_of = [p for p in account_connections]
+                certs_by = yield from self_identity.unique_valid_certified_by(self.app.identities_registry, self.community)
+                for p in certs_by:
+                    account_connections.append(p['identity'])
+                certified_by = [p for p in account_connections
+                          if p.pubkey not in [i.pubkey for i in certifiers_of]]
+                identities = certifiers_of + certified_by
+                self.busy.hide()
+                yield from self.refresh_identities(identities)
+            except NoPeerAvailable:
+                self.busy.hide()
 
+    @asyncio.coroutine
     def refresh_identities(self, identities):
         """
         Refresh the table with specified identities.
         If no identities is passed, use the account connections.
         """
-        self.table_identities.model().sourceModel().refresh_identities(identities)
+        yield from self.table_identities.model().sourceModel().refresh_identities(identities)
         self.table_identities.resizeColumnsToContents()
 
+    def resizeEvent(self, event):
+        self.busy.resize(event.size())
+        super().resizeEvent(event)
+
     def changeEvent(self, event):
         """
         Intercepte LanguageChange event to translate UI
diff --git a/src/cutecoin/gui/informations_tab.py b/src/cutecoin/gui/informations_tab.py
index 6826e8b6a17eedd45f54df1d0812d4670bea6b19..3d23be2fe786c37389f1f3cf5ca51cafbf80f7c1 100644
--- a/src/cutecoin/gui/informations_tab.py
+++ b/src/cutecoin/gui/informations_tab.py
@@ -5,18 +5,21 @@ 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
-
+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
     """
 
-    def __init__(self, app, community):
+    def __init__(self, app):
         """
         Constructor of the InformationsTabWidget
 
@@ -25,53 +28,67 @@ class InformationsTabWidget(QWidget, Ui_InformationsTabWidget):
         :return:
         """
         super().__init__()
+        self.setupUi(self)
         self.app = app
-        self.community = community
-        self.community.inner_data_changed.connect(self.refresh)
+        self.account = None
+        self.community = None
+        self.busy = Busy(self.scrollArea)
+        self.busy.hide()
 
-        self.setupUi(self)
-        self.refresh()
+    def change_account(self, account):
+        cancel_once_task(self, self.refresh_labels)
+        self.account = account
 
-    @property
-    def account(self):
-        return self.app.current_account
+    def change_community(self, community):
+        cancel_once_task(self, self.refresh_labels)
+        self.community = community
+        self.refresh()
 
     def refresh(self):
+        if self.account and self.community:
+            self.refresh_labels()
+
+    @once_at_a_time
+    @asyncify
+    @asyncio.coroutine
+    def refresh_labels(self):
+        self.busy.show()
         #  try to request money parameters
         try:
-            params = self.community.parameters
-        except Exception as e:
+            params = yield from self.community.parameters()
+        except NoPeerAvailable as e:
             logging.debug('community parameters error : ' + str(e))
             return False
 
         #  try to request money variables from last ud block
         try:
-            block_ud = self.community.get_ud_block()
-        except Exception as e:
+            block_ud = yield from self.community.get_ud_block()
+        except NoPeerAvailable as e:
             logging.debug('community get_ud_block error : ' + str(e))
             return False
         try:
-            block_ud_minus_1 = self.community.get_ud_block(1)
-        except Exception as e:
+            block_ud_minus_1 = yield from self.community.get_ud_block(1)
+        except NoPeerAvailable as e:
             logging.debug('community get_ud_block error : ' + str(e))
             return False
 
         if block_ud:
             # display float values
-            localized_ud = self.account.current_ref(block_ud['dividend'], self.community, self.app).diff_localized()
+            localized_ud = yield from self.account.current_ref(block_ud['dividend'], self.community, self.app).diff_localized()
 
+            computed_dividend = yield from self.community.computed_dividend()
             # display float values
-            localized_ud_plus_1 = self.account.current_ref(self.community.computed_dividend,
+            localized_ud_plus_1 = yield from self.account.current_ref(computed_dividend,
                                                     self.community, self.app).diff_localized()
 
-            localized_mass = self.account.current_ref(block_ud['monetaryMass'],
+            localized_mass = yield from self.account.current_ref(block_ud['monetaryMass'],
                                                     self.community, self.app).diff_localized()
             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 = self.account.current_ref(mass_minus_1,
+                localized_mass_minus_1_per_member = yield from self.account.current_ref(mass_minus_1,
                                                                   self.community, self.app).diff_localized()
-                localized_mass_minus_1 = self.account.current_ref(block_ud_minus_1['monetaryMass'],
+                localized_mass_minus_1 = yield from self.account.current_ref(block_ud_minus_1['monetaryMass'],
                                                                   self.community, self.app).diff_localized()
 
             else:
@@ -218,6 +235,11 @@ class InformationsTabWidget(QWidget, Ui_InformationsTabWidget):
                 self.tr('Maximum distance between each WoT member and a newcomer'),
             )
         )
+        self.busy.hide()
+
+    def resizeEvent(self, event):
+        self.busy.resize(event.size())
+        super().resizeEvent(event)
 
     def changeEvent(self, event):
         """
diff --git a/src/cutecoin/gui/mainwindow.py b/src/cutecoin/gui/mainwindow.py
index 9a716c1698c91c0ecde31ac74afb6842cabdee7e..e95193d1ad8081700911adf1bfaa27dfa14cb6b8 100644
--- a/src/cutecoin/gui/mainwindow.py
+++ b/src/cutecoin/gui/mainwindow.py
@@ -3,15 +3,16 @@ Created on 1 févr. 2014
 
 @author: inso
 """
-from ..gen_resources.mainwindow_uic import Ui_MainWindow
-from ..gen_resources.about_uic import Ui_AboutPopup
+import asyncio
+import logging
 
-from PyQt5.QtWidgets import QMainWindow, QAction, QFileDialog, QProgressBar, \
-    QMessageBox, QLabel, QComboBox, QDialog, QApplication
-from PyQt5.QtCore import QSignalMapper, pyqtSlot, QLocale, QEvent, \
-    pyqtSlot, pyqtSignal, QDate, QDateTime, QTimer, QUrl, Qt, QCoreApplication
-from PyQt5.QtGui import QIcon, QDesktopServices
+from PyQt5.QtWidgets import QMainWindow, QAction, QFileDialog, QMessageBox, QLabel, QComboBox, QDialog, QApplication
+from PyQt5.QtCore import QLocale, QEvent, \
+    pyqtSlot, QDateTime, QTimer, Qt
+from PyQt5.QtGui import QIcon
 
+from ..gen_resources.mainwindow_uic import Ui_MainWindow
+from ..gen_resources.about_uic import Ui_AboutPopup
 from .process_cfg_account import ProcessConfigureAccount
 from .transfer import TransferMoneyDialog
 from .community_view import CommunityWidget
@@ -26,10 +27,7 @@ from ..core import money
 from ..core.community import Community
 from ..tools.decorators import asyncify
 from ..__init__ import __version__
-from . import toast
-
-import asyncio
-import logging
+from cutecoin.gui.widgets import toast
 
 
 class MainWindow(QMainWindow, Ui_MainWindow):
@@ -86,7 +84,7 @@ class MainWindow(QMainWindow, Ui_MainWindow):
 
     def startup(self):
         self.update_time()
-        self.app.get_last_version()
+        # FIXME : Need python 3.5 self.app.get_last_version()
         if self.app.preferences['maximized']:
             self.showMaximized()
         else:
@@ -174,7 +172,9 @@ class MainWindow(QMainWindow, Ui_MainWindow):
     def open_transfer_money_dialog(self):
         dialog = TransferMoneyDialog(self.app,
                                      self.app.current_account,
-                                     self.password_asker)
+                                     self.password_asker,
+                                     self.community_view.community,
+                                     None)
         if dialog.exec_() == QDialog.Accepted:
             self.community_view.tab_history.table_history.model().sourceModel().refresh_transfers()
 
@@ -227,12 +227,13 @@ class MainWindow(QMainWindow, Ui_MainWindow):
         <p>Version : {:}</p>
         {new_version_text}
 
-        <p>License : MIT</p>
+        <p>License : GPLv3</p>
 
         <p><b>Authors</b></p>
 
         <p>inso</p>
         <p>vit</p>
+        <p>Moul</p>
         <p>canercandan</p>
         """).format(__version__, new_version_text=new_version_text)
 
@@ -255,9 +256,6 @@ class MainWindow(QMainWindow, Ui_MainWindow):
 
     @pyqtSlot(Community)
     def change_community(self, community):
-        if self.community_view.community:
-            self.community_view.community.stop_coroutines()
-
         if community:
             self.homescreen.hide()
             self.community_view.show()
@@ -294,8 +292,8 @@ class MainWindow(QMainWindow, Ui_MainWindow):
         """
         logging.debug("Refresh started")
         self.refresh_accounts()
-        self.homescreen.show()
         self.community_view.hide()
+        self.homescreen.show()
         self.homescreen.refresh()
 
         if self.app.current_account is None:
diff --git a/src/cutecoin/gui/network_tab.py b/src/cutecoin/gui/network_tab.py
index 44dfea169ae55a6883cbed141f97276827d496a4..cdd458bb235278a28b18fb844040d310a96d8123 100644
--- a/src/cutecoin/gui/network_tab.py
+++ b/src/cutecoin/gui/network_tab.py
@@ -11,7 +11,7 @@ from PyQt5.QtGui import QCursor, QDesktopServices
 from PyQt5.QtWidgets import QWidget, QMenu, QAction
 from PyQt5.QtCore import Qt, QModelIndex, pyqtSlot, QUrl, QEvent
 from ..models.network import NetworkTableModel, NetworkFilterProxyModel
-from ..core.net.api import bma as qtbma
+from ucoinpy.api import bma
 from ..gen_resources.network_tab_uic import Ui_NetworkTabWidget
 
 
@@ -37,8 +37,10 @@ class NetworkTabWidget(QWidget, Ui_NetworkTabWidget):
         proxy = NetworkFilterProxyModel(self)
         proxy.setSourceModel(model)
         self.table_network.setModel(proxy)
-        self.table_network.sortByColumn(0, Qt.DescendingOrder)
+        self.table_network.sortByColumn(2, Qt.DescendingOrder)
         self.table_network.resizeColumnsToContents()
+        model.modelAboutToBeReset.connect(lambda: self.table_network.setEnabled(False))
+        model.modelReset.connect(lambda: self.table_network.setEnabled(True))
 
     def change_community(self, community):
         if self.community:
@@ -57,7 +59,7 @@ class NetworkTabWidget(QWidget, Ui_NetworkTabWidget):
     def node_context_menu(self, point):
         index = self.table_network.indexAt(point)
         model = self.table_network.model()
-        if index.row() < model.rowCount(QModelIndex()):
+        if index.isValid() and index.row() < model.rowCount(QModelIndex()):
             source_index = model.mapToSource(index)
             is_root_col = model.sourceModel().columns_types.index('is_root')
             is_root_index = model.sourceModel().index(source_index.row(), is_root_col)
@@ -89,16 +91,18 @@ class NetworkTabWidget(QWidget, Ui_NetworkTabWidget):
     def set_root_node(self):
         node = self.sender().data()
         self.community.network.add_root_node(node)
+        self.table_network.model().sourceModel().refresh_nodes()
 
     @pyqtSlot()
     def unset_root_node(self):
         index = self.sender().data()
         self.community.network.remove_root_node(index)
+        self.table_network.model().sourceModel().refresh_nodes()
 
     @pyqtSlot()
     def open_node_in_browser(self):
         node = self.sender().data()
-        peering = qtbma.network.Peering(node.endpoint)
+        peering = bma.network.Peering(node.endpoint.conn_handler())
         url = QUrl(peering.reverse_url("/peering"))
         QDesktopServices.openUrl(url)
 
diff --git a/src/cutecoin/gui/password_asker.py b/src/cutecoin/gui/password_asker.py
index 04a7a4f92b9e262bbaafc47500f3da5ea492ded3..f5922a43ca7da8be204a734fbd32da3aa498fdf3 100644
--- a/src/cutecoin/gui/password_asker.py
+++ b/src/cutecoin/gui/password_asker.py
@@ -29,13 +29,14 @@ class PasswordAskerDialog(QDialog, Ui_PasswordAskerDialog):
         self.password = ""
         self.remember = False
 
-    def future_exec(self):
+    def async_exec(self):
         future = asyncio.Future()
         if not self.remember:
             def future_show():
                 pwd = self.password
                 if not self.remember:
                     self.password = ""
+                self.finished.disconnect(future_show)
                 future.set_result(pwd)
             self.open()
             self.finished.connect(future_show)
diff --git a/src/cutecoin/gui/preferences.py b/src/cutecoin/gui/preferences.py
index 919d50de092ee9435132737ead8351d74ac8eba7..efabc4f2bd862d4777ddbc4a07fd52b8c224b1ef 100644
--- a/src/cutecoin/gui/preferences.py
+++ b/src/cutecoin/gui/preferences.py
@@ -5,14 +5,10 @@ Created on 11 mai 2015
 """
 
 from PyQt5.QtCore import QCoreApplication
-
-from ..core import money
-from . import toast
 from PyQt5.QtWidgets import QDialog
-from PyQt5.QtGui import QIcon
 
+from ..core import money
 from ..gen_resources.preferences_uic import Ui_PreferencesDialog
-import icons_rc
 
 
 class PreferencesDialog(QDialog, Ui_PreferencesDialog):
@@ -54,10 +50,9 @@ class PreferencesDialog(QDialog, Ui_PreferencesDialog):
         self.edit_proxy_address.setEnabled(self.checkbox_proxy.isChecked())
         self.checkbox_proxy.stateChanged.connect(self.handle_proxy_change)
 
-        self.spinbox_proxy_port.setValue(self.app.preferences.get('proxy_port', 8080))
         self.spinbox_proxy_port.setMinimum(0)
         self.spinbox_proxy_port.setMaximum(55636)
-        self.combox_proxytype.setCurrentText(self.app.preferences.get('proxy_type', "HTTP"))
+        self.spinbox_proxy_port.setValue(self.app.preferences.get('proxy_port', 8080))
         self.edit_proxy_address.setText(self.app.preferences.get('proxy_address', ""))
 
     def handle_proxy_change(self):
@@ -73,15 +68,13 @@ class PreferencesDialog(QDialog, Ui_PreferencesDialog):
                 'digits_after_comma': self.spinbox_digits_comma.value(),
                 'notifications': self.checkbox_notifications.isChecked(),
                 'enable_proxy': self.checkbox_proxy.isChecked(),
-                'proxy_type': self.combox_proxytype.currentText(),
                 'proxy_address': self.edit_proxy_address.text(),
                 'proxy_port': self.spinbox_proxy_port.value(),
-                'international_system_of_units': self.checkbox_international_system.isChecked()}
+                'international_system_of_units': self.checkbox_international_system.isChecked(),
+                'auto_refresh': self.checkbox_auto_refresh.isChecked()}
         self.app.save_preferences(pref)
       # change UI translation
         self.app.switch_language()
-        toast.display(self.tr("Preferences"),
-                      self.tr("A restart is needed to apply your new preferences."))
         super().accept()
 
     def reject(self):
diff --git a/src/cutecoin/gui/process_cfg_community.py b/src/cutecoin/gui/process_cfg_community.py
index 9e6625960a595767f39dd06b803ec80d81f385fa..a9fcbab6d7b7680f87b465f54a1f308b1156d861 100644
--- a/src/cutecoin/gui/process_cfg_community.py
+++ b/src/cutecoin/gui/process_cfg_community.py
@@ -6,6 +6,7 @@ Created on 8 mars 2014
 
 import logging
 import asyncio
+import aiohttp
 
 from PyQt5.QtWidgets import QDialog, QMenu, QMessageBox, QApplication
 from PyQt5.QtGui import QCursor
@@ -14,9 +15,10 @@ from PyQt5.QtCore import pyqtSlot, pyqtSignal, QObject
 from ..gen_resources.community_cfg_uic import Ui_CommunityConfigurationDialog
 from ..models.peering import PeeringTreeModel
 from ..core import Community
-from ..core.registry.identity import BlockchainState
 from ..core.net import Node
-from . import toast
+from cutecoin.gui.widgets import toast
+from .widgets.dialogs import QAsyncMessageBox
+from ..tools.decorators import asyncify
 
 
 class Step(QObject):
@@ -37,6 +39,7 @@ class StepPageInit(Step):
         logging.debug("Init")
         self.config_dialog.button_connect.clicked.connect(self.check_connect)
         self.config_dialog.button_register.clicked.connect(self.check_register)
+        self.config_dialog.button_guest.clicked.connect(self.check_guest)
 
     @property
     def app(self):
@@ -54,80 +57,92 @@ class StepPageInit(Step):
     def password_asker(self):
         return self.config_dialog.password_asker
 
+    @asyncify
     @asyncio.coroutine
-    def coroutine_check_connect(self):
+    def check_guest(self, checked=False):
         server = self.config_dialog.lineedit_server.text()
         port = self.config_dialog.spinbox_port.value()
         logging.debug("Is valid ? ")
-        self.node = yield from Node.from_address(self.config_dialog.app.network_manager, None, server, port)
-        if self.node:
-            community = Community.create(self.app.network_manager, self.node)
-            identity = yield from self.app.identities_registry.future_find(self.account.pubkey, community)
-            if identity.blockchain_state == BlockchainState.NOT_FOUND:
+        try:
+            self.node = yield from Node.from_address(None, server, port)
+            community = Community.create(self.node)
+            self.config_dialog.button_connect.setEnabled(False)
+            self.config_dialog.button_register.setEnabled(False)
+            self.config_dialog.community = community
+            self.config_dialog.next()
+        except aiohttp.errors.DisconnectedError as e:
+            self.config_dialog.label_error.setText(str(e))
+        except aiohttp.errors.ClientError as e:
+            self.config_dialog.label_error.setText(str(e))
+
+    @asyncify
+    @asyncio.coroutine
+    def check_connect(self, checked=False):
+        server = self.config_dialog.lineedit_server.text()
+        port = self.config_dialog.spinbox_port.value()
+        logging.debug("Is valid ? ")
+        try:
+            self.node = yield from Node.from_address(None, server, port)
+            community = Community.create(self.node)
+            self.config_dialog.button_connect.setEnabled(False)
+            self.config_dialog.button_register.setEnabled(False)
+            registered = yield from self.account.check_registered(community)
+            self.config_dialog.button_connect.setEnabled(True)
+            self.config_dialog.button_register.setEnabled(True)
+            if registered[0] is False and registered[2] is None:
                 self.config_dialog.label_error.setText(self.tr("Could not find your identity on the network."))
+            elif registered[0] is False and registered[2]:
+                self.config_dialog.label_error.setText(self.tr("""Your pubkey or UID is different on the network.
+    Yours : {0}, the network : {1}""".format(registered[1], registered[2])))
             else:
                 self.config_dialog.community = community
                 self.config_dialog.next()
-        else:
-            self.config_dialog.label_error.setText(self.tr("Could not connect."))
-
-    @pyqtSlot()
-    def check_connect(self):
-        logging.debug("Check node")
-        asyncio.async(self.coroutine_check_connect())
+        except aiohttp.errors.DisconnectedError as e:
+            self.config_dialog.label_error.setText(str(e))
+        except aiohttp.errors.ClientError as e:
+            self.config_dialog.label_error.setText(str(e))
 
+    @asyncify
     @asyncio.coroutine
-    def coroutine_check_register(self):
+    def check_register(self, checked=False):
         server = self.config_dialog.lineedit_server.text()
         port = self.config_dialog.spinbox_port.value()
         logging.debug("Is valid ? ")
-        self.node = yield from Node.from_address(self.config_dialog.app.network_manager, None, server, port)
-        if self.node:
-            community = Community.create(self.app.network_manager, self.node)
-            identity = yield from self.app.identities_registry.future_find(self.account.pubkey, community)
-            if identity.blockchain_state == BlockchainState.NOT_FOUND:
-                password = yield from self.password_asker.future_exec()
+        try:
+            self.node = yield from Node.from_address(None, server, port)
+            community = Community.create(self.node)
+            self.config_dialog.button_connect.setEnabled(False)
+            self.config_dialog.button_register.setEnabled(False)
+            registered = yield from self.account.check_registered(community)
+            self.config_dialog.button_connect.setEnabled(True)
+            self.config_dialog.button_register.setEnabled(True)
+            if registered[0] is False and registered[2] is None:
+                password = yield from self.password_asker.async_exec()
                 if self.password_asker.result() == QDialog.Rejected:
                     return
                 self.config_dialog.label_error.setText(self.tr("Broadcasting identity..."))
-                self.account.selfcert_broadcasted.connect(self.handle_broadcast)
-                self.account.broadcast_error.connect(self.handle_error)
-                yield from self.account.send_selfcert(password, community)
+                result = yield from self.account.send_selfcert(password, community)
+                if result[0]:
+                    if self.app.preferences['notifications']:
+                        toast.display(self.tr("UID broadcast"), self.tr("Identity broadcasted to the network"))
+                    QApplication.restoreOverrideCursor()
+                    self.config_dialog.next()
+                else:
+                    self.config_dialog.label_error.setText(self.tr("Error") + " " + \
+                                                           self.tr("{0}".format(result[1])))
+                    if self.app.preferences['notifications']:
+                        toast.display(self.tr("Error"), self.tr("{0}".format(result[1])))
+                QApplication.restoreOverrideCursor()
                 self.config_dialog.community = community
+            elif registered[0] is False and registered[2]:
+                self.config_dialog.label_error.setText(self.tr("""Your pubkey or UID was already found on the network.
+Yours : {0}, the network : {1}""".format(registered[1], registered[2])))
             else:
-                self.config_dialog.label_error.setText(self.tr("Pubkey already exists on the network"))
-        else:
-            self.config_dialog.label_error.setText(self.tr("Could not connect."))
-
-    @pyqtSlot()
-    def check_register(self):
-        logging.debug("Check node")
-        asyncio.async(self.coroutine_check_register())
-
-    @pyqtSlot(int, str)
-    def handle_broadcast(self):
-        if self.app.preferences['notifications']:
-            toast.display(self.tr("UID broadcast"), self.tr("Identity broadcasted to the network"))
-        # Disabled : https://github.com/harvimt/quamash/issues/41
-        # else:
-        #    QMessageBox.information(self, self.tr("UID broadcast"), self.tr("Identity broadcasted to the network"))
-        self.account.selfcert_broadcasted.disconnect()
-        self.account.broadcast_error.disconnect(self.handle_error)
-        QApplication.restoreOverrideCursor()
-        self.config_dialog.next()
-
-    @pyqtSlot(int, str)
-    def handle_error(self, error_code, text):
-        self.config_dialog.label_error.setText(self.tr("Error") + " " + \
-                                               self.tr("{0} : {1}".format(error_code, text)))
-        if self.app.preferences['notifications']:
-            toast.display(self.tr("Error"), self.tr("{0} : {1}".format(error_code, text)))
-        # Disabled : https://github.com/harvimt/quamash/issues/41
-        #  else:
-        #    QMessageBox.critical(self, self.tr("Error"), self.tr("{0} : {1}".format(error_code, text)))
-        self.account.selfcert_broadcasted.disconnect()
-        self.account.broadcast_error.disconnect(self.handle_error)
-        QApplication.restoreOverrideCursor()
+                self.config_dialog.label_error.setText(self.tr("Your account already exists on the network"))
+        except aiohttp.errors.DisconnectedError as e:
+            self.config_dialog.label_error.setText(str(e))
+        except aiohttp.errors.ClientError as e:
+            self.config_dialog.label_error.setText(str(e))
 
     def is_valid(self):
         return self.node is not None
@@ -138,7 +153,7 @@ class StepPageInit(Step):
         """
         account = self.config_dialog.account
         logging.debug("Account : {0}".format(account))
-        self.config_dialog.community = Community.create(self.config_dialog.app.network_manager, self.node)
+        self.config_dialog.community = Community.create(self.node)
 
     def display_page(self):
         self.config_dialog.button_next.hide()
@@ -201,7 +216,7 @@ class ProcessConfigureCommunity(QDialog, Ui_CommunityConfigurationDialog):
         step_init.next_step = step_add_peers
 
         if self.community is not None:
-            self.stacked_pages.removeWidget(self.page_init)
+            self.stacked_pages.removeWidget(self.page_node)
             self.step = step_add_peers
             self.setWindowTitle(self.tr("Configure community {0}").format(self.community.currency))
         else:
@@ -237,10 +252,10 @@ class ProcessConfigureCommunity(QDialog, Ui_CommunityConfigurationDialog):
         port = self.spinbox_add_port.value()
 
         try:
-            node = yield from Node.from_address(self.app.network_manager, self.community.currency, server, port)
+            node = yield from Node.from_address(self.community.currency, server, port)
             self.community.add_node(node)
         except Exception as e:
-            QMessageBox.critical(self, self.tr("Error"),
+            yield from QAsyncMessageBox.critical(self, self.tr("Error"),
                                  str(e))
         self.tree_peers.setModel(PeeringTreeModel(self.community))
 
diff --git a/src/cutecoin/gui/transactions_tab.py b/src/cutecoin/gui/transactions_tab.py
index ac380a11539cc3e33b599c10ac7891138f3d39cc..b2f841201c0b7cb860c33f21c808f82b2660f445 100644
--- a/src/cutecoin/gui/transactions_tab.py
+++ b/src/cutecoin/gui/transactions_tab.py
@@ -1,22 +1,25 @@
+import logging
+import asyncio
+
 from PyQt5.QtWidgets import QWidget, QAbstractItemView, QHeaderView, QDialog, \
     QMenu, QAction, QApplication, QMessageBox
 from PyQt5.QtCore import Qt, QDateTime, QTime, QModelIndex, pyqtSignal, pyqtSlot, QEvent
+
 from PyQt5.QtGui import QCursor
+
 from ..gen_resources.transactions_tab_uic import Ui_transactionsTabWidget
 from ..models.txhistory import HistoryTableModel, TxFilterProxyModel
-from ..core.transfer import Transfer
+from ..core.transfer import Transfer, TransferState
 from .contact import ConfigureContactDialog
 from .member import MemberDialog
-from .transfer import TransferMoneyDialog
 from .certification import CertificationDialog
 from ..core.wallet import Wallet
 from ..core.registry import Identity
+from ..tools.exceptions import NoPeerAvailable
 from ..tools.decorators import asyncify, once_at_a_time, cancel_once_task
 from .transfer import TransferMoneyDialog
-from . import toast
-
-import logging
-import asyncio
+from cutecoin.gui.widgets import toast
+from cutecoin.gui.widgets.busy import Busy
 
 
 class TransactionsTabWidget(QWidget, Ui_transactionsTabWidget):
@@ -39,6 +42,8 @@ class TransactionsTabWidget(QWidget, Ui_transactionsTabWidget):
         self.account = None
         self.community = None
         self.password_asker = None
+        self.busy_balance = Busy(self.groupbox_balance)
+        self.busy_balance.hide()
 
         ts_from = self.date_from.dateTime().toTime_t()
         ts_to = self.date_to.dateTime().toTime_t()
@@ -53,6 +58,10 @@ class TransactionsTabWidget(QWidget, Ui_transactionsTabWidget):
         self.table_history.setSortingEnabled(True)
         self.table_history.horizontalHeader().setSectionResizeMode(QHeaderView.Interactive)
         self.table_history.resizeColumnsToContents()
+
+        model.modelAboutToBeReset.connect(lambda: self.table_history.setEnabled(False))
+        model.modelReset.connect(lambda: self.table_history.setEnabled(True))
+
         self.progressbar.hide()
         self.refresh()
 
@@ -66,68 +75,77 @@ class TransactionsTabWidget(QWidget, Ui_transactionsTabWidget):
         self.account = account
         self.password_asker = password_asker
         self.table_history.model().sourceModel().change_account(account)
+        if account:
+            self.connect_progress()
 
     def change_community(self, community):
         self.cancel_once_tasks()
         self.community = community
+        self.progressbar.hide()
         self.table_history.model().sourceModel().change_community(self.community)
         self.refresh()
-        self.stop_progress([])
 
     @once_at_a_time
     @asyncify
     @asyncio.coroutine
     def refresh_minimum_maximum(self):
-        block = yield from self.community.get_block(1)
-        minimum_datetime = QDateTime()
-        minimum_datetime.setTime_t(block['medianTime'])
-        minimum_datetime.setTime(QTime(0, 0))
-
-        self.date_from.setMinimumDateTime(minimum_datetime)
-        self.date_from.setDateTime(minimum_datetime)
-        self.date_from.setMaximumDateTime(QDateTime().currentDateTime())
-
-        self.date_to.setMinimumDateTime(minimum_datetime)
-        tomorrow_datetime = QDateTime().currentDateTime().addDays(1)
-        self.date_to.setDateTime(tomorrow_datetime)
-        self.date_to.setMaximumDateTime(tomorrow_datetime)
+        try:
+            block = yield from self.community.get_block(1)
+            minimum_datetime = QDateTime()
+            minimum_datetime.setTime_t(block['medianTime'])
+            minimum_datetime.setTime(QTime(0, 0))
+
+            self.date_from.setMinimumDateTime(minimum_datetime)
+            self.date_from.setDateTime(minimum_datetime)
+            self.date_from.setMaximumDateTime(QDateTime().currentDateTime())
+
+            self.date_to.setMinimumDateTime(minimum_datetime)
+            tomorrow_datetime = QDateTime().currentDateTime().addDays(1)
+            self.date_to.setDateTime(tomorrow_datetime)
+            self.date_to.setMaximumDateTime(tomorrow_datetime)
+        except NoPeerAvailable as e:
+            logging.debug(str(e))
+        except ValueError as e:
+            logging.debug(str(e))
 
     def refresh(self):
-        #TODO: Use resetmodel instead of destroy/create
         if self.community:
+            self.table_history.model().sourceModel().refresh_transfers()
+            self.table_history.resizeColumnsToContents()
             self.refresh_minimum_maximum()
-
             self.refresh_balance()
 
-    def start_progress(self):
-        def progressing(value, maximum):
-            self.progressbar.setValue(value)
-            self.progressbar.setMaximum(maximum)
+    def connect_progress(self):
+        def progressing(community, value, maximum):
+            if community == self.community:
+                self.progressbar.show()
+                self.progressbar.setValue(value)
+                self.progressbar.setMaximum(maximum)
         self.app.current_account.loading_progressed.connect(progressing)
         self.app.current_account.loading_finished.connect(self.stop_progress)
-        self.app.current_account.refresh_transactions(self.app, self.community)
-        self.progressbar.show()
 
     @pyqtSlot(list)
-    def stop_progress(self, received_list):
-        amount = 0
-        for r in received_list:
-            amount += r.metadata['amount']
-        self.progressbar.hide()
-        if len(received_list) > 0:
-            text = self.tr("Received {0} {1} from {2} transfers").format(amount,
-                                                               self.community.currency,
-                                                               len(received_list))
-            if self.app.preferences['notifications']:
-                toast.display(self.tr("New transactions received"), text)
+    def stop_progress(self, community, received_list):
+        if community == self.community:
+            amount = 0
+            for r in received_list:
+                amount += r.metadata['amount']
+            self.progressbar.hide()
+            if len(received_list) > 0:
+                text = self.tr("Received {0} {1} from {2} transfers").format(amount,
+                                                                   self.community.currency,
+                                                                   len(received_list))
+                if self.app.preferences['notifications']:
+                    toast.display(self.tr("New transactions received"), text)
 
-        self.table_history.model().sourceModel().refresh_transfers()
-        self.table_history.resizeColumnsToContents()
+            self.table_history.model().sourceModel().refresh_transfers()
+            self.table_history.resizeColumnsToContents()
 
     @once_at_a_time
     @asyncify
     @asyncio.coroutine
     def refresh_balance(self):
+        self.busy_balance.show()
         amount = yield from self.app.current_account.amount(self.community)
         localized_amount = yield from self.app.current_account.current_ref(amount, self.community,
                                                                            self.app).localized(units=True,
@@ -140,6 +158,7 @@ class TransactionsTabWidget(QWidget, Ui_transactionsTabWidget):
                 localized_amount
             )
         )
+        self.busy_balance.hide()
 
     @once_at_a_time
     @asyncify
@@ -161,10 +180,10 @@ class TransactionsTabWidget(QWidget, Ui_transactionsTabWidget):
             pubkey = model.sourceModel().data(pubkey_index, Qt.DisplayRole)
             identity = yield from self.app.identities_registry.future_find(pubkey, self.community)
 
-            transfer = model.sourceModel().transfers[source_index.row()]
-            if state_data == Transfer.REFUSED or state_data == Transfer.TO_SEND:
+            transfer = model.sourceModel().transfers()[source_index.row()]
+            if state_data == TransferState.REFUSED or state_data == TransferState.TO_SEND:
                 send_back = QAction(self.tr("Send again"), self)
-                send_back.triggered.connect(self.send_again)
+                send_back.triggered.connect(lambda checked, tr=transfer: self.send_again(checked, tr))
                 send_back.setData(transfer)
                 menu.addAction(send_back)
 
@@ -236,41 +255,29 @@ class TransactionsTabWidget(QWidget, Ui_transactionsTabWidget):
         if result == QDialog.Accepted:
             self.window().refresh_contacts()
 
+    @asyncify
+    @asyncio.coroutine
     def send_money_to_identity(self, identity):
-        if isinstance(identity, str):
-            pubkey = identity
-        else:
-            pubkey = identity.pubkey
-        result = TransferMoneyDialog.send_money_to_identity(self.app, self.account, self.password_asker,
+        yield from TransferMoneyDialog.send_money_to_identity(self.app, self.account, self.password_asker,
                                                             self.community, identity)
-        if result == QDialog.Accepted:
-            currency_tab = self.window().currencies_tabwidget.currentWidget()
-            currency_tab.tab_history.table_history.model().sourceModel().refresh_transfers()
+        self.table_history.model().sourceModel().refresh_transfers()
 
+    @asyncify
+    @asyncio.coroutine
     def certify_identity(self, identity):
-        CertificationDialog.certify_identity(self.app, self.account, self.password_asker,
+        yield from CertificationDialog.certify_identity(self.app, self.account, self.password_asker,
                                              self.community, identity)
 
     def view_wot(self):
         identity = self.sender().data()
         self.view_in_wot.emit(identity)
 
-    def send_again(self):
-        transfer = self.sender().data()
-        dialog = TransferMoneyDialog(self.app, self.app.current_account,
-                                     self.password_asker)
-        sender = transfer.metadata['issuer']
-        wallet_index = [w.pubkey for w in self.app.current_account.wallets].index(sender)
-        dialog.combo_wallets.setCurrentIndex(wallet_index)
-        dialog.edit_pubkey.setText(transfer.metadata['receiver'])
-        dialog.combo_community.setCurrentText(self.community.name)
-        dialog.spinbox_amount.setValue(transfer.metadata['amount'])
-        dialog.radio_pubkey.setChecked(True)
-        dialog.edit_message.setText(transfer.metadata['comment'])
-        result = dialog.exec_()
-        if result == QDialog.Accepted:
-            transfer.drop()
-            self.table_history.model().sourceModel().refresh_transfers()
+    @asyncify
+    @asyncio.coroutine
+    def send_again(self, checked=False, transfer=None):
+        result = yield from TransferMoneyDialog.send_transfer_again(self.app, self.app.current_account,
+                                     self.password_asker, self.community, transfer)
+        self.table_history.model().sourceModel().refresh_transfers()
 
     def cancel_transfer(self):
         reply = QMessageBox.warning(self, self.tr("Warning"),
@@ -279,7 +286,7 @@ This money transfer will be removed and not sent."""),
 QMessageBox.Ok | QMessageBox.Cancel)
         if reply == QMessageBox.Ok:
             transfer = self.sender().data()
-            transfer.drop()
+            transfer.cancel()
             self.table_history.model().sourceModel().refresh_transfers()
 
     def dates_changed(self):
@@ -296,6 +303,10 @@ QMessageBox.Ok | QMessageBox.Cancel)
 
             self.refresh_balance()
 
+    def resizeEvent(self, event):
+        self.busy_balance.resize(event.size())
+        super().resizeEvent(event)
+
     def changeEvent(self, event):
         """
         Intercepte LanguageChange event to translate UI
diff --git a/src/cutecoin/gui/transfer.py b/src/cutecoin/gui/transfer.py
index 1258314f18d4f0e4531a12b3c8f4545f51573c3d..edc2bc82fb9ffaf90c94cafe0c2ca2b3757cc80a 100644
--- a/src/cutecoin/gui/transfer.py
+++ b/src/cutecoin/gui/transfer.py
@@ -3,14 +3,17 @@ Created on 2 févr. 2014
 
 @author: inso
 """
-from PyQt5.QtWidgets import QDialog, QMessageBox, QApplication
-from PyQt5.QtCore import QRegExp, Qt, QLocale, pyqtSlot
+import asyncio
+
+from PyQt5.QtWidgets import QDialog, QApplication
+from PyQt5.QtCore import QRegExp, Qt
+
 from PyQt5.QtGui import QRegExpValidator
 
 from ..gen_resources.transfer_uic import Ui_TransferMoneyDialog
-from . import toast
+from cutecoin.gui.widgets import toast
+from cutecoin.gui.widgets.dialogs import QAsyncMessageBox, QMessageBox
 from ..tools.decorators import asyncify
-import asyncio
 
 
 class TransferMoneyDialog(QDialog, Ui_TransferMoneyDialog):
@@ -19,7 +22,7 @@ class TransferMoneyDialog(QDialog, Ui_TransferMoneyDialog):
     classdocs
     """
 
-    def __init__(self, app, sender, password_asker):
+    def __init__(self, app, sender, password_asker, community, transfer):
         """
         Constructor
         :param cutecoin.core.Application app: The application
@@ -33,8 +36,9 @@ class TransferMoneyDialog(QDialog, Ui_TransferMoneyDialog):
         self.account = sender
         self.password_asker = password_asker
         self.recipient_trusts = []
+        self.transfer = transfer
         self.wallet = None
-        self.community = self.account.communities[0]
+        self.community = community if community else self.account.communities[0]
         self.wallet = self.account.wallets[0]
 
         regexp = QRegExp('^([ a-zA-Z0-9-_:/;*?\[\]\(\)\\\?!^+=@&~#{}|<>%.]{0,255})$')
@@ -55,14 +59,39 @@ class TransferMoneyDialog(QDialog, Ui_TransferMoneyDialog):
             self.radio_contact.setEnabled(False)
             self.radio_pubkey.setChecked(True)
 
-    @staticmethod
-    def send_money_to_identity(app, account, password_asker, community, identity):
-        dialog = TransferMoneyDialog(app, account, password_asker)
+        self.combo_community.setCurrentText(self.community.name)
+
+        if self.transfer:
+            sender = self.transfer.metadata['issuer']
+            wallet_index = [w.pubkey for w in app.current_account.wallets].index(sender)
+            self.combo_wallets.setCurrentIndex(wallet_index)
+            self.edit_pubkey.setText(transfer.metadata['receiver'])
+            self.radio_pubkey.setChecked(True)
+            self.edit_message.setText(transfer.metadata['comment'])
+
+
+    @classmethod
+    @asyncio.coroutine
+    def send_money_to_identity(cls, app, account, password_asker, community, identity):
+        dialog = cls(app, account, password_asker, community, None)
         dialog.edit_pubkey.setText(identity.pubkey)
-        dialog.combo_community.setCurrentText(community.name)
         dialog.radio_pubkey.setChecked(True)
-        return dialog.exec()
+        return (yield from dialog.async_exec())
+
+    @classmethod
+    @asyncio.coroutine
+    def send_transfer_again(cls, app, account, password_asker, community, transfer):
+        dialog = cls(app, account, password_asker, community, transfer)
+        dividend = yield from community.dividend()
+        relative = transfer.metadata['amount'] / dividend
+        dialog.spinbox_amount.setMaximum(transfer.metadata['amount'])
+        dialog.spinbox_relative.setMaximum(relative)
+        dialog.spinbox_amount.setValue(transfer.metadata['amount'])
+
+        return (yield from dialog.async_exec())
 
+    @asyncify
+    @asyncio.coroutine
     def accept(self):
         comment = self.edit_message.text()
 
@@ -74,44 +103,40 @@ class TransferMoneyDialog(QDialog, Ui_TransferMoneyDialog):
         amount = self.spinbox_amount.value()
 
         if not amount:
-            QMessageBox.critical(self, self.tr("Money transfer"),
+            yield from QAsyncMessageBox.critical(self, self.tr("Money transfer"),
                                  self.tr("No amount. Please give the transfert amount"),
                                  QMessageBox.Ok)
             return
 
-        password = self.password_asker.exec_()
+        password = yield from self.password_asker.async_exec()
         if self.password_asker.result() == QDialog.Rejected:
             return
 
         QApplication.setOverrideCursor(Qt.WaitCursor)
         QApplication.processEvents()
-        self.wallet.transfer_broadcasted.connect(self.money_sent)
-        self.wallet.broadcast_error.connect(self.handle_error)
-        asyncio.async(self.wallet.send_money(self.account.salt, password, self.community,
-                                   recipient, amount, comment))
-
-    @pyqtSlot(str)
-    def money_sent(self, receiver_uid):
-        if self.app.preferences['notifications']:
-            toast.display(self.tr("Transfer"),
-                      self.tr("Success sending money to {0}").format(receiver_uid))
+        result = yield from self.wallet.send_money(self.account.salt, password, self.community,
+                                   recipient, amount, comment)
+        if result[0]:
+            if self.app.preferences['notifications']:
+                toast.display(self.tr("Transfer"),
+                          self.tr("Success sending money to {0}").format(recipient))
+            else:
+                yield from QAsyncMessageBox.information(self, self.tr("Transfer"),
+                          self.tr("Success sending money to {0}").format(recipient))
+            QApplication.restoreOverrideCursor()
+
+            # If we sent back a transaction we cancel the first one
+            if self.transfer:
+                self.transfer.cancel()
+
+            super().accept()
         else:
-            QMessageBox.information(self, self.tr("Transfer"),
-                      self.tr("Success sending money to {0}").format(receiver_uid))
-        self.wallet.transfer_broadcasted.disconnect()
-        self.wallet.broadcast_error.disconnect(self.handle_error)
-        QApplication.restoreOverrideCursor()
-        super().accept()
-
-    @pyqtSlot(int, str)
-    def handle_error(self, error_code, text):
-        if self.app.preferences['notifications']:
-            toast.display(self.tr("Error"), self.tr("{0} : {1}".format(error_code, text)))
-        else:
-            QMessageBox.critical(self, self.tr("Error"), self.tr("{0} : {1}".format(error_code, text)))
-        self.wallet.transfer_broadcasted.disconnect()
-        self.wallet.broadcast_error.disconnect(self.handle_error)
-        QApplication.restoreOverrideCursor()
+            if self.app.preferences['notifications']:
+                toast.display(self.tr("Transfer"), "Error : {0}".format(result[1]))
+            else:
+                yield from QAsyncMessageBox.critical(self, self.tr("Transfer"), result[1])
+
+            QApplication.restoreOverrideCursor()
 
     @asyncify
     @asyncio.coroutine
@@ -142,7 +167,6 @@ class TransferMoneyDialog(QDialog, Ui_TransferMoneyDialog):
                             international_system=self.app.preferences['international_system_of_units'])
         self.label_total.setText("{0}".format(ref_text))
         self.spinbox_amount.setSuffix(" " + self.community.currency)
-        self.spinbox_amount.setValue(0)
         amount = yield from self.wallet.value(self.community)
         dividend = yield from self.community.dividend()
         relative = amount / dividend
@@ -158,7 +182,6 @@ class TransferMoneyDialog(QDialog, Ui_TransferMoneyDialog):
             .diff_localized(units=True,
                             international_system=self.app.preferences['international_system_of_units'])
         self.label_total.setText("{0}".format(ref_text))
-        self.spinbox_amount.setValue(0)
         amount = yield from self.wallet.value(self.community)
         dividend = yield from self.community.dividend()
         relative = amount / dividend
diff --git a/src/cutecoin/gui/views/wot.py b/src/cutecoin/gui/views/wot.py
index 64e803b5ffe567717d10ab41be63470f8c405661..010638f7c577a67086be8777d79d7dc7ba2481f6 100644
--- a/src/cutecoin/gui/views/wot.py
+++ b/src/cutecoin/gui/views/wot.py
@@ -63,6 +63,7 @@ class Scene(QGraphicsScene):
     node_transaction = pyqtSignal(dict, name='nodeTransaction')
     node_contact = pyqtSignal(dict, name='nodeContact')
     node_member = pyqtSignal(dict, name='nodeMember')
+    node_copy_pubkey = pyqtSignal(dict, name='nodeCopyPubkey')
 
     def __init__(self, parent=None):
         """
@@ -203,7 +204,10 @@ class Node(QGraphicsEllipseItem):
         self.status_wallet = self.metadata['status'] & NODE_STATUS_HIGHLIGHTED
         self.status_member = not self.metadata['status'] & NODE_STATUS_OUT
         self.text = self.metadata['text']
-        self.setToolTip(self.metadata['tooltip'])
+        try:
+            self.setToolTip(self.metadata['tooltip'])
+        except TypeError:
+            raise
         self.arcs = []
         self.menu = None
         self.action_sign = None
@@ -305,6 +309,12 @@ class Node(QGraphicsEllipseItem):
         self.action_sign = QAction(QCoreApplication.translate('WoT.Node', 'Certify identity'), self.scene())
         self.menu.addAction(self.action_sign)
         self.action_sign.triggered.connect(self.sign_action)
+        # action copy identity pubkey
+        QT_TRANSLATE_NOOP('WoT.Node', 'Copy pubkey')
+        self.action_copy = QAction(QCoreApplication.translate('WoT.Node', 'Copy pubkey'), self.scene())
+        self.menu.addAction(self.action_copy)
+        self.action_copy.triggered.connect(self.copy_action)
+
         # run menu
         self.menu.exec(event.screenPos())
 
@@ -337,6 +347,13 @@ class Node(QGraphicsEllipseItem):
         # trigger scene signal
         self.scene().node_signed.emit(self.metadata)
 
+    def copy_action(self):
+        """
+        Copy identity node pubkey
+        """
+        # trigger scene signal
+        self.scene().node_copy_pubkey.emit(self.metadata)
+
     def transaction_action(self):
         """
         Transaction action to identity node
@@ -471,5 +488,5 @@ class Arc(QGraphicsLineItem):
         painter.setBrush(color)
         painter.drawPolygon(QPolygonF([head_point, destination_arrow_p1, destination_arrow_p2]))
 
-        if self.metadata["validation_text"]:
-            painter.drawText(head_point, self.metadata["validation_text"])
+        if self.metadata["confirmation_text"]:
+            painter.drawText(head_point, self.metadata["confirmation_text"])
diff --git a/src/cutecoin/gui/widgets/__init__.py b/src/cutecoin/gui/widgets/__init__.py
new file mode 100644
index 0000000000000000000000000000000000000000..fbaafe7931df3a52784e976da05ea0f1153b7f59
--- /dev/null
+++ b/src/cutecoin/gui/widgets/__init__.py
@@ -0,0 +1,2 @@
+from .busy import Busy
+from .dialogs import QAsyncMessageBox
\ No newline at end of file
diff --git a/src/cutecoin/gui/widgets/busy.py b/src/cutecoin/gui/widgets/busy.py
new file mode 100644
index 0000000000000000000000000000000000000000..5c8246f3dfaa6fd8eacf80d3e7a06a30b1a3e2b2
--- /dev/null
+++ b/src/cutecoin/gui/widgets/busy.py
@@ -0,0 +1,49 @@
+from PyQt5.QtWidgets import QWidget
+from PyQt5.QtGui import QPalette, QPainter, QColor, QBrush, QPen
+from PyQt5.QtCore import Qt
+
+import math
+
+
+class Busy(QWidget):
+    def __init__(self, parent = None):
+        QWidget.__init__(self, parent)
+        palette = QPalette(self.palette())
+        palette.setColor(palette.Background, Qt.transparent)
+        self.setPalette(palette)
+        self.timer = None
+
+    def paintEvent(self, event):
+        painter = QPainter()
+        painter.begin(self)
+        painter.setRenderHint(QPainter.Antialiasing)
+        painter.fillRect(event.rect(), QBrush(QColor(255, 255, 255, 127)))
+        painter.setPen(QPen(Qt.NoPen))
+
+        for i in range(12):
+            if self.counter % 12 == i:
+                painter.setBrush(QBrush(QColor(165, 165, 165, (self.counter % 12)*22)))
+            else:
+                painter.setBrush(QBrush(QColor(165, 165, 165)))
+            painter.drawEllipse(
+                self.width()/2 + 50 * math.cos(2 * math.pi * i / 12.0) - 5,
+                self.height()/2 + 50 * math.sin(2 * math.pi * i / 12.0) - 5,
+                12, 12)
+
+        painter.end()
+
+    def showEvent(self, event):
+        self.timer = self.startTimer(150)
+        self.counter = 0
+        super().showEvent(event)
+
+    def hideEvent(self, event):
+        if self.timer:
+            self.killTimer(self.timer)
+            self.timer = None
+        super().hideEvent(event)
+
+    def timerEvent(self, event):
+        self.counter += 1
+        self.update()
+        super().timerEvent(event)
diff --git a/src/cutecoin/gui/widgets/dialogs.py b/src/cutecoin/gui/widgets/dialogs.py
new file mode 100644
index 0000000000000000000000000000000000000000..8ddf4188451fc70e1f6f7d3e446c7d3d9367fc7b
--- /dev/null
+++ b/src/cutecoin/gui/widgets/dialogs.py
@@ -0,0 +1,31 @@
+from PyQt5.QtWidgets import QMessageBox as QMessageBox
+import asyncio
+
+
+def dialog_async_exec(dialog):
+    future = asyncio.Future()
+    dialog.finished.connect(lambda r: future.set_result(r))
+    dialog.open()
+    return future
+
+
+class QAsyncMessageBox:
+    @staticmethod
+    def critical(parent, title, label, buttons=QMessageBox.Ok):
+        dialog = QMessageBox(QMessageBox.Critical, title, label, buttons, parent)
+        return dialog_async_exec(dialog)
+
+    @staticmethod
+    def information(parent, title, label, buttons=QMessageBox.Ok):
+        dialog = QMessageBox(QMessageBox.Information, title, label, buttons, parent)
+        return dialog_async_exec(dialog)
+
+    @staticmethod
+    def warning(parent, title, label, buttons=QMessageBox.Ok):
+        dialog = QMessageBox(QMessageBox.Warning, title, label, buttons, parent)
+        return dialog_async_exec(dialog)
+
+    @staticmethod
+    def question(parent, title, label, buttons=QMessageBox.Yes|QMessageBox.No):
+        dialog = QMessageBox(QMessageBox.Question, title, label, buttons, parent)
+        return dialog_async_exec(dialog)
diff --git a/src/cutecoin/gui/toast.py b/src/cutecoin/gui/widgets/toast.py
similarity index 97%
rename from src/cutecoin/gui/toast.py
rename to src/cutecoin/gui/widgets/toast.py
index 505e4a9eb332e3afce17096919bab4f0cdf8590f..f5ea31f571b05f7ab9a64309184fd88b2802de69 100644
--- a/src/cutecoin/gui/toast.py
+++ b/src/cutecoin/gui/widgets/toast.py
@@ -8,7 +8,7 @@ import logging
 from PyQt5.QtCore import Qt, QThread
 from PyQt5.QtWidgets import QMainWindow, QApplication
 from PyQt5.QtGui import QImage, QPixmap
-from ..gen_resources.toast_uic import Ui_Toast
+from cutecoin.gen_resources.toast_uic import Ui_Toast
 
 window = None   # global
 
diff --git a/src/cutecoin/gui/wot_tab.py b/src/cutecoin/gui/wot_tab.py
index b3457d2fe1e7272882702f10e926909d66cd1b0c..d8fd80815893417261d6c845d7e71cd3d4ea69ca 100644
--- a/src/cutecoin/gui/wot_tab.py
+++ b/src/cutecoin/gui/wot_tab.py
@@ -2,12 +2,13 @@
 
 import logging
 import asyncio
+
 from PyQt5.QtWidgets import QWidget, QComboBox, QDialog
-from PyQt5.QtCore import pyqtSlot, QEvent, QLocale, QDateTime
+from PyQt5.QtCore import pyqtSlot, QEvent, QLocale, QDateTime, pyqtSignal
+from ucoinpy.api import bma
 
 from ..tools.exceptions import MembershipNotFoundError
 from ..tools.decorators import asyncify, once_at_a_time, cancel_once_task
-from ..core.net.api import bma
 from ..core.graph import Graph
 from ..core.registry import BlockchainState
 from .member import MemberDialog
@@ -15,11 +16,14 @@ from .certification import CertificationDialog
 from .transfer import TransferMoneyDialog
 from .contact import ConfigureContactDialog
 from ..gen_resources.wot_tab_uic import Ui_WotTabWidget
-from cutecoin.gui.views.wot import NODE_STATUS_HIGHLIGHTED, NODE_STATUS_SELECTED, NODE_STATUS_OUT, ARC_STATUS_STRONG, \
-    ARC_STATUS_WEAK
+from cutecoin.gui.views.wot import NODE_STATUS_HIGHLIGHTED, NODE_STATUS_SELECTED, NODE_STATUS_OUT
+from cutecoin.gui.widgets.busy import Busy
 
 
 class WotTabWidget(QWidget, Ui_WotTabWidget):
+
+    money_sent = pyqtSignal()
+
     def __init__(self, app):
         """
         :param cutecoin.core.app.Application app:   Application instance
@@ -37,12 +41,16 @@ class WotTabWidget(QWidget, Ui_WotTabWidget):
         # the edited text is not added in the item list
         self.comboBoxSearch.setInsertPolicy(QComboBox.NoInsert)
 
+        self.busy = Busy(self.graphicsView)
+        self.busy.hide()
+
         # add scene events
         self.graphicsView.scene().node_clicked.connect(self.handle_node_click)
         self.graphicsView.scene().node_signed.connect(self.sign_node)
         self.graphicsView.scene().node_transaction.connect(self.send_money_to_node)
         self.graphicsView.scene().node_contact.connect(self.add_node_as_contact)
         self.graphicsView.scene().node_member.connect(self.identity_informations)
+        self.graphicsView.scene().node_copy_pubkey.connect(self.copy_node_pubkey)
 
         self.account = None
         self.community = None
@@ -66,13 +74,23 @@ class WotTabWidget(QWidget, Ui_WotTabWidget):
         self.password_asker = password_asker
 
     def change_community(self, community):
-        if self.community:
-            self.community.network.new_block_mined.disconnect(self.refresh)
-        if community:
-            community.network.new_block_mined.connect(self.refresh)
+        self._auto_refresh(community)
         self.community = community
         self.reset()
 
+    def _auto_refresh(self, new_community):
+        if self.community:
+            try:
+                self.community.network.new_block_mined.disconnect(self.refresh)
+            except TypeError as e:
+                if "connected" in str(e):
+                    logging.debug("new block mined not connected")
+        if self.app.preferences["auto_refresh"]:
+            if new_community:
+                new_community.network.new_block_mined.connect(self.refresh)
+            elif self.community:
+                self.community.network.new_block_mined.connect(self.refresh)
+
     @once_at_a_time
     @asyncify
     @asyncio.coroutine
@@ -160,7 +178,8 @@ class WotTabWidget(QWidget, Ui_WotTabWidget):
             self.app.identities_registry.from_handled_data(
                 metadata['text'],
                 metadata['id'],
-                BlockchainState.VALIDATED
+                BlockchainState.VALIDATED,
+                self.community
             )
         )
 
@@ -174,6 +193,7 @@ class WotTabWidget(QWidget, Ui_WotTabWidget):
         :param cutecoin.core.registry.Identity identity: Graph node identity
         """
         logging.debug("Draw graph - " + identity.uid)
+        self.busy.show()
 
         if self.community:
             identity_account = yield from self.account.identity(self.community)
@@ -195,7 +215,8 @@ class WotTabWidget(QWidget, Ui_WotTabWidget):
             node_status = 0
             if identity == identity_account:
                 node_status += NODE_STATUS_HIGHLIGHTED
-            if identity.is_member(self.community) is False:
+            is_member = yield from identity.is_member(self.community)
+            if is_member is False:
                 node_status += NODE_STATUS_OUT
             node_status += NODE_STATUS_SELECTED
             graph.add_identity(identity, node_status)
@@ -214,6 +235,7 @@ class WotTabWidget(QWidget, Ui_WotTabWidget):
                 path = yield from graph.get_shortest_path_between_members(identity, identity_account)
                 if path:
                     self.graphicsView.scene().update_path(path)
+        self.busy.hide()
 
     @once_at_a_time
     @asyncify
@@ -222,7 +244,7 @@ class WotTabWidget(QWidget, Ui_WotTabWidget):
         """
         Reset graph scene to wallet identity
         """
-        if self.account:
+        if self.account and self.community:
             identity = yield from self.account.identity(self.community)
             self.draw_graph(identity)
 
@@ -235,6 +257,8 @@ class WotTabWidget(QWidget, Ui_WotTabWidget):
         else:
             self.reset()
 
+    @asyncify
+    @asyncio.coroutine
     def search(self):
         """
         Search nodes when return is pressed in combobox lineEdit
@@ -243,11 +267,7 @@ class WotTabWidget(QWidget, Ui_WotTabWidget):
 
         if len(text) < 2:
             return False
-        try:
-            response = self.community.simple_request(bma.wot.Lookup, {'search': text})
-        except Exception as e:
-            logging.debug('bma.wot.Lookup request error : ' + str(e))
-            return False
+        response = yield from self.community.bma_access.future_request(bma.wot.Lookup, {'search': text})
 
         nodes = {}
         for identity in response['results']:
@@ -274,7 +294,8 @@ class WotTabWidget(QWidget, Ui_WotTabWidget):
             self.app.identities_registry.from_handled_data(
                 metadata['text'],
                 metadata['id'],
-                BlockchainState.VALIDATED
+                BlockchainState.VALIDATED,
+                self.community
             )
         )
 
@@ -282,31 +303,42 @@ class WotTabWidget(QWidget, Ui_WotTabWidget):
         identity = self.app.identities_registry.from_handled_data(
             metadata['text'],
             metadata['id'],
-            BlockchainState.VALIDATED
+            BlockchainState.VALIDATED,
+            self.community
         )
         dialog = MemberDialog(self.app, self.account, self.community, identity)
         dialog.exec_()
 
+    @asyncify
+    @asyncio.coroutine
     def sign_node(self, metadata):
         identity = self.app.identities_registry.from_handled_data(
             metadata['text'],
             metadata['id'],
-            BlockchainState.VALIDATED
+            BlockchainState.VALIDATED,
+            self.community
         )
-        CertificationDialog.certify_identity(self.app, self.account, self.password_asker,
+        yield from CertificationDialog.certify_identity(self.app, self.account, self.password_asker,
                                              self.community, identity)
 
+    @asyncify
+    @asyncio.coroutine
     def send_money_to_node(self, metadata):
         identity = self.app.identities_registry.from_handled_data(
             metadata['text'],
             metadata['id'],
-            BlockchainState.VALIDATED
+            BlockchainState.VALIDATED,
+            self.community
         )
-        result = TransferMoneyDialog.send_money_to_identity(self.app, self.account, self.password_asker,
+        result = yield from TransferMoneyDialog.send_money_to_identity(self.app, self.account, self.password_asker,
                                                             self.community, identity)
         if result == QDialog.Accepted:
-            currency_tab = self.window().currencies_tabwidget.currentWidget()
-            currency_tab.tab_history.table_history.model().sourceModel().refresh_transfers()
+            self.money_sent.emit()
+
+    def copy_node_pubkey(self, metadata):
+        cb = self.app.qapp.clipboard()
+        cb.clear(mode=cb.Clipboard)
+        cb.setText(metadata['id'], mode=cb.Clipboard)
 
     def add_node_as_contact(self, metadata):
         # check if contact already exists...
@@ -319,6 +351,10 @@ class WotTabWidget(QWidget, Ui_WotTabWidget):
         if result == QDialog.Accepted:
             self.window().refresh_contacts()
 
+    def resizeEvent(self, event):
+        self.busy.resize(event.size())
+        super().resizeEvent(event)
+
     def changeEvent(self, event):
         """
         Intercepte LanguageChange event to translate UI
@@ -327,5 +363,6 @@ class WotTabWidget(QWidget, Ui_WotTabWidget):
         """
         if event.type() == QEvent.LanguageChange:
             self.retranslateUi(self)
+            self._auto_refresh(None)
             self.refresh()
         return super(WotTabWidget, self).changeEvent(event)
diff --git a/src/cutecoin/main.py b/src/cutecoin/main.py
index fec1fbbbdd19ad8d3973a8ff365df2effba3845e..fff3fc89eed6a91e3011cbfdec6ccd1a4a4d06de 100755
--- a/src/cutecoin/main.py
+++ b/src/cutecoin/main.py
@@ -41,7 +41,9 @@ def async_exception_handler(loop, context):
         log_lines.append('{}: {!r}'.format(key, context[key]))
 
     logging.error('\n'.join(log_lines), exc_info=exc_info)
-    os._exit(1)
+    if "Unclosed" not in message and \
+        "socket.gaierror" not in message:
+        os._exit(1)
 
 
 if __name__ == '__main__':
diff --git a/src/cutecoin/models/identities.py b/src/cutecoin/models/identities.py
index 431416c03d8edc0b199c0ea6264618c0e26d7350..8e238d87ccbd0bf45db6923e49c03af18080d15a 100644
--- a/src/cutecoin/models/identities.py
+++ b/src/cutecoin/models/identities.py
@@ -4,7 +4,7 @@ Created on 5 févr. 2014
 @author: inso
 """
 
-from ..core.net.api import bma as qtbma
+from ..core.net.api import bma as bma
 from ..tools.exceptions import NoPeerAvailable, MembershipNotFoundError
 from ..tools.decorators import asyncify, once_at_a_time, cancel_once_task
 from PyQt5.QtCore import QAbstractTableModel, QSortFilterProxyModel, Qt, \
@@ -40,37 +40,38 @@ class IdentitiesFilterProxyModel(QSortFilterProxyModel):
 
     def data(self, index, role):
         source_index = self.mapToSource(index)
-        source_data = self.sourceModel().data(source_index, role)
-        expiration_col = self.sourceModel().columns_ids.index('expiration')
-        expiration_index = self.sourceModel().index(source_index.row(), expiration_col)
-        expiration_data = self.sourceModel().data(expiration_index, Qt.DisplayRole)
-        current_time = QDateTime().currentDateTime().toMSecsSinceEpoch()
-        sig_validity = self.sourceModel().sig_validity()
-        warning_expiration_time = int(sig_validity / 3)
-        #logging.debug("{0} > {1}".format(current_time, expiration_data))
-        if expiration_data is not None:
-            will_expire_soon = (current_time > expiration_data*1000 - warning_expiration_time*1000)
-        if role == Qt.DisplayRole:
-            if source_index.column() == self.sourceModel().columns_ids.index('renewed') \
-                    or source_index.column() == self.sourceModel().columns_ids.index('expiration'):
-                if source_data is not None:
-                    return QLocale.toString(
-                        QLocale(),
-                        QDateTime.fromTime_t(source_data).date(),
-                        QLocale.dateFormat(QLocale(), QLocale.ShortFormat)
-                    )
+        if source_index.isValid():
+            source_data = self.sourceModel().data(source_index, role)
+            expiration_col = self.sourceModel().columns_ids.index('expiration')
+            expiration_index = self.sourceModel().index(source_index.row(), expiration_col)
+            expiration_data = self.sourceModel().data(expiration_index, Qt.DisplayRole)
+            current_time = QDateTime().currentDateTime().toMSecsSinceEpoch()
+            sig_validity = self.sourceModel().sig_validity()
+            warning_expiration_time = int(sig_validity / 3)
+            #logging.debug("{0} > {1}".format(current_time, expiration_data))
+            if expiration_data is not None:
+                will_expire_soon = (current_time > expiration_data*1000 - warning_expiration_time*1000)
+            if role == Qt.DisplayRole:
+                if source_index.column() == self.sourceModel().columns_ids.index('renewed') \
+                        or source_index.column() == self.sourceModel().columns_ids.index('expiration'):
+                    if source_data is not None:
+                        return QLocale.toString(
+                            QLocale(),
+                            QDateTime.fromTime_t(source_data).date(),
+                            QLocale.dateFormat(QLocale(), QLocale.ShortFormat)
+                        )
+                    else:
+                        return ""
+                if source_index.column() == self.sourceModel().columns_ids.index('pubkey'):
+                    return "pub:{0}".format(source_data[:5])
+
+            if role == Qt.ForegroundRole:
+                if expiration_data:
+                    if will_expire_soon:
+                        return QColor(Qt.red)
                 else:
-                    return ""
-            if source_index.column() == self.sourceModel().columns_ids.index('pubkey'):
-                return "pub:{0}".format(source_data[:5])
-
-        if role == Qt.ForegroundRole:
-            if expiration_data:
-                if will_expire_soon:
-                    return QColor(Qt.red)
-            else:
-                return QColor(Qt.blue)
-        return source_data
+                    return QColor(Qt.blue)
+            return source_data
 
 
 class IdentitiesTableModel(QAbstractTableModel):
@@ -95,7 +96,6 @@ class IdentitiesTableModel(QAbstractTableModel):
         self._sig_validity = 0
 
     def change_community(self, community):
-        cancel_once_task(self, self.refresh_identities)
         self.community = community
 
     def sig_validity(self):
@@ -104,12 +104,21 @@ class IdentitiesTableModel(QAbstractTableModel):
     @property
     def pubkeys(self):
         """
-        Get pubkeys of displayed identities
+        Ge
+    def resizeEvent(self, event):
+        self.busy.resize(event.size())
+        super().resizeEvent(event)t pubkeys of displayed identities
         """
         return [i[1] for i in self.identities_data]
 
     @asyncio.coroutine
     def identity_data(self, identity):
+        """
+        Return the identity in the form a tuple to display
+        :param cutecoin.core.registry.Identity identity: The identity to get data from
+        :return: The identity data in the form of a tuple
+        :rtype: tuple
+        """
         try:
             join_date = yield from identity.get_join_date(self.community)
             expiration_date = yield from identity.get_expiration_date(self.community)
@@ -117,10 +126,8 @@ class IdentitiesTableModel(QAbstractTableModel):
             join_date = None
             expiration_date = None
 
-        return (identity.uid, identity.pubkey, join_date, expiration_date)
+        return identity.uid, identity.pubkey, join_date, expiration_date
 
-    @once_at_a_time
-    @asyncify
     @asyncio.coroutine
     def refresh_identities(self, identities):
         """
@@ -131,11 +138,20 @@ class IdentitiesTableModel(QAbstractTableModel):
         logging.debug("Refresh {0} identities".format(len(identities)))
         self.beginResetModel()
         self.identities_data = []
+        self.endResetModel()
+        self.beginResetModel()
+        identities_data = []
         for identity in identities:
             data = yield from self.identity_data(identity)
-            self.identities_data.append(data)
-        parameters = yield from self.community.parameters()
-        self._sig_validity = parameters['sigValidity']
+            identities_data.append(data)
+        if len(identities) > 0:
+            try:
+                parameters = yield from self.community.parameters()
+                self._sig_validity = parameters['sigValidity']
+            except NoPeerAvailable as e:
+                logging.debug(str(e))
+                self._sig_validity = 0
+        self.identities_data = identities_data
         self.endResetModel()
 
     def rowCount(self, parent):
@@ -153,7 +169,8 @@ class IdentitiesTableModel(QAbstractTableModel):
         if role == Qt.DisplayRole:
             row = index.row()
             col = index.column()
-            return self.identities_data[row][col]
+            identity_data = self.identities_data[row]
+            return identity_data[col]
 
     def identity_index(self, pubkey):
         try:
diff --git a/src/cutecoin/models/network.py b/src/cutecoin/models/network.py
index fdf42e0ec616491ebe05c9093c1a7c6055f9dd4d..893d31350ab050f6e141b964b5e4f3ad41690a74 100644
--- a/src/cutecoin/models/network.py
+++ b/src/cutecoin/models/network.py
@@ -11,7 +11,7 @@ from PyQt5.QtCore import QAbstractTableModel, Qt, QVariant, QSortFilterProxyMode
 from PyQt5.QtGui import QColor, QFont
 
 from ..tools.exceptions import NoPeerAvailable
-from ..tools.decorators import asyncify
+from ..tools.decorators import asyncify, once_at_a_time, cancel_once_task
 from cutecoin.core.net.node import Node
 
 
@@ -35,8 +35,9 @@ class NetworkFilterProxyModel(QSortFilterProxyModel):
         """
         Sort table by given column number.
         """
-        left_data = self.sourceModel().data(left, Qt.DisplayRole)
-        right_data = self.sourceModel().data(right, Qt.DisplayRole)
+        left_data = str(self.sourceModel().data(left, Qt.DisplayRole))
+        right_data = str(self.sourceModel().data(right, Qt.DisplayRole))
+
         return (left_data < right_data)
 
     def headerData(self, section, orientation, role):
@@ -139,6 +140,7 @@ class NetworkTableModel(QAbstractTableModel):
         self.nodes_data = []
 
     def change_community(self, community):
+        cancel_once_task(self, self.refresh_nodes)
         self.community = community
         self.refresh_nodes()
 
@@ -166,19 +168,25 @@ class NetworkTableModel(QAbstractTableModel):
         port = node.endpoint.port
 
         is_root = self.community.network.is_root_node(node)
-
-        return (address, port, node.block['number'], node.block['hash'], node.uid,
+        if node.block:
+            number, block_hash = node.block['number'], node.block['hash']
+        else:
+            number, block_hash = "", ""
+        return (address, port, number, block_hash, node.uid,
                 is_member, node.pubkey, node.software, node.version, is_root, node.state)
 
+    @once_at_a_time
     @asyncify
     @asyncio.coroutine
     def refresh_nodes(self):
         self.beginResetModel()
         self.nodes_data = []
+        nodes_data = []
         if self.community:
             for node in self.community.network.nodes:
                 data = yield from self.data_node(node)
-                self.nodes_data.append(data)
+                nodes_data.append(data)
+        self.nodes_data = nodes_data
         self.endResetModel()
 
     def rowCount(self, parent):
diff --git a/src/cutecoin/models/txhistory.py b/src/cutecoin/models/txhistory.py
index bd22eccb338102552f416e9b0f4f278962fc3c2d..de5d3adc44113296f1768ab9bfbfe45eb8da3b6e 100644
--- a/src/cutecoin/models/txhistory.py
+++ b/src/cutecoin/models/txhistory.py
@@ -7,7 +7,8 @@ Created on 5 févr. 2014
 import datetime
 import logging
 import asyncio
-from ..core.transfer import Transfer
+from ..core.transfer import Transfer, TransferState
+from ..tools.exceptions import NoPeerAvailable
 from ..tools.decorators import asyncify, once_at_a_time, cancel_once_task
 from PyQt5.QtCore import QAbstractTableModel, Qt, QVariant, QSortFilterProxyModel, \
     QDateTime, QLocale, QModelIndex
@@ -18,7 +19,6 @@ from PyQt5.QtGui import QFont, QColor
 class TxFilterProxyModel(QSortFilterProxyModel):
     def __init__(self, ts_from, ts_to, parent=None):
         super().__init__(parent)
-        self.community = None
         self.app = None
         self.ts_from = ts_from
         self.ts_to = ts_to
@@ -67,11 +67,14 @@ class TxFilterProxyModel(QSortFilterProxyModel):
 
         return in_period(date)
 
+    @property
+    def community(self):
+        return self.sourceModel().community
+
     def columnCount(self, parent):
         return self.sourceModel().columnCount(None) - 5
 
     def setSourceModel(self, sourceModel):
-        self.community = sourceModel.community
         self.app = sourceModel.app
         super().setSourceModel(sourceModel)
 
@@ -116,20 +119,20 @@ class TxFilterProxyModel(QSortFilterProxyModel):
 
         if role == Qt.FontRole:
             font = QFont()
-            if state_data == Transfer.AWAITING or state_data == Transfer.VALIDATING:
+            if state_data == TransferState.AWAITING or state_data == TransferState.VALIDATING:
                 font.setItalic(True)
-            elif state_data == Transfer.REFUSED:
+            elif state_data == TransferState.REFUSED:
                 font.setItalic(True)
-            elif state_data == Transfer.TO_SEND:
+            elif state_data == TransferState.TO_SEND:
                 font.setBold(True)
             else:
                 font.setItalic(False)
             return font
 
         if role == Qt.ForegroundRole:
-            if state_data == Transfer.REFUSED:
+            if state_data == TransferState.REFUSED:
                 return QColor(Qt.red)
-            elif state_data == Transfer.TO_SEND:
+            elif state_data == TransferState.TO_SEND:
                 return QColor(Qt.blue)
 
         if role == Qt.TextAlignmentRole:
@@ -143,23 +146,27 @@ class TxFilterProxyModel(QSortFilterProxyModel):
             if source_index.column() == self.sourceModel().columns_types.index('date'):
                 return QDateTime.fromTime_t(source_data).toString(Qt.SystemLocaleLongDate)
 
-            if state_data == Transfer.VALIDATING or state_data == Transfer.AWAITING:
+            if state_data == TransferState.VALIDATING or state_data == TransferState.AWAITING:
                 block_col = model.columns_types.index('block_number')
                 block_index = model.index(source_index.row(), block_col)
                 block_data = model.data(block_index, Qt.DisplayRole)
 
-                if state_data == Transfer.VALIDATING:
-                    current_validations = self.community.network.latest_block_number - block_data
-                else:
-                    current_validations = 0
-                max_validations = self.sourceModel().max_validations()
+                current_confirmations = 0
+                if state_data == TransferState.VALIDATING:
+                    current_blockid_number = self.community.network.current_blockid.number
+                    if current_blockid_number:
+                        current_confirmations = current_blockid_number - block_data
+                elif state_data == TransferState.AWAITING:
+                    current_confirmations = 0
+
+                max_confirmations = self.sourceModel().max_confirmations()
 
                 if self.app.preferences['expert_mode']:
-                    return self.tr("{0} / {1} validations").format(current_validations, max_validations)
+                    return self.tr("{0} / {1} confirmations").format(current_confirmations, max_confirmations)
                 else:
-                    validation = current_validations / max_validations * 100
-                    validation = 100 if validation > 100 else validation
-                    return self.tr("Validating... {0} %").format(QLocale().toString(float(validation), 'f', 0))
+                    confirmation = current_confirmations / max_confirmations * 100
+                    confirmation = 100 if confirmation > 100 else confirmation
+                    return self.tr("Confirming... {0} %").format(QLocale().toString(float(confirmation), 'f', 0))
 
             return None
 
@@ -181,7 +188,7 @@ class HistoryTableModel(QAbstractTableModel):
         self.community = community
         self.transfers_data = []
         self.refresh_transfers()
-        self._max_validations = 0
+        self._max_confirmations = 0
 
         self.columns_types = (
             'date',
@@ -237,7 +244,10 @@ class HistoryTableModel(QAbstractTableModel):
 
         date_ts = transfer.metadata['time']
         txid = transfer.metadata['txid']
-        block_number = transfer.metadata['block']
+        if transfer.blockid:
+            block_number = transfer.blockid.number
+        else:
+            block_number = None
 
         return (date_ts, sender, "", deposit,
                 comment, transfer.state, txid,
@@ -258,7 +268,10 @@ class HistoryTableModel(QAbstractTableModel):
 
         date_ts = transfer.metadata['time']
         txid = transfer.metadata['txid']
-        block_number = transfer.metadata['block']
+        if transfer.blockid:
+            block_number = transfer.blockid.number
+        else:
+            block_number = None
 
         return (date_ts, receiver, paiment,
                 "", comment, transfer.state, txid,
@@ -286,6 +299,9 @@ class HistoryTableModel(QAbstractTableModel):
     def refresh_transfers(self):
         self.beginResetModel()
         self.transfers_data = []
+        self.endResetModel()
+        self.beginResetModel()
+        transfers_data = []
         if self.community:
             for transfer in self.transfers():
                 data = None
@@ -297,13 +313,18 @@ class HistoryTableModel(QAbstractTableModel):
                 elif type(transfer) is dict:
                     data = yield from self.data_dividend(transfer)
                 if data:
-                    self.transfers_data.append(data)
-                members_pubkeys = yield from self.community.members_pubkeys()
-                self._max_validations = self.community.network.fork_window(members_pubkeys) + 1
+                    transfers_data.append(data)
+                try:
+                    members_pubkeys = yield from self.community.members_pubkeys()
+                    self._max_confirmations = self.community.network.fork_window(members_pubkeys) + 1
+                except NoPeerAvailable as e:
+                    logging.debug(str(e))
+                    self._max_confirmations = 0
+        self.transfers_data = transfers_data
         self.endResetModel()
 
-    def max_validations(self):
-        return self._max_validations
+    def max_confirmations(self):
+        return self._max_confirmations
 
     def rowCount(self, parent):
         return len(self.transfers_data)
diff --git a/src/cutecoin/tests/__init__.py b/src/cutecoin/tests/__init__.py
index 1d65e88026c473b057c001647a460228f8415d7c..75eaa8726d29edc487d41f0280b1683aa508c686 100644
--- a/src/cutecoin/tests/__init__.py
+++ b/src/cutecoin/tests/__init__.py
@@ -1 +1 @@
-from .qapp import get_application
\ No newline at end of file
+from .qapp import get_application, unitttest_exception_handler
\ No newline at end of file
diff --git a/src/cutecoin/tests/core/test_account.py b/src/cutecoin/tests/core/test_account.py
new file mode 100644
index 0000000000000000000000000000000000000000..4fbbf67e28065fb333b3dc592c124d79e06d0bd7
--- /dev/null
+++ b/src/cutecoin/tests/core/test_account.py
@@ -0,0 +1,40 @@
+import sys
+import unittest
+import asyncio
+import quamash
+import logging
+from PyQt5.QtCore import QLocale
+from cutecoin.core.registry.identities import IdentitiesRegistry
+from cutecoin.core import Account
+from cutecoin.tests import get_application
+
+
+class TestAccount(unittest.TestCase):
+    def setUp(self):
+        self.qapplication = get_application()
+        QLocale.setDefault(QLocale("en_GB"))
+        self.lp = quamash.QEventLoop(self.qapplication)
+        asyncio.set_event_loop(self.lp)
+        self.identities_registry = IdentitiesRegistry()
+
+    def tearDown(self):
+        try:
+            self.lp.close()
+        finally:
+            asyncio.set_event_loop(None)
+
+    def test_load_save_account(self):
+        account = Account("test_salt", "HnFcSms8jzwngtVomTTnzudZx7SHUQY8sVE1y8yBmULk",
+                          "test_uid", [], [], [], self.identities_registry)
+        json_data = account.jsonify()
+        account_from_json = Account.load(json_data, self.identities_registry)
+
+        self.assertEqual(account.name, account_from_json.name)
+        self.assertEqual(account.pubkey, account_from_json.pubkey)
+        self.assertEqual(len(account.communities), len(account_from_json.communities))
+        self.assertEqual(len(account.wallets), len(account.wallets))
+
+if __name__ == '__main__':
+    logging.basicConfig(stream=sys.stderr)
+    logging.getLogger().setLevel(logging.DEBUG)
+    unittest.main()
diff --git a/src/cutecoin/tests/core/test_bma_access.py b/src/cutecoin/tests/core/test_bma_access.py
new file mode 100644
index 0000000000000000000000000000000000000000..f1f0c83e3cb82d55f99970e38b98d122c5211490
--- /dev/null
+++ b/src/cutecoin/tests/core/test_bma_access.py
@@ -0,0 +1,57 @@
+import sys
+import unittest
+import asyncio
+import quamash
+import logging
+import time
+from PyQt5.QtCore import QLocale
+from cutecoin.core.registry.identities import Identity, IdentitiesRegistry, LocalState, BlockchainState
+from cutecoin.tests.mocks.monkeypatch import pretender_reversed
+from cutecoin.tests.mocks.bma import nice_blockchain, corrupted
+from cutecoin.tests import get_application
+from cutecoin.core import Application, Community
+from cutecoin.core.net import Network, Node
+from ucoinpy.documents.peer import BMAEndpoint
+from cutecoin.core.net.api.bma.access import BmaAccess
+from cutecoin.tools.exceptions import MembershipNotFoundError
+from ucoinpy.api.bma import API
+
+
+class TestBmaAccess(unittest.TestCase):
+    def setUp(self):
+        self.qapplication = get_application()
+        QLocale.setDefault(QLocale("en_GB"))
+        self.lp = quamash.QEventLoop(self.qapplication)
+        asyncio.set_event_loop(self.lp)
+        self.identities_registry = IdentitiesRegistry()
+
+        self.application = Application(self.qapplication, self.lp, self.identities_registry)
+        self.application.preferences['notifications'] = False
+
+        self.endpoint = BMAEndpoint("", "127.0.0.1", "", 50000)
+        self.node = Node("test_currency", [self.endpoint],
+                         "", "HnFcSms8jzwngtVomTTnzudZx7SHUQY8sVE1y8yBmULk",
+                         None, Node.ONLINE,
+                         time.time(), {}, "ucoin", "0.12.0", 0)
+        self.network = Network.create(self.node)
+        self.bma_access = BmaAccess.create(self.network)
+        self.community = Community("test_currency", self.network, self.bma_access)
+
+    def tearDown(self):
+        try:
+            if not self.lp.is_closed():
+                self.lp.close()
+        finally:
+            asyncio.set_event_loop(None)
+
+    def test_compare_json_with_nonetype(self):
+        res = self.bma_access._compare_json({}, corrupted.bma_null_data)
+        self.assertFalse(res)
+
+    def test_filter_nodes(self):
+        pass#TODO
+
+if __name__ == '__main__':
+    logging.basicConfig(stream=sys.stderr)
+    logging.getLogger().setLevel(logging.DEBUG)
+    unittest.main()
diff --git a/src/cutecoin/tests/core/test_community.py b/src/cutecoin/tests/core/test_community.py
new file mode 100644
index 0000000000000000000000000000000000000000..97ff383eac06a9366ce2c426e87e55ca5ac10260
--- /dev/null
+++ b/src/cutecoin/tests/core/test_community.py
@@ -0,0 +1,40 @@
+import sys
+import unittest
+import asyncio
+import quamash
+import logging
+from PyQt5.QtCore import QLocale
+from cutecoin.core.registry.identities import IdentitiesRegistry
+from cutecoin.core.net.api.bma.access import BmaAccess
+from cutecoin.core.net.network import Network
+from cutecoin.core import Community
+from cutecoin.tests import get_application
+
+
+class TestCommunity(unittest.TestCase):
+    def setUp(self):
+        self.qapplication = get_application()
+        QLocale.setDefault(QLocale("en_GB"))
+        self.lp = quamash.QEventLoop(self.qapplication)
+        asyncio.set_event_loop(self.lp)
+
+    def tearDown(self):
+        try:
+            self.lp.close()
+        finally:
+            asyncio.set_event_loop(None)
+
+    def test_load_save_community(self):
+        network = Network("test_currency", [])
+        bma_access = BmaAccess([], network)
+        community = Community("test_currency", network, bma_access)
+
+        json_data = community.jsonify()
+        community_from_json = Community.load(json_data)
+        self.assertEqual(community.name, community_from_json.name)
+        self.assertEqual(len(community.network._nodes), len(community_from_json.network._nodes))
+
+if __name__ == '__main__':
+    logging.basicConfig(stream=sys.stderr)
+    logging.getLogger().setLevel(logging.DEBUG)
+    unittest.main()
diff --git a/src/cutecoin/tests/core/test_identities.py b/src/cutecoin/tests/core/test_identities.py
new file mode 100644
index 0000000000000000000000000000000000000000..330803092329888d8dc40ef407dc11b12c4e568d
--- /dev/null
+++ b/src/cutecoin/tests/core/test_identities.py
@@ -0,0 +1,45 @@
+import sys
+import unittest
+from unittest import mock
+import asyncio
+import quamash
+import logging
+from PyQt5.QtCore import QLocale
+from cutecoin.core.registry.identities import Identity, IdentitiesRegistry, LocalState, BlockchainState
+from cutecoin.tests import get_application
+
+
+class TestIdentity(unittest.TestCase):
+    def setUp(self):
+        self.qapplication = get_application()
+        QLocale.setDefault(QLocale("en_GB"))
+        self.lp = quamash.QEventLoop(self.qapplication)
+        asyncio.set_event_loop(self.lp)
+
+    def tearDown(self):
+        try:
+            self.lp.close()
+        finally:
+            asyncio.set_event_loop(None)
+
+    def test_identity_from_handled_data(self):
+        community = mock.MagicMock()
+        type(community).currency = mock.PropertyMock(return_value="test_currency")
+
+        identity = Identity("john", "7Aqw6Efa9EzE7gtsc8SveLLrM7gm6NEGoywSv4FJx6pZ",
+                            LocalState.COMPLETED, BlockchainState.VALIDATED)
+        test_instances = {
+            "test_currency": {"7Aqw6Efa9EzE7gtsc8SveLLrM7gm6NEGoywSv4FJx6pZ": identity}
+        }
+        identities_registry = IdentitiesRegistry(test_instances)
+
+        identity_from_data = identities_registry.from_handled_data("john",
+                                                                    "7Aqw6Efa9EzE7gtsc8SveLLrM7gm6NEGoywSv4FJx6pZ", BlockchainState.VALIDATED,
+                                                                   community)
+        self.assertEqual(identity, identity_from_data)
+
+
+if __name__ == '__main__':
+    logging.basicConfig(stream=sys.stderr)
+    logging.getLogger().setLevel(logging.DEBUG)
+    unittest.main()
diff --git a/src/cutecoin/tests/core/test_identity.py b/src/cutecoin/tests/core/test_identity.py
new file mode 100644
index 0000000000000000000000000000000000000000..7af9db4f18e06d20094dfa5701cdc8427eb9e1e4
--- /dev/null
+++ b/src/cutecoin/tests/core/test_identity.py
@@ -0,0 +1,102 @@
+import sys
+import unittest
+import asyncio
+import quamash
+import logging
+import time
+from PyQt5.QtCore import QLocale
+from cutecoin.core.registry.identities import Identity, IdentitiesRegistry, LocalState, BlockchainState
+from cutecoin.tests.mocks.monkeypatch import pretender_reversed
+from cutecoin.tests.mocks.bma import nice_blockchain, corrupted
+from cutecoin.tests import get_application
+from cutecoin.core import Application, Community
+from cutecoin.core.net import Network, Node
+from ucoinpy.documents.peer import BMAEndpoint
+from cutecoin.core.net.api.bma.access import BmaAccess
+from cutecoin.tools.exceptions import MembershipNotFoundError
+from ucoinpy.api.bma import API
+
+
+class TestIdentity(unittest.TestCase):
+    def setUp(self):
+        self.qapplication = get_application()
+        QLocale.setDefault(QLocale("en_GB"))
+        self.lp = quamash.QEventLoop(self.qapplication)
+        asyncio.set_event_loop(self.lp)
+        self.identities_registry = IdentitiesRegistry()
+
+        self.application = Application(self.qapplication, self.lp, self.identities_registry)
+        self.application.preferences['notifications'] = False
+
+        self.endpoint = BMAEndpoint("", "127.0.0.1", "", 50000)
+        self.node = Node("test_currency", [self.endpoint],
+                         "", "HnFcSms8jzwngtVomTTnzudZx7SHUQY8sVE1y8yBmULk",
+                         None, Node.ONLINE,
+                         time.time(), {}, "ucoin", "0.12.0", 0)
+        self.network = Network.create(self.node)
+        self.bma_access = BmaAccess.create(self.network)
+        self.community = Community("test_currency", self.network, self.bma_access)
+
+    def tearDown(self):
+        try:
+            self.lp.close()
+        finally:
+            asyncio.set_event_loop(None)
+
+    def test_identity_certified_by(self):
+        mock = nice_blockchain.get_mock()
+        time.sleep(2)
+        logging.debug(mock.pretend_url)
+        API.reverse_url = pretender_reversed(mock.pretend_url)
+        identity = Identity("john", "7Aqw6Efa9EzE7gtsc8SveLLrM7gm6NEGoywSv4FJx6pZ",
+                            LocalState.COMPLETED, BlockchainState.VALIDATED)
+
+        @asyncio.coroutine
+        def exec_test():
+            certified = yield from identity.certifiers_of(self.identities_registry, self.community)
+            self.assertEqual(len(certified), 1)
+            self.assertEqual(certified[0]['identity'].uid, "doe")
+
+        self.lp.run_until_complete(exec_test())
+        mock.delete_mock()
+
+    def test_identity_membership(self):
+        mock = nice_blockchain.get_mock()
+        time.sleep(2)
+        logging.debug(mock.pretend_url)
+        API.reverse_url = pretender_reversed(mock.pretend_url)
+        identity = Identity("john", "7Aqw6Efa9EzE7gtsc8SveLLrM7gm6NEGoywSv4FJx6pZ",
+                            LocalState.COMPLETED, BlockchainState.VALIDATED)
+
+        @asyncio.coroutine
+        def exec_test():
+            ms = yield from identity.membership(self.community)
+            self.assertEqual(ms["blockNumber"], 0)
+            self.assertEqual(ms["blockHash"], "DA39A3EE5E6B4B0D3255BFEF95601890AFD80709")
+            self.assertEqual(ms["membership"], "IN")
+            self.assertEqual(ms["currency"], "test_currency")
+
+        self.lp.run_until_complete(exec_test())
+        mock.delete_mock()
+
+    def test_identity_corrupted_membership(self):
+        mock = corrupted.get_mock()
+        time.sleep(2)
+        logging.debug(mock.pretend_url)
+        API.reverse_url = pretender_reversed(mock.pretend_url)
+        identity = Identity("john", "7Aqw6Efa9EzE7gtsc8SveLLrM7gm6NEGoywSv4FJx6pZ",
+                            LocalState.COMPLETED, BlockchainState.VALIDATED)
+
+        @asyncio.coroutine
+        def exec_test():
+            with self.assertRaises(MembershipNotFoundError):
+                yield from identity.membership(self.community)
+
+        self.lp.run_until_complete(exec_test())
+        mock.delete_mock()
+
+
+if __name__ == '__main__':
+    logging.basicConfig(stream=sys.stderr)
+    logging.getLogger().setLevel(logging.DEBUG)
+    unittest.main()
diff --git a/src/cutecoin/tests/core/test_wallet.py b/src/cutecoin/tests/core/test_wallet.py
new file mode 100644
index 0000000000000000000000000000000000000000..05db39febcabe72f3ce9f9c653055a1e117123e9
--- /dev/null
+++ b/src/cutecoin/tests/core/test_wallet.py
@@ -0,0 +1,40 @@
+import sys
+import unittest
+import asyncio
+import quamash
+import logging
+from PyQt5.QtCore import QLocale
+from cutecoin.core.registry.identities import IdentitiesRegistry
+from cutecoin.core import Wallet
+from cutecoin.tests import get_application
+
+
+class TestWallet(unittest.TestCase):
+    def setUp(self):
+        self.qapplication = get_application()
+        QLocale.setDefault(QLocale("en_GB"))
+        self.lp = quamash.QEventLoop(self.qapplication)
+        asyncio.set_event_loop(self.lp)
+        self.identities_registry = IdentitiesRegistry({})
+
+    def tearDown(self):
+        try:
+            self.lp.close()
+        finally:
+            asyncio.set_event_loop(None)
+
+    def test_load_save_wallet(self):
+        wallet = Wallet(0, "7Aqw6Efa9EzE7gtsc8SveLLrM7gm6NEGoywSv4FJx6pZ",
+                             "Wallet 1", self.identities_registry)
+
+        json_data = wallet.jsonify()
+        wallet_from_json = Wallet.load(json_data, self.identities_registry)
+        self.assertEqual(wallet.walletid, wallet_from_json.walletid)
+        self.assertEqual(wallet.pubkey, wallet_from_json.pubkey)
+        self.assertEqual(wallet.name, wallet_from_json.name)
+        self.assertEqual(wallet._identities_registry, wallet_from_json._identities_registry)
+
+if __name__ == '__main__':
+    logging.basicConfig(stream=sys.stderr)
+    logging.getLogger().setLevel(logging.DEBUG)
+    unittest.main()
diff --git a/src/cutecoin/tests/core/txhistory/test_txhistory_loading.py b/src/cutecoin/tests/core/txhistory/test_txhistory_loading.py
index 26e38fa3d3cb43c40f140984a069cc15ec1d94e9..18bced162031179ed3bc3de6e9ba4161d73e2bc4 100644
--- a/src/cutecoin/tests/core/txhistory/test_txhistory_loading.py
+++ b/src/cutecoin/tests/core/txhistory/test_txhistory_loading.py
@@ -8,35 +8,32 @@ from ucoinpy.documents.peer import BMAEndpoint as PyBMAEndpoint
 from PyQt5.QtCore import QLocale, Qt
 from PyQt5.QtTest import QTest
 from cutecoin.tests.mocks.bma import nice_blockchain
-from cutecoin.tests.mocks.access_manager import MockNetworkAccessManager
 from cutecoin.core.registry.identities import IdentitiesRegistry
 from cutecoin.core.app import Application
 from cutecoin.core import Account, Community, Wallet
 from cutecoin.core.net import Network, Node
-from cutecoin.core.net.endpoint import BMAEndpoint
 from cutecoin.core.net.api.bma.access import BmaAccess
 from cutecoin.tests import get_application
-from cutecoin.core.net.api import bma as qtbma
+from ucoinpy.documents.peer import BMAEndpoint
 
 
 class TestTxHistory(unittest.TestCase):
     def setUp(self):
         self.qapplication = get_application()
-        self.network_manager = MockNetworkAccessManager()
         QLocale.setDefault(QLocale("en_GB"))
         self.lp = quamash.QEventLoop(self.qapplication)
         asyncio.set_event_loop(self.lp)
         self.identities_registry = IdentitiesRegistry({})
 
-        self.application = Application(self.qapplication, self.lp, self.network_manager, self.identities_registry)
+        self.application = Application(self.qapplication, self.lp, self.identities_registry)
         self.application.preferences['notifications'] = False
 
         self.endpoint = BMAEndpoint(PyBMAEndpoint("", "127.0.0.1", "", 50000))
-        self.node = Node(self.network_manager, "test_currency", [self.endpoint],
+        self.node = Node("test_currency", [self.endpoint],
                          "", "HnFcSms8jzwngtVomTTnzudZx7SHUQY8sVE1y8yBmULk",
                          nice_blockchain.bma_blockchain_current, Node.ONLINE,
                          time.time(), {}, "ucoin", "0.14.0", 0)
-        self.network = Network.create(self.network_manager, self.node)
+        self.network = Network.create(self.node)
         self.bma_access = BmaAccess.create(self.network)
         self.community = Community("test_currency", self.network, self.bma_access)
 
@@ -60,7 +57,7 @@ class TestTxHistory(unittest.TestCase):
         mock = nice_blockchain.get_mock()
         time.sleep(2)
         logging.debug(mock.pretend_url)
-        self.network_manager.set_mock_path(mock.pretend_url)
+
         received_list = []
         self.lp.run_until_complete(self.wallet.caches[self.community.currency].
                                    refresh(self.community, received_list))
diff --git a/src/cutecoin/tests/gui/certification/test_certification.py b/src/cutecoin/tests/gui/certification/test_certification.py
index 71c634b046050d18fdf4a71ca4bd7e91843aaa43..0e2de3a87e91dd0011d906617731564f20aaaf35 100644
--- a/src/cutecoin/tests/gui/certification/test_certification.py
+++ b/src/cutecoin/tests/gui/certification/test_certification.py
@@ -4,42 +4,43 @@ import asyncio
 import quamash
 import time
 import logging
-from ucoinpy.documents.peer import BMAEndpoint as PyBMAEndpoint
-from PyQt5.QtWidgets import QDialog, QDialogButtonBox
+from ucoinpy.documents.peer import BMAEndpoint
+from quamash import QApplication
+from PyQt5.QtWidgets import QDialog, QDialogButtonBox, QMessageBox
 from PyQt5.QtCore import QLocale, Qt
 from PyQt5.QtTest import QTest
+from ucoinpy.api.bma import API
+from cutecoin.tests.mocks.monkeypatch import pretender_reversed
 from cutecoin.tests.mocks.bma import init_new_community
-from cutecoin.tests.mocks.access_manager import MockNetworkAccessManager
 from cutecoin.core.registry.identities import IdentitiesRegistry
 from cutecoin.gui.certification import CertificationDialog
 from cutecoin.gui.password_asker import PasswordAskerDialog
 from cutecoin.core.app import Application
 from cutecoin.core import Account, Community, Wallet
 from cutecoin.core.net import Network, Node
-from cutecoin.core.net.endpoint import BMAEndpoint
 from cutecoin.core.net.api.bma.access import BmaAccess
-from cutecoin.tests import get_application
-from cutecoin.core.net.api import bma as qtbma
+from cutecoin.tests import get_application, unitttest_exception_handler
+from ucoinpy.api import bma
 
 
 class TestCertificationDialog(unittest.TestCase):
     def setUp(self):
         self.qapplication = get_application()
-        self.network_manager = MockNetworkAccessManager()
         QLocale.setDefault(QLocale("en_GB"))
         self.lp = quamash.QEventLoop(self.qapplication)
         asyncio.set_event_loop(self.lp)
+        #self.lp.set_exception_handler(lambda lp, ctx : unitttest_exception_handler(self, lp, ctx))
         self.identities_registry = IdentitiesRegistry({})
 
-        self.application = Application(self.qapplication, self.lp, self.network_manager, self.identities_registry)
+        self.application = Application(self.qapplication, self.lp, self.identities_registry)
         self.application.preferences['notifications'] = False
 
-        self.endpoint = BMAEndpoint(PyBMAEndpoint("", "127.0.0.1", "", 50000))
-        self.node = Node(self.network_manager, "test_currency", [self.endpoint],
+        self.endpoint = BMAEndpoint("", "127.0.0.1", "", 50000)
+        self.node = Node("test_currency", [self.endpoint],
                          "", "HnFcSms8jzwngtVomTTnzudZx7SHUQY8sVE1y8yBmULk",
-                         qtbma.blockchain.Block.null_value, Node.ONLINE,
+                         None, Node.ONLINE,
                          time.time(), {}, "ucoin", "0.14.0", 0)
-        self.network = Network.create(self.network_manager, self.node)
+        self.network = Network.create(self.node)
         self.bma_access = BmaAccess.create(self.network)
         self.community = Community("test_currency", self.network, self.bma_access)
 
@@ -65,7 +66,7 @@ class TestCertificationDialog(unittest.TestCase):
         mock = init_new_community.get_mock()
         time.sleep(2)
         logging.debug(mock.pretend_url)
-        self.network_manager.set_mock_path(mock.pretend_url)
+        API.reverse_url = pretender_reversed(mock.pretend_url)
         certification_dialog = CertificationDialog(self.application,
                                                    self.account,
                                                    self.password_asker)
@@ -82,10 +83,14 @@ class TestCertificationDialog(unittest.TestCase):
         @asyncio.coroutine
         def exec_test():
             yield from asyncio.sleep(1)
-            self.assertEqual(certification_dialog.button_box.button(QDialogButtonBox.Ok).text(), "&Ok")
             QTest.mouseClick(certification_dialog.radio_pubkey, Qt.LeftButton)
             QTest.keyClicks(certification_dialog.edit_pubkey, "FADxcH5LmXGmGFgdixSes6nWnC4Vb4pRUBYT81zQRhjn")
             QTest.mouseClick(certification_dialog.button_box.button(QDialogButtonBox.Ok), Qt.LeftButton)
+            yield from asyncio.sleep(1)
+            topWidgets = QApplication.topLevelWidgets()
+            for w in topWidgets:
+                if type(w) is QMessageBox:
+                    QTest.keyClick(w, Qt.Key_Enter)
 
         self.lp.call_later(15, close_dialog)
         asyncio.async(exec_test())
diff --git a/src/cutecoin/tests/gui/identities_tab/test_identities_table.py b/src/cutecoin/tests/gui/identities_tab/test_identities_table.py
index 83e54e923d69619a75c5f6dbe27785a61e386160..5a553d0520962e89bfd6b08c7d94e44775005d76 100644
--- a/src/cutecoin/tests/gui/identities_tab/test_identities_table.py
+++ b/src/cutecoin/tests/gui/identities_tab/test_identities_table.py
@@ -4,42 +4,41 @@ import asyncio
 import quamash
 import logging
 import time
-from ucoinpy.documents.peer import BMAEndpoint as PyBMAEndpoint
 from PyQt5.QtWidgets import QDialog
 from PyQt5.QtCore import QLocale, Qt, QPoint
 from PyQt5.QtTest import QTest
-from cutecoin.core.net.api import bma as qtbma
+from ucoinpy.api import bma
+from ucoinpy.api.bma import API
+from cutecoin.tests.mocks.monkeypatch import pretender_reversed
 from cutecoin.tests.mocks.bma import nice_blockchain
-from cutecoin.tests.mocks.access_manager import MockNetworkAccessManager
 from cutecoin.core.registry.identities import IdentitiesRegistry
 from cutecoin.gui.identities_tab import IdentitiesTabWidget
 from cutecoin.gui.password_asker import PasswordAskerDialog
 from cutecoin.core.app import Application
 from cutecoin.core import Account, Community, Wallet
 from cutecoin.core.net import Network, Node
-from cutecoin.core.net.endpoint import BMAEndpoint
+from ucoinpy.documents.peer import BMAEndpoint
 from cutecoin.core.net.api.bma.access import BmaAccess
-from cutecoin.tests import get_application
+from cutecoin.tests import get_application, unitttest_exception_handler
 
 
 class TestIdentitiesTable(unittest.TestCase):
     def setUp(self):
         self.qapplication = get_application()
-        self.network_manager = MockNetworkAccessManager()
         QLocale.setDefault(QLocale("en_GB"))
         self.lp = quamash.QEventLoop(self.qapplication)
         asyncio.set_event_loop(self.lp)
         self.identities_registry = IdentitiesRegistry()
 
-        self.application = Application(self.qapplication, self.lp, self.network_manager, self.identities_registry)
+        self.application = Application(self.qapplication, self.lp, self.identities_registry)
         self.application.preferences['notifications'] = False
 
-        self.endpoint = BMAEndpoint(PyBMAEndpoint("", "127.0.0.1", "", 50000))
-        self.node = Node(self.network_manager, "test_currency", [self.endpoint],
+        self.endpoint = BMAEndpoint("", "127.0.0.1", "", 50000)
+        self.node = Node("test_currency", [self.endpoint],
                          "", "HnFcSms8jzwngtVomTTnzudZx7SHUQY8sVE1y8yBmULk",
-                         qtbma.blockchain.Block.null_value, Node.ONLINE,
+                         None, Node.ONLINE,
                          time.time(), {}, "ucoin", "0.14.0", 0)
-        self.network = Network.create(self.network_manager, self.node)
+        self.network = Network.create(self.node)
         self.bma_access = BmaAccess.create(self.network)
         self.community = Community("test_currency", self.network, self.bma_access)
 
@@ -65,7 +64,7 @@ class TestIdentitiesTable(unittest.TestCase):
         mock = nice_blockchain.get_mock()
         time.sleep(2)
         logging.debug(mock.pretend_url)
-        self.network_manager.set_mock_path(mock.pretend_url)
+        API.reverse_url = pretender_reversed(mock.pretend_url)
         identities_tab = IdentitiesTabWidget(self.application)
         identities_tab.change_account(self.account, self.password_asker)
         identities_tab.change_community(self.community)
@@ -83,27 +82,28 @@ class TestIdentitiesTable(unittest.TestCase):
         @asyncio.coroutine
         def exec_test():
             yield from asyncio.sleep(2)
-            urls = [mock.get_request(i).url for i in range(0, 3)]
+            urls = [mock.get_request(i).url for i in range(0, 6)]
             self.assertTrue('/wot/certifiers-of/7Aqw6Efa9EzE7gtsc8SveLLrM7gm6NEGoywSv4FJx6pZ' in urls,
                             msg="Not found in {0}".format(urls))
+            self.assertTrue('/wot/lookup/7Aqw6Efa9EzE7gtsc8SveLLrM7gm6NEGoywSv4FJx6pZ' in urls,
+                            msg="Not found in {0}".format(urls))
             self.assertTrue('/wot/certified-by/7Aqw6Efa9EzE7gtsc8SveLLrM7gm6NEGoywSv4FJx6pZ' in urls,
                             msg="Not found in {0}".format(urls))
 
+
             # requests 1 to 3 are for getting certifiers-of and certified-by
             # on john, + a lookup
 
             QTest.keyClicks(identities_tab.edit_textsearch, "doe")
             QTest.mouseClick(identities_tab.button_search, Qt.LeftButton)
             yield from asyncio.sleep(2)
-            self.assertEqual(mock.get_request(3).method, 'GET')
-            self.assertEqual(mock.get_request(3).url,
-                             '/blockchain/parameters')
-            self.assertEqual(mock.get_request(4).method, 'GET')
-            self.assertEqual(mock.get_request(4).url,
-                             '/wot/lookup/doe')
-            self.assertEqual(mock.get_request(5).method, 'GET')
-            self.assertEqual(mock.get_request(5).url,
-                             '/wot/certifiers-of/FADxcH5LmXGmGFgdixSes6nWnC4Vb4pRUBYT81zQRhjn')
+            req = 6
+
+            self.assertEqual(mock.get_request(req).method, 'GET')
+            self.assertEqual(mock.get_request(req).url,
+                             '/blockchain/memberships/FADxcH5LmXGmGFgdixSes6nWnC4Vb4pRUBYT81zQRhjn')
+            req += 1
+
             self.assertEqual(identities_tab.table_identities.model().rowCount(), 1)
             yield from asyncio.sleep(2)
             self.lp.call_soon(close_dialog)
diff --git a/src/cutecoin/tests/gui/main_window/test_main_window_dialogs.py b/src/cutecoin/tests/gui/main_window/test_main_window_dialogs.py
index db842cfde92a8afcb3b19602468524c0842a73af..a3f55041ebca13c621bb9cdeab2c31f4a6cf5b51 100644
--- a/src/cutecoin/tests/gui/main_window/test_main_window_dialogs.py
+++ b/src/cutecoin/tests/gui/main_window/test_main_window_dialogs.py
@@ -7,8 +7,7 @@ from PyQt5.QtNetwork import QNetworkAccessManager
 from cutecoin.gui.mainwindow import MainWindow
 from cutecoin.core.app import Application
 from cutecoin.tests import get_application
-
-from cutecoin.tests.stubs.core.registry import IdentitiesRegistry
+from cutecoin.core.registry.identities import IdentitiesRegistry
 
 # Qapplication cause a core dumped when re-run in setup
 # set it as global var
@@ -19,9 +18,8 @@ class MainWindowDialogsTest(unittest.TestCase):
         self.qapplication = get_application()
         self.lp = quamash.QEventLoop(self.qapplication)
         asyncio.set_event_loop(self.lp)
-        network_manager = QNetworkAccessManager()
 
-        self.application = Application(self.qapplication, self.lp, network_manager, IdentitiesRegistry())
+        self.application = Application(self.qapplication, self.lp, IdentitiesRegistry())
         self.main_window = MainWindow(self.application)
 
     def tearDown(self):
diff --git a/src/cutecoin/tests/gui/main_window/test_main_window_menus.py b/src/cutecoin/tests/gui/main_window/test_main_window_menus.py
index 95c3e6e12607d05d2523681b8970342baaca1de9..6fe831e8dfd3d3b0bc8b94e1b79b08b9e104ac2e 100644
--- a/src/cutecoin/tests/gui/main_window/test_main_window_menus.py
+++ b/src/cutecoin/tests/gui/main_window/test_main_window_menus.py
@@ -16,7 +16,7 @@ class MainWindowMenusTest(unittest.TestCase):
         self.lp = quamash.QEventLoop(self.qapplication)
         asyncio.set_event_loop(self.lp)
 
-        self.application = Application(self.qapplication, self.lp, None, None)
+        self.application = Application(self.qapplication, self.lp, None)
         self.main_window = MainWindow(self.application)
 
     def tearDown(self):
diff --git a/lib/ucoinpy/api/__init__.py b/src/cutecoin/tests/gui/preferences/__init__.py
similarity index 100%
rename from lib/ucoinpy/api/__init__.py
rename to src/cutecoin/tests/gui/preferences/__init__.py
diff --git a/src/cutecoin/tests/gui/preferences/test_preferences_dialog.py b/src/cutecoin/tests/gui/preferences/test_preferences_dialog.py
new file mode 100644
index 0000000000000000000000000000000000000000..d9a771eabfed6acd2f97edd51eb579b4059baa04
--- /dev/null
+++ b/src/cutecoin/tests/gui/preferences/test_preferences_dialog.py
@@ -0,0 +1,69 @@
+import sys
+import unittest
+import asyncio
+import quamash
+import time
+import logging
+from ucoinpy.documents.peer import BMAEndpoint
+from quamash import QApplication
+from PyQt5.QtWidgets import QDialog, QDialogButtonBox, QMessageBox
+from PyQt5.QtCore import QLocale, Qt
+from PyQt5.QtTest import QTest
+from ucoinpy.api.bma import API
+from cutecoin.tests.mocks.monkeypatch import pretender_reversed
+from cutecoin.tests.mocks.bma import init_new_community
+from cutecoin.core.registry.identities import IdentitiesRegistry
+from cutecoin.gui.preferences import PreferencesDialog
+from cutecoin.core.app import Application
+from cutecoin.core import Account, Community, Wallet
+from cutecoin.core.net import Network, Node
+from cutecoin.core.net.api.bma.access import BmaAccess
+from cutecoin.tests import get_application, unitttest_exception_handler
+from ucoinpy.api import bma
+
+
+class TestCertificationDialog(unittest.TestCase):
+    def setUp(self):
+        self.qapplication = get_application()
+        QLocale.setDefault(QLocale("en_GB"))
+        self.lp = quamash.QEventLoop(self.qapplication)
+        asyncio.set_event_loop(self.lp)
+        #self.lp.set_exception_handler(lambda lp, ctx : unitttest_exception_handler(self, lp, ctx))
+        self.identities_registry = IdentitiesRegistry({})
+
+    def tearDown(self):
+        try:
+            self.lp.close()
+        finally:
+            asyncio.set_event_loop(None)
+
+    def test_preferences_default(self):
+        self.application = Application(self.qapplication, self.lp, self.identities_registry)
+        preferences_dialog = PreferencesDialog(self.application)
+        self.assertEqual(preferences_dialog.combo_account.currentText(),
+                         self.application.preferences['account'])
+        self.assertEqual(preferences_dialog.combo_language.currentText(),
+                         self.application.preferences['lang'])
+        self.assertEqual(preferences_dialog.combo_referential.currentIndex(),
+                         self.application.preferences['ref'])
+        self.assertEqual(preferences_dialog.checkbox_expertmode.isChecked(),
+                         self.application.preferences['expert_mode'])
+        self.assertEqual(preferences_dialog.checkbox_maximize.isChecked(),
+                         self.application.preferences['maximized'])
+        self.assertEqual(preferences_dialog.checkbox_notifications.isChecked(),
+                         self.application.preferences['notifications'])
+        self.assertEqual(preferences_dialog.checkbox_proxy.isChecked(),
+                         self.application.preferences['enable_proxy'])
+        self.assertEqual(preferences_dialog.edit_proxy_address.text(),
+                         self.application.preferences['proxy_address'])
+        self.assertEqual(preferences_dialog.spinbox_proxy_port.value(),
+                         self.application.preferences['proxy_port'])
+        self.assertEqual(preferences_dialog.checkbox_international_system.isChecked(),
+                         self.application.preferences['international_system_of_units'])
+        self.assertEqual(preferences_dialog.checkbox_auto_refresh.isChecked(),
+                         self.application.preferences['auto_refresh'])
+
+if __name__ == '__main__':
+    logging.basicConfig(stream=sys.stderr)
+    logging.getLogger().setLevel(logging.DEBUG)
+    unittest.main()
diff --git a/src/cutecoin/tests/gui/process_cfg_account/test_add_account.py b/src/cutecoin/tests/gui/process_cfg_account/test_add_account.py
index cd6808c164b50e1668a6b507bc436946e1199220..9f35dad5bd88af76083cc4af098c973cc59c2908 100644
--- a/src/cutecoin/tests/gui/process_cfg_account/test_add_account.py
+++ b/src/cutecoin/tests/gui/process_cfg_account/test_add_account.py
@@ -7,7 +7,6 @@ from PyQt5.QtWidgets import QDialog
 from PyQt5.QtCore import QLocale, Qt
 from PyQt5.QtTest import QTest
 from cutecoin.tests.mocks.bma import new_blockchain
-from cutecoin.tests.mocks.access_manager import MockNetworkAccessManager
 from cutecoin.core.registry.identities import IdentitiesRegistry
 from cutecoin.gui.process_cfg_account import ProcessConfigureAccount
 from cutecoin.gui.password_asker import PasswordAskerDialog
@@ -19,13 +18,12 @@ from cutecoin.tests import get_application
 class ProcessAddCommunity(unittest.TestCase):
     def setUp(self):
         self.qapplication = get_application()
-        self.network_manager = MockNetworkAccessManager()
         QLocale.setDefault(QLocale("en_GB"))
         self.lp = quamash.QEventLoop(self.qapplication)
         asyncio.set_event_loop(self.lp)
         self.identities_registry = IdentitiesRegistry({})
 
-        self.application = Application(self.qapplication, self.lp, self.network_manager, self.identities_registry)
+        self.application = Application(self.qapplication, self.lp, self.identities_registry)
         self.application.preferences['notifications'] = False
         # Salt/password : "testcutecoin/testcutecoin"
         # Pubkey : 7Aqw6Efa9EzE7gtsc8SveLLrM7gm6NEGoywSv4FJx6pZ
diff --git a/src/cutecoin/tests/gui/process_cfg_community/test_add_community.py b/src/cutecoin/tests/gui/process_cfg_community/test_add_community.py
index dfb224a1995140fbaaedcae1dcd627429fcc674e..ce4660746d1e9fdfbcf56b80b579267cdca9b786 100644
--- a/src/cutecoin/tests/gui/process_cfg_community/test_add_community.py
+++ b/src/cutecoin/tests/gui/process_cfg_community/test_add_community.py
@@ -7,31 +7,32 @@ import time
 from PyQt5.QtWidgets import QDialog
 from PyQt5.QtCore import QLocale, Qt
 from PyQt5.QtTest import QTest
+from ucoinpy.api.bma import API
+from cutecoin.tests.mocks.monkeypatch import pretender_reversed
 from cutecoin.tests.mocks.bma import new_blockchain, nice_blockchain
-from cutecoin.tests.mocks.access_manager import MockNetworkAccessManager
 from cutecoin.core.registry.identities import IdentitiesRegistry
 from cutecoin.gui.process_cfg_community import ProcessConfigureCommunity
 from cutecoin.gui.password_asker import PasswordAskerDialog
 from cutecoin.core.app import Application
 from cutecoin.core.account import Account
-from cutecoin.tests import get_application
+from cutecoin.tests import get_application, unitttest_exception_handler
 
 
 class ProcessAddCommunity(unittest.TestCase):
     def setUp(self):
         self.qapplication = get_application()
-        self.network_manager = MockNetworkAccessManager()
         QLocale.setDefault(QLocale("en_GB"))
         self.lp = quamash.QEventLoop(self.qapplication)
         asyncio.set_event_loop(self.lp)
+        #self.lp.set_exception_handler(lambda lp, ctx : unitttest_exception_handler(self, lp, ctx))
         self.identities_registry = IdentitiesRegistry({})
 
-        self.application = Application(self.qapplication, self.lp, self.network_manager, self.identities_registry)
+        self.application = Application(self.qapplication, self.lp, self.identities_registry)
         self.application.preferences['notifications'] = False
         # Salt/password : "testcutecoin/testcutecoin"
         # Pubkey : 7Aqw6Efa9EzE7gtsc8SveLLrM7gm6NEGoywSv4FJx6pZ
         self.account = Account("testcutecoin", "7Aqw6Efa9EzE7gtsc8SveLLrM7gm6NEGoywSv4FJx6pZ",
-                               "test", [], [], [], self.identities_registry)
+                               "john", [], [], [], self.identities_registry)
         self.password_asker = PasswordAskerDialog(self.account)
         self.password_asker.password = "testcutecoin"
         self.password_asker.remember = True
@@ -46,16 +47,11 @@ class ProcessAddCommunity(unittest.TestCase):
         mock = new_blockchain.get_mock()
         time.sleep(2)
         logging.debug(mock.pretend_url)
-        self.network_manager.set_mock_path(mock.pretend_url)
+        API.reverse_url = pretender_reversed(mock.pretend_url)
         process_community = ProcessConfigureCommunity(self.application,
                                                     self.account,
                                                     None, self.password_asker)
 
-        @asyncio.coroutine
-        def open_dialog(process_community):
-            result = yield from process_community.async_exec()
-            self.assertEqual(result, QDialog.Accepted)
-
         def close_dialog():
             if process_community.isVisible():
                 process_community.close()
@@ -83,9 +79,17 @@ class ProcessAddCommunity(unittest.TestCase):
                 self.assertEqual(mock.get_request(i).method, 'GET')
                 self.assertEqual(mock.get_request(i).url,
                                  '/wot/lookup/7Aqw6Efa9EzE7gtsc8SveLLrM7gm6NEGoywSv4FJx6pZ')
+            yield from asyncio.sleep(5)
+            self.assertEqual(mock.get_request(5).method, 'GET')
+            self.assertEqual(mock.get_request(5).url,
+                             '/wot/certifiers-of/john')
+            for i in range(6, 9):
+                self.assertEqual(mock.get_request(i).method, 'GET')
+                self.assertEqual(mock.get_request(i).url,
+                                 '/wot/lookup/john')
 
-            self.assertEqual(mock.get_request(6).method, 'POST')
-            self.assertEqual(mock.get_request(6).url[:8], '/wot/add')
+            self.assertEqual(mock.get_request(9).url[:8], '/wot/add')
+            self.assertEqual(mock.get_request(9).method, 'POST')
             self.assertEqual(process_community.label_error.text(), "Broadcasting identity...")
             yield from asyncio.sleep(1)
 
@@ -96,23 +100,19 @@ class ProcessAddCommunity(unittest.TestCase):
 
         self.lp.call_later(15, close_dialog)
         asyncio.async(exec_test())
-        self.lp.run_until_complete(open_dialog(process_community))
+        self.lp.run_until_complete(process_community.async_exec())
+        self.assertEqual(process_community.result(), QDialog.Accepted)
         mock.delete_mock()
 
     def test_connect_community_empty_blockchain(self):
         mock = new_blockchain.get_mock()
         time.sleep(2)
         logging.debug(mock.pretend_url)
-        self.network_manager.set_mock_path(mock.pretend_url)
+        API.reverse_url = pretender_reversed(mock.pretend_url)
         process_community = ProcessConfigureCommunity(self.application,
                                                     self.account,
                                                     None, self.password_asker)
 
-        @asyncio.coroutine
-        def open_dialog(process_community):
-            result = yield from process_community.async_exec()
-            self.assertEqual(result, QDialog.Rejected)
-
         def close_dialog():
             if process_community.isVisible():
                 process_community.close()
@@ -130,9 +130,11 @@ class ProcessAddCommunity(unittest.TestCase):
             self.assertEqual(process_community.lineedit_server.text(), "127.0.0.1")
             self.assertEqual(process_community.spinbox_port.value(), 50000)
             QTest.mouseClick(process_community.button_connect, Qt.LeftButton)
-            yield from asyncio.sleep(1)
+            yield from asyncio.sleep(3)
+            self.assertNotEqual(mock.get_request(0), None)
             self.assertEqual(mock.get_request(0).method, 'GET')
             self.assertEqual(mock.get_request(0).url, '/network/peering')
+            self.assertNotEqual(mock.get_request(1), None)
             self.assertEqual(mock.get_request(1).method, 'GET')
             self.assertEqual(mock.get_request(1).url,
                              '/wot/certifiers-of/7Aqw6Efa9EzE7gtsc8SveLLrM7gm6NEGoywSv4FJx6pZ')
@@ -148,22 +150,107 @@ class ProcessAddCommunity(unittest.TestCase):
 
         self.lp.call_later(15, close_dialog)
         asyncio.async(exec_test())
-        self.lp.run_until_complete(open_dialog(process_community))
+        self.lp.run_until_complete(process_community.async_exec())
+        mock.delete_mock()
+
+    def test_connect_community_wrong_pubkey(self):
+        mock = nice_blockchain.get_mock()
+        time.sleep(2)
+        logging.debug(mock.pretend_url)
+        API.reverse_url = pretender_reversed(mock.pretend_url)
+        self.account.pubkey = "wrong_pubkey"
+        process_community = ProcessConfigureCommunity(self.application,
+                                                    self.account,
+                                                    None, self.password_asker)
+
+        def close_dialog():
+            if process_community.isVisible():
+                process_community.close()
+
+        @asyncio.coroutine
+        def exec_test():
+            yield from asyncio.sleep(1)
+            QTest.mouseClick(process_community.lineedit_server, Qt.LeftButton)
+            QTest.keyClicks(process_community.lineedit_server, "127.0.0.1")
+            QTest.mouseDClick(process_community.spinbox_port, Qt.LeftButton)
+            process_community.spinbox_port.setValue(50000)
+            self.assertEqual(process_community.stacked_pages.currentWidget(),
+                             process_community.page_node,
+                             msg="Current widget : {0}".format(process_community.stacked_pages.currentWidget().objectName()))
+            self.assertEqual(process_community.lineedit_server.text(), "127.0.0.1")
+            self.assertEqual(process_community.spinbox_port.value(), 50000)
+            QTest.mouseClick(process_community.button_connect, Qt.LeftButton)
+            yield from asyncio.sleep(1)
+            self.assertNotEqual(mock.get_request(0), None)
+            self.assertEqual(mock.get_request(0).method, 'GET')
+            self.assertEqual(mock.get_request(0).url, '/network/peering')
+            self.assertNotEqual(mock.get_request(1), None)
+            self.assertEqual(mock.get_request(1).method, 'GET')
+            self.assertEqual(mock.get_request(1).url,
+                             '/wot/certifiers-of/wrong_pubkey')
+            self.assertEqual(process_community.label_error.text(), """Your pubkey or UID is different on the network.
+Yours : wrong_pubkey, the network : 7Aqw6Efa9EzE7gtsc8SveLLrM7gm6NEGoywSv4FJx6pZ""")
+            process_community.close()
+
+        self.lp.call_later(15, close_dialog)
+        asyncio.async(exec_test())
+        self.lp.run_until_complete(process_community.async_exec())
+        self.assertEqual(process_community.result(), QDialog.Rejected)
         mock.delete_mock()
 
-    def test_connect_community_nice_blockchain(self):
+    def test_connect_community_wrong_uid(self):
         mock = nice_blockchain.get_mock()
         time.sleep(2)
         logging.debug(mock.pretend_url)
-        self.network_manager.set_mock_path(mock.pretend_url)
+        API.reverse_url = pretender_reversed(mock.pretend_url)
+        self.account.name = "wrong_uid"
         process_community = ProcessConfigureCommunity(self.application,
                                                     self.account,
                                                     None, self.password_asker)
 
+        def close_dialog():
+            if process_community.isVisible():
+                process_community.close()
+
         @asyncio.coroutine
-        def open_dialog(process_community):
-            result = yield from process_community.async_exec()
-            self.assertEqual(result, QDialog.Accepted)
+        def exec_test():
+            yield from asyncio.sleep(1)
+            QTest.mouseClick(process_community.lineedit_server, Qt.LeftButton)
+            QTest.keyClicks(process_community.lineedit_server, "127.0.0.1")
+            QTest.mouseDClick(process_community.spinbox_port, Qt.LeftButton)
+            process_community.spinbox_port.setValue(50000)
+            self.assertEqual(process_community.stacked_pages.currentWidget(),
+                             process_community.page_node,
+                             msg="Current widget : {0}".format(process_community.stacked_pages.currentWidget().objectName()))
+            self.assertEqual(process_community.lineedit_server.text(), "127.0.0.1")
+            self.assertEqual(process_community.spinbox_port.value(), 50000)
+            QTest.mouseClick(process_community.button_connect, Qt.LeftButton)
+            yield from asyncio.sleep(1)
+            self.assertNotEqual(mock.get_request(0), None)
+            self.assertEqual(mock.get_request(0).method, 'GET')
+            self.assertEqual(mock.get_request(0).url, '/network/peering')
+            self.assertNotEqual(mock.get_request(1), None)
+            self.assertEqual(mock.get_request(1).method, 'GET')
+            self.assertEqual(mock.get_request(1).url,
+                             '/wot/certifiers-of/7Aqw6Efa9EzE7gtsc8SveLLrM7gm6NEGoywSv4FJx6pZ')
+            self.assertEqual(process_community.label_error.text(), """Your pubkey or UID is different on the network.
+Yours : wrong_uid, the network : john""")
+            process_community.close()
+
+        self.lp.call_later(15, close_dialog)
+        asyncio.async(exec_test())
+        self.lp.run_until_complete(process_community.async_exec())
+        self.assertEqual(process_community.result(), QDialog.Rejected)
+        mock.delete_mock()
+
+    def test_connect_community_success(self):
+        mock = nice_blockchain.get_mock()
+        time.sleep(2)
+        logging.debug(mock.pretend_url)
+        API.reverse_url = pretender_reversed(mock.pretend_url)
+        process_community = ProcessConfigureCommunity(self.application,
+                                                    self.account,
+                                                    None, self.password_asker)
 
         def close_dialog():
             if process_community.isVisible():
@@ -183,8 +270,10 @@ class ProcessAddCommunity(unittest.TestCase):
             self.assertEqual(process_community.spinbox_port.value(), 50000)
             QTest.mouseClick(process_community.button_connect, Qt.LeftButton)
             yield from asyncio.sleep(1)
+            self.assertNotEqual(mock.get_request(0), None)
             self.assertEqual(mock.get_request(0).method, 'GET')
             self.assertEqual(mock.get_request(0).url, '/network/peering')
+            self.assertNotEqual(mock.get_request(1), None)
             self.assertEqual(mock.get_request(1).method, 'GET')
             self.assertEqual(mock.get_request(1).url,
                              '/wot/certifiers-of/7Aqw6Efa9EzE7gtsc8SveLLrM7gm6NEGoywSv4FJx6pZ')
@@ -195,7 +284,7 @@ class ProcessAddCommunity(unittest.TestCase):
 
         self.lp.call_later(15, close_dialog)
         asyncio.async(exec_test())
-        self.lp.run_until_complete(open_dialog(process_community))
+        self.lp.run_until_complete(process_community.async_exec())
         mock.delete_mock()
 
 if __name__ == '__main__':
diff --git a/src/cutecoin/tests/gui/transfer/test_transfer.py b/src/cutecoin/tests/gui/transfer/test_transfer.py
index 55452ccbbfe274193e90aa4d4b533674edb2a44e..e3dc8327c58f44abf7d9ee3c99aea48dd71e4336 100644
--- a/src/cutecoin/tests/gui/transfer/test_transfer.py
+++ b/src/cutecoin/tests/gui/transfer/test_transfer.py
@@ -4,42 +4,43 @@ import asyncio
 import quamash
 import time
 import logging
-from ucoinpy.documents.peer import BMAEndpoint as PyBMAEndpoint
-from PyQt5.QtWidgets import QDialog, QDialogButtonBox
+from quamash import QApplication
+from PyQt5.QtWidgets import QDialog, QDialogButtonBox, QMessageBox
 from PyQt5.QtCore import QLocale, Qt
 from PyQt5.QtTest import QTest
+from ucoinpy.api.bma import API
+from cutecoin.tests.mocks.monkeypatch import pretender_reversed
 from cutecoin.tests.mocks.bma import nice_blockchain
-from cutecoin.tests.mocks.access_manager import MockNetworkAccessManager
 from cutecoin.core.registry.identities import IdentitiesRegistry
 from cutecoin.gui.transfer import TransferMoneyDialog
 from cutecoin.gui.password_asker import PasswordAskerDialog
 from cutecoin.core.app import Application
 from cutecoin.core import Account, Community, Wallet
 from cutecoin.core.net import Network, Node
-from cutecoin.core.net.endpoint import BMAEndpoint
+from ucoinpy.documents.peer import BMAEndpoint
 from cutecoin.core.net.api.bma.access import BmaAccess
-from cutecoin.tests import get_application
-from cutecoin.core.net.api import bma as qtbma
+from cutecoin.tests import get_application, unitttest_exception_handler
+from ucoinpy.api import bma
 
 
 class TestTransferDialog(unittest.TestCase):
     def setUp(self):
         self.qapplication = get_application()
-        self.network_manager = MockNetworkAccessManager()
         QLocale.setDefault(QLocale("en_GB"))
         self.lp = quamash.QEventLoop(self.qapplication)
         asyncio.set_event_loop(self.lp)
+        #self.lp.set_exception_handler(lambda lp, ctx : unitttest_exception_handler(self, lp, ctx))
         self.identities_registry = IdentitiesRegistry({})
 
-        self.application = Application(self.qapplication, self.lp, self.network_manager, self.identities_registry)
+        self.application = Application(self.qapplication, self.lp, self.identities_registry)
         self.application.preferences['notifications'] = False
 
-        self.endpoint = BMAEndpoint(PyBMAEndpoint("", "127.0.0.1", "", 50000))
-        self.node = Node(self.network_manager, "test_currency", [self.endpoint],
+        self.endpoint = BMAEndpoint("", "127.0.0.1", "", 50000)
+        self.node = Node("test_currency", [self.endpoint],
                          "", "HnFcSms8jzwngtVomTTnzudZx7SHUQY8sVE1y8yBmULk",
-                         qtbma.blockchain.Block.null_value, Node.ONLINE,
+                         None, Node.ONLINE,
                          time.time(), {}, "ucoin", "0.14.0", 0)
-        self.network = Network.create(self.network_manager, self.node)
+        self.network = Network.create(self.node)
         self.bma_access = BmaAccess.create(self.network)
         self.community = Community("test_currency", self.network, self.bma_access)
 
@@ -65,15 +66,18 @@ class TestTransferDialog(unittest.TestCase):
         mock = nice_blockchain.get_mock()
         time.sleep(2)
         logging.debug(mock.pretend_url)
-        self.network_manager.set_mock_path(mock.pretend_url)
+        API.reverse_url = pretender_reversed(mock.pretend_url)
         transfer_dialog = TransferMoneyDialog(self.application,
-                                                   self.account,
-                                                   self.password_asker)
+                                              self.account,
+                                              self.password_asker,
+                                              self.community,
+                                              None)
+        self.account.wallets[0].init_cache(self.application, self.community)
 
         @asyncio.coroutine
         def open_dialog(certification_dialog):
             result = yield from certification_dialog.async_exec()
-            self.assertEqual(result, QDialog.Rejected)
+            self.assertEqual(result, QDialog.Accepted)
 
         def close_dialog():
             if transfer_dialog.isVisible():
@@ -82,9 +86,16 @@ class TestTransferDialog(unittest.TestCase):
         @asyncio.coroutine
         def exec_test():
             yield from asyncio.sleep(1)
+            self.account.wallets[0].caches[self.community.currency].available_sources = yield from self.wallet.sources(self.community)
             QTest.mouseClick(transfer_dialog.radio_pubkey, Qt.LeftButton)
             QTest.keyClicks(transfer_dialog.edit_pubkey, "FADxcH5LmXGmGFgdixSes6nWnC4Vb4pRUBYT81zQRhjn")
-            QTest.mouseClick(transfer_dialog.button_box.button(QDialogButtonBox.Cancel), Qt.LeftButton)
+            transfer_dialog.spinbox_amount.setValue(10)
+            QTest.mouseClick(transfer_dialog.button_box.button(QDialogButtonBox.Ok), Qt.LeftButton)
+            yield from asyncio.sleep(1)
+            topWidgets = QApplication.topLevelWidgets()
+            for w in topWidgets:
+                if type(w) is QMessageBox:
+                    QTest.keyClick(w, Qt.Key_Enter)
 
         self.lp.call_later(15, close_dialog)
         asyncio.async(exec_test())
diff --git a/src/cutecoin/tests/gui/wot_tab/test_wot_tab.py b/src/cutecoin/tests/gui/wot_tab/test_wot_tab.py
index ce6584278c161b0e5e7e208d5a020142682961ee..af48ad831e2c33f6bcb17509deea8345276b1f39 100644
--- a/src/cutecoin/tests/gui/wot_tab/test_wot_tab.py
+++ b/src/cutecoin/tests/gui/wot_tab/test_wot_tab.py
@@ -4,42 +4,42 @@ import asyncio
 import quamash
 import logging
 import time
-from ucoinpy.documents.peer import BMAEndpoint as PyBMAEndpoint
+from ucoinpy.documents.peer import BMAEndpoint
 from PyQt5.QtWidgets import QDialog
 from PyQt5.QtCore import QLocale, Qt
 from PyQt5.QtTest import QTest
-from cutecoin.core.net.api import bma as qtbma
+from ucoinpy.api import bma
+from ucoinpy.api.bma import API
+from cutecoin.tests.mocks.monkeypatch import pretender_reversed
 from cutecoin.tests.mocks.bma import nice_blockchain
-from cutecoin.tests.mocks.access_manager import MockNetworkAccessManager
 from cutecoin.core.registry.identities import IdentitiesRegistry
 from cutecoin.gui.wot_tab import WotTabWidget
 from cutecoin.gui.password_asker import PasswordAskerDialog
 from cutecoin.core.app import Application
 from cutecoin.core import Account, Community, Wallet
 from cutecoin.core.net import Network, Node
-from cutecoin.core.net.endpoint import BMAEndpoint
 from cutecoin.core.net.api.bma.access import BmaAccess
-from cutecoin.tests import get_application
+from cutecoin.tests import get_application, unitttest_exception_handler
 
 
 class TestIdentitiesTable(unittest.TestCase):
     def setUp(self):
         self.qapplication = get_application()
-        self.network_manager = MockNetworkAccessManager()
         QLocale.setDefault(QLocale("en_GB"))
         self.lp = quamash.QEventLoop(self.qapplication)
         asyncio.set_event_loop(self.lp)
+        self.lp.set_exception_handler(lambda lp, ctx : unitttest_exception_handler(self, lp, ctx))
         self.identities_registry = IdentitiesRegistry()
 
-        self.application = Application(self.qapplication, self.lp, self.network_manager, self.identities_registry)
+        self.application = Application(self.qapplication, self.lp, self.identities_registry)
         self.application.preferences['notifications'] = False
 
-        self.endpoint = BMAEndpoint(PyBMAEndpoint("", "127.0.0.1", "", 50000))
-        self.node = Node(self.network_manager, "test_currency", [self.endpoint],
+        self.endpoint = BMAEndpoint("", "127.0.0.1", "", 50000)
+        self.node = Node("test_currency", [self.endpoint],
                          "", "HnFcSms8jzwngtVomTTnzudZx7SHUQY8sVE1y8yBmULk",
-                         qtbma.blockchain.Block.null_value, Node.ONLINE,
+                         None, Node.ONLINE,
                          time.time(), {}, "ucoin", "0.14.0", 0)
-        self.network = Network.create(self.network_manager, self.node)
+        self.network = Network.create(self.node)
         self.bma_access = BmaAccess.create(self.network)
         self.community = Community("test_currency", self.network, self.bma_access)
 
@@ -65,7 +65,7 @@ class TestIdentitiesTable(unittest.TestCase):
         mock = nice_blockchain.get_mock()
         time.sleep(2)
         logging.debug(mock.pretend_url)
-        self.network_manager.set_mock_path(mock.pretend_url)
+        API.reverse_url = pretender_reversed(mock.pretend_url)
         wot_tab = WotTabWidget(self.application)
         future = asyncio.Future()
 
diff --git a/src/cutecoin/tests/mocks/access_manager.py b/src/cutecoin/tests/mocks/access_manager.py
deleted file mode 100644
index 754909841f6dd3e102e5a06d75d0beead89310c3..0000000000000000000000000000000000000000
--- a/src/cutecoin/tests/mocks/access_manager.py
+++ /dev/null
@@ -1,27 +0,0 @@
-from PyQt5.QtNetwork import QNetworkAccessManager
-from PyQt5.QtCore import QUrl
-
-class MockNetworkAccessManager(QNetworkAccessManager):
-    def __init__(self):
-        super().__init__()
-        self.mock_path = ""
-
-    def set_mock_path(self, mock_url):
-        url = QUrl(mock_url)
-        self.mock_path = url.path()
-
-    def get(self, request):
-        url = request.url()
-        path = url.path()
-        path = self.mock_path + path
-        url.setPath(path)
-        request.setUrl(url)
-        return super().get(request)
-
-    def post(self, request, post_data):
-        url = request.url()
-        path = url.path()
-        path = self.mock_path + path
-        url.setPath(path)
-        request.setUrl(url)
-        return super().post(request, post_data)
\ No newline at end of file
diff --git a/src/cutecoin/tests/mocks/bma/corrupted.py b/src/cutecoin/tests/mocks/bma/corrupted.py
new file mode 100644
index 0000000000000000000000000000000000000000..3991a9aff47815e205e8727fc4ae35a9d9ee51bc
--- /dev/null
+++ b/src/cutecoin/tests/mocks/bma/corrupted.py
@@ -0,0 +1,34 @@
+import json
+import time
+from pretenders.client.http import HTTPMock
+from pretenders.common.constants import FOREVER
+
+bma_memberships_empty_array = {
+    "pubkey": "7Aqw6Efa9EzE7gtsc8SveLLrM7gm6NEGoywSv4FJx6pZ",
+    "uid": "john",
+    "sigDate": 123456789,
+    "memberships": [ ]
+}
+
+
+bma_null_data = {
+  "certifications": [
+    {
+      "written": {
+      },
+    },
+    {
+      "written": None,
+    }
+  ]
+}
+
+def get_mock():
+    mock = HTTPMock('127.0.0.1', 50000)
+
+    mock.when('GET /blockchain/memberships/7Aqw6Efa9EzE7gtsc8SveLLrM7gm6NEGoywSv4FJx6pZ')\
+        .reply(body=bytes(json.dumps(bma_memberships_empty_array), "utf-8"),
+                times=FOREVER,
+                headers={'Content-Type': 'application/json'})
+
+    return mock
diff --git a/src/cutecoin/tests/mocks/bma/nice_blockchain.py b/src/cutecoin/tests/mocks/bma/nice_blockchain.py
index 76a77edfcc009182df832f6fb04bfc32685b132e..f60b6716be3d00fff7896ba096d079f43090b976 100644
--- a/src/cutecoin/tests/mocks/bma/nice_blockchain.py
+++ b/src/cutecoin/tests/mocks/bma/nice_blockchain.py
@@ -1,74 +1,120 @@
 import json
+import time
 from pretenders.client.http import HTTPMock
 from pretenders.common.constants import FOREVER
 
 bma_peering = {
-  "version": 1,
-  "currency": "test_currency",
-  "endpoints": [
-    "BASIC_MERKLED_API localhost 127.0.0.1 50000"
-  ],
-  "status": "UP",
-  "block": "30152-00003E7F9234E7542FCF669B69B0F84FF79CCCD3",
-  "signature": "cXuqZuDfyHvxYAEUkPH1TQ1M+8YNDpj8kiHGYi3LIaMqEdVqwVc4yQYGivjxFMYyngRfxXkyvqBKZA6rKOulCA==",
-  "raw": "Version: 1\nType: Peer\nCurrency: meta_brouzouf\nPublicKey: HnFcSms8jzwngtVomTTnzudZx7SHUQY8sVE1y8yBmULk\nBlock: 30152-00003E7F9234E7542FCF669B69B0F84FF79CCCD3\nEndpoints:\nBASIC_MERKLED_API localhost 127.0.0.1 50000\n",
-  "pubkey": "HnFcSms8jzwngtVomTTnzudZx7SHUQY8sVE1y8yBmULk"
+    "version": 1,
+    "currency": "test_currency",
+    "endpoints": [
+        "BASIC_MERKLED_API localhost 127.0.0.1 50000"
+    ],
+    "status": "UP",
+    "block": "30152-00003E7F9234E7542FCF669B69B0F84FF79CCCD3",
+    "signature": "cXuqZuDfyHvxYAEUkPH1TQ1M+8YNDpj8kiHGYi3LIaMqEdVqwVc4yQYGivjxFMYyngRfxXkyvqBKZA6rKOulCA==",
+    "raw": "Version: 1\nType: Peer\nCurrency: meta_brouzouf\nPublicKey: HnFcSms8jzwngtVomTTnzudZx7SHUQY8sVE1y8yBmULk\nBlock: 30152-00003E7F9234E7542FCF669B69B0F84FF79CCCD3\nEndpoints:\nBASIC_MERKLED_API localhost 127.0.0.1 50000\n",
+    "pubkey": "HnFcSms8jzwngtVomTTnzudZx7SHUQY8sVE1y8yBmULk"
 }
 
 bma_lookup_john = {
-  "partial": False,
-  "results": [
-    {
-      "pubkey": "7Aqw6Efa9EzE7gtsc8SveLLrM7gm6NEGoywSv4FJx6pZ",
-      "uids": [
+    "partial": False,
+    "results": [
         {
-          "uid": "john",
-          "meta": {
-            "timestamp": 1441130831
-          },
-          "self": "ZrHK0cCqrxWReROK0ciiSb45+dRphJa68qFaSjdve8bBdnGAu7+DIu0d+u/fXrNRXuObihOKMBIawaIVPNHqDw==",
-          "others": []
+            "pubkey": "7Aqw6Efa9EzE7gtsc8SveLLrM7gm6NEGoywSv4FJx6pZ",
+            "uids": [
+                {
+                    "uid": "john",
+                    "meta": {
+                        "timestamp": 1441130831
+                    },
+                    "self": "ZrHK0cCqrxWReROK0ciiSb45+dRphJa68qFaSjdve8bBdnGAu7+DIu0d+u/fXrNRXuObihOKMBIawaIVPNHqDw==",
+                    "others": [
+                        {
+              "pubkey": "FADxcH5LmXGmGFgdixSes6nWnC4Vb4pRUBYT81zQRhjn",
+              "meta": {
+                "block_number": 38580
+              },
+              "uids": [
+                "doe"
+              ],
+              "isMember": True,
+              "wasMember": True,
+              "signature": "4ulycI2MtBu/8bZipy+OsXDCNm9EyUIdZ1HA7hbJ66phKRNvv70Oo2YOF/+VDRJb97z9TqWKgfIQ0NbXU15xDg=="
+            },
+                    ]
+                }
+            ],
+            "signed": []
         }
-      ],
-      "signed": []
-    }
-  ]
+    ]
+}
+
+bma_membership_john = {
+    "pubkey": "7Aqw6Efa9EzE7gtsc8SveLLrM7gm6NEGoywSv4FJx6pZ",
+    "uid": "inso",
+    "sigDate": 1441130831,
+    "memberships":
+        [
+            {
+
+                "version": "1",
+                "currency": "test_currency",
+                "membership": "IN",
+                "blockNumber": 0,
+                "blockHash": "DA39A3EE5E6B4B0D3255BFEF95601890AFD80709"
+            }
+        ]
 }
 
 bma_lookup_doe = {
-  "partial": False,
-  "results": [
-    {
-      "pubkey": "FADxcH5LmXGmGFgdixSes6nWnC4Vb4pRUBYT81zQRhjn",
-      "uids": [
+    "partial": False,
+    "results": [
         {
-          "uid": "doe",
-          "meta": {
-            "timestamp": 1441130831
-          },
-          "self": "cIkHPQQ5+xTb4cKWv85rcYcZT+E3GDtX8B2nCK9Vs12p2Yz4bVaZiMvBBwisAAy2WBOaqHS3ydpXGtADchOICw==",
-          "others": []
+            "pubkey": "FADxcH5LmXGmGFgdixSes6nWnC4Vb4pRUBYT81zQRhjn",
+            "uids": [
+                {
+                    "uid": "doe",
+                    "meta": {
+                        "timestamp": 1441130831
+                    },
+                    "self": "cIkHPQQ5+xTb4cKWv85rcYcZT+E3GDtX8B2nCK9Vs12p2Yz4bVaZiMvBBwisAAy2WBOaqHS3ydpXGtADchOICw==",
+                    "others": []
+                }
+            ],
+            "signed": []
         }
-      ],
-      "signed": []
-    }
-  ]
+    ]
 }
 
 bma_certifiers_of_john = {
-  "pubkey": "7Aqw6Efa9EzE7gtsc8SveLLrM7gm6NEGoywSv4FJx6pZ",
-  "uid": "john",
-  "isMember": True,
-  "certifications": [
-  ]
+    "pubkey": "7Aqw6Efa9EzE7gtsc8SveLLrM7gm6NEGoywSv4FJx6pZ",
+    "uid": "john",
+    "isMember": True,
+    "certifications": [
+        {
+          "pubkey": "FADxcH5LmXGmGFgdixSes6nWnC4Vb4pRUBYT81zQRhjn",
+          "uid": "doe",
+          "isMember": True,
+          "wasMember": True,
+          "cert_time": {
+            "block": 15,
+            "medianTime": 1447693329
+          },
+          "written": {
+            "number": 15,
+            "hash": "0000EC88BBBAA29D530D2B815DEE264DDC9F07F4"
+          },
+          "signature": "oliiPDhniZAGHrIFL66oHR+cqD4aTgXX+20VFLMfNHwdYPeik76hy334zxhoDC4cPODMb9df2nF/EDfCefrNBg=="
+        },
+    ]
 }
 
 bma_certified_by_john = {
-  "pubkey": "7Aqw6Efa9EzE7gtsc8SveLLrM7gm6NEGoywSv4FJx6pZ",
-  "uid": "john",
-  "isMember": True,
-  "certifications": [
-  ]
+    "pubkey": "7Aqw6Efa9EzE7gtsc8SveLLrM7gm6NEGoywSv4FJx6pZ",
+    "uid": "john",
+    "isMember": True,
+    "certifications": [
+    ]
 }
 
 bma_parameters = {
@@ -89,6 +135,57 @@ bma_parameters = {
     "percentRot": 0.67
 }
 
+bma_blockchain_0 = {
+    "version": 1,
+    "nonce": 10144,
+    "number": 0,
+    "powMin": 3,
+    "time": 1421838980,
+    "medianTime": 1421838980,
+    "membersCount": 4,
+    "monetaryMass": 0,
+    "currency": "test_currency",
+    "issuer": "FADxcH5LmXGmGFgdixSes6nWnC4Vb4pRUBYT81zQRhjn",
+    "signature": "+78w7251vvRdhoIJ6IWHEiEOLxNrmfQf45Y5sYvPdnAdXkVpO1unMV5YA/G5Vhphyz1dICrbeKCPM5qbFsoWAQ==",
+    "hash": "00063EB6E83F8717CEF1D25B3E2EE308374A14B1",
+    "parameters": "0.1:86400:100:604800:2629800:3:3:2629800:3:11:600:20:144:0.67",
+    "previousHash": None,
+    "previousIssuer": None,
+    "dividend": None,
+    "membersChanges": [],
+    "identities": [
+        "8Fi1VSTbjkXguwThF4v2ZxC5whK7pwG2vcGTkPUPjPGU:Ot3zIp/nsHT3zgJy+2YcXPL6vaM5WFsD+F8w3qnJoBRuBG6lv761zoaExp2iyUnm8fDAyKPpMxRK2kf437QSCw==:1421787800:inso",
+        "HnFcSms8jzwngtVomTTnzudZx7SHUQY8sVE1y8yBmULk:GZKLgaxJKL+GqxVLePMt8OVLJ6qTLrib5Mr/j2gjiNRY2k485YLB2OlzhBzZVnD3xLs0xi69JUfmLnM54j3aCA==:1421786393:cgeek",
+        "BMAVuMDcGhYAV4wA27DL1VXX2ZARZGJYaMwpf7DJFMYH:th576H89dfymkG7/sH+DAIzjlmIqNEW6zY3ONrGeAml+k3f1ver399kYnEgG5YCaKXnnVM7P0oJHah80BV3mDw==:1421790376:moul",
+        "37qBxM4hLV2jfyYo2bNzAjkeLngLr2r7G2HpdpKieVxw:XRmbTYFkPeGVEU2mJzzN4h1oVNDsZ4yyNZlDAfBm9CWhBsZ82QqX9GPHye2hBxxiu4Nz1BHgQiME6B4JcAC8BA==:1421787461:galuel"
+    ],
+    "joiners": [
+        "8Fi1VSTbjkXguwThF4v2ZxC5whK7pwG2vcGTkPUPjPGU:ccJm3F44eLMhQtnQY/7+14SWCDqVTL3Miw65hBVpV+YiUSUknIGhBNN0C0Cf+Pf0/pa1tjucW8Us3z5IklFSDg==:0:DA39A3EE5E6B4B0D3255BFEF95601890AFD80709:1421787800:inso",
+        "HnFcSms8jzwngtVomTTnzudZx7SHUQY8sVE1y8yBmULk:1lFIiaR0QX0jibr5zQpXVGzBvMGqcsTRlmHiwGz5HOAZT8PTdVUb5q6YGZ6qAUZjdMjPmhLaiMIpYc47wUnzBA==:0:DA39A3EE5E6B4B0D3255BFEF95601890AFD80709:1421786393:cgeek",
+        "BMAVuMDcGhYAV4wA27DL1VXX2ZARZGJYaMwpf7DJFMYH:ctyAhpTRrAAOhFJukWI8RBr//nqYYdQibVzjOfaCdcWLb3TNFKrNBBothNsq/YrYHr7gKrpoftucf/oxLF8zAg==:0:DA39A3EE5E6B4B0D3255BFEF95601890AFD80709:1421790376:moul",
+        "37qBxM4hLV2jfyYo2bNzAjkeLngLr2r7G2HpdpKieVxw:uoiGaC5b7kWqtqdPxwatPk9QajZHCNT9rf8/8ud9Rli24z/igcOf0Zr4A6RTAIKWUq9foW39VqJe+Y9R3rhACw==:0:DA39A3EE5E6B4B0D3255BFEF95601890AFD80709:1421787461:galuel"
+    ],
+    "actives": [],
+    "leavers": [],
+    "excluded": [],
+    "certifications": [
+        "37qBxM4hLV2jfyYo2bNzAjkeLngLr2r7G2HpdpKieVxw:8Fi1VSTbjkXguwThF4v2ZxC5whK7pwG2vcGTkPUPjPGU:0:3wmCVW8AbVxRFm2PuLXD9UTCIg93MhUblZJvlYrDldSV4xuA7mZCd8TV4vb/6Bkc0FMQgBdHtpXrQ7dpo20uBA==",
+        "HnFcSms8jzwngtVomTTnzudZx7SHUQY8sVE1y8yBmULk:8Fi1VSTbjkXguwThF4v2ZxC5whK7pwG2vcGTkPUPjPGU:0:7UMQsUjLvuiZKIzOH5rrZDdDi5rXUo69EuQulY1Zm42xpRx/Gt5CkoTcJ/Mu83oElQbcZZTz/lVJ6IS0jzMiCQ==",
+        "BMAVuMDcGhYAV4wA27DL1VXX2ZARZGJYaMwpf7DJFMYH:8Fi1VSTbjkXguwThF4v2ZxC5whK7pwG2vcGTkPUPjPGU:0:twWSY9etI82FLEHzhdqIoHsC9ehWCA7DCPiGxDLCWGPO4TG77hwtn3RcC68qoKHCib577JCp+fcKyp2vyI6FDA==",
+        "8Fi1VSTbjkXguwThF4v2ZxC5whK7pwG2vcGTkPUPjPGU:HnFcSms8jzwngtVomTTnzudZx7SHUQY8sVE1y8yBmULk:0:7K5MHkO8ibf5SchmPkRrmsg9owEZZ23uEMJJSQYG7L3PUmAKmmV/0VSjivxXH8gJGQBGsXQoK79x1jsYnj2nAg==",
+        "BMAVuMDcGhYAV4wA27DL1VXX2ZARZGJYaMwpf7DJFMYH:HnFcSms8jzwngtVomTTnzudZx7SHUQY8sVE1y8yBmULk:0:Jua4FcEJFptSE5OoG1/Mgzx4e9jgGnYu7t8g1sqqPujI9hRhLFNXbQXedPS1q1OD5vWivA045gKOq/gnj8opDg==",
+        "37qBxM4hLV2jfyYo2bNzAjkeLngLr2r7G2HpdpKieVxw:HnFcSms8jzwngtVomTTnzudZx7SHUQY8sVE1y8yBmULk:0:R/DV4/wYjvBG09QSOGtnxd3bfPFhVjEE5Uy3BsBMVUvjLsgxjf8NgLhYVozcHTRWS43ArxlXKfS5m3+KIPhhAQ==",
+        "8Fi1VSTbjkXguwThF4v2ZxC5whK7pwG2vcGTkPUPjPGU:BMAVuMDcGhYAV4wA27DL1VXX2ZARZGJYaMwpf7DJFMYH:0:4hP+ahJK021akL4UxB6c5QLaGJXa9eapd3nfdFQe+Xy87f/XLhj8BCa22XbbOlyGdaZRT3AYzbCL2UD5tI8mCw==",
+        "HnFcSms8jzwngtVomTTnzudZx7SHUQY8sVE1y8yBmULk:BMAVuMDcGhYAV4wA27DL1VXX2ZARZGJYaMwpf7DJFMYH:0:sZTQJr0d/xQnxrIIdSePUJpSTOa8v6IYGXMF2fVDZxQU8vwfzPm2dUKTaF0nU6E9wOYszzkBHaXL85nir+WtCQ==",
+        "37qBxM4hLV2jfyYo2bNzAjkeLngLr2r7G2HpdpKieVxw:BMAVuMDcGhYAV4wA27DL1VXX2ZARZGJYaMwpf7DJFMYH:0:hDuBkoFhWhR/FgOU1+9SbQGBMIr47xqUzw1ZMERaPQo4aWm0WFbZurG4lvuJZzTyG6RF/gSw4VPvYZFPxWmADg==",
+        "8Fi1VSTbjkXguwThF4v2ZxC5whK7pwG2vcGTkPUPjPGU:37qBxM4hLV2jfyYo2bNzAjkeLngLr2r7G2HpdpKieVxw:0:79ZVrBehElVZh82fJdR18IJx06GkEVZTbwdHH4zb0S6VaGwdtLh1rvomm4ukBvUc8r/suTweG/SScsJairXNAg==",
+        "HnFcSms8jzwngtVomTTnzudZx7SHUQY8sVE1y8yBmULk:37qBxM4hLV2jfyYo2bNzAjkeLngLr2r7G2HpdpKieVxw:0:e/ai9E4G5CFB9Qi329e0ffYpZMgxj8mM4rviqIr2+UESA0UG86OuAAyHO11hYeyolZRiU8I7WdtNE98B1uZuBg==",
+        "BMAVuMDcGhYAV4wA27DL1VXX2ZARZGJYaMwpf7DJFMYH:37qBxM4hLV2jfyYo2bNzAjkeLngLr2r7G2HpdpKieVxw:0:q4PCneYkcPH8AHEqEvqTtYQWslhlYO2B87aReuOl1uPczn5Q3VkZFAsU48ZTYryeyWp2nxdQojdFYhlAUNchAw=="
+    ],
+    "transactions": [],
+    "raw": "Version: 1\nType: Block\nCurrency: test_currency\nNonce: 10144\nNumber: 0\nPoWMin: 3\nTime: 1421838980\nMedianTime: 1421838980\nIssuer: HnFcSms8jzwngtVomTTnzudZx7SHUQY8sVE1y8yBmULk\nParameters: 0.1:86400:100:604800:2629800:3:3:2629800:3:11:600:20:144:0.67\nMembersCount: 4\nIdentities:\n8Fi1VSTbjkXguwThF4v2ZxC5whK7pwG2vcGTkPUPjPGU:Ot3zIp/nsHT3zgJy+2YcXPL6vaM5WFsD+F8w3qnJoBRuBG6lv761zoaExp2iyUnm8fDAyKPpMxRK2kf437QSCw==:1421787800:inso\nHnFcSms8jzwngtVomTTnzudZx7SHUQY8sVE1y8yBmULk:GZKLgaxJKL+GqxVLePMt8OVLJ6qTLrib5Mr/j2gjiNRY2k485YLB2OlzhBzZVnD3xLs0xi69JUfmLnM54j3aCA==:1421786393:cgeek\nBMAVuMDcGhYAV4wA27DL1VXX2ZARZGJYaMwpf7DJFMYH:th576H89dfymkG7/sH+DAIzjlmIqNEW6zY3ONrGeAml+k3f1ver399kYnEgG5YCaKXnnVM7P0oJHah80BV3mDw==:1421790376:moul\n37qBxM4hLV2jfyYo2bNzAjkeLngLr2r7G2HpdpKieVxw:XRmbTYFkPeGVEU2mJzzN4h1oVNDsZ4yyNZlDAfBm9CWhBsZ82QqX9GPHye2hBxxiu4Nz1BHgQiME6B4JcAC8BA==:1421787461:galuel\nJoiners:\n8Fi1VSTbjkXguwThF4v2ZxC5whK7pwG2vcGTkPUPjPGU:ccJm3F44eLMhQtnQY/7+14SWCDqVTL3Miw65hBVpV+YiUSUknIGhBNN0C0Cf+Pf0/pa1tjucW8Us3z5IklFSDg==:0:DA39A3EE5E6B4B0D3255BFEF95601890AFD80709:1421787800:inso\nHnFcSms8jzwngtVomTTnzudZx7SHUQY8sVE1y8yBmULk:1lFIiaR0QX0jibr5zQpXVGzBvMGqcsTRlmHiwGz5HOAZT8PTdVUb5q6YGZ6qAUZjdMjPmhLaiMIpYc47wUnzBA==:0:DA39A3EE5E6B4B0D3255BFEF95601890AFD80709:1421786393:cgeek\nBMAVuMDcGhYAV4wA27DL1VXX2ZARZGJYaMwpf7DJFMYH:ctyAhpTRrAAOhFJukWI8RBr//nqYYdQibVzjOfaCdcWLb3TNFKrNBBothNsq/YrYHr7gKrpoftucf/oxLF8zAg==:0:DA39A3EE5E6B4B0D3255BFEF95601890AFD80709:1421790376:moul\n37qBxM4hLV2jfyYo2bNzAjkeLngLr2r7G2HpdpKieVxw:uoiGaC5b7kWqtqdPxwatPk9QajZHCNT9rf8/8ud9Rli24z/igcOf0Zr4A6RTAIKWUq9foW39VqJe+Y9R3rhACw==:0:DA39A3EE5E6B4B0D3255BFEF95601890AFD80709:1421787461:galuel\nActives:\nLeavers:\nExcluded:\nCertifications:\n37qBxM4hLV2jfyYo2bNzAjkeLngLr2r7G2HpdpKieVxw:8Fi1VSTbjkXguwThF4v2ZxC5whK7pwG2vcGTkPUPjPGU:0:3wmCVW8AbVxRFm2PuLXD9UTCIg93MhUblZJvlYrDldSV4xuA7mZCd8TV4vb/6Bkc0FMQgBdHtpXrQ7dpo20uBA==\nHnFcSms8jzwngtVomTTnzudZx7SHUQY8sVE1y8yBmULk:8Fi1VSTbjkXguwThF4v2ZxC5whK7pwG2vcGTkPUPjPGU:0:7UMQsUjLvuiZKIzOH5rrZDdDi5rXUo69EuQulY1Zm42xpRx/Gt5CkoTcJ/Mu83oElQbcZZTz/lVJ6IS0jzMiCQ==\nBMAVuMDcGhYAV4wA27DL1VXX2ZARZGJYaMwpf7DJFMYH:8Fi1VSTbjkXguwThF4v2ZxC5whK7pwG2vcGTkPUPjPGU:0:twWSY9etI82FLEHzhdqIoHsC9ehWCA7DCPiGxDLCWGPO4TG77hwtn3RcC68qoKHCib577JCp+fcKyp2vyI6FDA==\n8Fi1VSTbjkXguwThF4v2ZxC5whK7pwG2vcGTkPUPjPGU:HnFcSms8jzwngtVomTTnzudZx7SHUQY8sVE1y8yBmULk:0:7K5MHkO8ibf5SchmPkRrmsg9owEZZ23uEMJJSQYG7L3PUmAKmmV/0VSjivxXH8gJGQBGsXQoK79x1jsYnj2nAg==\nBMAVuMDcGhYAV4wA27DL1VXX2ZARZGJYaMwpf7DJFMYH:HnFcSms8jzwngtVomTTnzudZx7SHUQY8sVE1y8yBmULk:0:Jua4FcEJFptSE5OoG1/Mgzx4e9jgGnYu7t8g1sqqPujI9hRhLFNXbQXedPS1q1OD5vWivA045gKOq/gnj8opDg==\n37qBxM4hLV2jfyYo2bNzAjkeLngLr2r7G2HpdpKieVxw:HnFcSms8jzwngtVomTTnzudZx7SHUQY8sVE1y8yBmULk:0:R/DV4/wYjvBG09QSOGtnxd3bfPFhVjEE5Uy3BsBMVUvjLsgxjf8NgLhYVozcHTRWS43ArxlXKfS5m3+KIPhhAQ==\n8Fi1VSTbjkXguwThF4v2ZxC5whK7pwG2vcGTkPUPjPGU:BMAVuMDcGhYAV4wA27DL1VXX2ZARZGJYaMwpf7DJFMYH:0:4hP+ahJK021akL4UxB6c5QLaGJXa9eapd3nfdFQe+Xy87f/XLhj8BCa22XbbOlyGdaZRT3AYzbCL2UD5tI8mCw==\nHnFcSms8jzwngtVomTTnzudZx7SHUQY8sVE1y8yBmULk:BMAVuMDcGhYAV4wA27DL1VXX2ZARZGJYaMwpf7DJFMYH:0:sZTQJr0d/xQnxrIIdSePUJpSTOa8v6IYGXMF2fVDZxQU8vwfzPm2dUKTaF0nU6E9wOYszzkBHaXL85nir+WtCQ==\n37qBxM4hLV2jfyYo2bNzAjkeLngLr2r7G2HpdpKieVxw:BMAVuMDcGhYAV4wA27DL1VXX2ZARZGJYaMwpf7DJFMYH:0:hDuBkoFhWhR/FgOU1+9SbQGBMIr47xqUzw1ZMERaPQo4aWm0WFbZurG4lvuJZzTyG6RF/gSw4VPvYZFPxWmADg==\n8Fi1VSTbjkXguwThF4v2ZxC5whK7pwG2vcGTkPUPjPGU:37qBxM4hLV2jfyYo2bNzAjkeLngLr2r7G2HpdpKieVxw:0:79ZVrBehElVZh82fJdR18IJx06GkEVZTbwdHH4zb0S6VaGwdtLh1rvomm4ukBvUc8r/suTweG/SScsJairXNAg==\nHnFcSms8jzwngtVomTTnzudZx7SHUQY8sVE1y8yBmULk:37qBxM4hLV2jfyYo2bNzAjkeLngLr2r7G2HpdpKieVxw:0:e/ai9E4G5CFB9Qi329e0ffYpZMgxj8mM4rviqIr2+UESA0UG86OuAAyHO11hYeyolZRiU8I7WdtNE98B1uZuBg==\nBMAVuMDcGhYAV4wA27DL1VXX2ZARZGJYaMwpf7DJFMYH:37qBxM4hLV2jfyYo2bNzAjkeLngLr2r7G2HpdpKieVxw:0:q4PCneYkcPH8AHEqEvqTtYQWslhlYO2B87aReuOl1uPczn5Q3VkZFAsU48ZTYryeyWp2nxdQojdFYhlAUNchAw==\nTransactions:\n"
+}
+
 bma_blockchain_current = {
     "version": 1,
     "nonce": 6909,
@@ -106,14 +203,14 @@ bma_blockchain_current = {
     "previousHash": "00003BDA844D77EEE7CF32A6C3C87F2ACBFCFCBB",
     "previousIssuer": "HnFcSms8jzwngtVomTTnzudZx7SHUQY8sVE1y8yBmULk",
     "dividend": None,
-    "membersChanges": [ ],
-    "identities": [ ],
-    "joiners": [ ],
-    "actives": [ ],
-    "leavers": [ ],
-    "excluded": [ ],
-    "certifications": [ ],
-    "transactions": [ ],
+    "membersChanges": [],
+    "identities": [],
+    "joiners": [],
+    "actives": [],
+    "leavers": [],
+    "excluded": [],
+    "certifications": [],
+    "transactions": [],
     "raw": "Version: 1\nType: Block\nCurrency: meta_brouzouf\nNonce: 6909\nNumber: 30898\nPoWMin: 4\nTime: 1441618206\nMedianTime: 1441614759\nIssuer: EPs9qX7HmCDy6ptUoMLpTzbh9toHu4au488pBTU9DN6y\nPreviousHash: 00003BDA844D77EEE7CF32A6C3C87F2ACBFCFCBB\nPreviousIssuer: HnFcSms8jzwngtVomTTnzudZx7SHUQY8sVE1y8yBmULk\nMembersCount: 20\nIdentities:\nJoiners:\nActives:\nLeavers:\nExcluded:\nCertifications:\nTransactions:\n"
 }
 
@@ -122,227 +219,257 @@ bma_txhistory_john = {
     "currency": "test_currency",
     "pubkey": "7Aqw6Efa9EzE7gtsc8SveLLrM7gm6NEGoywSv4FJx6pZ",
     "history":
-    {
-        "sent":
-    [
-    {
-        "version": 1,
-        "issuers":
-        [
-            "7Aqw6Efa9EzE7gtsc8SveLLrM7gm6NEGoywSv4FJx6pZ"
-        ],
-        "inputs":
-        [
-            "0:D:1:000A8362AE0C1B8045569CE07735DE4C18E81586:8"
-        ],
-        "outputs":
-        [
-            "7Aqw6Efa9EzE7gtsc8SveLLrM7gm6NEGoywSv4FJx6pZ:2",
-            "FADxcH5LmXGmGFgdixSes6nWnC4Vb4pRUBYT81zQRhjn:6"
-        ],
-        "comment": "",
-        "signatures":
-        [
-            "1Mn8q3K7N+R4GZEpAUm+XSyty1Uu+BuOy5t7BIRqgZcKqiaxfhAUfDBOcuk2i4TJy1oA5Rntby8hDN+cUCpvDg=="
-        ],
-        "hash": "5FB3CB80A982E2BDFBB3EA94673A74763F58CB2A",
-        "block_number": 2,
-        "time": 1421932545
-    },
-],
-"received":
-    [
         {
-            "version": 1,
-            "issuers":
-            [
-                "FADxcH5LmXGmGFgdixSes6nWnC4Vb4pRUBYT81zQRhjn"
-            ],
-            "inputs":
-            [
-                "0:D:1:000A8362AE0C1B8045569CE07735DE4C18E81586:8"
-            ],
-            "outputs":
-            [
-                "FADxcH5LmXGmGFgdixSes6nWnC4Vb4pRUBYT81zQRhjn:2",
-                "7Aqw6Efa9EzE7gtsc8SveLLrM7gm6NEGoywSv4FJx6pZ:20"
-            ],
-            "comment": "",
-            "signatures":
-            [
-                "1Mn8q3K7N+R4GZEpAUm+XSyty1Uu+BuOy5t7BIRqgZcKqiaxfhAUfDBOcuk2i4TJy1oA5Rntby8hDN+cUCpvDg=="
-            ],
-            "hash": "5FB3CB80A982E2BDFBB3EA94673A74763F58CB2A",
-            "block_number": 2,
-            "time": 1421932545
-        },
-        {
-            "version": 1,
-            "issuers":
-            [
-                "FADxcH5LmXGmGFgdixSes6nWnC4Vb4pRUBYT81zQRhjn"
-            ],
-            "inputs":
-            [
-                "0:D:1:000A8362AE0C1B8045569CE07735DE4C18E81586:8"
-            ],
-            "outputs":
-            [
-                "FADxcH5LmXGmGFgdixSes6nWnC4Vb4pRUBYT81zQRhjn:5",
-                "7Aqw6Efa9EzE7gtsc8SveLLrM7gm6NEGoywSv4FJx6pZ:40"
-            ],
-            "comment": "",
-            "signatures":
-            [
-                "1Mn8q3K7N+R4GZEpAUm+XSyty1Uu+BuOy5t7BIRqgZcKqiaxfhAUfDBOcuk2i4TJy1oA5Rntby8hDN+cUCpvDg=="
-            ],
-            "hash": "5FB3CB80A982E2BDFBB3EA94673A74763F58CB2A",
-            "block_number": 12,
-            "time": 1421932454
+            "sent":
+                [
+                    {
+                        "version": 1,
+                        "issuers":
+                            [
+                                "7Aqw6Efa9EzE7gtsc8SveLLrM7gm6NEGoywSv4FJx6pZ"
+                            ],
+                        "inputs":
+                            [
+                                "0:D:1:000A8362AE0C1B8045569CE07735DE4C18E81586:8"
+                            ],
+                        "outputs":
+                            [
+                                "7Aqw6Efa9EzE7gtsc8SveLLrM7gm6NEGoywSv4FJx6pZ:2",
+                                "FADxcH5LmXGmGFgdixSes6nWnC4Vb4pRUBYT81zQRhjn:6"
+                            ],
+                        "comment": "",
+                        "signatures":
+                            [
+                                "1Mn8q3K7N+R4GZEpAUm+XSyty1Uu+BuOy5t7BIRqgZcKqiaxfhAUfDBOcuk2i4TJy1oA5Rntby8hDN+cUCpvDg=="
+                            ],
+                        "hash": "5FB3CB80A982E2BDFBB3EA94673A74763F58CB2A",
+                        "block_number": 2,
+                        "time": 1421932545
+                    },
+                ],
+            "received":
+                [
+                    {
+                        "version": 1,
+                        "issuers":
+                            [
+                                "FADxcH5LmXGmGFgdixSes6nWnC4Vb4pRUBYT81zQRhjn"
+                            ],
+                        "inputs":
+                            [
+                                "0:D:1:000A8362AE0C1B8045569CE07735DE4C18E81586:8"
+                            ],
+                        "outputs":
+                            [
+                                "FADxcH5LmXGmGFgdixSes6nWnC4Vb4pRUBYT81zQRhjn:2",
+                                "7Aqw6Efa9EzE7gtsc8SveLLrM7gm6NEGoywSv4FJx6pZ:20"
+                            ],
+                        "comment": "",
+                        "signatures":
+                            [
+                                "1Mn8q3K7N+R4GZEpAUm+XSyty1Uu+BuOy5t7BIRqgZcKqiaxfhAUfDBOcuk2i4TJy1oA5Rntby8hDN+cUCpvDg=="
+                            ],
+                        "hash": "5FB3CB80A982E2BDFBB3EA94673A74763F58CB2A",
+                        "block_number": 2,
+                        "time": 1421932545
+                    },
+                    {
+                        "version": 1,
+                        "issuers":
+                            [
+                                "FADxcH5LmXGmGFgdixSes6nWnC4Vb4pRUBYT81zQRhjn"
+                            ],
+                        "inputs":
+                            [
+                                "0:D:1:000A8362AE0C1B8045569CE07735DE4C18E81586:8"
+                            ],
+                        "outputs":
+                            [
+                                "FADxcH5LmXGmGFgdixSes6nWnC4Vb4pRUBYT81zQRhjn:5",
+                                "7Aqw6Efa9EzE7gtsc8SveLLrM7gm6NEGoywSv4FJx6pZ:40"
+                            ],
+                        "comment": "",
+                        "signatures":
+                            [
+                                "1Mn8q3K7N+R4GZEpAUm+XSyty1Uu+BuOy5t7BIRqgZcKqiaxfhAUfDBOcuk2i4TJy1oA5Rntby8hDN+cUCpvDg=="
+                            ],
+                        "hash": "5FB3CB80A982E2BDFBB3EA94673A74763F58CB2A",
+                        "block_number": 12,
+                        "time": 1421932454
+                    }
+                ],
+            "sending": [],
+            "receiving": []
         }
-        ],
-        "sending": [ ],
-        "receiving": [ ]
-    }
 }
 
 bma_udhistory_john = {
     "currency": "test_currency",
     "pubkey": "7Aqw6Efa9EzE7gtsc8SveLLrM7gm6NEGoywSv4FJx6pZ",
     "history":
-{
-    "history":
-    [
-    {
-        "block_number": 2,
-        "consumed": False,
-        "time": 1435749971,
-        "amount": 5
-    },
-    {
-
-        "block_number": 10,
-        "consumed": False,
-        "time": 1435836032,
-        "amount": 10
-
-    }
-    ]
-}}
+        {
+            "history":
+                [
+                    {
+                        "block_number": 2,
+                        "consumed": False,
+                        "time": 1435749971,
+                        "amount": 5
+                    },
+                    {
+
+                        "block_number": 10,
+                        "consumed": False,
+                        "time": 1435836032,
+                        "amount": 10
+
+                    }
+                ]
+        }}
 
 bma_txsources_john = {
     "currency": "test_currency",
     "pubkey": "7Aqw6Efa9EzE7gtsc8SveLLrM7gm6NEGoywSv4FJx6pZ",
     "sources":
-[
-{
-    "pubkey": "7Aqw6Efa9EzE7gtsc8SveLLrM7gm6NEGoywSv4FJx6pZ",
-    "type": "D",
-    "number": 2,
-    "fingerprint": "4A317E3D676E9800E1E92AA2A7255BCEEFF31185",
-    "amount": 7
-},
-    {
-    "pubkey": "7Aqw6Efa9EzE7gtsc8SveLLrM7gm6NEGoywSv4FJx6pZ",
-    "type": "D",
-    "number": 4,
-    "fingerprint": "4A317E3D676E9800E1E92AA2A7255BCEEFF31185",
-    "amount": 9
+        [
+            {
+                "pubkey": "7Aqw6Efa9EzE7gtsc8SveLLrM7gm6NEGoywSv4FJx6pZ",
+                "type": "D",
+                "number": 2,
+                "fingerprint": "4A317E3D676E9800E1E92AA2A7255BCEEFF31185",
+                "amount": 7
+            },
+            {
+                "pubkey": "7Aqw6Efa9EzE7gtsc8SveLLrM7gm6NEGoywSv4FJx6pZ",
+                "type": "D",
+                "number": 4,
+                "fingerprint": "4A317E3D676E9800E1E92AA2A7255BCEEFF31185",
+                "amount": 9
+            }
+        ]}
+
+bma_with_ud = {
+    "result":
+        {
+            "blocks": []
+        }
 }
-]}
 
 
 def get_mock():
     mock = HTTPMock('127.0.0.1', 50000)
 
-    mock.when('GET /network/peering')\
+    mock.when('GET /network/peering') \
         .reply(body=bytes(json.dumps(bma_peering), "utf-8"),
-                times=FOREVER,
-                headers={'Content-Type': 'application/json'})
-
-    mock.when('GET /blockchain/parameters')\
-            .reply(body=bytes(json.dumps(bma_parameters), "utf-8"),
-                status=200,
-                times=FOREVER,
-                headers={'Content-Type': 'application/json'})
-
-    mock.when('GET /blockchain/current')\
-            .reply(body=bytes(json.dumps(bma_blockchain_current), "utf-8"),
-                status=200,
-                times=FOREVER,
-                headers={'Content-Type': 'application/json'})
-
-    mock.when('GET /blockchain/block/15')\
-            .reply(body=bytes(json.dumps(bma_blockchain_current), "utf-8"),
-                status=200,
-                times=FOREVER,
-                headers={'Content-Type': 'application/json'})
-
-    mock.when('GET /tx/history/7Aqw6Efa9EzE7gtsc8SveLLrM7gm6NEGoywSv4FJx6pZ/blocks/0/99')\
-            .reply(body=bytes(json.dumps(bma_txhistory_john), "utf-8"),
-                status=200,
-                times=FOREVER,
-                headers={'Content-Type': 'application/json'})
-
-    mock.when('GET /tx/sources/7Aqw6Efa9EzE7gtsc8SveLLrM7gm6NEGoywSv4FJx6pZ')\
-            .reply(body=bytes(json.dumps(bma_txsources_john), "utf-8"),
-                status=200,
-                times=FOREVER,
-                headers={'Content-Type': 'application/json'})
-
-
-    mock.when('GET /ud/history/7Aqw6Efa9EzE7gtsc8SveLLrM7gm6NEGoywSv4FJx6pZ')\
-            .reply(body=bytes(json.dumps(bma_udhistory_john), "utf-8"),
-                status=200,
-                times=FOREVER,
-                headers={'Content-Type': 'application/json'})
-
-    mock.when('GET /wot/certifiers-of/7Aqw6Efa9EzE7gtsc8SveLLrM7gm6NEGoywSv4FJx6pZ')\
-            .reply(body=bytes(json.dumps(bma_certifiers_of_john), "utf-8"),
-                status=200,
-                times=FOREVER,
-                headers={'Content-Type': 'application/json'})
-
-    mock.when('GET /wot/certified-by/7Aqw6Efa9EzE7gtsc8SveLLrM7gm6NEGoywSv4FJx6pZ')\
-            .reply(body=bytes(json.dumps(bma_certified_by_john), "utf-8"),
-                status=200,
-                times=FOREVER,
-                headers={'Content-Type': 'application/json'})
-
-    mock.when('GET /wot/lookup/john')\
-            .reply(body=bytes(json.dumps(bma_lookup_john), "utf-8"),
-                status=200,
-                times=FOREVER,
-                headers={'Content-Type': 'application/json'})
-
-    mock.when('GET /wot/lookup/7Aqw6Efa9EzE7gtsc8SveLLrM7gm6NEGoywSv4FJx6pZ')\
-            .reply(body=bytes(json.dumps(bma_lookup_john), "utf-8"),
-                status=200,
-                times=FOREVER,
-                headers={'Content-Type': 'application/json'})
-
-    mock.when('GET /wot/lookup/doe')\
-            .reply(body=bytes(json.dumps(bma_lookup_doe), "utf-8"),
-                status=200,
-                times=1,
-                headers={'Content-Type': 'application/json'})
-
-    mock.when('GET /wot/lookup/FADxcH5LmXGmGFgdixSes6nWnC4Vb4pRUBYT81zQRhjn')\
-            .reply(body=bytes(json.dumps(bma_lookup_doe), "utf-8"),
-                status=200,
-                times=FOREVER,
-                headers={'Content-Type': 'application/json'})
-
-    mock.when('GET /wot/certifiers-of/FADxcH5LmXGmGFgdixSes6nWnC4Vb4pRUBYT81zQRhjn')\
-            .reply(body=b"No member matching this pubkey or uid",
-                status=404,
-                times=FOREVER,
-                headers={'Content-Type': 'application/json'})
-
-    mock.when('GET /blockchain/memberships/FADxcH5LmXGmGFgdixSes6nWnC4Vb4pRUBYT81zQRhjn')\
-            .reply(body=b"No member matching this pubkey or uid",
-                status=404,
-                times=FOREVER,
-                headers={'Content-Type': 'application/json'})
+               times=FOREVER,
+               headers={'Content-Type': 'application/json'})
+
+    mock.when('GET /blockchain/parameters') \
+        .reply(body=bytes(json.dumps(bma_parameters), "utf-8"),
+               status=200,
+               times=FOREVER,
+               headers={'Content-Type': 'application/json'})
+
+    mock.when('GET /blockchain/with/[UD|ud]') \
+        .reply(body=bytes(json.dumps(bma_with_ud), "utf-8"),
+               status=200,
+               times=FOREVER,
+               headers={'Content-Type': 'application/json'})
+
+    mock.when('GET /blockchain/current') \
+        .reply(body=bytes(json.dumps(bma_blockchain_current), "utf-8"),
+               status=200,
+               times=FOREVER,
+               headers={'Content-Type': 'application/json'})
+
+    mock.when('GET /blockchain/block/0') \
+        .reply(body=bytes(json.dumps(bma_blockchain_0), "utf-8"),
+               status=200,
+               times=FOREVER,
+               headers={'Content-Type': 'application/json'})
+
+    mock.when('GET /blockchain/block/15') \
+        .reply(body=bytes(json.dumps(bma_blockchain_current), "utf-8"),
+               status=200,
+               times=FOREVER,
+               headers={'Content-Type': 'application/json'})
+
+    mock.when('GET /tx/history/7Aqw6Efa9EzE7gtsc8SveLLrM7gm6NEGoywSv4FJx6pZ/blocks/0/99') \
+        .reply(body=bytes(json.dumps(bma_txhistory_john), "utf-8"),
+               status=200,
+               times=FOREVER,
+               headers={'Content-Type': 'application/json'})
+
+    mock.when('GET /tx/sources/7Aqw6Efa9EzE7gtsc8SveLLrM7gm6NEGoywSv4FJx6pZ') \
+        .reply(body=bytes(json.dumps(bma_txsources_john), "utf-8"),
+               status=200,
+               times=FOREVER,
+               headers={'Content-Type': 'application/json'})
+
+    mock.when('GET /ud/history/7Aqw6Efa9EzE7gtsc8SveLLrM7gm6NEGoywSv4FJx6pZ') \
+        .reply(body=bytes(json.dumps(bma_udhistory_john), "utf-8"),
+               status=200,
+               times=FOREVER,
+               headers={'Content-Type': 'application/json'})
+
+    mock.when('GET /wot/certifiers-of/7Aqw6Efa9EzE7gtsc8SveLLrM7gm6NEGoywSv4FJx6pZ') \
+        .reply(body=bytes(json.dumps(bma_certifiers_of_john), "utf-8"),
+               status=200,
+               times=FOREVER,
+               headers={'Content-Type': 'application/json'})
+
+    mock.when('GET /wot/certified-by/7Aqw6Efa9EzE7gtsc8SveLLrM7gm6NEGoywSv4FJx6pZ') \
+        .reply(body=bytes(json.dumps(bma_certified_by_john), "utf-8"),
+               status=200,
+               times=FOREVER,
+               headers={'Content-Type': 'application/json'})
+
+    mock.when('GET /wot/lookup/john') \
+        .reply(body=bytes(json.dumps(bma_lookup_john), "utf-8"),
+               status=200,
+               times=FOREVER,
+               headers={'Content-Type': 'application/json'})
+
+    mock.when('GET /wot/lookup/7Aqw6Efa9EzE7gtsc8SveLLrM7gm6NEGoywSv4FJx6pZ') \
+        .reply(body=bytes(json.dumps(bma_lookup_john), "utf-8"),
+               status=200,
+               times=FOREVER,
+               headers={'Content-Type': 'application/json'})
+
+    mock.when('GET /wot/lookup/doe') \
+        .reply(body=bytes(json.dumps(bma_lookup_doe), "utf-8"),
+               status=200,
+               times=1,
+               headers={'Content-Type': 'application/json'})
+
+    mock.when('GET /wot/lookup/FADxcH5LmXGmGFgdixSes6nWnC4Vb4pRUBYT81zQRhjn') \
+        .reply(body=bytes(json.dumps(bma_lookup_doe), "utf-8"),
+               status=200,
+               times=FOREVER,
+               headers={'Content-Type': 'application/json'})
+
+    mock.when('GET /blockchain/memberships/7Aqw6Efa9EzE7gtsc8SveLLrM7gm6NEGoywSv4FJx6pZ') \
+        .reply(body=bytes(json.dumps(bma_membership_john), "utf-8"),
+               status=200,
+               times=FOREVER,
+               headers={'Content-Type': 'application/json'})
+
+    mock.when('GET /wot/certifiers-of/FADxcH5LmXGmGFgdixSes6nWnC4Vb4pRUBYT81zQRhjn') \
+        .reply(body=b"No member matching this pubkey or uid",
+               status=404,
+               times=FOREVER,
+               headers={'Content-Type': 'application/json'})
+
+    mock.when('GET /blockchain/memberships/FADxcH5LmXGmGFgdixSes6nWnC4Vb4pRUBYT81zQRhjn') \
+        .reply(body=b"No member matching this pubkey or uid",
+               status=404,
+               times=FOREVER,
+               headers={'Content-Type': 'application/json'})
+
+    mock.when('POST /tx/process') \
+        .reply(body=b"",
+               status=200,
+               times=FOREVER,
+               headers={'Content-Type': 'application/json'})
 
     return mock
diff --git a/src/cutecoin/tests/mocks/monkeypatch.py b/src/cutecoin/tests/mocks/monkeypatch.py
new file mode 100644
index 0000000000000000000000000000000000000000..7df5878d5afe777a1b88e2924eb8a5508d984ca3
--- /dev/null
+++ b/src/cutecoin/tests/mocks/monkeypatch.py
@@ -0,0 +1,16 @@
+
+
+def pretender_reversed(pretender_id):
+    def reverse_url(inst, path):
+        """
+        Reverses the url using self.url and path given in parameter.
+
+        Arguments:
+        - `path`: the request path
+        """
+
+        server, port = inst.connection_handler.server, inst.connection_handler.port
+
+        url = '%s/%s' % (pretender_id, inst.module)
+        return url + path
+    return reverse_url
\ No newline at end of file
diff --git a/src/cutecoin/tests/qapp.py b/src/cutecoin/tests/qapp.py
index 75c314f569a977251e69d5c815009111d705d685..708b11fa18edb6dc8944af182025765093b2c170 100644
--- a/src/cutecoin/tests/qapp.py
+++ b/src/cutecoin/tests/qapp.py
@@ -2,6 +2,32 @@
 _application_ = []
 
 
+def unitttest_exception_handler(test, loop, context):
+    """
+    An exception handler which exists the program if the exception
+    was not catch
+    :param loop: the asyncio loop
+    :param context: the exception context
+    """
+    message = context.get('message')
+    if not message:
+        message = 'Unhandled exception in event loop'
+
+    try:
+        exception = context['exception']
+    except KeyError:
+        exc_info = False
+    else:
+        exc_info = (type(exception), exception, exception.__traceback__)
+
+    log_lines = [message]
+    for key in [k for k in sorted(context) if k not in {'message', 'exception'}]:
+        log_lines.append('{}: {!r}'.format(key, context[key]))
+
+    test.fail('\n'.join(log_lines))
+
+
+
 def get_application():
     """Get the singleton QApplication"""
     from quamash import QApplication
diff --git a/src/cutecoin/tests/stubs/__init__.py b/src/cutecoin/tests/stubs/__init__.py
deleted file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..0000000000000000000000000000000000000000
diff --git a/src/cutecoin/tests/stubs/core/__init__.py b/src/cutecoin/tests/stubs/core/__init__.py
deleted file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..0000000000000000000000000000000000000000
diff --git a/src/cutecoin/tests/stubs/core/net/__init__.py b/src/cutecoin/tests/stubs/core/net/__init__.py
deleted file mode 100644
index 8779e25f1cc4a979a682c0b5fb9e2833540fe6df..0000000000000000000000000000000000000000
--- a/src/cutecoin/tests/stubs/core/net/__init__.py
+++ /dev/null
@@ -1 +0,0 @@
-from .network import Network
\ No newline at end of file
diff --git a/src/cutecoin/tests/stubs/core/net/network.py b/src/cutecoin/tests/stubs/core/net/network.py
deleted file mode 100644
index 3d2de537d84529bd64056c7d2b25094d8c08be87..0000000000000000000000000000000000000000
--- a/src/cutecoin/tests/stubs/core/net/network.py
+++ /dev/null
@@ -1,98 +0,0 @@
-"""
-Created on 24 févr. 2015
-
-@author: inso
-"""
-import asyncio
-
-from PyQt5.QtCore import pyqtSignal, pyqtSlot, QObject
-
-
-class Network(QObject):
-    """
-    A network is managing nodes polling and crawling of a
-    given community.
-    """
-    nodes_changed = pyqtSignal()
-    new_block_mined = pyqtSignal(int)
-
-    def __init__(self, network_manager, currency, nodes):
-        """
-        Constructor of a network
-
-        :param str currency: The currency name of the community
-        :param list nodes: The root nodes of the network
-        """
-        super().__init__()
-        self.currency = currency
-        self.network_manager = network_manager
-
-    @classmethod
-    def create(cls, network_manager, node):
-        nodes = [node]
-        network = cls(network_manager, node.currency, nodes)
-        return network
-
-    def merge_with_json(self, json_data):
-        pass
-
-    @classmethod
-    def from_json(cls, network_manager, currency, json_data):
-        nodes = []
-        network = cls(network_manager, currency, nodes)
-        return network
-
-    def jsonify(self):
-        data = []
-        return data
-
-    @property
-    def quality(self):
-        return 0.33
-
-    def stop_coroutines(self):
-        pass
-
-    def continue_crawling(self):
-        return False
-
-    @property
-    def synced_nodes(self):
-        return self.nodes
-
-    @property
-    def online_nodes(self):
-        return self.nodes
-
-    @property
-    def nodes(self):
-        """
-        Get all knew nodes.
-        """
-        return self._nodes
-
-    @property
-    def root_nodes(self):
-        return self._root_nodes
-
-    @property
-    def latest_block(self):
-        return 20000
-
-    def add_node(self, node):
-        pass
-
-    def add_root_node(self, node):
-        pass
-
-    def remove_root_node(self, index):pass
-
-    def is_root_node(self, node):
-        return True
-
-    def root_node_index(self, index):
-        return self.nodes[0]
-
-    @asyncio.coroutine
-    def discover_network(self):
-        pass
diff --git a/src/cutecoin/tests/stubs/core/registry/__init__.py b/src/cutecoin/tests/stubs/core/registry/__init__.py
deleted file mode 100644
index 4ab046a19ff274331c3bc1ffd25e16bd19985478..0000000000000000000000000000000000000000
--- a/src/cutecoin/tests/stubs/core/registry/__init__.py
+++ /dev/null
@@ -1,2 +0,0 @@
-from .identities import IdentitiesRegistry
-from .identity import Identity
\ No newline at end of file
diff --git a/src/cutecoin/tests/stubs/core/registry/identities.py b/src/cutecoin/tests/stubs/core/registry/identities.py
deleted file mode 100644
index 7cebf6522df4f7b40d3496c3578eaa60dc7c18b7..0000000000000000000000000000000000000000
--- a/src/cutecoin/tests/stubs/core/registry/identities.py
+++ /dev/null
@@ -1,29 +0,0 @@
-from PyQt5.QtCore import QObject, pyqtSlot, pyqtSignal, QTimer
-from cutecoin.core.net.api import bma as qtbma
-from .identity import Identity
-
-import asyncio
-
-
-class IdentitiesRegistry:
-    def __init__(self, instances={}):
-        pass
-
-    def load_json(self, json_data):
-        pass
-
-    def jsonify(self):
-        return {'registry': []}
-
-    def lookup(self, pubkey, community):
-        identity = Identity.empty(pubkey)
-        return identity
-
-    @asyncio.coroutine
-    def future_find(self, pubkey, community):
-        identity = Identity.empty(pubkey)
-        yield from asyncio.sleep(1)
-        return identity
-
-    def from_metadata(self, metadata):
-        return Identity()
diff --git a/src/cutecoin/tests/stubs/core/registry/identity.py b/src/cutecoin/tests/stubs/core/registry/identity.py
deleted file mode 100644
index 7c0e3a5c4b796facded48ce0e372bb3ed24341b8..0000000000000000000000000000000000000000
--- a/src/cutecoin/tests/stubs/core/registry/identity.py
+++ /dev/null
@@ -1,114 +0,0 @@
-"""
-Created on 11 févr. 2014
-
-@author: inso
-"""
-
-import logging
-import time
-import asyncio
-
-from ucoinpy.documents.certification import SelfCertification
-from cutecoin.tools.exceptions import Error, NoPeerAvailable,\
-                                        MembershipNotFoundError
-from cutecoin.core.net.api import bma as qtbma
-from cutecoin.core.net.api.bma import PROTOCOL_VERSION
-from PyQt5.QtCore import QObject, pyqtSignal
-
-
-class Identity(QObject):
-    """
-    A person with a uid and a pubkey
-    """
-    FOUND = 1
-    NOT_FOUND = 0
-
-    inner_data_changed = pyqtSignal(str)
-
-    def __init__(self, uid, pubkey, status):
-        """
-        Initializing a person object.
-
-        :param str uid: The person uid, also known as its uid on the network
-        :param str pubkey: The person pubkey
-        :param int status: The local status of the identity
-        """
-        super().__init__()
-        assert(status in (Identity.FOUND, Identity.NOT_FOUND))
-        self.uid = uid
-        self.pubkey = pubkey
-        self.status = status
-
-    @classmethod
-    def empty(cls, pubkey):
-        return cls("", pubkey, Identity.NOT_FOUND)
-
-    @classmethod
-    def from_metadata(cls, metadata):
-        return cls(metadata["text"], metadata["id"], Identity.NOT_FOUND)
-
-    @classmethod
-    def from_json(cls, json_data):
-        """
-        Create a person from json data
-
-        :param dict json_data: The person as a dict in json format
-        :return: A new person if pubkey wasn't known, else a new person instance.
-        """
-        pubkey = json_data['pubkey']
-        uid = json_data['uid']
-        status = json_data['status']
-
-        return cls(uid, pubkey, status)
-
-    @asyncio.coroutine
-    def selfcert(self, community):
-        yield from asyncio.sleep(1)
-        return None
-
-    def get_join_date(self, community):
-        return time.time() + 100000000
-
-    def get_expiration_date(self, community):
-        return time.time() + 1000000000
-
-    def membership(self, community):
-        raise MembershipNotFoundError()
-
-    def published_uid(self, community):
-        return False
-
-    def is_member(self, community):
-        return False
-
-    def certifiers_of(self, community):
-        return list()
-
-    def unique_valid_certifiers_of(self, community):
-        return list()
-
-    def certified_by(self, community):
-        return list()
-
-    def unique_valid_certified_by(self, community):
-        return list()
-
-    def membership_expiration_time(self, community):
-        current_time = time.time()
-        return current_time+1000000
-
-    def jsonify(self):
-        """
-        Get the community as dict in json format.
-        :return: The community as a dict in json format
-        """
-        data = {'uid': self.uid,
-                'pubkey': self.pubkey,
-                'status': self.status}
-        return data
-
-    def __str__(self):
-        status_str = ("NOT_FOUND", "FOUND")
-        return "{0} - {1} - {2}".format(self.uid,
-                                        self.pubkey,
-                                        status_str[self.status])
\ No newline at end of file
diff --git a/src/cutecoin/tools/decorators.py b/src/cutecoin/tools/decorators.py
index 3842dbd419aa04b4275fe5f303ac48a5e2d8b443..169bdae169dc49e22b1a64a39dcd0cbcb7a10cf6 100644
--- a/src/cutecoin/tools/decorators.py
+++ b/src/cutecoin/tools/decorators.py
@@ -13,15 +13,24 @@ def cancel_once_task(object, fn):
 def once_at_a_time(fn):
     @functools.wraps(fn)
     def wrapper(*args, **kwargs):
+        def task_done(task):
+            try:
+                args[0].__tasks.pop(fn.__name__)
+            except KeyError:
+                logging.debug("Task already removed")
+
         if getattr(args[0], "__tasks", None) is None:
             setattr(args[0], "__tasks", {})
         if fn.__name__ in args[0].__tasks:
             if not args[0].__tasks[fn.__name__].done():
                 args[0].__tasks[fn.__name__].cancel()
+
         try:
             args[0].__tasks[fn.__name__] = fn(*args, **kwargs)
+            args[0].__tasks[fn.__name__].add_done_callback(task_done)
         except asyncio.CancelledError:
             logging.debug("Cancelled asyncified : {0}".format(fn.__name__))
+
         return args[0].__tasks[fn.__name__]
     return wrapper
 
diff --git a/src/cutecoin/tools/exceptions.py b/src/cutecoin/tools/exceptions.py
index 8821d1c8ed90662e22ae4c5f57bc47a6b78581f2..6044c9b6a354c40bc7444303ebd5f91adf8ebcd6 100644
--- a/src/cutecoin/tools/exceptions.py
+++ b/src/cutecoin/tools/exceptions.py
@@ -154,13 +154,13 @@ class NoPeerAvailable(Error):
     Exception raised when a community doesn't have any
     peer available.
     """
-    def __init__(self, currency, peers):
+    def __init__(self, currency, nbpeers):
         """
         Constructor
         """
         super() .__init__(
             "No peer answered in {0} community ({1} peers available)"
-            .format(currency, peers))
+            .format(currency, nbpeers))
 
 
 class InvalidNodeCurrency(Error):