diff --git a/.gitignore b/.gitignore
index 1316742b3cd061754803991b0233865f78c9b37e..f474670489a0948c11b3be725fc8729685fb1cbe 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,3 +1,3 @@
 *.pro.user
 build_*/
-lib/qtlib/
+lib/qtil/
diff --git a/.travis.yml b/.travis.yml
index 5e61be49cddbb7ae96d7e586ea53285179abed00..a4977a181975d5170e7e3f926951f236c5721ffa 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -6,6 +6,7 @@ services:
 branches:
   only:
     - master
+    - /^release\-.+/
 
 script:
   - mntdir='/mnt/ocs-url'
@@ -14,5 +15,6 @@ script:
   - docker run --rm -v $(pwd):${mntdir} opensuse:42.1 /bin/bash -c "sh ${mntdir}/scripts/build-docker.sh opensuse"
   - docker run --rm -v $(pwd):${mntdir} base/archlinux:latest /bin/bash -c "sh ${mntdir}/scripts/build-docker.sh archlinux"
   #- docker run --rm -v $(pwd):${mntdir} ubuntu:16.04 /bin/bash -c "sh ${mntdir}/scripts/build-docker.sh snap"
-  #- docker run --rm -v $(pwd):${mntdir} --cap-add SYS_ADMIN --device /dev/fuse ubuntu:14.04 /bin/bash -c "sh ${mntdir}/scripts/build-docker.sh appimage"
+  #- docker run --rm -v $(pwd):${mntdir} ubuntu:16.04 /bin/bash -c "sh ${mntdir}/scripts/build-docker.sh flatpak"
+  #- docker run --rm -v $(pwd):${mntdir} ubuntu:14.04 /bin/bash -c "sh ${mntdir}/scripts/build-docker.sh appimage"
   - cat transfer.log
diff --git a/README.md b/README.md
index 2dc932994566d3a8cd6975743db9997e6748e9b2..791cd661d146ca173380935418cf86f3254af887 100644
--- a/README.md
+++ b/README.md
@@ -5,7 +5,7 @@
 
 An install helper program for items served on OpenCollaborationServices (OCS).
 
-Copyright: 2016-2017, Opendesktop.org
+Copyright: 2016-2018, Opendesktop.org
 
 License: GPL-3+
 
diff --git a/app/configs/install_types.json b/app/configs/install_types.json
index 87e9b33e2b5a9a07d4f99c8b91a64a85854b5309..182a98a1c62f870944e8442b37a00667da4073ec 100644
--- a/app/configs/install_types.json
+++ b/app/configs/install_types.json
@@ -1,6 +1,6 @@
 {
     "bin": {
-        "name": "Softwares",
+        "name": "Software",
         "destination": "$HOME/.local/bin",
         "generic_destination": "$APP_DATA/bin"
     },
diff --git a/app/src/handlers/confighandler.cpp b/app/src/handlers/confighandler.cpp
index b0c4964651174fda83b733e4eb501cbca9f60078..4463b50179f32c7ceb01f0a0e6bcefc8beaa8a63 100644
--- a/app/src/handlers/confighandler.cpp
+++ b/app/src/handlers/confighandler.cpp
@@ -3,12 +3,12 @@
 #include <QStringList>
 #include <QStandardPaths>
 
-#include "qtlib_dir.h"
+#include "qtil_dir.h"
 
 ConfigHandler::ConfigHandler(QObject *parent)
     : QObject(parent)
 {
-    appConfig_ = qtlib::Config(":/configs");
+    appConfig_ = qtil::Config(":/configs");
     importAppConfigApplication();
     importAppConfigInstallTypes();
 }
@@ -55,7 +55,7 @@ QString ConfigHandler::convertPathString(const QString &path) const
 {
     auto newPath = path;
     if (newPath.contains("$HOME")) {
-        newPath.replace("$HOME", qtlib::Dir::homePath());
+        newPath.replace("$HOME", qtil::Dir::homePath());
     }
     else if (newPath.contains("$XDG_DOCUMENTS_DIR")) {
         newPath.replace("$XDG_DOCUMENTS_DIR", QStandardPaths::writableLocation(QStandardPaths::DocumentsLocation));
@@ -73,13 +73,13 @@ QString ConfigHandler::convertPathString(const QString &path) const
         newPath.replace("$XDG_VIDEOS_DIR", QStandardPaths::writableLocation(QStandardPaths::MoviesLocation));
     }
     else if (newPath.contains("$XDG_DATA_HOME")) {
-        newPath.replace("$XDG_DATA_HOME", qtlib::Dir::genericDataPath());
+        newPath.replace("$XDG_DATA_HOME", qtil::Dir::genericDataPath());
     }
     else if (newPath.contains("$KDEHOME")) {
-        newPath.replace("$KDEHOME", qtlib::Dir::kdehomePath());
+        newPath.replace("$KDEHOME", qtil::Dir::kdehomePath());
     }
     else if (newPath.contains("$APP_DATA")) {
-        newPath.replace("$APP_DATA", qtlib::Dir::genericDataPath() + "/" + getAppConfigApplication()["id"].toString());
+        newPath.replace("$APP_DATA", qtil::Dir::genericDataPath() + "/" + getAppConfigApplication()["id"].toString());
     }
     return newPath;
 }
diff --git a/app/src/handlers/confighandler.h b/app/src/handlers/confighandler.h
index 07c695136172eb52c5ffe7bbdd067cb10cb6ad0e..3e7ab4db9440b855d95fa133b1c6ccd160688b99 100644
--- a/app/src/handlers/confighandler.h
+++ b/app/src/handlers/confighandler.h
@@ -3,7 +3,7 @@
 #include <QObject>
 #include <QJsonObject>
 
-#include "qtlib_config.h"
+#include "qtil_config.h"
 
 class ConfigHandler : public QObject
 {
@@ -21,7 +21,7 @@ private:
     void importAppConfigInstallTypes();
     QString convertPathString(const QString &path) const;
 
-    qtlib::Config appConfig_;
+    qtil::Config appConfig_;
     QJsonObject appConfigApplication_;
     QJsonObject appConfigInstallTypes_;
 };
diff --git a/app/src/handlers/ocsurlhandler.cpp b/app/src/handlers/ocsurlhandler.cpp
index 29996c0b8c8e35348659876edb8520d8bd897384..f94dc5b09350945e174bcd1d1b57d25fde9a9a4a 100644
--- a/app/src/handlers/ocsurlhandler.cpp
+++ b/app/src/handlers/ocsurlhandler.cpp
@@ -3,10 +3,10 @@
 #include <QUrlQuery>
 #include <QDesktopServices>
 
-#include "qtlib_file.h"
-#include "qtlib_dir.h"
-#include "qtlib_networkresource.h"
-#include "qtlib_package.h"
+#include "qtil_file.h"
+#include "qtil_dir.h"
+#include "qtil_networkresource.h"
+#include "qtil_package.h"
 
 #include "handlers/confighandler.h"
 
@@ -40,9 +40,9 @@ void OcsUrlHandler::process()
     }
 
     auto url = metadata_["url"].toString();
-    auto *resource = new qtlib::NetworkResource(url, QUrl(url), true, this);
-    connect(resource, &qtlib::NetworkResource::downloadProgress, this, &OcsUrlHandler::downloadProgress);
-    connect(resource, &qtlib::NetworkResource::finished, this, &OcsUrlHandler::networkResourceFinished);
+    auto *resource = new qtil::NetworkResource(url, QUrl(url), true, this);
+    connect(resource, &qtil::NetworkResource::downloadProgress, this, &OcsUrlHandler::downloadProgress);
+    connect(resource, &qtil::NetworkResource::finished, this, &OcsUrlHandler::networkResourceFinished);
     resource->get();
     emit started();
 }
@@ -72,7 +72,7 @@ void OcsUrlHandler::openDestination() const
     QDesktopServices::openUrl(QUrl("file://" + configHandler_->getAppConfigInstallTypes()[type].toObject()["destination"].toString()));
 }
 
-void OcsUrlHandler::networkResourceFinished(qtlib::NetworkResource *resource)
+void OcsUrlHandler::networkResourceFinished(qtil::NetworkResource *resource)
 {
     if (!resource->isFinishedWithNoError()) {
         QJsonObject result;
@@ -127,14 +127,14 @@ void OcsUrlHandler::parse()
     }
 }
 
-void OcsUrlHandler::saveDownloadedFile(qtlib::NetworkResource *resource)
+void OcsUrlHandler::saveDownloadedFile(qtil::NetworkResource *resource)
 {
     QJsonObject result;
 
     auto type = metadata_["type"].toString();
-    qtlib::Dir destDir(configHandler_->getAppConfigInstallTypes()[type].toObject()["destination"].toString());
+    qtil::Dir destDir(configHandler_->getAppConfigInstallTypes()[type].toObject()["destination"].toString());
     destDir.make();
-    qtlib::File destFile(destDir.path() + "/" + metadata_["filename"].toString());
+    qtil::File destFile(destDir.path() + "/" + metadata_["filename"].toString());
 
     if (!resource->saveData(destFile.path())) {
         result["status"] = QString("error_save");
@@ -151,11 +151,11 @@ void OcsUrlHandler::saveDownloadedFile(qtlib::NetworkResource *resource)
     resource->deleteLater();
 }
 
-void OcsUrlHandler::installDownloadedFile(qtlib::NetworkResource *resource)
+void OcsUrlHandler::installDownloadedFile(qtil::NetworkResource *resource)
 {
     QJsonObject result;
 
-    qtlib::File tempFile(qtlib::Dir::tempPath() + "/" + metadata_["filename"].toString());
+    qtil::File tempFile(qtil::Dir::tempPath() + "/" + metadata_["filename"].toString());
 
     if (!resource->saveData(tempFile.path())) {
         result["status"] = QString("error_save");
@@ -165,11 +165,11 @@ void OcsUrlHandler::installDownloadedFile(qtlib::NetworkResource *resource)
         return;
     }
 
-    qtlib::Package package(tempFile.path());
+    qtil::Package package(tempFile.path());
     auto type = metadata_["type"].toString();
-    qtlib::Dir destDir(configHandler_->getAppConfigInstallTypes()[type].toObject()["destination"].toString());
+    qtil::Dir destDir(configHandler_->getAppConfigInstallTypes()[type].toObject()["destination"].toString());
     destDir.make();
-    qtlib::File destFile(destDir.path() + "/" + metadata_["filename"].toString());
+    qtil::File destFile(destDir.path() + "/" + metadata_["filename"].toString());
 
     if (type == "bin"
             && package.installAsProgram(destFile.path())) {
diff --git a/app/src/handlers/ocsurlhandler.h b/app/src/handlers/ocsurlhandler.h
index 38ed279847c1c9791f1025604bc9780203a49bab..f2b9ebd355aeb6ff199e57828c645c3a3787198b 100644
--- a/app/src/handlers/ocsurlhandler.h
+++ b/app/src/handlers/ocsurlhandler.h
@@ -3,7 +3,7 @@
 #include <QObject>
 #include <QJsonObject>
 
-namespace qtlib {
+namespace qtil {
 class NetworkResource;
 }
 
@@ -31,12 +31,12 @@ public slots:
     void openDestination() const;
 
 private slots:
-    void networkResourceFinished(qtlib::NetworkResource *resource);
+    void networkResourceFinished(qtil::NetworkResource *resource);
 
 private:
     void parse();
-    void saveDownloadedFile(qtlib::NetworkResource *resource);
-    void installDownloadedFile(qtlib::NetworkResource *resource);
+    void saveDownloadedFile(qtil::NetworkResource *resource);
+    void installDownloadedFile(qtil::NetworkResource *resource);
 
     QString ocsUrl_;
     ConfigHandler *configHandler_;
diff --git a/lib/lib.pri b/lib/lib.pri
index 5343ea67e320f54da6851de3969e590c456d432d..935a6b22ae6efe513973b1299a7fbe36a51b92fa 100644
--- a/lib/lib.pri
+++ b/lib/lib.pri
@@ -1 +1 @@
-include($${PWD}/qtlib/qtlib.pri)
+include($${PWD}/qtil/qtil.pri)
diff --git a/ocs-url.pro b/ocs-url.pro
index 7a803e1ee31d577c9fdebb39d7f4e340b373c223..d2209dd0aa3f3ffbe3228c77958c3f8d0a7fb05a 100644
--- a/ocs-url.pro
+++ b/ocs-url.pro
@@ -1,5 +1,3 @@
-message("Please execute scripts/import.sh for build dependencies")
-
 TARGET = ocs-url
 
 TEMPLATE = app
diff --git a/pkg/appimage/appimage-desktopintegration_ocs-url b/pkg/appimage/appimage-desktopintegration_ocs-url
deleted file mode 100755
index 7fe9f5e9a07a978c0e64cb9ac7d82daef70c4eba..0000000000000000000000000000000000000000
--- a/pkg/appimage/appimage-desktopintegration_ocs-url
+++ /dev/null
@@ -1,208 +0,0 @@
-#!/bin/bash
-
-# The purpose of this script is to provide lightweight desktop integration
-# into the host system without special help from the host system.
-# If you want to have fuller and automatic desktop integration, you might
-# consider to use the optional appimaged daemon instead.
-
-# Exit on errors
-set -e
-
-# Be verbose if $DEBUG=1 is set
-if [ ! -z "$DEBUG" ] ; then
-  env
-  set -x
-fi
-
-THIS="$0"
-args=("$@") # http://stackoverflow.com/questions/3190818/
-NUMBER_OF_ARGS="$#"
-
-# Please do not change $VENDORPREFIX as it will allow for desktop files
-# belonging to AppImages to be recognized by future AppImageKit components
-# such as desktop integration daemons
-VENDORPREFIX=appimagekit
-
-APPDIR="$(dirname "$(readlink -f "${THIS}")")"
-
-BIN="${APPDIR}/ocs-url"
-export PATH="${APPDIR}/usr/bin:$PATH"
-
-trap atexit EXIT
-
-# Note that the following handles 0, 1 or more arguments (file paths)
-# which can include blanks but uses a bashism; can the same be achieved
-# in POSIX-shell? (FIXME)
-# http://stackoverflow.com/questions/3190818
-atexit()
-{
-if [ $NUMBER_OF_ARGS -eq 0 ] ; then
-  exec "${BIN}"
-else
-  exec "${BIN}" "${args[@]}"
-fi
-}
-
-error()
-{
-  if [ -x /usr/bin/zenity ] ; then
-    LD_LIBRARY_PATH="" zenity --error --text "${1}" 2>/dev/null
-  elif [ -x /usr/bin/kdialog ] ; then
-    LD_LIBRARY_PATH="" kdialog --msgbox "${1}" 2>/dev/null
-  elif [ -x /usr/bin/Xdialog ] ; then
-    LD_LIBRARY_PATH="" Xdialog --msgbox "${1}" 2>/dev/null
-  else
-    echo "${1}"
-  fi
-  exit 1
-}
-
-yesno()
-{
-  TITLE=$1
-  TEXT=$2
-  if [ -x /usr/bin/zenity ] ; then
-    LD_LIBRARY_PATH="" zenity --question --title="$TITLE" --text="$TEXT" 2>/dev/null || exit 0
-  elif [ -x /usr/bin/kdialog ] ; then
-    LD_LIBRARY_PATH="" kdialog --caption "" --title "$TITLE" -yesno "$TEXT" || exit 0
-  elif [ -x /usr/bin/Xdialog ] ; then
-    LD_LIBRARY_PATH="" Xdialog --title "$TITLE" --clear --yesno "$TEXT" 10 80 || exit 0
-  else
-    echo "zenity, kdialog, Xdialog missing. Skipping ${THIS}."
-    exit 0
-  fi
-}
-
-check_prevent()
-{
-  FILE=$1
-  if [ -e "$FILE" ] ; then
-    exit 0
-  fi
-}
-
-# Exit immediately of one of these files is present
-# (e.g., because the desktop environment wants to handle desktop integration itself)
-check_prevent "$HOME/.local/share/$VENDORPREFIX/no_desktopintegration"
-check_prevent "/usr/share/$VENDORPREFIX/no_desktopintegration"
-check_prevent "/etc/$VENDORPREFIX/no_desktopintegration"
-
-# Exit immediately if appimaged is running
-pidof appimaged 2>/dev/null && exit 0
-
-# Exit immediately if $DESKTOPINTEGRATION is not empty
-if [ ! -z "$DESKTOPINTEGRATION" ] ; then
-  exit 0
-fi
-
-check_dep()
-{
-  DEP=$1
-  if [ -z $(which $DEP) ] ; then
-    echo "$DEP is missing. Skipping ${THIS}."
-    exit 0
-  fi
-}
-
-DIRNAME="$APPDIR"
-
-# Check whether dependencies are present in base system (we do not bundle these)
-# http://cgit.freedesktop.org/xdg/desktop-file-utils/
-check_dep desktop-file-validate
-check_dep update-desktop-database
-check_dep desktop-file-install
-check_dep xdg-icon-resource
-check_dep xdg-mime
-check_dep xdg-desktop-menu
-
-DESKTOPFILE=$(find "$APPDIR" -maxdepth 1 -name "*.desktop" | head -n 1)
-# echo "$DESKTOPFILE"
-DESKTOPFILE_NAME=$(basename "${DESKTOPFILE}")
-
-if [ ! -f "$DESKTOPFILE" ] ; then
-  echo "Desktop file is missing. Please run ${THIS} from within an AppImage."
-  exit 0
-fi
-
-if [ -z "$APPIMAGE" ] ; then
-  APPIMAGE="$APPDIR/AppRun"
-  # Not running from within an AppImage; hence using the AppRun for Exec=
-fi
-
-ABS_APPIMAGE=$(readlink -e "$APPIMAGE")
-ICONFILE="$APPDIR/.DirIcon"
-
-# $XDG_DATA_DIRS contains the default paths /usr/local/share:/usr/share
-# desktop file has to be installed in an applications subdirectory
-# of one of the $XDG_DATA_DIRS components
-if [ -z "$XDG_DATA_DIRS" ] ; then
-  XDG_DATA_DIRS=/usr/local/share:/usr/share
-fi
-
-# Determine where the desktop file should be installed
-if [[ $EUID -ne 0 ]]; then
-   DESTINATION_DIR_DESKTOP="$HOME/.local/share/applications"
-   SYSTEM_WIDE=""
-else
-   # TODO: Check $XDG_DATA_DIRS
-   DESTINATION_DIR_DESKTOP="/usr/local/share/applications"
-   SYSTEM_WIDE="--mode system" # for xdg-mime and xdg-icon-resource
-fi
-
-# Check if the desktop file is already there
-# and if so, whether it points to the same AppImage
-if [ -e "$DESTINATION_DIR_DESKTOP/$VENDORPREFIX-$DESKTOPFILE_NAME" ] ; then
-  # echo "$DESTINATION_DIR_DESKTOP/$VENDORPREFIX-$DESKTOPFILE_NAME already there"
-  EXEC=$(grep "^Exec=" "$DESTINATION_DIR_DESKTOP/$VENDORPREFIX-$DESKTOPFILE_NAME" | head -n 1 | cut -d " " -f 1)
-  # echo $EXEC
-  if [ "Exec=\"$APPIMAGE\"" == "$EXEC" ] ; then
-    exit 0
-  fi
-fi
-
-# We ask the user only if we have found no reason to skip until here
-if [ -z "$SKIP" ] ; then
-  yesno "Install" "Would you like to integrate $APPIMAGE with your system?\n\nThis will add it to your applications menu and install icons.\nIf you don't do this you can still launch the application by double-clicking on the AppImage."
-fi
-
-APP=$(echo "$DESKTOPFILE_NAME" | sed -e 's/.desktop//g')
-
-# If the user has agreed, rewrite and install the desktop file, and the MIME information
-if [ -z "$SKIP" ] ; then
-  # desktop-file-install is supposed to install .desktop files to the user's
-  # applications directory when run as a non-root user,
-  # and to /usr/share/applications if run as root
-  # but that does not really work for me...
-  #
-  # For Exec we must use quotes
-  # For TryExec quotes is not supported, so, space must be replaced to \s
-  # https://askubuntu.com/questions/175404/how-to-add-space-to-exec-path-in-a-thumbnailer-descrption/175567
-  desktop-file-install --rebuild-mime-info-cache \
-    --vendor=$VENDORPREFIX --set-key=Exec --set-value="\"${APPIMAGE}\" %u" \
-    --set-key=X-AppImage-Comment --set-value="Generated by ${THIS}" \
-    --set-icon="$ICONFILE" --set-key=TryExec --set-value=${APPIMAGE// /\\s} "$DESKTOPFILE" \
-    --dir "$DESTINATION_DIR_DESKTOP"
-  chmod a+x "$DESTINATION_DIR_DESKTOP/"*
-  RESOURCE_NAME=$(echo "$VENDORPREFIX-$DESKTOPFILE_NAME" | sed -e 's/.desktop//g')
-  # echo $RESOURCE_NAME
-
-  # Install the icon files for the application; TODO: scalable
-  ICONS=$(find "${APPDIR}/usr/share/icons/" -wholename "*/apps/${APP}.png" 2>/dev/null || true)
-  for ICON in $ICONS ; do
-    ICON_SIZE=$(echo "${ICON}" | rev | cut -d "/" -f 3 | rev | cut -d "x" -f 1)
-    xdg-icon-resource install --context apps --size ${ICON_SIZE} "${ICON}" "${RESOURCE_NAME}"
-  done
-
-  # Install mime type
-  find "${APPDIR}/usr/share/mime/" -type f -name *xml -exec xdg-mime install $SYSTEM_WIDE --novendor {} \; 2>/dev/null || true
-
-  # Install the icon files for the mime type; TODO: scalable
-  ICONS=$(find "${APPDIR}/usr/share/icons/" -wholename "*/mimetypes/*.png" 2>/dev/null || true)
-  for ICON in $ICONS ; do
-    ICON_SIZE=$(echo "${ICON}" | rev | cut -d "/" -f 3 | rev | cut -d "x" -f 1)
-    xdg-icon-resource install --context mimetypes --size ${ICON_SIZE} "${ICON}" $(basename $ICON | sed -e 's/.png//g')
-  done
-
-  xdg-desktop-menu forceupdate
-  gtk-update-icon-cache # for MIME
-fi
diff --git a/pkg/archlinux/PKGBUILD b/pkg/archlinux/PKGBUILD
index 9a75c025dee6b4dd42c0d0d32241254c68c9a15f..e5ead658a4fb8037d7f8532377bc4cd27cf56a02 100644
--- a/pkg/archlinux/PKGBUILD
+++ b/pkg/archlinux/PKGBUILD
@@ -16,7 +16,7 @@ md5sums=() #autofill using updpkgsums
 prepare() {
     #cd "${pkgname}-release-${pkgver}"
     cd "${pkgname}"
-    sh scripts/import.sh
+    sh scripts/prepare.sh
 }
 
 build() {
diff --git a/pkg/fedora/ocs-url.spec b/pkg/fedora/ocs-url.spec
index 8203306c7578670a2f823ae4e6435f5b55edf3a5..093bfaa1fe9c316e73108856df676d5995f40adc 100644
--- a/pkg/fedora/ocs-url.spec
+++ b/pkg/fedora/ocs-url.spec
@@ -18,7 +18,7 @@ An install helper program for items served on OpenCollaborationServices (OCS).
 %prep
 #%%autosetup -n %{name}-release-%{version}
 %autosetup -n %{name}
-sh scripts/import.sh
+sh scripts/prepare.sh
 
 %build
 %define debug_package %{nil}
diff --git a/pkg/opensuse/ocs-url.spec b/pkg/opensuse/ocs-url.spec
index 74d89d799bec9274f523a612b67e73a7af0d8e49..22c07c56f76116bb43287a55e29acdb098da94c8 100644
--- a/pkg/opensuse/ocs-url.spec
+++ b/pkg/opensuse/ocs-url.spec
@@ -18,7 +18,7 @@ An install helper program for items served on OpenCollaborationServices (OCS).
 %prep
 #%%autosetup -n %{name}-release-%{version}
 %autosetup -n %{name}
-sh scripts/import.sh
+sh scripts/prepare.sh
 
 %build
 %define debug_package %{nil}
diff --git a/pkg/pkg.pri b/pkg/pkg.pri
index 8cf464f917cbede180ea0ed3b47e0c9cf3af2474..4f03e9851c762173174d92ca4a2d7e91db28533e 100644
--- a/pkg/pkg.pri
+++ b/pkg/pkg.pri
@@ -7,7 +7,4 @@ DISTFILES += \
     $${PWD}/ubuntu/debian/ocs-url.install \
     $${PWD}/fedora/ocs-url.spec \
     $${PWD}/opensuse/ocs-url.spec \
-    $${PWD}/archlinux/PKGBUILD \
-    $${PWD}/snap/snapcraft.yaml \
-    $${PWD}/snap/snap/gui/ocs-url.desktop \
-    $${PWD}/appimage/appimage-desktopintegration_ocs-url
+    $${PWD}/archlinux/PKGBUILD
diff --git a/pkg/snap/snap/gui/ocs-url.desktop b/pkg/snap/snap/gui/ocs-url.desktop
deleted file mode 100644
index f0b1b9c5d6b16e05f07a6f01beb76ed3c7b89509..0000000000000000000000000000000000000000
--- a/pkg/snap/snap/gui/ocs-url.desktop
+++ /dev/null
@@ -1,9 +0,0 @@
-[Desktop Entry]
-Name=ocs-url
-Exec=ocs-url.ocs-url %u
-Icon=${SNAP}/usr/share/icons/hicolor/scalable/apps/ocs-url.svg
-Type=Application
-Terminal=false
-NoDisplay=true
-Categories=Network;Utility;
-MimeType=x-scheme-handler/ocs;x-scheme-handler/ocss;x-scheme-handler/xdg;x-scheme-handler/xdgs;
diff --git a/pkg/snap/snapcraft.yaml b/pkg/snap/snapcraft.yaml
deleted file mode 100644
index 149514f98279ca9bf3aba8611cb837d8cfe0c175..0000000000000000000000000000000000000000
--- a/pkg/snap/snapcraft.yaml
+++ /dev/null
@@ -1,42 +0,0 @@
-name: ocs-url
-version: '0.0.0'
-summary: OCS-URL
-description: |
-  An install helper program for items served on OpenCollaborationServices (OCS).
-
-grade: devel
-confinement: strict
-
-icon: desktop/ocs-url.svg
-
-parts:
-  ocs-url:
-    prepare: |
-      sh scripts/import.sh
-    plugin: qmake
-    source: ./
-    qt-version: qt5
-    options:
-      - PREFIX="/usr"
-    build-packages:
-      - build-essential
-      - qt5-default
-      - libqt5svg5-dev
-      - qtdeclarative5-dev
-      - git
-      - snapcraft
-    stage-packages:
-      - libqt5svg5
-      - qml-module-qtquick-controls
-    after:
-      - desktop-qt5
-
-apps:
-  ocs-url:
-    command: usr/bin/ocs-url
-    plugs:
-      - home
-      - network
-      - opengl
-      - x11
-      - unity7
diff --git a/pkg/ubuntu/debian/rules b/pkg/ubuntu/debian/rules
index 33be3a90e2248e692edaeba54bce693fbf795b02..1443dc99deb75afd069d3162bd574f42ea82ac2b 100755
--- a/pkg/ubuntu/debian/rules
+++ b/pkg/ubuntu/debian/rules
@@ -4,7 +4,7 @@
 	dh $@
 
 override_dh_auto_configure:
-	sh scripts/import.sh
+	sh scripts/prepare.sh
 	qmake PREFIX="/usr"
 
 override_dh_auto_install:
diff --git a/scripts/build-docker.sh b/scripts/build-docker.sh
index e459849541428e4fbdf3e8ec9283d647981864f7..8a6f7c199c4052e3944ffd8a9e1f38d2fdd5bc5f 100644
--- a/scripts/build-docker.sh
+++ b/scripts/build-docker.sh
@@ -1,9 +1,5 @@
 #!/bin/bash
 
-################################################################################
-# This is wrapper script for build.sh use from inside docker container
-################################################################################
-
 PKGNAME='ocs-url'
 
 PKGUSER='pkgbuilder'
@@ -97,37 +93,15 @@ build_archlinux() {
 }
 
 build_snap() {
-    # docker-image: ubuntu:16.04
-    apt update -qq
-    apt -y install build-essential qt5-default libqt5svg5-dev qtdeclarative5-dev
-    apt -y install git snapcraft
-    apt -y install curl
-
-    useradd -m ${PKGUSER}
-    export HOME="/home/${PKGUSER}"
-    chown -R ${PKGUSER}:${PKGUSER} "${PROJDIR}"
-
-    su -c "sh "${BUILDSCRIPT}" ${BUILDTYPE}" ${PKGUSER}
+    echo 'Not implemented yet'
+}
 
-    transfer_file "$(find "${PROJDIR}/build_"*${BUILDTYPE} -type f -name "${PKGNAME}*.snap")"
+build_flatpak() {
+    echo 'Not implemented yet'
 }
 
 build_appimage() {
-    # docker-image: ubuntu:14.04
-    apt update -qq
-    apt -y install build-essential qt5-default libqt5svg5-dev qtdeclarative5-dev
-    apt -y install git fuse zsync desktop-file-utils
-    apt -y install curl
-
-    modprobe fuse
-
-    useradd -m ${PKGUSER}
-    export HOME="/home/${PKGUSER}"
-    chown -R ${PKGUSER}:${PKGUSER} "${PROJDIR}"
-
-    su -c "sh "${BUILDSCRIPT}" ${BUILDTYPE}" ${PKGUSER}
-
-    transfer_file "$(find "${PROJDIR}/build_"*${BUILDTYPE} -type f -name "${PKGNAME}*.AppImage")"
+    echo 'Not implemented yet'
 }
 
 if [ "${BUILDTYPE}" = 'ubuntu' ]; then
@@ -140,9 +114,11 @@ elif [ "${BUILDTYPE}" = 'archlinux' ]; then
     build_archlinux
 elif [ "${BUILDTYPE}" = 'snap' ]; then
     build_snap
+elif [ "${BUILDTYPE}" = 'flatpak' ]; then
+    build_flatpak
 elif [ "${BUILDTYPE}" = 'appimage' ]; then
     build_appimage
 else
-    echo "sh $(basename "${0}") [ubuntu|fedora|archlinux|snap|appimage]"
+    echo "sh $(basename "${0}") [ubuntu|fedora|archlinux|snap|flatpak|appimage]"
     exit 1
 fi
diff --git a/scripts/build.sh b/scripts/build.sh
index c14b29473a5979b905336d565510dc54d7c712e9..b51ce138fe0669935f90a3fbf0781c45440b7ff4 100644
--- a/scripts/build.sh
+++ b/scripts/build.sh
@@ -1,9 +1,5 @@
 #!/bin/bash
 
-################################################################################
-# This is utility script to build distribution packages
-################################################################################
-
 PKGNAME='ocs-url'
 
 BUILDTYPE=''
@@ -71,48 +67,15 @@ build_archlinux() {
 }
 
 build_snap() {
-    cd "${PROJDIR}"
-    mkdir -p "${BUILDDIR}"
-    export_srcarchive "${SRCARCHIVE}"
+    echo 'Not implemented yet'
+}
 
-    tar -xzvf "${SRCARCHIVE}" -C "${BUILDDIR}"
-    cp "${PROJDIR}/pkg/snap/snapcraft.yaml" "${BUILDDIR}/${PKGNAME}"
-    cp -r "${PROJDIR}/pkg/snap/snap" "${BUILDDIR}/${PKGNAME}"
-    cd "${BUILDDIR}/${PKGNAME}"
-    snapcraft
+build_flatpak() {
+    echo 'Not implemented yet'
 }
 
 build_appimage() {
-    cd "${PROJDIR}"
-    mkdir -p "${BUILDDIR}"
-    export_srcarchive "${SRCARCHIVE}"
-
-    tar -xzvf "${SRCARCHIVE}" -C "${BUILDDIR}"
-    cd "${BUILDDIR}/${PKGNAME}"
-    sh scripts/import.sh
-    qmake
-    make
-    strip "${PKGNAME}"
-
-    cd "${BUILDDIR}"
-
-    # Replace linuxdeployqt download URL to official download URL when the stable version released
-    curl -L -o linuxdeployqt https://dl.dropboxusercontent.com/u/150776/temp/linuxdeployqt-799f704-x86-64.appimage
-    chmod 755 linuxdeployqt
-
-    mkdir -p "${BUILDDIR}/${PKGNAME}.AppDir/usr/bin"
-    install -m 755 -p "${BUILDDIR}/${PKGNAME}/${PKGNAME}" "${BUILDDIR}/${PKGNAME}.AppDir/${PKGNAME}"
-    install -m 644 -p "${BUILDDIR}/${PKGNAME}/desktop/${PKGNAME}.desktop" "${BUILDDIR}/${PKGNAME}.AppDir/${PKGNAME}.desktop"
-    install -m 644 -p "${BUILDDIR}/${PKGNAME}/desktop/${PKGNAME}.svg" "${BUILDDIR}/${PKGNAME}.AppDir/${PKGNAME}.svg"
-    install -m 755 -p /usr/bin/update-desktop-database "${BUILDDIR}/${PKGNAME}.AppDir/usr/bin/update-desktop-database"
-    install -m 755 -p /usr/bin/desktop-file-validate "${BUILDDIR}/${PKGNAME}.AppDir/usr/bin/desktop-file-validate"
-    install -m 755 -p /usr/bin/desktop-file-install "${BUILDDIR}/${PKGNAME}.AppDir/usr/bin/desktop-file-install"
-    ./linuxdeployqt "${BUILDDIR}/${PKGNAME}.AppDir/${PKGNAME}" -qmldir="${BUILDDIR}/${PKGNAME}/app/qml" -verbose=2 -bundle-non-qt-libs # https://github.com/probonopd/linuxdeployqt/issues/25
-    ./linuxdeployqt "${BUILDDIR}/${PKGNAME}.AppDir/${PKGNAME}" -qmldir="${BUILDDIR}/${PKGNAME}/app/qml" -verbose=2 -bundle-non-qt-libs # twice because of #25
-    rm "${BUILDDIR}/${PKGNAME}.AppDir/AppRun"
-    install -m 755 -p "${BUILDDIR}/${PKGNAME}/pkg/appimage/appimage-desktopintegration_${PKGNAME}" "${BUILDDIR}/${PKGNAME}.AppDir/AppRun"
-    ./linuxdeployqt --appimage-extract
-    ./squashfs-root/usr/bin/appimagetool "${BUILDDIR}/${PKGNAME}.AppDir"
+    echo 'Not implemented yet'
 }
 
 if [ "${BUILDTYPE}" = 'ubuntu' ]; then
@@ -125,9 +88,11 @@ elif [ "${BUILDTYPE}" = 'archlinux' ]; then
     build_archlinux
 elif [ "${BUILDTYPE}" = 'snap' ]; then
     build_snap
+elif [ "${BUILDTYPE}" = 'flatpak' ]; then
+    build_flatpak
 elif [ "${BUILDTYPE}" = 'appimage' ]; then
     build_appimage
 else
-    echo "sh $(basename "${0}") [ubuntu|fedora|archlinux|snap|appimage]"
+    echo "sh $(basename "${0}") [ubuntu|fedora|archlinux|snap|flatpak|appimage]"
     exit 1
 fi
diff --git a/scripts/import.sh b/scripts/import.sh
deleted file mode 100644
index 8fd990fb00c40f44aa290fc4138b94f14e0a6236..0000000000000000000000000000000000000000
--- a/scripts/import.sh
+++ /dev/null
@@ -1,11 +0,0 @@
-#!/bin/bash
-
-################################################################################
-# This is utility script to import build dependencies
-################################################################################
-
-PROJDIR="$(cd "$(dirname "${0}")/../" && pwd)"
-
-if [ ! -d "${PROJDIR}/lib/qtlib" ]; then
-    git clone https://github.com/akiraohgaki/qtlib.git -b release-0.2.0 --single-branch --depth=1 "${PROJDIR}/lib/qtlib"
-fi
diff --git a/scripts/prepare.sh b/scripts/prepare.sh
new file mode 100644
index 0000000000000000000000000000000000000000..b97eb7a293709ee3e23d12f486cb4d44b6dfebc8
--- /dev/null
+++ b/scripts/prepare.sh
@@ -0,0 +1,7 @@
+#!/bin/bash
+
+PROJDIR="$(cd "$(dirname "${0}")/../" && pwd)"
+
+if [ ! -d "${PROJDIR}/lib/qtil" ]; then
+    git clone https://github.com/akiraohgaki/qtil.git -b release-0.3.0 --single-branch --depth=1 "${PROJDIR}/lib/qtil"
+fi
diff --git a/scripts/scripts.pri b/scripts/scripts.pri
index a4a1c60eae14a275504996188ce7cff0e6b8853f..cffa148bd008ddfffec2f0f05d1057eb8496d54d 100644
--- a/scripts/scripts.pri
+++ b/scripts/scripts.pri
@@ -1,4 +1,4 @@
 DISTFILES += \
     $${PWD}/build-docker.sh \
     $${PWD}/build.sh \
-    $${PWD}/import.sh
+    $${PWD}/prepare.sh