diff --git a/data/hooks/backup/05-system_ldap b/data/hooks/backup/05-system_ldap
index 65c52fc7..9ef09b11 100644
--- a/data/hooks/backup/05-system_ldap
+++ b/data/hooks/backup/05-system_ldap
@@ -1,5 +1,3 @@
-#!/bin/bash
-
 backup_dir="$1/ldap"
 mkdir -p $backup_dir
 
diff --git a/data/hooks/backup/08-system_ssh b/data/hooks/backup/08-system_ssh
index 617eee0f..e5f2570e 100644
--- a/data/hooks/backup/08-system_ssh
+++ b/data/hooks/backup/08-system_ssh
@@ -1,5 +1,3 @@
-#!/bin/bash
-
 backup_dir="$1/ssh"
 mkdir -p $backup_dir
 
diff --git a/data/hooks/backup/11-system_mysql b/data/hooks/backup/11-system_mysql
index e5ff07c5..984d52a6 100644
--- a/data/hooks/backup/11-system_mysql
+++ b/data/hooks/backup/11-system_mysql
@@ -1,5 +1,3 @@
-#!/bin/bash
-
 backup_dir="$1/mysql"
 mkdir -p $backup_dir
 
diff --git a/data/hooks/backup/14-system_ssowat b/data/hooks/backup/14-system_ssowat
index f4ec8c42..fbb78f19 100644
--- a/data/hooks/backup/14-system_ssowat
+++ b/data/hooks/backup/14-system_ssowat
@@ -1,5 +1,3 @@
-#!/bin/bash
-
 backup_dir="$1/ssowat"
 mkdir -p $backup_dir
 
diff --git a/data/hooks/backup/17-system_home b/data/hooks/backup/17-system_home
index 13414a75..b73b2dff 100644
--- a/data/hooks/backup/17-system_home
+++ b/data/hooks/backup/17-system_home
@@ -1,5 +1,3 @@
-#!/bin/bash
-
 backup_dir="$1/home"
 mkdir -p $backup_dir
 
diff --git a/data/hooks/backup/20-system_yunohost b/data/hooks/backup/20-system_yunohost
index 22d556c6..e49b5289 100644
--- a/data/hooks/backup/20-system_yunohost
+++ b/data/hooks/backup/20-system_yunohost
@@ -1,5 +1,3 @@
-#!/bin/bash
-
 backup_dir="$1/yunohost"
 mkdir -p $backup_dir
 
diff --git a/data/hooks/backup/23-system_mail b/data/hooks/backup/23-system_mail
index 2145c0bc..7fe210ce 100644
--- a/data/hooks/backup/23-system_mail
+++ b/data/hooks/backup/23-system_mail
@@ -1,5 +1,3 @@
-#!/bin/bash
-
 backup_dir="$1/mail"
 
 sudo cp -a /var/mail/. $backup_dir
diff --git a/data/hooks/backup/26-system_xmpp b/data/hooks/backup/26-system_xmpp
index 836c7307..2b87644d 100644
--- a/data/hooks/backup/26-system_xmpp
+++ b/data/hooks/backup/26-system_xmpp
@@ -1,5 +1,3 @@
-#!/bin/bash
-
 backup_dir="$1/xmpp"
 mkdir -p $backup_dir/{etc,var}
 
diff --git a/data/hooks/backup/29-system_nginx b/data/hooks/backup/29-system_nginx
index 6bbcae2c..97680912 100644
--- a/data/hooks/backup/29-system_nginx
+++ b/data/hooks/backup/29-system_nginx
@@ -1,5 +1,3 @@
-#!/bin/bash
-
 backup_dir="$1/nginx"
 mkdir -p $backup_dir
 
diff --git a/data/hooks/backup/32-system_cron b/data/hooks/backup/32-system_cron
index b529b021..87a2a4f2 100644
--- a/data/hooks/backup/32-system_cron
+++ b/data/hooks/backup/32-system_cron
@@ -1,5 +1,3 @@
-#!/bin/bash
-
 backup_dir="$1/cron"
 mkdir -p $backup_dir
 
diff --git a/data/hooks/restore/05-system_ldap b/data/hooks/restore/05-system_ldap
index 58ca04ea..f16225c3 100644
--- a/data/hooks/restore/05-system_ldap
+++ b/data/hooks/restore/05-system_ldap
@@ -1,5 +1,3 @@
-#!/bin/bash
-
 backup_dir="$1/ldap"
 
 if [ -z "$2" ]; then
diff --git a/data/hooks/restore/08-system_ssh b/data/hooks/restore/08-system_ssh
index 09aaf9c9..bfe729f3 100644
--- a/data/hooks/restore/08-system_ssh
+++ b/data/hooks/restore/08-system_ssh
@@ -1,5 +1,3 @@
-#!/bin/bash
-
 backup_dir="$1/ssh"
 
 sudo cp -a $backup_dir/. /etc/ssh
diff --git a/data/hooks/restore/11-system_mysql b/data/hooks/restore/11-system_mysql
index 28db5148..23293b15 100644
--- a/data/hooks/restore/11-system_mysql
+++ b/data/hooks/restore/11-system_mysql
@@ -1,5 +1,3 @@
-#!/bin/bash
-
 backup_dir="$1/mysql"
 
 mysqlpwd=$(sudo cat /etc/yunohost/mysql)
diff --git a/data/hooks/restore/14-system_ssowat b/data/hooks/restore/14-system_ssowat
index df92fe10..15bae3c7 100644
--- a/data/hooks/restore/14-system_ssowat
+++ b/data/hooks/restore/14-system_ssowat
@@ -1,5 +1,3 @@
-#!/bin/bash
-
 backup_dir="$1/ssowat"
 
 sudo cp -a $backup_dir/. /etc/ssowat
diff --git a/data/hooks/restore/17-system_home b/data/hooks/restore/17-system_home
index a90794ad..d005bed0 100644
--- a/data/hooks/restore/17-system_home
+++ b/data/hooks/restore/17-system_home
@@ -1,5 +1,3 @@
-#!/bin/bash
-
 backup_dir="$1/home"
 
 sudo cp -a $backup_dir/. /home
diff --git a/data/hooks/restore/20-system_yunohost b/data/hooks/restore/20-system_yunohost
index 1bd33276..2ceb2ada 100644
--- a/data/hooks/restore/20-system_yunohost
+++ b/data/hooks/restore/20-system_yunohost
@@ -1,5 +1,3 @@
-#!/bin/bash
-
 backup_dir="$1/yunohost"
 
 sudo cp -a $backup_dir/. /etc/yunohost
diff --git a/data/hooks/restore/23-system_mail b/data/hooks/restore/23-system_mail
index 39f6f933..ecef0ec1 100644
--- a/data/hooks/restore/23-system_mail
+++ b/data/hooks/restore/23-system_mail
@@ -1,5 +1,3 @@
-#!/bin/bash
-
 backup_dir="$1/mail"
 
 sudo cp -a $backup_dir/. /var/mail
diff --git a/data/hooks/restore/26-system_xmpp b/data/hooks/restore/26-system_xmpp
index c1b4e360..70dc7e1c 100644
--- a/data/hooks/restore/26-system_xmpp
+++ b/data/hooks/restore/26-system_xmpp
@@ -1,5 +1,3 @@
-#!/bin/bash
-
 backup_dir="$1/xmpp"
 
 sudo cp -a $backup_dir/etc/. /etc/metronome
diff --git a/data/hooks/restore/29-system_nginx b/data/hooks/restore/29-system_nginx
index 62810985..5ffaf5c1 100644
--- a/data/hooks/restore/29-system_nginx
+++ b/data/hooks/restore/29-system_nginx
@@ -1,5 +1,3 @@
-#!/bin/bash
-
 backup_dir="$1/nginx"
 
 sudo cp -a $backup_dir/. /etc/nginx/conf.d
diff --git a/data/hooks/restore/32-system_cron b/data/hooks/restore/32-system_cron
index b1a53c3d..1e12d23b 100644
--- a/data/hooks/restore/32-system_cron
+++ b/data/hooks/restore/32-system_cron
@@ -1,5 +1,3 @@
-#!/bin/bash
-
 backup_dir="$1/cron"
 
 sudo cp -a $backup_dir/. /etc/cron.d
diff --git a/debian/postinst b/debian/postinst
index 2ad81579..3106cfed 100644
--- a/debian/postinst
+++ b/debian/postinst
@@ -1,56 +1,86 @@
 #!/bin/bash
 
-TMP=/usr/share/yunohost/yunohost-config/moulinette
+set -e
 
-if [ ! -d /etc/yunohost ];
-then
-	mkdir -p /etc/yunohost
-fi
+do_configure() {
+  TMP=/usr/share/yunohost/yunohost-config/moulinette
 
-# Allow users to access /media directory
-if [ ! -d /etc/skel/media ];
-then
-        mkdir -p /media
-	ln -s /media /etc/skel/
-fi
+  if [ ! -d /etc/yunohost ];
+  then
+      mkdir -p /etc/yunohost
+  fi
 
-#Firewall
-grep -q "UPNP:" /etc/yunohost/firewall.yml > /dev/null 2>&1
-if [[ $? -eq 0 ]] || [ ! -f /etc/yunohost/firewall.yml ];
-then
-	cp $TMP/firewall.yml /etc/yunohost/
-fi
+  # Allow users to access /media directory
+  if [ ! -d /etc/skel/media ];
+  then
+      mkdir -p /media
+      ln -s /media /etc/skel/
+  fi
 
-# App fetchlist
-if [ -f /etc/cron.d/yunohost-applist-yunohost ];
-then
-    sed -i "s/--no-ldap //g" /etc/cron.d/yunohost-applist-yunohost
-fi
+  #Firewall
+  grep -q "UPNP:" /etc/yunohost/firewall.yml > /dev/null 2>&1
+  if [[ $? -eq 0 ]] || [ ! -f /etc/yunohost/firewall.yml ];
+  then
+      cp $TMP/firewall.yml /etc/yunohost/
+  fi
 
-# Service list
-if [ ! -f /etc/yunohost/services.yml ];
-then
-	cp $TMP/services.yml /etc/yunohost/
-fi
+  # App fetchlist
+  if [ -f /etc/cron.d/yunohost-applist-yunohost ];
+  then
+      sed -i "s/--no-ldap //g" /etc/cron.d/yunohost-applist-yunohost
+  fi
 
-# Stop old API
-ps aux | grep "yunohost.tac" | grep -qv grep
-if [[ $? -eq 0 ]];
-then
-    killall twistd
-fi
+  # Service list
+  if [ ! -f /etc/yunohost/services.yml ];
+  then
+      cp $TMP/services.yml /etc/yunohost/
+  fi
 
-rm -rf /var/cache/moulinette/*
-update-rc.d yunohost-api defaults
-service yunohost-api restart
+  # Stop old API
+  ps aux | grep "yunohost.tac" | grep -qv grep
+  if [[ $? -eq 0 ]];
+  then
+      killall twistd
+  fi
 
-# Reload SSOwat conf if obsolete
-if [ -f /etc/yunohost/installed ];
-then
-    yunohost firewall upnp | grep -qi "true"
-    if [[ $? -eq 0 ]];
-    then
-        yunohost firewall upnp enable
-    fi
-    yunohost app ssowatconf
-fi
+  rm -rf /var/cache/moulinette/*
+  update-rc.d yunohost-api defaults > /dev/null
+  service yunohost-api restart
+
+  # Firewall
+  update-rc.d yunohost-firewall defaults > /dev/null
+
+  # Reload SSOwat conf if obsolete
+  if [ -f /etc/yunohost/installed ];
+  then
+      yunohost firewall upnp | grep -qi "true"
+      if [[ $? -eq 0 ]];
+      then
+          yunohost firewall upnp enable
+      fi
+      yunohost app ssowatconf
+  fi
+}
+
+# summary of how this script can be called:
+#        * <postinst> `configure' <most-recently-configured-version>
+#        * <old-postinst> `abort-upgrade' <new version>
+#        * <conflictor's-postinst> `abort-remove' `in-favour' <package>
+#          <new-version>
+#        * <deconfigured's-postinst> `abort-deconfigure' `in-favour'
+#          <failed-install-package> <version> `removing'
+#          <conflicting-package> <version>
+# for details, see http://www.debian.org/doc/debian-policy/ or
+# the debian-policy package
+
+case "$1" in
+    configure)
+        do_configure
+    ;;
+    abort-upgrade|abort-remove|abort-deconfigure)
+    ;;
+    *)
+        echo "postinst called with unknown argument \`$1'" >&2
+        exit 1
+    ;;
+esac
diff --git a/debian/yunohost-api.init b/debian/yunohost-api.init
index 11c92b74..3e75e159 100755
--- a/debian/yunohost-api.init
+++ b/debian/yunohost-api.init
@@ -6,6 +6,7 @@
 # Default-Start:     2 3 4 5
 # Default-Stop:      0 1 6
 # Short-Description: Start/stop YunoHost API
+# Description:       Start/stop YunoHost API
 ### END INIT INFO
 
 DAEMON=/usr/bin/yunohost-api
@@ -40,7 +41,7 @@ case "$1" in
     kill `ps aux | grep 'yunohost-api' | grep -v grep | grep -v stop | awk '{print $2}'` > /dev/null 2>&1
     log_end_msg 0
     ;;
-  restart)
+  restart|force-reload)
     logger "YunoHost API: Restarting"
     log_daemon_msg "Restarting API: YunoHost"
     if [ -f /var/run/yunohost-api.pid ]; then
@@ -66,7 +67,7 @@ case "$1" in
     ;;
   *)
     logger "YunoHost API: Invalid usage"
-    echo "Usage: /etc/init.d/yunohost-api {start|stop|restart|status}" >&2
+    echo "Usage: /etc/init.d/yunohost-api {start|stop|restart|force-reload|status}" >&2
     exit 1
     ;;
 esac
diff --git a/debian/yunohost-firewall.init b/debian/yunohost-firewall.init
index f16e1d6b..fd144349 100755
--- a/debian/yunohost-firewall.init
+++ b/debian/yunohost-firewall.init
@@ -6,6 +6,7 @@
 # Default-Start:     2 3 4 5
 # Default-Stop:      0 1 6
 # Short-Description: Start/stop YunoHost firewall
+# Description:       Start/stop YunoHost firewall
 ### END INIT INFO
 
 DAEMON=/usr/bin/yunohost
@@ -30,7 +31,7 @@ case "$1" in
     /usr/bin/yunohost firewall stop
     log_end_msg $?
     ;;
-  restart)
+  restart|force-reload)
     logger "YunoHost firewall: Restarting"
     log_daemon_msg "Restarting firewall: YunoHost"
     /usr/bin/yunohost firewall reload
@@ -44,7 +45,7 @@ case "$1" in
     ;;
   *)
     logger "YunoHost API: Invalid usage"
-    echo "Usage: /etc/init.d/yunohost-api {start|stop|restart|status}" >&2
+    echo "Usage: /etc/init.d/yunohost-api {start|stop|restart|force-reload|status}" >&2
     exit 1
     ;;
 esac
diff --git a/lib/yunohost/__init__.py b/lib/yunohost/__init__.py
old mode 100755
new mode 100644