diff --git a/doc/About.txt b/doc/About.txt
index 42d3423ae75345fe97472b7f8625a6d8217fe4ba..28cf7e036dceed902bf043a853faab657930c798 100644
--- a/doc/About.txt
+++ b/doc/About.txt
@@ -4,4 +4,11 @@
 About
 =====
 
-SFLphone is a mega phone. We like it.
+SFLphone is meant to be a robust enterprise-class desktop phone. It is design
+with a hundred-calls-a-day receptionist in mind. It can work for you, too.
+
+SFLphone is released under the *GNU General Public License* (GPLv2 and up).
+
+SFLphone is being developed by the global community, and maintained by
+http://www.savoirfairelinux.com[Savoir-faire Linux], a Montreal,
+Quebec, Canada-based Linux consulting company.
diff --git a/doc/Build.txt b/doc/Build.txt
index a255127afab377f1119381ac8d5b335c3d4da5a7..cde1429c162e843981b74041f8077e4fa9e48a63 100644
--- a/doc/Build.txt
+++ b/doc/Build.txt
@@ -2,16 +2,30 @@
 
 
 Build notes
------------
-
+===========
 
 sflphoned
-~~~~~~~~~
+---------
 
 Instructions to build `sflphoned`:
 
+dbus-c++-bindings
+~~~~~~~~~~~~~~~~~
+
+Go to `libs/dbus` and run:
+
+-------------------------
+./autogen.sh
+./configure --prefix=/usr
+make
+sudo make install
+-------------------------
+
+NOTE: If you have `colorgcc`, configure will *fail* on `libeXpat`. Issue an `unset CC` and `unset CXX` to build the dbus bindings.
+
+
 libiax2
-^^^^^^^
+~~~~~~~
 
 Go to `libs/libiax2` and run:
 
@@ -22,11 +36,12 @@ sudo make install
 -------------------------
 
 the daemon
-^^^^^^^^^^
+~~~~~~~~~~
 
 Then, go to the root of the repository, and run:
 
 ---------------------------------------------------
+autoreconf --install
 ./configure --prefix=/usr (or whatever your prefix)
 make
 sudo make install
@@ -34,13 +49,20 @@ sudo make install
 
 
 sflphone-qt
-~~~~~~~~~~~
+-----------
 
-`sflphone-qt` gets built with sflphoned, for now.
+`sflphone-qt` is *deprecated* and should not be built anymore.
 
 
 sflphone-gtk
-~~~~~~~~~~~~
+------------
 
-Merging of `sflphone-gtk` to come.
+Compile `sflphone-gtk` by running:
 
+-------------------------
+cd sflphone-gtk
+gnome-autogen.sh
+./configure --prefix=/usr
+make
+sudo make install
+-------------------------
diff --git a/doc/Dependencies.txt b/doc/Dependencies.txt
index e3b5bba071034450df4699faabca36291b8433a9..40934b2b63b1ee95680ce78078286baa25bbbbda 100644
--- a/doc/Dependencies.txt
+++ b/doc/Dependencies.txt
@@ -15,6 +15,20 @@ libosip2             2.2.2      http://www.gnu.org/software/osip/[website]
 portaudio            v19        http://www.portaudio.com/[website]
 portaudio C++ binds.            http://www.portaudio.com/archives/pa_snapshot_v19.tar.gz[archive]
 libsamplerate        0.1.2      http://www.mega-nerd.com/SRC/[website]
+dbus-c++-1           0.5        See Build notes.
+libexpat1            1.95.8     Packaged with your favorite distribution
 --------------------------------------------------------------------------------------
 
 
+
+
+Dependencies to compile SFLphone-GTK
+------------------------------------
+
+`--------------------`----------`-----------------------------------------------------
+Program              Version    Notes
+--------------------------------------------------------------------------------------
+libgtk2.0            2.2        
+dbus-glib            0.35       
+--------------------------------------------------------------------------------------
+
diff --git a/doc/Downloads.txt b/doc/Downloads.txt
new file mode 100644
index 0000000000000000000000000000000000000000..1446e013bf6a0c406469e7281e52bec1c88651e8
--- /dev/null
+++ b/doc/Downloads.txt
@@ -0,0 +1,27 @@
+// AsciiDoc
+
+
+Downloads
+=========
+
+
+Latest release:
+
+[grid="all"]
+`--------------------`----------`---------------------------
+Package              Type       Link
+------------------------------------------------------------
+*SFLphone 0.7.2*     Sources    http://www.sflphone.org/releases/sflphone-0.7.2.tar.gz[Download] sflfile:Build.txt[Build notes]
+                     FC6-RPM    http://www.sflphone.org/releases/packages/rpm-fc6/sflphone-0.7.2-1.i386.rpm[Download]
+                     RC6-SRPM   http://www.sflphone.org/releases/packages/rpm-fc6/devel/sflphone-0.7.2-1.src.rpm[Download]
+*SFLphone 0.7.0*     Source     http://www.sflphone.org/releases/sflphone-0.7.0.tar.gz[Download]
+                     FC4-RPM    http://www.sflphone.org/releases/packages/rpm-fc4/sflphone-0.7.0-1.i386.rpm[Download]
+                     FC4-SRPM   http://www.sflphone.org/releases/packages/rpm-fc4/devel/sflphone-0.7.0-1.src.rpm[Download]
+------------------------------------------------------------
+
+
+Latest source code
+------------------
+
+See the sflfile:Git_Access.txt[repository access] page for the latest source
+code.
diff --git a/doc/Git_Access.txt b/doc/Git_Access.txt
index 5cbde2f57edf3589964f16571b42d09f3dfc4696..0f4dbac2730964e048830c5b82cafaef06175790 100644
--- a/doc/Git_Access.txt
+++ b/doc/Git_Access.txt
@@ -5,16 +5,14 @@ Git anonymous access
 --------------------
 
 
-
-To access SFLphone's git repository (read-only):
+To grab source code form SFLphone's git repository:
 
 ---------------------------------------------
 git clone git://sflphone.org/git/sflphone.git
 cd sflphone
-autoreconf --install
 ---------------------------------------------
 
-
+View sflsite:build[build notes] for more details.
 
 
 
diff --git a/doc/Goals.txt b/doc/Goals.txt
new file mode 100644
index 0000000000000000000000000000000000000000..0741c35849f9e0525a014b22a138a756471c0375
--- /dev/null
+++ b/doc/Goals.txt
@@ -0,0 +1,6 @@
+//AsciiDoc file
+
+Goals
+-----
+
+[insert goals]
diff --git a/doc/IRC.txt b/doc/IRC.txt
new file mode 100644
index 0000000000000000000000000000000000000000..e3bdb583e97f7b1926c01ed505b52b2e49979a20
--- /dev/null
+++ b/doc/IRC.txt
@@ -0,0 +1,7 @@
+// AsciiDoc file
+
+IRC
+===
+
+Server:: `irc.freenode.org`
+Channel:: `#sflphone`
diff --git a/doc/MailingLists.txt b/doc/MailingLists.txt
new file mode 100644
index 0000000000000000000000000000000000000000..f732c91e658ec91945a75392c8d97e3a0dcfb785
--- /dev/null
+++ b/doc/MailingLists.txt
@@ -0,0 +1,18 @@
+// AsciiDoc file
+
+Mailing lists
+=============
+
+
+sflphone-user
+-------------
+
+http://pouetpouet.list.com[subscribe] http://pouetpouet2.list.com[unsubscribe]
+http://pouetpouet6.list.com[archives]
+
+sflphone-devel
+--------------
+
+http://pouetpouet3.list.com[subscribe] http://pouetpouet4.list.com[unsubscribe]
+http://pouetpouet5.list.com[archives]
+
diff --git a/doc/News.txt b/doc/News.txt
index d97ba467e6de7c7feaf94cf80ade0a16a45f4799..d411dbb59486210181307107541cac89276a20f5 100644
--- a/doc/News.txt
+++ b/doc/News.txt
@@ -3,5 +3,7 @@
 News
 ====
 
-* News 1
-* News 2
+September 2007:: A new Gtk+ client is being written, to play with the new D-BUS client/server interface. See sflsite:screenshots[]. Upcoming release 0.8.0.
+
+July 2007:: *Pierre-Luc Beaudoin* and *Alexandre Bourget* have taken the lead of maintenance and development of SFLphone.
+
diff --git a/doc/Screenshots.txt b/doc/Screenshots.txt
index 49a48f4eeaacca57a007c50917487ce5b12b9272..e8820229e19b76b0267b36305f2b6e797be2bdc6 100644
--- a/doc/Screenshots.txt
+++ b/doc/Screenshots.txt
@@ -1,11 +1,20 @@
 // AsciiDoc file
 
-Screenshots
------------
+Screenshots of upcoming releases
+--------------------------------
 
-.Screenshot de 2007
-sflimage::images/SflphonePOuetpoUEt.png[SFLphone qt3]
+This is an upcoming client, to be released with version 0.8.
 
-.Screenshot de SFLphone 0.7
-sflimage::images/sflphone0.7.png[SFLphone 0.7]
+.New SFLphone-GTK client (ver. 0.8)
+sflimage::images/screenshots/sflphone_gtk_0.8.png[New SFLphone GTK client]
+
+
+Historical screenshots
+----------------------
+
+.SFLphone 0.6.2 - Brushed metal skin
+sflimage::images/screenshots/sflphone_qt3_0.6.2.png[SFLphone 0.6.2]
+
+.SFLphone 0.6 - Alternate skin
+sflimage::images/screenshots/sflphone_metal.png[SFLphone 0.6]
 
diff --git a/doc/asciidoc.conf b/doc/asciidoc.conf
index 8461a64c985e3db4df7aed149079b4a783016292..f61b09cd991dbb033c7b6aad00f7ae56edb79ffc 100644
--- a/doc/asciidoc.conf
+++ b/doc/asciidoc.conf
@@ -16,8 +16,11 @@
 #
 
 ifdef::backend-xhtml11[]
-[sflink-inlinemacro]
-<a href="index.php?f={target}.txt">{0?{0}}{0!{target}}</a>
+[sflfile-inlinemacro]
+<a href="index.php?file={target}">{0?{0}}{0!{target}}</a>
+
+[sflsite-inlinemacro]
+<a href="index.php?mod={target}">{0?{0}}{0!{target}}</a>
 endif::backend-xhtml11[]
 
 #
@@ -28,7 +31,7 @@ endif::backend-xhtml11[]
 <a id="{id}"></a>
 <div class="content">
 <a class="image" href="{link#}">
-<img src="index.php?i={target}" alt="{1={target}}"{1? title="{1}"}{width? width="{width}"}{height? height="{height}"}/>
+<img src="index.php?img={target}" alt="{1={target}}"{1? title="{1}"}{width? width="{width}"}{height? height="{height}"}/>
 {link#}</a>
 </div>
 <div class="image-title">{title}</div>
diff --git a/doc/doxygen/Doxyfile-server b/doc/doxygen/Doxyfile-server
index 9cf8b25b0f82aff1137c82a054269a478c4af252..fa1dc05f77445f8bf4b64369affed46acf031c15 100644
--- a/doc/doxygen/Doxyfile-server
+++ b/doc/doxygen/Doxyfile-server
@@ -450,7 +450,7 @@ WARN_LOGFILE           =
 # directories like "/usr/src/myproject". Separate the files or directories 
 # with spaces.
 
-INPUT                  = src src/audio src/zeroconf src/config src/gui/server src/gui
+INPUT                  = src src/audio src/zeroconf src/config src/dbus
 
 # If the value of the INPUT tag contains directories, you can use the 
 # FILE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp 
diff --git a/doc/images/screenshots/sflphone_gtk_0.8.png b/doc/images/screenshots/sflphone_gtk_0.8.png
new file mode 100644
index 0000000000000000000000000000000000000000..2a73002ea598fc07facc54ad6bfc95d7fd8247db
Binary files /dev/null and b/doc/images/screenshots/sflphone_gtk_0.8.png differ
diff --git a/doc/images/screenshots/sflphone_metal.png b/doc/images/screenshots/sflphone_metal.png
new file mode 100644
index 0000000000000000000000000000000000000000..ed34ee700257aa068667d3ebf6db1966f7cbd1c9
Binary files /dev/null and b/doc/images/screenshots/sflphone_metal.png differ
diff --git a/doc/images/screenshots/sflphone_qt3_0.6.2.png b/doc/images/screenshots/sflphone_qt3_0.6.2.png
new file mode 100644
index 0000000000000000000000000000000000000000..3b53ce3190013f36ff1a4dc8bb54b051f51ca865
Binary files /dev/null and b/doc/images/screenshots/sflphone_qt3_0.6.2.png differ
diff --git a/sflphone-gtk/src/accountlist.h b/sflphone-gtk/src/accountlist.h
index f47c66dd6d9abaa5a2019f693c528e8ce469444b..5408d271d85caaba2ef37d1fab1f8c92ccf4671a 100644
--- a/sflphone-gtk/src/accountlist.h
+++ b/sflphone-gtk/src/accountlist.h
@@ -28,15 +28,16 @@
 #define ACCOUNT_REGISTER           "Account.autoregister"
 
 #define ACCOUNT_SIP_FULL_NAME      "SIP.fullName"
+#define ACCOUNT_SIP_HOST_PART      "SIP.hostPart"
 #define ACCOUNT_SIP_USER_PART      "SIP.userPart"
 #define ACCOUNT_SIP_AUTH_NAME      "SIP.username"
 #define ACCOUNT_SIP_PASSWORD       "SIP.password"
-#define ACCOUNT_SIP_HOST_PART      "SIP.hostPart"
 #define ACCOUNT_SIP_PROXY          "SIP.proxy"
 
-#define ACCOUNT_IAX_HOST "IAX.host"
-#define ACCOUNT_IAX_USER "IAX.user"
-#define ACCOUNT_IAX_PASS "IAX.pass"
+#define ACCOUNT_IAX_FULL_NAME      "IAX.fullName"
+#define ACCOUNT_IAX_HOST           "IAX.host"
+#define ACCOUNT_IAX_USER           "IAX.user"
+#define ACCOUNT_IAX_PASS           "IAX.pass"
 
 typedef enum
 {
diff --git a/sflphone-gtk/src/accountwindow.c b/sflphone-gtk/src/accountwindow.c
index 714b7eade3c51ffae7963ec27342301fa7046695..be64d2eaa188c19c72b534765f30a8ee7115cfa9 100644
--- a/sflphone-gtk/src/accountwindow.c
+++ b/sflphone-gtk/src/accountwindow.c
@@ -27,6 +27,21 @@
 /** Local variables */
 account_t * currentAccount;
 
+GtkDialog * dialog;
+GtkWidget * table;
+GtkWidget * label;
+GtkWidget * entryID;
+GtkWidget * entryName;
+GtkWidget * entryProtocol;
+GtkWidget * entryEnabled;
+GtkWidget * entryRegister;
+GtkWidget * entryFullName;
+GtkWidget * entryUserPart;
+GtkWidget * entryHostPart;
+GtkWidget * entryUsername;
+GtkWidget * entryPassword;
+
+
 /**
  * Delete an account
  */
@@ -37,26 +52,64 @@ delete_account( GtkWidget *widget, gpointer   data )
 }*/
 
 
+/* Signal to entryProtocol 'changed' */
+void
+change_protocol (account_t * currentAccount)
+{
+  gchar* proto = (gchar *)gtk_combo_box_get_active_text(GTK_COMBO_BOX(entryProtocol));
+  //g_print("Protocol changed\n");
+
+  // toggle sensitivity for: entryUserPart 
+  if (strcmp(proto, "SIP") == 0) {
+    gtk_widget_set_sensitive( GTK_WIDGET(entryUserPart),   TRUE);
+  }
+  else if (strcmp(proto, "IAX") == 0) {
+    gtk_widget_set_sensitive( GTK_WIDGET(entryUserPart),   FALSE);
+  }
+  else {
+    // Should not get here.
+    g_print("Unknown protocol: %s\n", proto);
+  }
+}
+
+
 void
 show_account_window (account_t * a)
 {
-  
-  GtkDialog * dialog;
-  GtkWidget * table;
-  GtkWidget * label;
-  GtkWidget * entryID;
-  GtkWidget * entryName;
-  GtkWidget * entryProtocol;
-  GtkWidget * entryEnabled;
-  GtkWidget * entryRegister;
-  GtkWidget * entryFullName;
-  GtkWidget * entryUserPart;
-  GtkWidget * entryHostPart;
-  GtkWidget * entryUsername;
-  GtkWidget * entryPassword;
   guint response;
   
   currentAccount = a;
+
+  // Current settings
+  gchar * curAccountType = NULL;
+  gchar * curProtocol = NULL;
+  gchar * curUserPart = NULL;
+  gchar * curHostPart = NULL;
+  gchar * curPassword = NULL;
+  gchar * curUsername = NULL;
+  gchar * curFullName = NULL;
+  /* TODO: add curProxy, and add boxes for Proxy support */
+
+  // Load from SIP/IAX/Unknown ?
+  curAccountType = g_hash_table_lookup(currentAccount->properties, ACCOUNT_TYPE);
+
+  if (strcmp(curAccountType, "IAX") == 0) {
+    curHostPart = g_hash_table_lookup(currentAccount->properties, ACCOUNT_IAX_HOST);
+    curPassword = g_hash_table_lookup(currentAccount->properties, ACCOUNT_IAX_PASS);
+    curUsername = g_hash_table_lookup(currentAccount->properties, ACCOUNT_IAX_USER);
+    curFullName = g_hash_table_lookup(currentAccount->properties, ACCOUNT_IAX_FULL_NAME);
+  }
+  else if (strcmp(curAccountType, "SIP") == 0) {
+    curHostPart = g_hash_table_lookup(currentAccount->properties, ACCOUNT_SIP_HOST_PART);
+    curPassword = g_hash_table_lookup(currentAccount->properties, ACCOUNT_SIP_PASSWORD);
+    curUsername = g_hash_table_lookup(currentAccount->properties, ACCOUNT_SIP_AUTH_NAME);
+    curFullName = g_hash_table_lookup(currentAccount->properties, ACCOUNT_SIP_FULL_NAME);
+    curUserPart = g_hash_table_lookup(currentAccount->properties, ACCOUNT_SIP_USER_PART);
+  }
+  else {
+    // Default values...
+    curAccountType = "SIP";
+  }
   
   dialog = GTK_DIALOG(gtk_dialog_new_with_buttons ("Account settings",
                                         GTK_WINDOW(get_main_window()),
@@ -108,25 +161,36 @@ show_account_window (account_t * a)
   gtk_misc_set_alignment(GTK_MISC (label), 0, 0.5);
   entryProtocol = gtk_combo_box_new_text();
   gtk_label_set_mnemonic_widget (GTK_LABEL (label), entryProtocol);
-  gtk_widget_set_sensitive( GTK_WIDGET(entryProtocol), FALSE); /* TODO When IAX is ok */
+  //gtk_widget_set_sensitive( GTK_WIDGET(entryProtocol), TRUE);
   gtk_combo_box_append_text(GTK_COMBO_BOX(entryProtocol), "SIP");
   gtk_combo_box_append_text(GTK_COMBO_BOX(entryProtocol), "IAX");
-  if(strcmp(g_hash_table_lookup(a->properties, ACCOUNT_TYPE), "SIP") == 0)
+  if(strcmp(curAccountType, "SIP") == 0)
   {
     gtk_combo_box_set_active(GTK_COMBO_BOX(entryProtocol),0);
   }
-  else 
+  else if(strcmp(curAccountType, "IAX") == 0)
   {
     gtk_combo_box_set_active(GTK_COMBO_BOX(entryProtocol),1);
-  }  
+  }
+  else
+  {
+    /* Should never come here, add debug message. */
+    gtk_combo_box_append_text(GTK_COMBO_BOX(entryProtocol), "Unknown");
+    gtk_combo_box_set_active(GTK_COMBO_BOX(entryProtocol),2);  
+  }
   gtk_table_attach ( GTK_TABLE( table ), entryProtocol, 1, 2, 4, 5, GTK_EXPAND | GTK_FILL, GTK_EXPAND | GTK_FILL, 0, 0);
+
+  /* Link signal 'changed' */
+  g_signal_connect (G_OBJECT (GTK_COMBO_BOX(entryProtocol)), "changed",
+		    G_CALLBACK (change_protocol),
+		    currentAccount);
   
   label = gtk_label_new_with_mnemonic ("_Full Name:");
   gtk_table_attach ( GTK_TABLE( table ), label, 0, 1, 5, 6, GTK_EXPAND | GTK_FILL, GTK_EXPAND | GTK_FILL, 0, 0);
   gtk_misc_set_alignment(GTK_MISC (label), 0, 0.5);
   entryFullName = gtk_entry_new();
   gtk_label_set_mnemonic_widget (GTK_LABEL (label), entryFullName);
-  gtk_entry_set_text(GTK_ENTRY(entryFullName), g_hash_table_lookup(currentAccount->properties, ACCOUNT_SIP_FULL_NAME));
+  gtk_entry_set_text(GTK_ENTRY(entryFullName), curFullName);
   gtk_table_attach ( GTK_TABLE( table ), entryFullName, 1, 2, 5, 6, GTK_EXPAND | GTK_FILL, GTK_EXPAND | GTK_FILL, 0, 0);
   
   label = gtk_label_new_with_mnemonic ("_User part:");
@@ -134,7 +198,7 @@ show_account_window (account_t * a)
   gtk_misc_set_alignment(GTK_MISC (label), 0, 0.5);
   entryUserPart = gtk_entry_new();
   gtk_label_set_mnemonic_widget (GTK_LABEL (label), entryUserPart);
-  gtk_entry_set_text(GTK_ENTRY(entryUserPart), g_hash_table_lookup(currentAccount->properties, ACCOUNT_SIP_USER_PART));
+  gtk_entry_set_text(GTK_ENTRY(entryUserPart), curUserPart);
   gtk_table_attach ( GTK_TABLE( table ), entryUserPart, 1, 2, 6, 7, GTK_EXPAND | GTK_FILL, GTK_EXPAND | GTK_FILL, 0, 0);
   
   label = gtk_label_new_with_mnemonic ("_Host part:");
@@ -142,7 +206,7 @@ show_account_window (account_t * a)
   gtk_misc_set_alignment(GTK_MISC (label), 0, 0.5);
   entryHostPart = gtk_entry_new();
   gtk_label_set_mnemonic_widget (GTK_LABEL (label), entryHostPart);
-  gtk_entry_set_text(GTK_ENTRY(entryHostPart), g_hash_table_lookup(currentAccount->properties, ACCOUNT_SIP_HOST_PART));
+  gtk_entry_set_text(GTK_ENTRY(entryHostPart), curHostPart);
   gtk_table_attach ( GTK_TABLE( table ), entryHostPart, 1, 2, 7, 8, GTK_EXPAND | GTK_FILL, GTK_EXPAND | GTK_FILL, 0, 0);
   
   label = gtk_label_new_with_mnemonic ("U_sername:");
@@ -150,7 +214,7 @@ show_account_window (account_t * a)
   gtk_misc_set_alignment(GTK_MISC (label), 0, 0.5);
   entryUsername = gtk_entry_new();
   gtk_label_set_mnemonic_widget (GTK_LABEL (label), entryUsername);
-  gtk_entry_set_text(GTK_ENTRY(entryUsername), g_hash_table_lookup(currentAccount->properties, ACCOUNT_SIP_AUTH_NAME));
+  gtk_entry_set_text(GTK_ENTRY(entryUsername), curUsername);
   gtk_table_attach ( GTK_TABLE( table ), entryUsername, 1, 2, 8, 9, GTK_EXPAND | GTK_FILL, GTK_EXPAND | GTK_FILL, 0, 0);
   
   label = gtk_label_new_with_mnemonic ("_Password:");
@@ -159,9 +223,21 @@ show_account_window (account_t * a)
   entryPassword = gtk_entry_new();
   gtk_entry_set_visibility(GTK_ENTRY(entryPassword), FALSE);
   gtk_label_set_mnemonic_widget (GTK_LABEL (label), entryPassword);
-  gtk_entry_set_text(GTK_ENTRY(entryPassword), g_hash_table_lookup(currentAccount->properties, ACCOUNT_SIP_PASSWORD));
+  gtk_entry_set_text(GTK_ENTRY(entryPassword), curPassword);
   gtk_table_attach ( GTK_TABLE( table ), entryPassword, 1, 2, 9, 10, GTK_EXPAND | GTK_FILL, GTK_EXPAND | GTK_FILL, 0, 0);
   
+
+  // Toggle enabled/disabled widgets
+  if (strcmp(curAccountType, "SIP") == 0) {
+    //gtk_widget_set_sensitive( GTK_WIDGET(entryUserPart), TRUE);<    
+  }
+  else if (strcmp(curAccountType, "IAX") == 0) {
+    gtk_widget_set_sensitive( GTK_WIDGET(entryUserPart), FALSE);
+  }
+  else {
+    // Disable everything ! ouch!
+    // Shouldn't get there.
+  }
   
   
   gtk_box_pack_start (GTK_BOX (dialog->vbox), table, TRUE, TRUE, 0);
@@ -171,7 +247,9 @@ show_account_window (account_t * a)
   
   response = gtk_dialog_run (GTK_DIALOG (dialog));
   if(response == GTK_RESPONSE_ACCEPT)
-  { 
+  {
+    gchar* proto = (gchar *)gtk_combo_box_get_active_text(GTK_COMBO_BOX(entryProtocol));
+
     g_hash_table_replace(currentAccount->properties, 
       g_strdup(ACCOUNT_ENABLED), 
       g_strdup(gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(entryEnabled)) ? "TRUE": "FALSE"));
@@ -182,21 +260,41 @@ show_account_window (account_t * a)
     g_hash_table_replace(currentAccount->properties, 
       g_strdup(ACCOUNT_ALIAS), 
       g_strdup((gchar *)gtk_entry_get_text(GTK_ENTRY(entryName))));
-    g_hash_table_replace(currentAccount->properties, 
-      g_strdup(ACCOUNT_SIP_FULL_NAME), 
-      g_strdup((gchar *)gtk_entry_get_text(GTK_ENTRY(entryFullName))));
-    g_hash_table_replace(currentAccount->properties, 
-      g_strdup(ACCOUNT_SIP_USER_PART), 
-      g_strdup((gchar *)gtk_entry_get_text(GTK_ENTRY(entryUserPart))));
-    g_hash_table_replace(currentAccount->properties, 
-      g_strdup(ACCOUNT_SIP_HOST_PART), 
-      g_strdup((gchar *)gtk_entry_get_text(GTK_ENTRY(entryHostPart))));
-    g_hash_table_replace(currentAccount->properties, 
-      g_strdup(ACCOUNT_SIP_AUTH_NAME), 
-      g_strdup((gchar *)gtk_entry_get_text(GTK_ENTRY(entryUsername))));
-    g_hash_table_replace(currentAccount->properties, 
-      g_strdup(ACCOUNT_SIP_PASSWORD), 
-      g_strdup((gchar *)gtk_entry_get_text(GTK_ENTRY(entryPassword))));
+
+    if (strcmp(proto, "SIP") == 0) { /* Protocol = SIP */
+      g_hash_table_replace(currentAccount->properties, 
+        g_strdup(ACCOUNT_SIP_FULL_NAME), 
+        g_strdup((gchar *)gtk_entry_get_text(GTK_ENTRY(entryFullName))));
+      g_hash_table_replace(currentAccount->properties, 
+        g_strdup(ACCOUNT_SIP_USER_PART), 
+        g_strdup((gchar *)gtk_entry_get_text(GTK_ENTRY(entryUserPart))));
+      g_hash_table_replace(currentAccount->properties, 
+        g_strdup(ACCOUNT_SIP_HOST_PART), 
+        g_strdup((gchar *)gtk_entry_get_text(GTK_ENTRY(entryHostPart))));
+      g_hash_table_replace(currentAccount->properties, 
+        g_strdup(ACCOUNT_SIP_AUTH_NAME), 
+        g_strdup((gchar *)gtk_entry_get_text(GTK_ENTRY(entryUsername))));
+      g_hash_table_replace(currentAccount->properties, 
+        g_strdup(ACCOUNT_SIP_PASSWORD), 
+        g_strdup((gchar *)gtk_entry_get_text(GTK_ENTRY(entryPassword))));
+    }
+    else if (strcmp(proto, "IAX") == 0) { /* Protocol = IAX */
+      g_hash_table_replace(currentAccount->properties, 
+        g_strdup(ACCOUNT_IAX_FULL_NAME), 
+        g_strdup((gchar *)gtk_entry_get_text(GTK_ENTRY(entryFullName))));
+      g_hash_table_replace(currentAccount->properties, 
+        g_strdup(ACCOUNT_IAX_HOST), 
+        g_strdup((gchar *)gtk_entry_get_text(GTK_ENTRY(entryHostPart))));
+      g_hash_table_replace(currentAccount->properties, 
+        g_strdup(ACCOUNT_IAX_USER), 
+        g_strdup((gchar *)gtk_entry_get_text(GTK_ENTRY(entryUsername))));
+      g_hash_table_replace(currentAccount->properties, 
+        g_strdup(ACCOUNT_IAX_PASS), 
+        g_strdup((gchar *)gtk_entry_get_text(GTK_ENTRY(entryPassword))));
+    }
+    else {
+      
+    }
       
     dbus_set_account_details(currentAccount);
   }
diff --git a/sflphone-gtk/src/configwindow.c b/sflphone-gtk/src/configwindow.c
index 3e9f5e4a71e79d15d1b35ae745d981f10effdb21..75fd1ef6de79a1ad3f607d8344e3b56ce3913732 100644
--- a/sflphone-gtk/src/configwindow.c
+++ b/sflphone-gtk/src/configwindow.c
@@ -160,7 +160,7 @@ create_accounts_tab()
 	view = gtk_tree_view_new_with_model (GTK_TREE_MODEL(account_store));
 
 	sel = gtk_tree_view_get_selection (GTK_TREE_VIEW (view));
-  g_signal_connect (G_OBJECT (sel), "changed",
+	g_signal_connect (G_OBJECT (sel), "changed",
 			  G_CALLBACK (select_account),
 			  account_store);
 	
diff --git a/sflphone-gtk/src/dbus.c b/sflphone-gtk/src/dbus.c
index 9c3e53bfbe7f35921aff11fa8307dc896d610bf3..5f320fe0aaf42a9d5d7d890a93070c81fdf0e445 100644
--- a/sflphone-gtk/src/dbus.c
+++ b/sflphone-gtk/src/dbus.c
@@ -426,13 +426,13 @@ dbus_set_account_details(account_t *a)
     &error);
   if (error) 
   {
-    g_printerr ("Failed to call get_account_details() on ConfigurationManager: %s\n",
+    g_printerr ("Failed to call set_account_details() on ConfigurationManager: %s\n",
                 error->message);
     g_error_free (error);
   } 
   else 
   {
-    g_print ("DBus called get_account_details() on ConfigurationManager\n");
+    g_print ("DBus called set_account_details() on ConfigurationManager\n");
 
   }
 }
diff --git a/src/account.h b/src/account.h
index 8f525c78cc137c36dc5a5c946b86e38d3b5b6584..87375b58d983d923fb8de094dfe1d92ed068c6b1 100644
--- a/src/account.h
+++ b/src/account.h
@@ -130,12 +130,6 @@ class Account{
   bool getState() { return _state; }
 
 private:
-  /**
-   * Create a unique VoIPLink() depending on the protocol
-   * Multiple call to this function do nothing (if the voiplink pointer is 0)
-   * @return false if an error occurs
-   */
-  virtual bool createVoIPLink() = 0;
 
 protected:
   /**
diff --git a/src/iaxaccount.cpp b/src/iaxaccount.cpp
index ff369bb76a0a0b818076127fe8f407bb58901f33..78863ebefccf0d4ee9cc58a7248d7c724dd5c1a7 100644
--- a/src/iaxaccount.cpp
+++ b/src/iaxaccount.cpp
@@ -24,7 +24,7 @@
 IAXAccount::IAXAccount(const AccountID& accountID)
  : Account(accountID)
 {
-  createVoIPLink();
+  _link = new IAXVoIPLink(accountID);
 }
 
 
@@ -32,16 +32,6 @@ IAXAccount::~IAXAccount()
 {
 }
 
-/* virtual Account function implementation */
-bool
-IAXAccount::createVoIPLink()
-{
-  if (!_link) {
-    _link = new IAXVoIPLink(_accountID);
-  }
-  return (_link != 0 ? true : false);
-}
-
 bool
 IAXAccount::registerAccount()
 {
diff --git a/src/iaxaccount.h b/src/iaxaccount.h
index 4b79f9860c98774ec52453aeab44cac63baa5ea1..af6090547b3c1887f5f717d5e3a320ef3b12a1c1 100644
--- a/src/iaxaccount.h
+++ b/src/iaxaccount.h
@@ -21,6 +21,7 @@
 
 #include "account.h"
 
+
 /**
  * An IAX Account specify IAX specific functions and objects (IAXCall/IAXVoIPLink)
  * @author Yan Morin <yan.morin@gmail.com>
@@ -34,6 +35,7 @@ public:
 
   /* virtual Account function implementation */
   void initConfig(Conf::ConfigTree& config);
+  /** Actually unuseful, since config loading is done in init() */
   void loadConfig();
   bool registerAccount();
   bool unregisterAccount();
@@ -41,8 +43,6 @@ public:
   bool terminate();
 
 private:
-  /* virtual Account function implementation */
-  bool createVoIPLink();
 };
 
 #endif
diff --git a/src/iaxvoiplink.cpp b/src/iaxvoiplink.cpp
index 170fdafa7a2be102be3ceb44617fcef58a3e9008..6232fea44375923044df695d3c6c84df6fc68cf9 100644
--- a/src/iaxvoiplink.cpp
+++ b/src/iaxvoiplink.cpp
@@ -268,7 +268,7 @@ IAXVoIPLink::sendAudioFromMic(void)
 
     // take the lowest
     int bytesAvail = (availBytesFromMic < maxBytesToGet) ? availBytesFromMic : maxBytesToGet;
-    _debug("available = %d, maxBytesToGet = %d\n", availBytesFromMic, maxBytesToGet);
+    //_debug("available = %d, maxBytesToGet = %d\n", availBytesFromMic, maxBytesToGet);
     
     // Get bytes from micRingBuffer to data_from_mic
     int nbSample = audiolayer->getMic(_dataAudioLayer, bytesAvail) / sizeof(SFLDataFormat);
diff --git a/src/managerimpl.cpp b/src/managerimpl.cpp
index 881cfd473c69e4b9026dcc2b92183953a7c13fb9..a1898bc1862cd5363aac5ed384d8553d883e480b 100644
--- a/src/managerimpl.cpp
+++ b/src/managerimpl.cpp
@@ -69,7 +69,7 @@ ManagerImpl::ManagerImpl (void)
   _dbus = NULL;
 
   // sound
-  _audiodriver = 0;
+  _audiodriver = NULL;
   _dtmfKey = 0;
   _spkr_volume = 0;  // Initialize after by init() -> initVolume()
   _mic_volume  = 0;  // Initialize after by init() -> initVolume()
diff --git a/src/sipaccount.cpp b/src/sipaccount.cpp
index 0a58d464336cb7b9f0b7a6cc0c060d84f0133f0b..480c21af90be7e2d1406dd8e73f9cd1b5c3cf77c 100644
--- a/src/sipaccount.cpp
+++ b/src/sipaccount.cpp
@@ -21,12 +21,10 @@
 #include "manager.h"
 
 
-
-
 SIPAccount::SIPAccount(const AccountID& accountID)
  : Account(accountID)
 {
-  createVoIPLink();
+  _link = new SIPVoIPLink(accountID);
 }
 
 
@@ -34,16 +32,6 @@ SIPAccount::~SIPAccount()
 {
 }
 
-/* virtual Account function implementation */
-bool
-SIPAccount::createVoIPLink()
-{
-  if (!_link) {
-    _link = new SIPVoIPLink(_accountID);
-  }
-  return (_link != 0 ? true : false);
-}
-
 bool
 SIPAccount::registerAccount()
 {
diff --git a/src/sipaccount.h b/src/sipaccount.h
index eeb8f5d1203b20d485e3910d5b070133a4c15a6d..9a0ccea8b77ff1f8de408cc267f920ddadf4b7c2 100644
--- a/src/sipaccount.h
+++ b/src/sipaccount.h
@@ -35,6 +35,7 @@ public:
 
   /* virtual Account function implementation */
   void initConfig(Conf::ConfigTree& config);
+  /** Actually unuseful, since config loading is done in init() */
   void loadConfig();
   bool registerAccount();
   bool unregisterAccount();
@@ -42,8 +43,6 @@ public:
   bool terminate();
 
 private:
-  /* virtual Account function implementation */
-  bool createVoIPLink();
 
 };
 
diff --git a/www/header.php b/www/header.php
index b5244a40255848808132d999634cf5a832d9552f..009d1cad8419c45a58f6ccfa226d69516e369a35 100644
--- a/www/header.php
+++ b/www/header.php
@@ -9,5 +9,14 @@
 <body>
 <div id="page_wrapper">
 <div id="header">
-  <a href="."><img src="images/logoSFLphone<?= ($module == 'page_home' ? '512x149' : '312x91') ?>.png" /></a>
+  <a href="."><img src="images/logoSFLphone<?= ($module == 'home' ? '512x149' : '312x91') ?>.png" /></a>
+
+
+<?php if ($module != 'home') { ?>
+<div id="homebutton">
+  <a href="index.php"><img src="images/home.png" alt="Home" /></a>
+</div>
+<?php } ?>
+
+
 </div>
\ No newline at end of file
diff --git a/www/images/home.png b/www/images/home.png
new file mode 100644
index 0000000000000000000000000000000000000000..4e78a3112f1b765a334d454daa8979431dd13159
Binary files /dev/null and b/www/images/home.png differ
diff --git a/www/images/icons/README b/www/images/icons/README
new file mode 100644
index 0000000000000000000000000000000000000000..1cd28686a36a3d1dd51f6235a6f9ebd900060d5a
--- /dev/null
+++ b/www/images/icons/README
@@ -0,0 +1,10 @@
+Replaced the plain DocBook XSL admonition icons with Jimmac's DocBook
+icons (http://jimmac.musichall.cz/ikony.php3). I dropped transparency
+from the Jimmac icons to get round MS IE and FOP PNG incompatibilies.
+
+Stuart Rackham
+
+
+---------
+
+SFLphone took those from AsciiDoc package.
diff --git a/www/images/icons/callouts/1.png b/www/images/icons/callouts/1.png
new file mode 100644
index 0000000000000000000000000000000000000000..7d473430b7bec514f7de12f5769fe7c5859e8c5d
Binary files /dev/null and b/www/images/icons/callouts/1.png differ
diff --git a/www/images/icons/callouts/10.png b/www/images/icons/callouts/10.png
new file mode 100644
index 0000000000000000000000000000000000000000..997bbc8246a316e040e0804174ba260e219d7d33
Binary files /dev/null and b/www/images/icons/callouts/10.png differ
diff --git a/www/images/icons/callouts/11.png b/www/images/icons/callouts/11.png
new file mode 100644
index 0000000000000000000000000000000000000000..ce47dac3f52ac49017749a3fea53db57d006993c
Binary files /dev/null and b/www/images/icons/callouts/11.png differ
diff --git a/www/images/icons/callouts/12.png b/www/images/icons/callouts/12.png
new file mode 100644
index 0000000000000000000000000000000000000000..31daf4e2f25b6712499ee32de9c2e3b050b691ca
Binary files /dev/null and b/www/images/icons/callouts/12.png differ
diff --git a/www/images/icons/callouts/13.png b/www/images/icons/callouts/13.png
new file mode 100644
index 0000000000000000000000000000000000000000..14021a89c2ed3d4881afea6e3a315bce4f95efce
Binary files /dev/null and b/www/images/icons/callouts/13.png differ
diff --git a/www/images/icons/callouts/14.png b/www/images/icons/callouts/14.png
new file mode 100644
index 0000000000000000000000000000000000000000..64014b75fe2e84d45ed861974c72462727979360
Binary files /dev/null and b/www/images/icons/callouts/14.png differ
diff --git a/www/images/icons/callouts/15.png b/www/images/icons/callouts/15.png
new file mode 100644
index 0000000000000000000000000000000000000000..0d65765fcf13dcfd87914744dec8bda115e4adf1
Binary files /dev/null and b/www/images/icons/callouts/15.png differ
diff --git a/www/images/icons/callouts/2.png b/www/images/icons/callouts/2.png
new file mode 100644
index 0000000000000000000000000000000000000000..5d09341b2f6d2ea2d1d5dad5d980f14b4b05dfd2
Binary files /dev/null and b/www/images/icons/callouts/2.png differ
diff --git a/www/images/icons/callouts/3.png b/www/images/icons/callouts/3.png
new file mode 100644
index 0000000000000000000000000000000000000000..ef7b70047158970cf4e09f1bab2954d39c2d596b
Binary files /dev/null and b/www/images/icons/callouts/3.png differ
diff --git a/www/images/icons/callouts/4.png b/www/images/icons/callouts/4.png
new file mode 100644
index 0000000000000000000000000000000000000000..adb8364eb5d21ecdd4086e16110b62ddcb42aa4a
Binary files /dev/null and b/www/images/icons/callouts/4.png differ
diff --git a/www/images/icons/callouts/5.png b/www/images/icons/callouts/5.png
new file mode 100644
index 0000000000000000000000000000000000000000..4d7eb460021e845981861d77614539314f553993
Binary files /dev/null and b/www/images/icons/callouts/5.png differ
diff --git a/www/images/icons/callouts/6.png b/www/images/icons/callouts/6.png
new file mode 100644
index 0000000000000000000000000000000000000000..0ba694af6c07d947d219b45a629bd32c60a0f5fe
Binary files /dev/null and b/www/images/icons/callouts/6.png differ
diff --git a/www/images/icons/callouts/7.png b/www/images/icons/callouts/7.png
new file mode 100644
index 0000000000000000000000000000000000000000..472e96f8ac36862c5645732f2fff19d06ee11a8e
Binary files /dev/null and b/www/images/icons/callouts/7.png differ
diff --git a/www/images/icons/callouts/8.png b/www/images/icons/callouts/8.png
new file mode 100644
index 0000000000000000000000000000000000000000..5e60973c213b37df93666c5a00724f34493974ae
Binary files /dev/null and b/www/images/icons/callouts/8.png differ
diff --git a/www/images/icons/callouts/9.png b/www/images/icons/callouts/9.png
new file mode 100644
index 0000000000000000000000000000000000000000..a0676d26cc2ff1de12c4ecdeefb44a0d71bc6bde
Binary files /dev/null and b/www/images/icons/callouts/9.png differ
diff --git a/www/images/icons/caution.png b/www/images/icons/caution.png
new file mode 100644
index 0000000000000000000000000000000000000000..cb9d5ea0df3fb7abe744d6ef885847c13b786d4d
Binary files /dev/null and b/www/images/icons/caution.png differ
diff --git a/www/images/icons/example.png b/www/images/icons/example.png
new file mode 100644
index 0000000000000000000000000000000000000000..bba1c0010ddbb148a93e8a442047ca6a68b5ef1f
Binary files /dev/null and b/www/images/icons/example.png differ
diff --git a/www/images/icons/home.png b/www/images/icons/home.png
new file mode 100644
index 0000000000000000000000000000000000000000..37a5231bacc905886c9351a291e0d5eed68dd60e
Binary files /dev/null and b/www/images/icons/home.png differ
diff --git a/www/images/icons/important.png b/www/images/icons/important.png
new file mode 100644
index 0000000000000000000000000000000000000000..1096c232959e8cb5c2977b5eb44c1b67173cb422
Binary files /dev/null and b/www/images/icons/important.png differ
diff --git a/www/images/icons/next.png b/www/images/icons/next.png
new file mode 100644
index 0000000000000000000000000000000000000000..64e126bdda3f2e611199744494367ad0c1a1f9ca
Binary files /dev/null and b/www/images/icons/next.png differ
diff --git a/www/images/icons/note.png b/www/images/icons/note.png
new file mode 100644
index 0000000000000000000000000000000000000000..841820f7c4fb274fc45fae0a0a526a68eb31d85e
Binary files /dev/null and b/www/images/icons/note.png differ
diff --git a/www/images/icons/prev.png b/www/images/icons/prev.png
new file mode 100644
index 0000000000000000000000000000000000000000..3e8f12fe24c6e042bc7ef4badb15449f71529ace
Binary files /dev/null and b/www/images/icons/prev.png differ
diff --git a/www/images/icons/tip.png b/www/images/icons/tip.png
new file mode 100644
index 0000000000000000000000000000000000000000..a3a029d89891bff666fbdc1a082ae4a7951b5abf
Binary files /dev/null and b/www/images/icons/tip.png differ
diff --git a/www/images/icons/up.png b/www/images/icons/up.png
new file mode 100644
index 0000000000000000000000000000000000000000..2db1ce62fa575fd990108b15b0de18a64cae19ca
Binary files /dev/null and b/www/images/icons/up.png differ
diff --git a/www/images/icons/warning.png b/www/images/icons/warning.png
new file mode 100644
index 0000000000000000000000000000000000000000..0b0c419df29b7e71ef14ecf5970b2abcd6d5ea01
Binary files /dev/null and b/www/images/icons/warning.png differ
diff --git a/www/images/see-above.png b/www/images/see-above.png
new file mode 100644
index 0000000000000000000000000000000000000000..a37a9a9708f4baee392791b3bc7b0a1f5a5aa65f
Binary files /dev/null and b/www/images/see-above.png differ
diff --git a/www/images/toc-blank.png b/www/images/toc-blank.png
new file mode 100644
index 0000000000000000000000000000000000000000..6ffad17a0c7a78deaae58716e8071cc40cb0b8e0
Binary files /dev/null and b/www/images/toc-blank.png differ
diff --git a/www/images/toc-minus.png b/www/images/toc-minus.png
new file mode 100644
index 0000000000000000000000000000000000000000..abbb020c8e2d6705ebc2f0fc17deed30f2977a46
Binary files /dev/null and b/www/images/toc-minus.png differ
diff --git a/www/images/toc-plus.png b/www/images/toc-plus.png
new file mode 100644
index 0000000000000000000000000000000000000000..941312ce0dab168e0efcc5b572e387259880e541
Binary files /dev/null and b/www/images/toc-plus.png differ
diff --git a/www/index.php b/www/index.php
index a8422e0f178a7dd8bb9d42fff8a5f27daac18db0..cec9d0640232cffb542fa71a79e3991608182137 100644
--- a/www/index.php
+++ b/www/index.php
@@ -10,8 +10,8 @@ require_once('sflphone.funcs.php');
 
 
 // We've requested an image, fetch it, and send it.
-if (defined($_REQUEST['i'])) {
-  $img = $_REQUEST['i'];
+if (isset($_REQUEST['img'])) {
+  $img = $_REQUEST['img'];
   switch(strtolower(substr($img, -3))) {
   case 'jpg':
     header("Content-Type: image/jpeg");
@@ -26,9 +26,16 @@ if (defined($_REQUEST['i'])) {
     break;
   }
 
-  show_page($img);
+  show_page($img, FALSE);
+  exit();
 }
 
+if (isset($_REQUEST['file'])) {
+  include("header.php");
+  show_page($_REQUEST['file']);
+  include("footer.php");
+  exit();
+}
 
 
 $module = '';
diff --git a/www/sflphone.css b/www/sflphone.css
index a2f0efafb29be56e6416481d801cfea9649c84bb..69e9975c4437f46a9ab6b8932206f58628973e7b 100644
--- a/www/sflphone.css
+++ b/www/sflphone.css
@@ -267,6 +267,7 @@ div.exampleblock-content {
 /** SFLphone specific */
 #header {
   text-align: center;
+  position: relative;
 }
 #header img {
   border: 0px;
@@ -278,4 +279,41 @@ div.exampleblock-content {
   padding: 1em 2em 2em 2em;
   border-left: 1px #aaaaaa solid;
   border-right: 1px #aaaaaa solid;
+}
+
+#downtown {
+  margin-top: 40px;
+  border-top: 1px solid #bbbbbb;
+  font-size: smaller;
+  padding: 1em 0pt 0pt 0pt;
+  clear: both;
+  color: #777777;
+  text-align: center;
+}
+
+.donate {
+  margin: auto
+}
+
+#homebutton {
+  position: absolute;
+  right: 0px;
+  top: 10px;
+}
+#homebutton img {
+  border: none;
+}
+
+.image {
+  text-align: center;
+  padding-bottom: 20px;
+}
+
+.image .image-title {
+  background: transparent url(images/see-above.png) no-repeat left;
+  padding-left: 20px;
+  color: #4D4F3A;
+  font-weight: normal;
+  font-style: italic;
+  display: inline;
 }
\ No newline at end of file
diff --git a/www/sflphone.funcs.php b/www/sflphone.funcs.php
index 678deaaef184b12a55e13a62d96d925d24534def..ba285613f2266da873151e97153394b17794f5d0 100644
--- a/www/sflphone.funcs.php
+++ b/www/sflphone.funcs.php
@@ -64,7 +64,6 @@ function get_page($page, $compile = TRUE) {
  */
 function show_page($page, $compile = TRUE) {
   print get_page($page, $compile);
-
 }
 
 
@@ -141,8 +140,9 @@ function compile_page($hash, $page) {
   // keep return the hash
   $fnconf = bring_local_file('asciidoc.conf');
 
-  // -d book so we can render H1s
-  $p = popen("GIT_DIR=".$GIT_REPOS." git-show $hash | asciidoc -f \"".$fnconf."\"-d book --no-header-footer -", 'r');
+  // -d book, so we can render H1s
+  // -a icons, enables the display of graphic icons in admonition blocks.
+  $p = popen("GIT_DIR=".$GIT_REPOS." git-show $hash | asciidoc -a icons -f \"".$fnconf."\" -d book --no-header-footer - 2>&1", 'r');
 
   if (!$p) {
     return "Unable to compile file: $page ($hash)\n";
@@ -203,10 +203,20 @@ function get_git_file_content($file) {
 function get_git_hash_content($hash) {
   global $GIT_REPOS;
 
-  $output = array();
-  $content = exec("GIT_DIR=".$GIT_REPOS." git-show $hash", $output);
+  $output = '';
 
-  return $content;
+  $p = popen("GIT_DIR=".$GIT_REPOS." git-show $hash", 'r');
+
+  if (!$p) {
+    return "Unable to run git-show for hash: $hash\n";
+  }
+
+  while (!feof($p)) {
+    $output .= fread($p, 1024);
+  }
+  pclose($p);
+
+  return $output;
 }
 
 /**
@@ -214,15 +224,24 @@ function get_git_hash_content($hash) {
  *
  * Used for comparison of cached/to cache/cache filename.
  *
- * @param string Filename without the $PREFIX (ex: Features.txt, images/pouet.png)
+ * @param string Filename without the $PREFIX (ex: Features.txt,
+ *    images/pouet.png) and optionally, a ":" separator, followed by
+ *    a git tree-ish (commit, branch, tag), ex: Build.txt:tags/0.7.2
  * @return string SHA-1 hash
  */
 function get_git_hash($file) {
   global $USE_BRANCH, $GIT_REPOS;
 
+  $branch = $USE_BRANCH;
+
+  $split = explode(":", $file);
+  if (count($split) > 1) {
+    $branch = $split[1];
+  }
+
   $output = array();
 
-  $cmd = "cd $GIT_REPOS; git-ls-tree $USE_BRANCH \"".git_filename($file)."\"";
+  $cmd = "cd $GIT_REPOS; git-ls-tree $branch \"".git_filename($split[0])."\"";
 
   $string = exec($cmd, $output);
 
diff --git a/www/templates/page_build.php b/www/templates/page_build.php
index 9f90e9ffff96be283288160f9414ae9b0e989f07..f225c12ceb4171f3b9e7e639922c1fed208ac820 100644
--- a/www/templates/page_build.php
+++ b/www/templates/page_build.php
@@ -1,3 +1 @@
-<h1>Build instructions</h1>
-
 <?php show_page('Build.txt'); ?>
diff --git a/www/templates/page_discuss.php b/www/templates/page_discuss.php
new file mode 100644
index 0000000000000000000000000000000000000000..ab46cdfed0ef1dfa4e5d906caf7a2675e1e112aa
--- /dev/null
+++ b/www/templates/page_discuss.php
@@ -0,0 +1,5 @@
+
+<?php show_page('MailingLists.txt'); ?>
+
+<?php show_page('IRC.txt'); ?>
+
diff --git a/www/templates/page_donate.php b/www/templates/page_donate.php
new file mode 100644
index 0000000000000000000000000000000000000000..73e6ed68ae17322e34f29390f890cf5a050a0153
--- /dev/null
+++ b/www/templates/page_donate.php
@@ -0,0 +1,134 @@
+<p>
+	    SFLphone is an <em>Open Source</em> project. This means 
+	    you can help the project by contributing <strong>time</strong>, 
+	    <strong>documentation</strong>, <strong>graphics</strong>, <strong>source code</strong> or <strong>translation</strong> services. 
+</p>	
+<p>
+	    If you want to encourage us otherwise, your <strong>donations</strong> can help us:
+</p>	
+	  <ul>
+	    <li>Fund developer resources </li>
+
+	    <li>Purchase hardware for development</li>
+	    <li>Encourage the actual developers</li>
+	    <li>Cope with fees endured in the development</li>
+	  </ul>
+	  <p>
+	    You can donate money securely with <a href="http://www.paypal.com/">PayPal</a> 
+	    or a credit card right here:
+          </p>
+
+
+
+	  <table class="donate">
+
+	      <tr>
+		<td align=center>
+		  <form action="https://www.paypal.com/cgi-bin/webscr" method="post">
+		    <input type="hidden" name="cmd" value="_xclick" />
+		    <input type="hidden" name="business" value="cyrille.beraud@savoirfairelinux.com" />
+		    <input type="hidden" name="item_name" value="SFLphone 10USD donation" />
+		    <input type="hidden" name="item_number" value="sfldon010" />
+		    <input type="hidden" name="no_shipping" value="1" />
+		    <input type="hidden" name="no_note" value="1" />
+
+		    <input type="hidden" name="amount" value="10.00" />
+		    <input type="hidden" name="currency_code" value="USD" />
+		    <input type="hidden" name="tax" value="0" />
+		    <input type="image" src="https://www.paypal.com/en_US/i/btn/x-click-butcc-donate.gif" border="0" name="submit" alt="Make payments with PayPal - it's fast, free and secure!" />
+		  </form>
+		</td>
+		
+		<td align=center>
+		  <form action="https://www.paypal.com/cgi-bin/webscr" method="post">
+		    <input type="hidden" name="cmd" value="_xclick" />
+
+		    <input type="hidden" name="business" value="cyrille.beraud@savoirfairelinux.com" />
+		    <input type="hidden" name="item_name" value="SFLphone 20USD donation" />
+		    <input type="hidden" name="item_number" value="sfldon020" />
+		    <input type="hidden" name="no_shipping" value="1" />
+		    <input type="hidden" name="no_note" value="1" />
+		    <input type="hidden" name="amount" value="20.00" />
+		    <input type="hidden" name="currency_code" value="USD" />
+		    <input type="hidden" name="tax" value="0" />
+		    <input type="image" src="https://www.paypal.com/en_US/i/btn/x-click-butcc-donate.gif" border="0" name="submit" alt="Make payments with PayPal - it's fast, free and secure!" />
+
+		  </form>
+		</td>
+		
+		<td align=center>
+		  <form action="https://www.paypal.com/cgi-bin/webscr" method="post">
+		    <input type="hidden" name="cmd" value="_xclick" />
+		    <input type="hidden" name="business" value="cyrille.beraud@savoirfairelinux.com" />
+		    <input type="hidden" name="item_name" value="SFLphone 50USD donation" />
+		    <input type="hidden" name="item_number" value="sfldon050" />
+		    <input type="hidden" name="no_shipping" value="1" />
+
+		    <input type="hidden" name="no_note" value="1" />
+		    <input type="hidden" name="amount" value="50.00" />
+		    <input type="hidden" name="currency_code" value="USD" />
+		    <input type="hidden" name="tax" value="0" />
+		    <input type="image" src="https://www.paypal.com/en_US/i/btn/x-click-butcc-donate.gif" border="0" name="submit" alt="Make payments with PayPal - it's fast, free and secure!" />
+		  </form>
+		</td>
+		
+		<td align=center>
+		  <form action="https://www.paypal.com/cgi-bin/webscr" method="post">
+
+		    <input type="hidden" name="cmd" value="_xclick" />
+		    <input type="hidden" name="business" value="cyrille.beraud@savoirfairelinux.com" />
+		    <input type="hidden" name="item_name" value="SFLphone 100USD donation" />
+		    <input type="hidden" name="item_number" value="sfldon100" />
+		    <input type="hidden" name="no_shipping" value="1" />
+		    <input type="hidden" name="no_note" value="1" />
+		    <input type="hidden" name="amount" value="100.00" />
+		    <input type="hidden" name="currency_code" value="USD" />
+		    <input type="hidden" name="tax" value="0" />
+
+		    <input type="image" src="https://www.paypal.com/en_US/i/btn/x-click-butcc-donate.gif" border="0" name="submit" alt="Make payments with PayPal - it's fast, free and secure!" />
+		  </form>
+		</td>
+		
+		<td align=center>
+		  <form action="https://www.paypal.com/cgi-bin/webscr" method="post">
+		    <input type="hidden" name="cmd" value="_xclick" />
+		    <input type="hidden" name="business" value="cyrille.beraud@savoirfairelinux.com" />
+		    <input type="hidden" name="item_name" value="SFLphone 250USD donation" />
+		    <input type="hidden" name="item_number" value="sfldon250" />
+
+		    <input type="hidden" name="no_shipping" value="1" />
+		    <input type="hidden" name="no_note" value="1" />
+		    <input type="hidden" name="amount" value="250.00" />
+		    <input type="hidden" name="currency_code" value="USD" />
+		    <input type="hidden" name="tax" value="0" />
+		    <input type="image" src="https://www.paypal.com/en_US/i/btn/x-click-butcc-donate.gif" border="0" name="submit" alt="Make payments with PayPal - it's fast, free and secure!" />
+		  </form>
+		</td>
+		
+		<td align=center>
+
+		  <form action="https://www.paypal.com/cgi-bin/webscr" method="post">
+		    <input type="hidden" name="cmd" value="_xclick" />
+		    <input type="hidden" name="business" value="cyrille.beraud@savoirfairelinux.com" />
+		    <input type="hidden" name="item_name" value="SFLphone donation" />
+		    <input type="hidden" name="item_number" value="sfldon" />
+		    <input type="hidden" name="no_note" value="1" />
+		    <input type="hidden" name="no_shipping" value="1" />
+		    <input type="hidden" name="currency_code" value="USD" />
+		    <input type="hidden" name="tax" value="0" />
+
+		    <input type="image" src="https://www.paypal.com/en_US/i/btn/x-click-butcc-donate.gif" border="0" name="submit" alt="Make payments with PayPal - it's fast, free and secure!" />
+		  </form>
+		</td>
+	      </tr>
+	      
+	      <tr>
+		<td align=center>$10</td>
+		<td align=center>$20</td>
+		<td align=center>$50</td>
+
+		<td align=center>$100</td>
+		<td align=center>$250</td>
+		<td align=center>custom</td>
+	      </tr>
+	  </table>
\ No newline at end of file
diff --git a/www/templates/page_download.php b/www/templates/page_download.php
index 6c2092b712be8862f1a213b5afc35f069b3a89c5..f6d5e7c5e06bab40b53325b3aab3461d174be4bb 100644
--- a/www/templates/page_download.php
+++ b/www/templates/page_download.php
@@ -1,3 +1,2 @@
-<h1>Download</h1>
 
-<?php show_page('Download.txt'); ?>
+<?php show_page('Downloads.txt'); ?>
diff --git a/www/templates/page_home.php b/www/templates/page_home.php
index 4b8a10ac37874b68f72c51dbd6149e2f3ce3680b..3c641fe91ecc0ee385d4fd67fac3c353c3ec3e92 100644
--- a/www/templates/page_home.php
+++ b/www/templates/page_home.php
@@ -29,4 +29,10 @@ The project is ongoing well, but your help and contribution is needed to make th
 <a href="/mantis">File a bug</a> - report errors<br/>
 <a href="index.php?mod=discuss">Discuss</a> - Subscribe to a mailing list or contact us <br/>
 <a href="index.php?mod=devel">Develop</a> - Submit patches, work on the code, contribute
-</p>
\ No newline at end of file
+</p>
+
+
+
+<div id="downtown">
+  Any help is appreciated, <a href="index.php?mod=donate">donate</a>.
+</div>
\ No newline at end of file