diff --git a/README.md b/README.md
index 6ff9de96c13c48d28a90d8967047dc4a925ce707..3d8f50141804a6e36fe1454b914a291e4e2805ba 100644
--- a/README.md
+++ b/README.md
@@ -63,17 +63,8 @@ Go to their respective page for more details.
 cd /system/
 git clone module
 cd module
-systemctl enable s@module
-start
-```
-
-### To debug a module:
-
-```
-docker-compose ps
-docker-compose logs
-stop
-restart
+libre enable
+libre start
 ```
 
 ## Applications
@@ -83,19 +74,18 @@ restart
 To install application `wordpress` on `example.org`, first make point example.org to your server IP, and then, just run:
 
 ```
-provision -a github.com/indiehosters/wordpress -u example.org -s
+libre provision -a github.com/indiehosters/wordpress -u example.org -s
 ```
 
-Run `provision` for more details on the capabilities of the script.
+Run `libre provision` for more details on the capabilities of the script.
 
-### debug an application
+## To debug a module or an application:
 
 ```
-docker-compose ps
-docker-compose logs
-stop
-start
-restart
+libre ps
+libre logs -f --tail=100
+libre stop
+libre restart
 ```
 
 ## Contributing
diff --git a/utils/disable b/utils/disable
deleted file mode 120000
index 8b293ee534aa4081ab90745b731b6265f5f17c9a..0000000000000000000000000000000000000000
--- a/utils/disable
+++ /dev/null
@@ -1 +0,0 @@
-systemctl_commands
\ No newline at end of file
diff --git a/utils/enable b/utils/enable
deleted file mode 120000
index 8b293ee534aa4081ab90745b731b6265f5f17c9a..0000000000000000000000000000000000000000
--- a/utils/enable
+++ /dev/null
@@ -1 +0,0 @@
-systemctl_commands
\ No newline at end of file
diff --git a/utils/libre b/utils/libre
new file mode 100755
index 0000000000000000000000000000000000000000..09fdec914b91e9a45c5d12facbb2e2bd8f486bfd
--- /dev/null
+++ b/utils/libre
@@ -0,0 +1,63 @@
+#!/bin/bash -eu
+
+
+function error_path {
+  >&2 echo "Error: you must be in either /data/domains/*/ or /system/*/ to execute these commands"
+  exit 1
+}
+
+function systemctl_param {
+  first_level_path=`pwd | cut -d'/' -f2`
+  second_level_path=`pwd | cut -d'/' -f3`
+
+  if [ "$first_level_path" == "system" ]; then
+    module=`pwd | cut -d'/' -f3`
+    if [ -n "$module" ]; then
+      echo s@$module
+    else
+      error_path
+    fi
+  elif [ "$first_level_path" == "data" ] && [ "$second_level_path" == "domains" ]; then
+    domain=`pwd | cut -d'/' -f4`
+    if [ -n "$domain" ]; then
+      echo u@$domain
+    else
+      error_path
+    fi
+  else
+    error_path
+  fi
+}
+
+
+case "$1" in
+  start|status|enable|disable|restart|stop)
+    if [ -n "$(systemctl_param)" ]; then
+      echo "systemctl $1 $(systemctl_param)"
+      systemctl $1 $(systemctl_param)
+    fi;;
+  ps|exec|logs)
+    if [ -f ./env ]; then
+      env $(cat ./env | xargs) docker-compose $1 ${@:2}
+    else
+      docker-compose $1 ${@:2}
+    fi;;
+  update)
+    if [ "$(pwd)" == "/libre.sh" ]; then
+      echo "Indiehosters";
+      git pull
+      cp /libre.sh/unit-files/* /etc/systemd/system && systemctl daemon-reload &&\
+      cp /libre.sh/utils/* /opt/bin/
+    elif [ -n "$(systemctl_param)" ]; then
+      git pull
+      docker-compose pull
+      libre restart
+    fi;;
+  provision)
+    provision ${@:2};;
+  *)
+    echo "Usage:"
+    echo " - start|status|enable|disable|restart|stop: command sent to systemctl."
+    echo " - ps|exec|logs: command sent to docker compose." 
+    echo " - update: to update the current folder."
+esac
diff --git a/utils/restart b/utils/restart
deleted file mode 120000
index 8b293ee534aa4081ab90745b731b6265f5f17c9a..0000000000000000000000000000000000000000
--- a/utils/restart
+++ /dev/null
@@ -1 +0,0 @@
-systemctl_commands
\ No newline at end of file
diff --git a/utils/start b/utils/start
deleted file mode 120000
index 8b293ee534aa4081ab90745b731b6265f5f17c9a..0000000000000000000000000000000000000000
--- a/utils/start
+++ /dev/null
@@ -1 +0,0 @@
-systemctl_commands
\ No newline at end of file
diff --git a/utils/status b/utils/status
deleted file mode 120000
index 8b293ee534aa4081ab90745b731b6265f5f17c9a..0000000000000000000000000000000000000000
--- a/utils/status
+++ /dev/null
@@ -1 +0,0 @@
-systemctl_commands
\ No newline at end of file
diff --git a/utils/stop b/utils/stop
deleted file mode 120000
index 8b293ee534aa4081ab90745b731b6265f5f17c9a..0000000000000000000000000000000000000000
--- a/utils/stop
+++ /dev/null
@@ -1 +0,0 @@
-systemctl_commands
\ No newline at end of file
diff --git a/utils/systemctl_commands b/utils/systemctl_commands
deleted file mode 100755
index 60915d5877f2b53c695b6c83de462b5a3e9d1ac9..0000000000000000000000000000000000000000
--- a/utils/systemctl_commands
+++ /dev/null
@@ -1,15 +0,0 @@
-#!/bin/bash
-
-command=`basename "$0"`
-first_level_path=`pwd | cut -d'/' -f2`
-second_level_path=`pwd | cut -d'/' -f3`
-
-if [ "$first_level_path" == "system" ]; then
-  module=`pwd | cut -d'/' -f3`
-  systemctl $command s@$module
-elif [ "$first_level_path" == "data" ]; then
-  if [ "$second_level_path" == "domains" ]; then
-    domain=`pwd | cut -d'/' -f4`
-    systemctl $command u@$domain
-  fi
-fi