diff --git a/src/freedombone-app-rocketchat b/src/freedombone-app-rocketchat
index 3aaad2923a8938fb24753806292a98909626c629..66cbc458fc7db80dd17b26db91fcde721616443b 100755
--- a/src/freedombone-app-rocketchat
+++ b/src/freedombone-app-rocketchat
@@ -238,12 +238,11 @@ function remove_rocketchat {
 
     remove_ddns_domain "$ROCKETCHAT_DOMAIN_NAME"
 
-    snap remove rocketchat-server
+    remove_snap rocketchat-server
 }
 
 function install_rocketchat {
-    apt-get -qy install snapd
-    snap install rocketchat-server
+    install_snap rocketchat-server
 
     install_nodejs rocketchat
     if [ ! "$ROCKETCHAT_DOMAIN_NAME" ]; then
diff --git a/src/freedombone-utils-snap b/src/freedombone-utils-snap
new file mode 100755
index 0000000000000000000000000000000000000000..282cd83665cb96b657e881009416636130e2ee6a
--- /dev/null
+++ b/src/freedombone-utils-snap
@@ -0,0 +1,60 @@
+#!/bin/bash
+#  _____               _           _
+# |   __|___ ___ ___ _| |___ _____| |_ ___ ___ ___
+# |   __|  _| -_| -_| . | . |     | . | . |   | -_|
+# |__|  |_| |___|___|___|___|_|_|_|___|___|_|_|___|
+#
+#                              Freedom in the Cloud
+#
+# Handling installation of snap packages
+#
+# License
+# =======
+#
+# Copyright (C) 2018 Bob Mottram <bob@freedombone.net>
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Affero 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 Affero General Public License for more details.
+#
+# You should have received a copy of the GNU Affero General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+function install_snap {
+    snap_package="$1"
+
+    if [ ! "$snap_package" ]; then
+        return
+    fi
+    no_of_snaps=$(df | grep -c "/snap/core/")
+    if [ "$no_of_snaps" -eq 0 ]; then
+        apt-get -yq install snapd
+    fi
+    if ! snap install "$snap_package"; then
+        echo $"Failed to install snap package $snap_package"
+        exit 46382854
+    fi
+}
+
+function remove_snap {
+    snap_package="$1"
+
+    if [ ! "$snap_package" ]; then
+        return
+    fi
+
+    snap remove "$snap_package"
+
+    no_of_snaps=$(df | grep -c "/snap/")
+    if [ "$no_of_snaps" -eq 1 ]; then
+        apt-get -yq remove snapd
+    fi
+}
+
+# NOTE: deliberately no exit 0