diff --git a/scripts/linuxparty.py b/scripts/linuxparty.py
index 1e42a1f580c813d26c240dfb906a4d024ae18c8f..4d8bfe9b149db6df459428834ca284ee11f92c36 100755
--- a/scripts/linuxparty.py
+++ b/scripts/linuxparty.py
@@ -4,11 +4,83 @@
 import sys, os, io, subprocess
 import json
 import apt
-from PyQt5 import QtWidgets, QtGui, QtCore, QtDBus
+import dbus
+import traceback
+import tempfile
+from PyQt5 import QtWidgets, QtGui, QtCore
 from collections import OrderedDict
 
 cache = apt.cache.Cache()
 
+def get_devices():
+    devices = []
+    bus = dbus.SystemBus()
+    udisks_manager = bus.get_object("org.freedesktop.UDisks2", "/org/freedesktop/UDisks2")
+    manager_iface = dbus.Interface(udisks_manager, "org.freedesktop.DBus.ObjectManager")
+    try:
+        for k,v in manager_iface.GetManagedObjects().items():
+            drive_info = v.get("org.freedesktop.UDisks2.Block", {})
+            if drive_info.get("IdUsage") == "filesystem":
+                label = str(drive_info.get("IdLabel"))
+                device = bytearray(drive_info.get("Device")).replace(b"\x00",b"").decode("utf-8")
+                fs_info = v.get("org.freedesktop.UDisks2.Filesystem")
+                dbus_mpoints = fs_info.get("MountPoints")
+                mpoints = [bytearray(mpoint).replace(b"\x00",b"").decode("utf-8") for mpoint in dbus_mpoints]
+                devices.append((label, device, mpoints))
+    except Exception as ex:
+        traceback.print_exc(ex)
+        print("No devices found")
+    return devices
+
+def mount_stick(dev):
+    bus = dbus.SystemBus()
+    udisks = bus.get_object("org.freedesktop.UDisks2", "/org/freedesktop/UDisks2/block_devices/%s"%(dev,))
+    iface = dbus.Interface(udisks, "org.freedesktop.UDisks2.Filesystem")
+    res = None
+    try:
+        res = bytearray(iface.Mount()).replace(b"\x00",b"").decode("utf-8")
+    except Exception as ex:
+        traceback.print_exc(ex)
+        print("Could not mount %s"%(dev,))
+    return res
+
+def find_lipstick():
+    devices = get_devices()
+    stick = None
+    for device in devices:
+        if device[0].lower()=="lipstick":
+            stick = device
+    return stick
+
+def enable_offline_repo(gui):
+    try_again = True
+    stick = None
+    while True:
+        stick = find_lipstick()
+        if stick is not None:
+            if len(stick[2])<1:
+                mount_stick(stick[1])
+                stick = find_lipstick()
+
+        if stick is None or (type(stick) is tuple and len(stick[2])<=0):
+            choice = QtWidgets.QMessageBox.question(gui, 'LIPStick nicht gefunden!', "Möchtest du noch einmal versuchen den LIPStick zu finden?", QtWidgets.QMessageBox.Yes | QtWidgets.QMessageBox.No)
+            if choice == QtWidgets.QMessageBox.No:
+                try_again = False
+        else:
+            try_again = False
+        if not try_again:
+            break
+
+    if stick is None:
+        QtWidgets.QMessageBox.critical(gui, "Kein LIPStick gefunden", "Es wird ohne LIPStick weiter gemacht")
+        return
+
+    subprocess_wrap(['/bin/bash', basedir+"/liprepoctl.sh", "on", stick[2][0]])
+
+def disable_offline_repo():
+    subprocess_wrap(['/bin/bash', basedir+"/liprepoctl.sh", "off"])
+
+
 def subprocess_wrap(what):
     proc = subprocess.Popen(what, stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
     while True:
@@ -115,11 +187,13 @@ def installProcess():
     window.ui.progressBar.show()
     window.ui.progressBar.setRange(0,0)
     pkglist = getPackagelistTree()
+    enable_offline_repo(window)
     installPackages(pkglist)
     #window.ui.progressBar.setRange(0,1)
     #window.ui.progressBar.setValue(1)
     makeDoku(pkglist)
     showSuccBox()
+    disable_offline_repo()
 
 def showSuccBox():
     succBox = QtWidgets.QMessageBox()
@@ -163,8 +237,7 @@ def checkIfRoot():
 
 def installPackages(strlist):
     global pkglist
-
-    cache.update(sources_list='')
+    cache.update()
     cache.open(None)
 
     for pkg in pkglist:
@@ -175,22 +248,20 @@ def installPackages(strlist):
         cache.commit(apt.progress.text.AcquireProgress(), apt.progress.base.InstallProgress())
     except Exception as ex:
         print("Error during install",ex)
-
 def enableFirewall():
     command=['ufw', 'enable']
     subprocess_wrap(command)
 
 def mountStick():
-    command=[basedir+"/infuse_offline_repo.sh"]
+    command=['/bin/bash', basedir+"/infuse_offline_repo.sh"]
     subprocess_wrap(command)
 
 def makeDoku(stringlist):
     global pkglist
 
-    #command=["echo", "./makeDoku.sh", basedir, " ".join(stringlist)]
-    command=["./makeDoku.sh", basedir+"/", " ".join(pkglist)]
+    command=['/bin/bash', basedir+"/makeDoku.sh", basedir+"/", " ".join(pkglist)]
     subprocess_wrap(command)
-
+    
 def getPackagelist():
     installList = []
     model = window.ui.tableView.model()
@@ -256,11 +327,10 @@ def fillTreeView(inputDataJson, treeView):
 
 if __name__ == '__main__':
     app = QtWidgets.QApplication(sys.argv)
-    basepath=os.path.realpath(__file__)
-    basedir=os.path.dirname(basepath)
+    basedir=os.path.dirname(os.path.realpath(__file__))
     checkIfRoot()
     chooseFirewall()
-    mountStick()
+    #mountStick()
     window = Main()
     window.setWindowTitle("Linux Install Party Software Installer")
     with open(basedir+'/../offline_repo.json', 'r') as inputfile:
diff --git a/scripts/linuxparty.sh b/scripts/linuxparty.sh
index 70af9f7425a8d7c82ee2d897b6d5b78c15bcbd0b..0c66cefb5b18d1b44c6c1f6aa6884995722db432 100644
--- a/scripts/linuxparty.sh
+++ b/scripts/linuxparty.sh
@@ -418,7 +418,7 @@ create_doc()
   USER_HOME=$(getent passwd "${SUDO_USER:-$USER}" | cut -d ':' -f6)
   cp "${WORKING_DIR}/DOCUMENTATION.gen.pdf" "${USER_HOME}/Deine-LIP-Dokumentation.pdf"
   RC=$?
-  pressenter "Dokummentation der von dir installierten Paktete wurde in deinem Benutzerverzeichnis ($HOME) als 'Deine-LIP-Dokumentation.pdf' abegelegt."
+  pressenter "Eine Dokumentation der von dir installierten Paktete wurde in deinem Benutzerverzeichnis ($HOME) als 'Deine-LIP-Dokumentation.pdf' abegelegt."
 
   return $RC
 }
diff --git a/scripts/makeDoku.sh b/scripts/makeDoku.sh
index cf54abed6e6e23572b385bb68c109e96c77010c3..49355b6697ce2a622a3486cd3f74b109e968cd6d 100755
--- a/scripts/makeDoku.sh
+++ b/scripts/makeDoku.sh
@@ -11,19 +11,20 @@ else
     shift
 fi
 
+if [ ! -f "$DOCUDIR/HEADER.tex" ]; then #HEADER muss ex. sonst kommt auf keinen Fall was sinnvolles bei rum
+    echo "Leider ist keine Dokumentation auf dem LIP-Stick vorhanden..."
+    exit 0 #linuxparty.sh soll auch ohne Doku Verzeichnis laufen
+fi
+
 if [ $# -eq 0 ]
 then
     echo "No packages supplied"
     exit 1
 else
-    PACKAGELIST=$@
+    PACKAGELIST="$@ FOOTER"
     echo $PACKAGELIST
 fi
 
-if [ ! -f "$DOCUDIR/HEADER.tex" ]; then #HEADER muss ex. sonst kommt auf keinen Fall was sinnvolles bei rum
-    echo "Leider ist keine Dokumentation auf dem LIP-Stick vorhanden..."
-    exit 0 #linuxparty.sh soll auch ohne Doku Verzeichnis laufen
-fi
 
 WORKING_DIR=$(mktemp -d)
 cp -a "$DOCUDIR/." "$WORKING_DIR"