diff --git a/CentOS/7.5-ESPRESO/CentOS-7.5-Bootstrap b/CentOS/7.5-ESPRESO/CentOS-7.5-Bootstrap
deleted file mode 100644
index d5fe1df39a95565e6ce142e96f0ce698ac53afab..0000000000000000000000000000000000000000
--- a/CentOS/7.5-ESPRESO/CentOS-7.5-Bootstrap
+++ /dev/null
@@ -1,58 +0,0 @@
-Bootstrap: docker
-From: centos:latest
-
-%post
-yum -y update && yum -y upgrade
-
-# CentOS repo
-yum -y install python gcc make wget vim mc procps tcl gcc-c++ gcc-gfortran pkg-config acl acpid alsa-lib alsa-lib-devel amtu apr aspell at atk atk-devel attr audit audit-libs audit-libs-python authconfig autoconf autofs automake avahi-glib avahi-libs basesystem bash bc bind-libs bind-utils binutils binutils-devel bison bison-devel bluez-libs bridge-utils busybox bzip2 bzip2-devel bzip2-libs ca-certificates cairo cairo-devel c-ares ccid cdparanoia-libs centos-indexhtml centos-release checkpolicy chkconfig cloog-ppl compat-libcap1 compat-libstdc++-33 compat-readline5 ConsoleKit ConsoleKit-libs coolkey coreutils coreutils-libs cpio cpp cppunit cpupowerutils cpuspeed cracklib cracklib-dicts crash crda cronie cronie-anacron crontabs cryptsetup-luks cryptsetup-luks-libs cups cups-libs curl cvs cyrus-sasl cyrus-sasl-devel cyrus-sasl-gssapi cyrus-sasl-lib cyrus-sasl-plain dash db4 db4-cxx db4-devel db4-utils dbus dbus-devel dbus-glib dbus-glib-devel dbus-libs dbus-python dejavu-fonts-common dejavu-lgc-sans-mono-fonts dejavu-sans-mono-fonts desktop-file-utils device-mapper device-mapper-event device-mapper-event-libs device-mapper-libs device-mapper-multipath device-mapper-multipath-libs device-mapper-persistent-data diffutils dmidecode dmraid dmraid-events dmz-cursor-themes docbook-dtds docbook-style-dsssl docbook-style-xsl docbook-utils dos2unix dosfstools dracut dracut-kernel dracut-network dump e2fsprogs e2fsprogs-devel e2fsprogs-libs ed eggdbus eject elfutils-libelf elfutils-libelf-devel elfutils-libs emacs emacs-common environment-modules ethtool expat expat-devel expect file file-devel file-libs filesystem findutils finger fipscheck fipscheck-lib flac fontconfig fontconfig-devel fontpackages-filesystem foomatic foomatic-db foomatic-db-filesystem foomatic-db-ppds freeglut freeglut-devel freetype freetype-devel ftp fuse fuse-libs gamin gamin-python gawk gcc gcc-c++ gcc-gfortran GConf2 GConf2-devel gd gdb gdbm gdbm-devel gdk-pixbuf2 gdk-pixbuf2-devel genisoimage gettext gettext-devel gettext-libs ghostscript ghostscript-fonts giflib git glib2 glib2-devel glibc glibc-common glibc-debuginfo glibc-debuginfo-common glibc-devel glibc-headers glx-utils gmp gmp-devel gnome-icon-theme gnome-keyring gnome-keyring-devel gnome-themes gnome-vfs2 gnome-vfs2-devel gnupg2 gnuplot gnuplot-common gnutls gnutls-devel gperf gpgme gpm gpm-libs grep groff grub grubby gstreamer gstreamer-plugins-base gstreamer-tools gtk2 gtk2-devel gtk2-engines gtk-doc gzip hal hal-devel hal-info hal-libs hdparm hesiod hicolor-icon-theme hunspell hwdata hwloc hwloc-devel ilmbase ImageMagick indent info initscripts iproute iptables iptables-ipv6 iptstate iputils irqbalance iscsi-initiator-utils iso-codes iw jasper-libs jwhois kbd kbd-misc kernel kernel kernel-devel kernel-firmware kernel-headers keyutils keyutils-libs keyutils-libs-devel kpartx krb5-devel krb5-libs krb5-workstation ksh lcms-libs less lftp libacl libacl-devel libaio libart_lgpl libart_lgpl-devel libasyncns libattr libattr-devel libbasicobjects libblkid libbonobo libbonobo-devel libbonoboui libbonoboui-devel libcanberra libcanberra-gtk2 libcap libcap-devel libcap-ng libcgroup libcollection libcom_err libcom_err-devel libcroco libcroco-devel libcxgb3 libcxgb4 libdaemon libdhash libdrm libdrm-devel libedit libedit-devel libevent libexif libffi libfontenc libgcc libgcj libgcrypt libgcrypt-devel libgfortran libglade2 libglade2-devel libgnome libgnomecanvas libgnomecanvas-devel libgnome-devel libgomp libgpg-error libgpg-error-devel libgsf libgsf-devel libgssglue libgudev1 libhugetlbfs libibcm libibcm-devel libibverbs libibverbs-devel libibverbs-devel-static libibverbs-utils libICE libICE-devel libicu libIDL libIDL-devel libidn libidn-devel libini_config libipa_hbac libjpeg-turbo libjpeg-turbo-devel libldb libmcpp libmlx4 libmlx5 libmng libmng-devel libmthca libmthca-static libnetfilter_conntrack libnfnetlink libnih libnl libnl-devel libnotify libogg liboil libotf libpath_utils libpcap libpciaccess libpciaccess-devel libpng libpng-devel libproxy libproxy-bin libproxy-python libref_array librsvg2 librsvg2-devel libselinux libselinux-devel libselinux-python libselinux-utils libsemanage libsepol libsepol-devel libSM libSM-devel libsndfile libss libssh2 libsss_idmap libstdc++ libstdc++-devel libsysfs libsysfs-devel libtalloc libtasn1 libtasn1-devel libtdb libtevent libthai libtheora libtiff libtiff-devel libtirpc libtool-ltdl libudev libudev-devel libunistring libusb libusb1 libusb-devel libuser libutempter libuuid libvisual libvorbis libwmf libwmf-lite libwnck libX11 libX11-common libX11-devel libXau libXau-devel libXaw libXaw-devel libxcb libxcb-devel libXcomposite libXcomposite-devel libXcursor libXcursor-devel libXdamage libXdamage-devel libXdmcp libXdmcp-devel libXext libXext-devel libXfixes libXfixes-devel libXfont libXft libXft-devel libXi libXi-devel libXinerama libXinerama-devel libxkbfile libxml2 libxml2-devel libxml2-python libXmu libXmu-devel libXp libXpm libXpm-devel libXrandr libXrandr-devel libXrender libXrender-devel libXres libXScrnSaver libXScrnSaver-devel libxslt libxslt-devel libXt libXt-devel libXtst libXtst-devel libXv libXv-devel libXxf86misc libXxf86misc-devel libXxf86vm libXxf86vm-devel lm_sensors-libs lockdev logrotate lsof lvm2 lvm2-libs lynx lzo m17n-db m17n-db-datafiles m17n-lib m2crypto m4 mailcap mailx make MAKEDEV man man-pages mc mcpp mcstrans mdadm mesa-dri1-drivers mesa-dri-drivers mesa-dri-filesystem mesa-libGL mesa-libGL-devel mesa-libGLU mesa-libGLU-devel mesa-private-llvm mgetty microcode_ctl mingetty mkbootdisk mlocate module-init-tools mpfr mtools mtr mysql-libs nano nc ncurses ncurses-base ncurses-devel ncurses-libs net-snmp net-snmp-libs net-tools newt newt-python nfs-utils nfs-utils-lib nmap notification-daemon nscd nspr nspr-devel nss nss_db nss-devel nss-softokn nss-softokn-debuginfo nss-softokn-devel nss-softokn-freebl nss-softokn-freebl-devel nss-sysinit nss-tools nss-util nss-util-devel ntp ntpdate ntsysv OpenEXR-libs OpenIPMI OpenIPMI-libs openjade openjpeg-libs openldap openldap-devel openmotif openmotif22 opensp openssh openssh-clients openssh-server ORBit2 ORBit2-devel p11-kit p11-kit-trust pam pam-devel pam_krb5 pam_passwdqc pam_pkcs11 pango pango-devel paps paps-libs parted passwd patch pax pciutils pciutils-devel pciutils-libs pcmciautils pcp pcp-conf pcp-libs pcre pcsc-lite pcsc-lite-libs perf perl perl-AppConfig perl-Authen-SASL perl-Bit-Vector perl-Carp-Clan perl-CGI perl-Class-Singleton perl-Compress-Raw-Zlib perl-Compress-Zlib perl-Convert-ASN1 perl-Crypt-PasswdMD5 perl-Date-Calc perl-Date-Manip perl-DateTime perl-DBD-Pg perl-DBI perl-devel perl-Digest-HMAC perl-Digest-SHA1 perl-Error perl-ExtUtils-MakeMaker perl-ExtUtils-ParseXS perl-File-Which perl-Git perl-GSSAPI perl-HTML-Parser perl-HTML-Tagset perl-IO-Compress-Base perl-IO-Compress-Zlib perl-IO-Socket-SSL perl-JSON perl-LDAP perl-libs perl-libwww-perl perl-List-MoreUtils perl-Module-Pluggable perl-Net-LibIDN perl-Net-SSLeay perl-Net-Telnet perl-Params-Validate perl-PCP-PMDA perl-Pod-Escapes perl-Pod-Simple perl-SGMLSpm perl-Socket6 perl-String-CRC32 perl-TermReadKey perl-Test-Harness perl-Test-Simple perl-Text-Iconv perl-Time-HiRes perl-URI perl-version perl-WWW-Curl perl-XML-Filter-BufferText perl-XML-LibXML perl-XML-NamespaceSupport perl-XML-Parser perl-XML-SAX perl-XML-SAX-Writer perl-XML-Simple perl-YAML-Syck pinentry pinfo pixman pixman-devel pkgconfig plymouth plymouth-core-libs plymouth-scripts pm-utils policycoreutils polkit poppler poppler-data poppler-utils popt popt-devel portreserve postfix postgresql postgresql-devel postgresql-libs postgresql-odbc ppl ppp prelink procmail procps psacct psmisc pth pulseaudio-libs pycairo pycairo-devel pygobject2 pygobject2-codegen pygobject2-devel pygobject2-doc pygpgme pygtk2 pygtk2-codegen pygtk2-devel pygtk2-doc pyOpenSSL pytalloc python python-argparse python-devel python-iniparse python-libs python-pcp python-pycurl python-setuptools python-sssdconfig python-urlgrabber qt qt3 qt-sqlite qt-x11 quota rarian rarian-compat rdate rdma readahead readline readline-devel redhat-logos redhat-lsb redhat-lsb-compat redhat-lsb-core redhat-lsb-graphics redhat-lsb-printing redhat-menus redhat-rpm-config rmt rootfiles rpcbind rpm rpm-devel rpm-libs rpm-python rp-pppoe rrdtool rsh rsync ruby ruby-libs samba samba4-libs samba-common samba-winbind samba-winbind-clients screen SDL SDL-devel sed selinux-policy setserial setup setuptool sgml-common sgpio shadow-utils shared-mime-info slang smartmontools snappy sos sound-theme-freedesktop sqlite sqlite-devel sssd sssd-ad sssd-client sssd-common sssd-common-pac sssd-ipa sssd-krb5 sssd-krb5-common sssd-ldap sssd-proxy startup-notification startup-notification-devel strace stunnel sudo swig symlinks sysfsutils syslinux syslinux-nonlinux sysstat system-gnome-theme system-icon-theme systemtap-devel sysvinit-tools t1lib talk tar tcl tcl-devel tcpdump tcp_wrappers tcp_wrappers-libs tcsh telnet time tk tmpwatch traceroute tree tunctl tzdata udev udftools unix2dos unixODBC unixODBC-devel unzip upstart urw-fonts usbutils usermode ustr util-linux-ng vconfig vim-common vim-enhanced vim-filesystem vim-minimal virt-what wget which wireless-tools words wpa_supplicant xcb-util xdg-utils xerces-c xerces-c-devel xinetd xkeyboard-config xml-common xmlrpc-c xmlrpc-c-client xorg-x11-fonts-100dpi xorg-x11-fonts-75dpi xorg-x11-font-utils xorg-x11-proto-devel xorg-x11-server-common xorg-x11-server-utils xorg-x11-xauth xorg-x11-xkb-utils xterm xz xz-libs xz-lzma-compat ypbind yp-tools yum yum-metadata-parser yum-plugin-auto-update-debug-info yum-plugin-fastestmirror yum-plugin-priorities yum-plugin-security yum-plugin-versionlock yum-utils zip zlib zlib-devel
-
-# Fedora repo
-yum -y install bash-completion pigz tmux
-
-yum -y groupinstall "Development Tools"
-
-cd /tmp
-
-# OpenMPI
-wget https://www.open-mpi.org/software/ompi/v2.1/downloads/openmpi-2.1.1.tar.gz
-tar xvf openmpi-2.1.1.tar.gz && cd openmpi-2.1.1
-./configure --prefix=/usr/local
-make -j 16
-make install
-
-# pip
-curl -s -O https://bootstrap.pypa.io/get-pip.py
-python get-pip.py
-
-pip install setuptools numpy scipy pandas wheel --upgrade
-
-# lua
-wget http://dl.fedoraproject.org/pub/epel/7/x86_64/Packages/l/lua-posix-32-2.el7.x86_64.rpm
-wget http://dl.fedoraproject.org/pub/epel/7/x86_64/Packages/l/lua-filesystem-1.6.2-2.el7.x86_64.rpm
-wget http://mirror.centos.org/centos/7/os/x86_64/Packages/lua-devel-5.1.4-15.el7.x86_64.rpm
-wget http://dl.fedoraproject.org/pub/epel/7/x86_64/Packages/l/lua-bitop-1.0.2-3.el7.x86_64.rpm
-
-rpm -ihv lua-devel-5.1.4-15.el7.x86_64.rpm
-rpm -ihv lua-filesystem-1.6.2-2.el7.x86_64.rpm
-rpm -ihv lua-bitop-1.0.2-3.el7.x86_64.rpm
-rpm -ihv lua-posix-32-2.el7.x86_64.rpm
-
-# Lmod
-wget https://github.com/TACC/Lmod/archive/7.7.7.tar.gz
-tar xvf 7.7.7.tar.gz
-cd Lmod-7.7.7
-./configure --prefix=/opt/apps
-make install
-
-# APPS and SCRATCH
-mkdir /apps
-mkdir /scratch
-
-%environment
-source /opt/apps/lmod/7.7.7/init/profile
-clearMT
-export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib
-export -f ml
-export -f module
-export -f clearMT
diff --git a/CentOS/7.5-ESPRESO/app/log_crawler.py b/CentOS/7.5-ESPRESO/app/log_crawler.py
deleted file mode 100644
index e7146eae4425f1e4a090de2cd3a865b62cbc7d02..0000000000000000000000000000000000000000
--- a/CentOS/7.5-ESPRESO/app/log_crawler.py
+++ /dev/null
@@ -1,151 +0,0 @@
-import sys
-import time
-import os
-import json
-import logging
-import shutil
-
-logging.basicConfig(level=logging.INFO)
-logger = logging.getLogger("Log crawler")
-
-PROGRESS_HEAD = '''<html>
-  <head>
-    <title>HPC job progress</title>
-    <script type="text/javascript">
-      function abort() {
-        notify_running_job("ABORT");
-      }
-    </script>
-  </head>'''
-
-PROGRESS_BODY='''<body style="margin: 20px; padding: 20px;">
-    <h1>HPC job progress</h1>
-    <div>
-    <h3>This is a waiter. It's waiting on the HPC cluster. It has waited {}/{} seconds.</h3>
-    <p>(Status from {}.)</p>
-    <p>Click the Abort button to stop the waiter early. Please click only once,
-    it will take a while until the request is processed. (The status might even
-    update once more before the job is aborted.)</p>
-    <input type="button" value="Abort" onclick="abort()">
-    </div>
-  </body>
-</html>
-'''
-
-PROGRESS_BODY_UNKNOWN='''<body style="margin: 20px; padding: 20px;">
-    <h1>HPC job progress</h1>
-    <div>
-    <h3>This is a waiter. It's waiting on the HPC cluster. Its status is unknown.</h3>
-    <input type="button" value="Abort job" onclick="abort()">
-    </div>
-  </body>
-</html>
-'''
-
-
-def main():
-    fn_log = sys.argv[1]
-    fn_status = sys.argv[2]
-
-    crawl_log(fn_log, fn_status)
-
-
-def crawl_log(fn_log, fn_status):
-    """Monitors a log file and creates html status pages from it
-
-    The log file is expected to grow only by one line at a time, with new lines
-    added to the end of the file. Each line is expected to be either a json
-    string containing the fields 'timestamp', 'elapsed_time', and 'total_time',
-    or the string 'FINISHED', which triggers the crawler to stop.
-
-    Note that this crawler is "memory-less", meaning that it cares only about
-    the last, newest line added to the log file while all prior lines are
-    disregarded.
-
-    Args:
-        fn_log (str): Filename of the log file to monitor
-        fn_status (str): Filename to write the status output to
-    """
-    logger.info("Log crawler starting up")
-    cached_stamp = 0
-    should_stop = False
-    while not should_stop:
-        if not os.path.exists(fn_log):
-            logger.info("Log file doesn't exist")
-        else:
-            # Check if "last modified" time of the log file has changed
-            stamp = os.stat(fn_log).st_mtime
-            if not stamp != cached_stamp:
-                logger.info("Log file hasn't changed since last check")
-            else:
-                logger.info("Log file has changed")
-                cached_stamp = stamp
-                
-                status = get_last_line(fn_log)
-                # We can stop crawling the logs if the main app is done
-                if status.strip() == "FINISHED":
-                    should_stop = True
-                    logger.info("Found FINISHED log, will stop now!")
-                # Otherwise, parse json and write status from it
-                else:
-                    try:
-                        log = json.loads(status)
-                        write_status(log, fn_status)
-                    except json.JSONDecodeError:
-                        write_status_unknown(fn_status)
-
-        time.sleep(1)
-    
-    logger.info("Log crawler terminating")
-
-
-def get_last_line(fn):
-    """Returns the last line of a file
-    
-    Args:
-        fn (str): File name of the file to read from
-    """
-    with open(fn, 'r') as fin:
-        for line in fin: 
-            pass
-        return line
-
-
-def write_status(log, fn_status):
-    """Writes a status html page using the information in 'log'
-
-    Args:
-        log (dict): Log containing the field 'timestamp', 'elapsed_time', and 
-            'total_time'
-        fn_status (str): Filename to write the status html to
-    """
-    status = PROGRESS_HEAD + PROGRESS_BODY.format(
-        log["elapsed_time"],
-        log["total_time"],
-        log["timestamp"],
-    )
-    # First write to a temporary file, then copy to actual status file. That
-    # way, the status file won't be corrupt if the writing process takes a 
-    # while.
-    fn_status_new = fn_status + '.new'
-    with open(fn_status_new, 'w') as fout:
-        fout.write(status)
-    shutil.copyfile(fn_status_new, fn_status)
-    
-    logger.info("Wrote status file")
-
-
-def write_status_unknown(fn_status):
-    """Writes a status html page when no actual status is known
-
-    Args:
-        fn_status (str): Filename to write the status html to
-    """
-    with open(fn_status, 'w') as fout:
-        fout.write(PROGRESS_HEAD + PROGRESS_BODY_UNKNOWN)
-    
-    logger.info("Wrote unknown status")
-
-
-if __name__ == "__main__":
-    main()
\ No newline at end of file
diff --git a/CentOS/7.5-ESPRESO/app/notifications_monitor.py b/CentOS/7.5-ESPRESO/app/notifications_monitor.py
deleted file mode 100644
index d12a92a40640de8e4893cf5ab044a1d3f0b9beee..0000000000000000000000000000000000000000
--- a/CentOS/7.5-ESPRESO/app/notifications_monitor.py
+++ /dev/null
@@ -1,65 +0,0 @@
-import os
-import time
-import sys
-import logging
-
-logging.basicConfig(level=logging.INFO)
-logger = logging.getLogger("Notifications monitor")
-
-
-def main():
-    fn_notifications = sys.argv[1]
-    fn_abort = sys.argv[2]
-
-    monitor(fn_notifications, fn_abort)
-
-
-def monitor(fn_notifications, fn_abort):
-    """
-    """
-    logger.info("Notifications monitor starting up")
-    cached_stamp = 0
-    while True:
-        if not os.path.exists(fn_notifications):
-            logger.info("Notifications file doesn't exist")
-        else:
-            # Check if "last modified" time of the file has changed
-            stamp = os.stat(fn_notifications).st_mtime
-            if not stamp != cached_stamp:
-                logger.info("Notifications file hasn't changed since last check")
-            else:
-                logger.info("Notifications file has changed")
-                cached_stamp = stamp
-                
-                command = get_last_line(fn_notifications).strip()
-                
-                if command == "ABORT":
-                    logger.info("Received abort command")
-                    # Abort the main app by creating a specific file
-                    open(fn_abort, 'a').close()
-                else:
-                    logger.info("Ignoring unknown command {}".format(command))
-
-        time.sleep(1)
-
-
-def get_last_line(fn):
-    """Returns the last line of a file
-
-    Returns an empty string if the file is empty.
-    
-    Args:
-        fn (str): File name of the file to read from
-    """
-    with open(fn, 'r') as fin:
-        i = -1
-        for i, line in enumerate(fin): 
-            pass
-        if i >= 0:
-            return line
-        else:
-            return ''
-
-
-if __name__ == "__main__":
-    main()
\ No newline at end of file
diff --git a/CentOS/7.5-ESPRESO/app/startup.py b/CentOS/7.5-ESPRESO/app/startup.py
deleted file mode 100644
index 6c1018bc17e00f9f740a9cf2bcdf502b01cf6a13..0000000000000000000000000000000000000000
--- a/CentOS/7.5-ESPRESO/app/startup.py
+++ /dev/null
@@ -1,94 +0,0 @@
-import subprocess
-import sys
-import os
-import string
-import random
-import shutil
-import logging
-
-logging.basicConfig(level=logging.INFO)
-logger = logging.getLogger("Startup")
-
-
-def main():
-    # Input arguments
-    seconds_to_wait = int(sys.argv[1])
-    app_folder = sys.argv[2]
-
-    # Pre-defined files for communication with the "outside world"
-    fn_status = '/service/status.html'
-    fn_result = '/service/result.txt'
-    fn_notifications = '/service/notifications.txt'
-
-    # Write dummy value into result file
-    logger.info("Writing dummy result")
-    with open(fn_result, 'w') as fout:
-        fout.write("UNSET")
-
-    # Define files for the main app in a unique folder
-    ID = generate_id('/home')
-    unique_folder = os.path.join('/home', ID)
-    os.mkdir(unique_folder)
-    fn_log = os.path.join(unique_folder, 'main_log.txt')
-    fn_abort = os.path.join(unique_folder, 'main_abort.txt')
-    logger.info("Created unique folder {}".format(unique_folder))
-
-    # 1: Start log crawler as a background process
-    # The log crawler monitors a single log file and creates status html pages
-    # from it
-    # The log crawler will automatically terminate when it reads the finishing
-    # log from the main application
-    logger.info("Starting log crawler")
-    log_crawler_script = os.path.join(app_folder, 'log_crawler.py')
-    command = ['python', log_crawler_script, fn_log, fn_status]
-    proc_log = subprocess.Popen(command)
-
-    # 2: Start the notifications monitor as a background process
-    # It monitors the notifications file (which is written to when messages are
-    # sent to the HPC service running this Singularity image) and translates
-    # messages into comands to the main application. Here, this is done simply
-    # by creating a specific file the main app looks for. Only a single command
-    # (abort) is supported.
-    # The notifications monitor does _not_ terminate by itself.
-    logger.info("Starting notifications monitor")
-    not_monitor_script = os.path.join(app_folder, 'notifications_monitor.py')
-    command = ['python', not_monitor_script, fn_notifications, fn_abort]
-    proc_not = subprocess.Popen(command)
-
-    # 3: Start the main application as a foreground process
-    # The main application will write to the log file monitored by the crawler,
-    # and it will write its final result into the result file.
-    # It will also check periodically for the existence of 'fn_abort' and quit
-    # if this file exists. (This is a cheap way of sending a command to the
-    # main app.)
-    logger.info("Starting waiter")
-    waiter_script = os.path.join(app_folder, 'wait_a_while.py')
-    command = ['python', waiter_script, str(seconds_to_wait), fn_log,
-        fn_result, fn_abort]
-    subprocess.run(command)
-    logger.info("Waiter finished, terminating processes")
-
-    # 4: Terminate notifications monitor and remove log folders
-    # As the main app is finished at this point, we can safely terminate the
-    # notifications monitor
-    proc_log.terminate()
-    proc_not.terminate()
-    shutil.rmtree(unique_folder)
-
-    # (Optional) 5: Process end result
-    # In case the final result of the main application (see step 3) is _not_
-    # just a simple file, we should call another script here which processes
-    # this end result and writes into the /service/result.txt file.
-
-
-def generate_id(folder, size=16, chars=string.ascii_uppercase + string.digits):
-    """Generates a random ID string which guaranteed not to exist in a folder"""
-    while True:
-        ID = ''.join(random.choice(chars) for _ in range(size))
-        if not os.path.exists(os.path.join(folder, ID)):
-            break
-    return ID
-
-
-if __name__ == "__main__":
-    main()
\ No newline at end of file
diff --git a/CentOS/7.5-ESPRESO/app/wait_a_while.py b/CentOS/7.5-ESPRESO/app/wait_a_while.py
deleted file mode 100644
index 5f08b0eeec5e870dac9621898405233980595cf3..0000000000000000000000000000000000000000
--- a/CentOS/7.5-ESPRESO/app/wait_a_while.py
+++ /dev/null
@@ -1,64 +0,0 @@
-import sys
-import time
-import datetime
-import json
-import os
-import logging
-
-logging.basicConfig(level=logging.INFO)
-logger = logging.getLogger("Waiter")
-
-
-def main():
-    seconds_to_wait = int(sys.argv[1])
-    fn_log = sys.argv[2]
-    fn_result = sys.argv[3]
-    fn_abort = sys.argv[4]
-    logger.info("Waiter starting up, will wait {} seconds".format(seconds_to_wait))
-    
-    for current_time in range(seconds_to_wait):
-        # Perform part of "complicated computation"
-        time.sleep(1)
-        
-        # Write log
-        write_log(fn_log, current_time, seconds_to_wait)
-
-        # Check if we should abort
-        if os.path.exists(fn_abort):
-            write_final_log(fn_log)
-            write_result(fn_result, current_time, aborted=True)
-            return 0
-    
-    write_final_log(fn_log)
-    write_result(fn_result, seconds_to_wait)
-
-
-def write_log(fn_log, elapsed_time, total_time):
-    log = {
-        'timestamp': str(datetime.datetime.now()),
-        'elapsed_time': str(elapsed_time),
-        'total_time': str(total_time),
-    }
-    with open(fn_log, 'a') as fout:
-        json.dump(log, fout)
-        fout.write("\n")
-    logger.info("Log written: {}/{} seconds waited".format(elapsed_time, total_time))
-
-
-def write_final_log(fn_log):
-    with open(fn_log, 'a') as fout:
-        fout.write("FINISHED\n")
-    logger.info("Final log written")
-
-
-def write_result(fn, seconds_waited, aborted=False):
-    with open(fn, 'w') as f:
-        if aborted:
-            f.write('Done. My waiting was aborted after {} seconds.'.format(seconds_waited))
-        else:
-            f.write('Done. I have waited {} seconds.'.format(seconds_waited))
-    logger.info("Result written")
-
-
-if __name__ == "__main__":
-    main()
diff --git a/CentOS/7.5-ESPRESO/heat.cpp b/CentOS/7.5-ESPRESO/heat.cpp
deleted file mode 100644
index e59fc155d1cf439f581627dcaa7984d8556812a9..0000000000000000000000000000000000000000
--- a/CentOS/7.5-ESPRESO/heat.cpp
+++ /dev/null
@@ -1,145 +0,0 @@
-# ESPRESO Configuration File
-
-#BENCHMARK ARG0 [ TETRA4, TETRA10, PYRAMID5, PYRAMID13, PRISMA6, PRISMA15, HEXA8, HEXA20 ]
-#BENCHMARK ARG10 [ TOTAL_FETI, HYBRID_FETI ]
-
-DEFAULT_ARGS {
-  0       HEXA8;
-
-  1           1;
-  2           1;
-  3           1;
-
-  4           2;
-  5           2;
-  6           2;
-
-  7           5;
-  8           5;
-  9           5;
-
-  10 TOTAL_FETI;
-}
-
-INPUT            GENERATOR;
-PHYSICS   HEAT_TRANSFER_3D;
-
-DECOMPOSITION {
-  BALANCE_CLUSTERS  TRUE;
-}
-
-GENERATOR {
-  SHAPE   GRID;
-
-  GRID {
-    LENGTH_X                   1;
-    LENGTH_Y                   1;
-    LENGTH_Z                   1;
-
-    NODES {
-      BOTTOM   <1 , 1> <0 , 1> <0 , 1>;
-      TOP      <0 , 0> <0 , 1> <0 , 1>;
-    }
-
-    ELEMENT_TYPE          [ARG0];
-
-    BLOCKS_X                   1;
-    BLOCKS_Y                   1;
-    BLOCKS_Z                   1;
-
-    CLUSTERS_X            [ARG1];
-    CLUSTERS_Y            [ARG2];
-    CLUSTERS_Z            [ARG3];
-
-    DOMAINS_X             [ARG4];
-    DOMAINS_Y             [ARG5];
-    DOMAINS_Z             [ARG6];
-
-    ELEMENTS_X            [ARG7];
-    ELEMENTS_Y            [ARG8];
-    ELEMENTS_Z            [ARG9];
-  }
-}
-
-HEAT_TRANSFER_3D {
-  LOAD_STEPS        1;
-
-  MATERIALS {
-    1 {
-      COORDINATE_SYSTEM {
-        TYPE     CYLINDRICAL;
-        CENTER   { X .5; Y .5; Z .5; }
-        ROTATION { X 90; }
-      }
-
-      DENS   1;
-      CP     1;
-
-      THERMAL_CONDUCTIVITY {
-        MODEL   DIAGONAL;
-
-        KXX            1;
-        KYY           10;
-        KZZ           10;
-      }
-    }
-  }
-
-  MATERIAL_SET {
-    ALL_ELEMENTS   1;
-  }
-
-  INITIAL_TEMPERATURE {
-    ALL_ELEMENTS   200;
-  }
-
-  STABILIZATION   CAU;
-  SIGMA             0;
-
-  LOAD_STEPS_SETTINGS {
-    1 {
-      DURATION_TIME     1;
-      TYPE   STEADY_STATE;
-      MODE         LINEAR;
-      SOLVER         FETI;
-
-      FETI {
-        METHOD             [ARG10];
-        PRECONDITIONER   DIRICHLET;
-        PRECISION            1E-08;
-        ITERATIVE_SOLVER       PCG;
-        REGULARIZATION    ANALYTIC;
-      }
-
-      TEMPERATURE {
-        TOP      100;
-        BOTTOM   300;
-      }
-    }
-  }
-}
-
-OUTPUT {
-  RESULTS_STORE_FREQUENCY    EVERY_TIMESTEP;
-  MONITORS_STORE_FREQUENCY   EVERY_TIMESTEP;
-
-  MONITORING {
-    1 {
-      REGION            TOP;
-      STATISTICS        MAX;
-      PROPERTY  TEMPERATURE;
-    }
-
-    2 {
-      REGION         BOTTOM;
-      STATISTICS        MIN;
-      PROPERTY  TEMPERATURE;
-    }
-
-    5 {
-      REGION   ALL_ELEMENTS;
-      STATISTICS        AVG;
-      PROPERTY  TEMPERATURE;
-    }
-  }
-}
diff --git a/Debian/8.0/Debian-8.0-Bootstrap b/Debian/8.0/Debian-8.0-Bootstrap
deleted file mode 100644
index 58dfc70db25b8c139005c3e921378330217195cd..0000000000000000000000000000000000000000
--- a/Debian/8.0/Debian-8.0-Bootstrap
+++ /dev/null
@@ -1,57 +0,0 @@
-Bootstrap: docker
-From: debian:jessie
-
-%post
-apt -y update && apt -y upgrade
-apt -y install python curl wget gcc g++ make vim mc libncurses-dev rsync tclsh lua5.2 liblua5.2 gfortran ssh
-
-curl -s -O https://bootstrap.pypa.io/get-pip.py
-python get-pip.py
-pip install setuptools python-graph-core python-graph-dot tabulate numpy scipy pandas wheel --upgrade
-
-wget https://github.com/luarocks/luarocks/archive/v2.4.2.tar.gz
-tar xvf v2.4.2.tar.gz
-cd luarocks-2.4.2
-./configure
-make build
-make install
-mkdir ~/.luarocks
-echo "fs_use_modules = false" > ~/.luarocks/config.lua
-luarocks install luaposix
-luarocks install luafilesystem
-LUAROCKS_PREFIX=/usr/local
-export LUA_PATH="$LUAROCKS_PREFIX/share/lua/5.1/?.lua;$LUAROCKS_PREFIX/share/lua/5.1/?/init.lua;;"
-export LUA_CPATH="$LUAROCKS_PREFIX/lib/lua/5.1/?.so;;"
-
-echo "# !/bin/bash" > /bin/logger
-echo "exit 0" >> /bin/logger
-chmod +x /bin/logger
-
-# Lmod
-wget https://github.com/TACC/Lmod/archive/7.7.7.tar.gz
-tar xvf 7.7.7.tar.gz
-cd Lmod-7.7.7
-./configure --prefix=/opt/apps
-make install
-
-# OpenMPI
-wget https://www.open-mpi.org/software/ompi/v2.1/downloads/openmpi-2.1.1.tar.gz
-tar xvf openmpi-2.1.1.tar.gz && cd openmpi-2.1.1
-./configure --prefix=/usr/local
-make -j 16
-make install
-
-cd /bin
-rm sh && ln -s /bin/bash sh
-
-# APPS and SCRATCH
-mkdir /apps
-mkdir /scratch
-
-%environment
-source /opt/apps/lmod/7.7.7/init/profile
-clearMT
-export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib
-export -f ml
-export -f module
-export -f clearMT
diff --git a/Ubuntu/16.04-OpenFOAM/README b/Ubuntu/16.04-OpenFOAM/README
deleted file mode 100644
index b60452a3a5236fff7b9c2befa3a67345c4f9ffbd..0000000000000000000000000000000000000000
--- a/Ubuntu/16.04-OpenFOAM/README
+++ /dev/null
@@ -1,74 +0,0 @@
-A few instruction for building an openfoam image to be used on the CFG platform.
-Openfoam in this image can be used directly, by calling the solver, or through a python procedure useful to monitor the calculation on the CFG platform.
-
-Usually I build a sandbox writable image. When it's ok, I build a read-only image to be uploaded on CFG platform.
-
-openfoamdev/ is the sandbox image, to be used for development and debug
-openfoam.simg is a non-writable image deployable on CFG platform
-
-
-BUILDING OF THE IMAGE
-
-To build the writable image, use the recipe-openfoam.txt recipe as follows
-
-   sudo singularity build -s openfoamdev recipe-openfoam.txt
-   
-Files in folders app and openfoam_hacks are needed with this recipe.
-In the app folders there are files needed for checking and monitoring the calculation.
-They can be modified or not added.
-Files in openfoam_hacks are needed to allows openfoam to run in the container.
-
-
-TESTING OF THE IMAGE
-
-To test the container, the two mountpoints requested by the CGF platform are to be creted.
-Of course they can reside in a folder different than ~.
-
-  mkdir ~/scratch
-  mkdir ~/service
-  
-- Serial test (direct call of the solver). Specify the solver and the case folder (-case option)
-
-  singularity -B ~/service:service ~/scratch:/scratch exec --cleanenv openfoamdev ###SOLVER###
-
-- Parallel test (direct call of the solver). Specify the solver, the case folder (-case option) and the number of processors.
-Of course, modify the system/decomposeParDict file accordingly.
-
-  singularity -B ~/service:service ~/scratch:/scratch exec --cleanenv openfoamdev decomposePar
-  mpirun -np ###PROCS#### singularity -B ~/service:service ~/scratch:/scratch exec --cleanenv openfoamdev ###SOLVER### -parallel
-
-NOTE When executing directly a solver in parallel mode, this can be a truly MPI calculation.
-     Instead, when testing the python procedure, only processors on one single node can be used.
-
-- Python procedure test.
-When using the python procedure, the solver, the case folder and the number of processors are specified on command line.
-The decomposePar utility is executed, then the solver is started through an mpirun command and the the check utility is started.
-As stated before, in this way only processors on a single node can be used. This will hopefully change in future.
-A webpage is displayed in "~/service/status.html". The abort button can't work locally, but only on the CFG platform.
-Anyway, the interrupt procedure is implemented. See /app/notification file.
-
-  singularity -B ~/service:service ~/scratch:/scratch --cleanenv exec openfoamdev /app/startup -s SOLVER -f FOLDER -p NUMBER_OF_PROCESSORS
-
-The /app/check file is to be modified in order to display the desided webpage.
-The parsing procedure is taylored for interFoam solver and can fail when parsing output of different solvers, so please modify it and test it locally.
-
-
-DEPLOYMENT ON CFG PLATFORM
-
-To build to a non writable image:
-   sudo singularity build openfoam.simg recipe-openfoam.txt
-
-The hpc_image script can be used to upload and register the new image on the CFG platform, 
-or to unregister and delete. Specify username, password and project in the script before using it.
-To upload and register 
-  
-  ./hpc_image upload openfoam.simg
-
-To unregister and delete
-
-  ./hpc_image delete openfoam.simg
-
-
-
-
-
diff --git a/Ubuntu/16.04-OpenFOAM/Ubuntu-16.04-Bootstrap b/Ubuntu/16.04-OpenFOAM/Ubuntu-16.04-Bootstrap
deleted file mode 100644
index 449fb93580d0c1c01844bcb90dd0dfb573ff389e..0000000000000000000000000000000000000000
--- a/Ubuntu/16.04-OpenFOAM/Ubuntu-16.04-Bootstrap
+++ /dev/null
@@ -1,105 +0,0 @@
-Bootstrap: docker
-From: ubuntu:16.04
-
-%post
-apt -y update && apt -y upgrade
-apt -y install python curl wget gcc g++ make vim mc libncurses-dev rsync tclsh lua5.2 liblua5.2 gfortran ssh apt-transport-https
-apt -y install dkms infiniband-diags libibverbs* ibacm librdmacm* libmlx4* libmlx5* mstflint libibcm.* libibmad.* libibumad* opensm srptools libmlx4-dev librdmacm-dev rdmacm-utils ibverbs-utils perftest vlan ibutils
-apt -y install libtool autoconf automake build-essential ibutils ibverbs-utils rdmacm-utils infiniband-diags perftest librdmacm-dev libibverbs-dev libmlx4-1 numactl libnuma-dev autoconf automake gcc g++ git libtool pkg-config
-apt -y install libnl-3-200 libnl-route-3-200 libnl-route-3-dev libnl-utils
-
-curl -s -O https://bootstrap.pypa.io/get-pip.py
-python get-pip.py
-pip install setuptools python-graph-core python-graph-dot tabulate numpy scipy pandas wheel --upgrade
-
-cd /tmp
-wget https://github.com/luarocks/luarocks/archive/v2.4.2.tar.gz
-tar xvf v2.4.2.tar.gz
-cd luarocks-2.4.2
-./configure
-make build
-make install
-mkdir ~/.luarocks
-echo "fs_use_modules = false" > ~/.luarocks/config.lua
-luarocks install luaposix
-luarocks install luafilesystem
-LUAROCKS_PREFIX=/usr/local
-export LUA_PATH="$LUAROCKS_PREFIX/share/lua/5.1/?.lua;$LUAROCKS_PREFIX/share/lua/5.1/?/init.lua;;"
-export LUA_CPATH="$LUAROCKS_PREFIX/lib/lua/5.1/?.so;;"
-
-echo "# !/bin/bash" > /bin/logger
-echo "exit 0" >> /bin/logger
-chmod +x /bin/logger
-
-# Lmod
-cd /tmp
-wget https://github.com/TACC/Lmod/archive/7.7.7.tar.gz
-tar xvf 7.7.7.tar.gz
-cd Lmod-7.7.7
-./configure --prefix=/opt/apps
-make install
-
-# OpenMPI
-cd /tmp
-wget https://www.open-mpi.org/software/ompi/v2.1/downloads/openmpi-2.1.1.tar.gz
-tar xvf openmpi-2.1.1.tar.gz && cd openmpi-2.1.1
-./configure --prefix=/usr/local \
-	--enable-orterun-prefix-by-default \
-	--enable-mpirun-prefix-by-default \
-	--enable-static \
-	--enable-shared \
-	--with-verbs
-
-make -j 16
-make install
-
-# APPS and SCRATCH
-mkdir /apps
-mkdir /scratch
-
-cd /bin
-rm sh && ln -s /bin/bash sh
-
-
-### folders and files ###
-
-mkdir /service  
-mv /opt/startup /app
-mv /opt/check /app
-mv /opt/monitor /app
-
-### set-up python3 ###  
-
-#apt install -y python3-pip python3-mpi4py
-#pip3 install numpy matplotlib
-  
-### install openfoam ###
-
-apt install -y software-properties-common wget
-add-apt-repository "http://dl.openfoam.org/ubuntu"
-sh -c "wget -O - http://dl.openfoam.org/gpg.key | apt-key add -"
-apt update
-apt install -y openfoam6
-echo '. /opt/openfoam6/etc/bashrc' >>$SINGULARITY_ENVIRONMENT
-
-### openfoam hacks ###
-
-#mv -f /opt/bashrc /opt/openfoam6/etc
-#mv -f /opt/aliases /opt/openfoam6/etc/config.sh
-#mv -f /opt/exec /.singularity.d/actions
-
-%environment
-source /opt/apps/lmod/7.7.7/init/profile
-clearMT
-export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib
-export -f ml
-export -f module
-export -f clearMT
-
-%files
-app/startup opt/
-app/check   opt/
-app/monitor opt/
-openfoam_hacks/bashrc opt/
-openfoam_hacks/aliases opt/
-openfoam_hacks/exec opt/
diff --git a/Ubuntu/16.04-OpenFOAM/app/check b/Ubuntu/16.04-OpenFOAM/app/check
deleted file mode 100755
index 41d949912ceb40b0b4555d65ca7135af53520b41..0000000000000000000000000000000000000000
--- a/Ubuntu/16.04-OpenFOAM/app/check
+++ /dev/null
@@ -1,183 +0,0 @@
-#!/usr/bin/python3
-
-'''
-   This file parses the solver log file and produces the webpage displayed
-   during the simulation. Also a webpage result is written after the end of the
-   simulation.
-   
-   The webpage displays just the residuals and the abort button. Of course it 
-   can be customized.
-   
-
-
-
-
-'''
-
-import time
-import sys
-from subprocess import check_output
-from os.path import isfile, basename
-from os import getcwd
-from shutil import copy
-import logging
-import base64
-
-import re
-import matplotlib
-matplotlib.use('Agg')
-import matplotlib.pyplot as plt
-
-
-
-PROGRESS_HEAD = '''<html>
-  <head>
-    <title>OPENFOAM job progress</title>
-    <script type="text/javascript">
-      function abort() {
-        notify_running_job("ABORT");
-      }
-    </script>
-  </head>'''
-  
-  
-PROGRESS_BODY='''<body style="margin: 20px; padding: 20px;">
-    <h3 align=center>Simulation {}</h3>
-    <p style="text-align:center;">
-<!--    Images to be embedded encoded in base64-->
-    <img src = "data:image/png;base64,{}" alt ="missing image">
-    </p>
-    <p style="text-align:center;">
-    <input type="button" value="Abort simulation" onclick="abort()">
-    </p>
-  </body>
-</html>
-'''
-
-'''
-  Regular expression needed to parse the log file
-'''
-_rx_dict = {
-    'time': re.compile(r'^Time = (?P<time>(\d+.\d+e[+-]\d+)|(\d+[.\d+]*))'),
-    'timestep': re.compile(r'^deltaT = (?P<timestep>(\d+.\d+e[+-]\d+)|(\d+[.\d+]*))'),
-    'residual': re.compile(r'''
-        ^\w+: \s+                                          # solver name
-        Solving \s for \s (?P<quantity>\w+(.\w+)*), \s     # field
-        Initial \s residual \s = \s                         
-        (?P<residual>(-?\d+.\d+e[+-]\d+)|(-?\d+[.\d+]*))   # residual value
-        ''',
-        re.VERBOSE),
-    'clock': re.compile(r'ExecutionTime = (?P<clock>\d+.\d+) s')
-    }
-    
-def _parse_line(line):
-    '''
-      Check if the line matches one of the regex in _rx_dict
-    '''
-    for key, rx in _rx_dict.items():
-        match = rx.search(line)
-        if match:
-            return key, match       
-    return None, None
-
-def give_nth_word(line,n):
-    try:
-        out = line.split()[n-1].strip(",")
-    except IndexError:
-        return ""
-    return out
-
-def parse_logfile(logfilename,data,offset=0):
-    '''
-      Parses the file LOGFILENAME starting from OFFSET line, putting requested 
-      data in list DATA and updating the OFFSET variable.
-      It is executed every 3 seconds (see main function).
-      Residuals, timestep, simulation time and clock time are parsed and 
-      appended to data, which is a list of list.
-    '''
-    time_data = {}
-    content = check_output(["cat",logfilename])
-    lines = content.decode("utf-8").splitlines(True)
-    for index,line in enumerate(lines):
-        if index > offset:
-            key, match = _parse_line(line)
-            if key == 'time':
-                time_data['time'] = float(match.group('time'))
-            if key == 'residual':
-                time_data[match.group('quantity')] = float(match.group('residual'))
-            if key == 'timestep':
-                time_data['timestep'] = float(match.group('timestep'))
-            if key == 'clock':
-                time_data['clock'] = float(match.group('clock'))
-                offset = index
-                data[0].append(time_data['time'])
-                data[1].append(time_data['timestep'])
-                data[2].append(time_data['Ux'])
-                data[3].append(time_data['Uy'])
-                data[4].append(time_data['Uz'])
-                data[5].append(time_data['p_rgh'])
-                data[6].append(time_data['clock'])
-    return offset
-
-def check_if_finished(logfilename):
-    with open(logfilename,'r') as logfile:
-        for line in logfile:
-            pass
-    if give_nth_word(line,1) == "Finalising":
-        return True
-    else:
-        return False
-
-def plot_images(data):
-    '''
-      Plot residual data and save it in a png file. This file will be embedded
-      in the webpage.
-    '''
-    try:
-        fig = plt.figure()
-        ax1 = fig.add_subplot(1,1,1)
-        ax1.set_xlabel('Time [s]')
-        ax1.set_ylabel('Residuals')
-        ax1.semilogy(data[0],data[2], label='ux')
-        ax1.semilogy(data[0],data[3], label='uy')
-        ax1.semilogy(data[0],data[4], label='uz')
-        ax1.semilogy(data[0],data[5], label='p')
-        leg = ax1.legend()
-        plt.savefig('/service/output.png')
-        plt.close()
-    except UserWarning:
-        return
-    return
-
-def main():
-    '''
-      Main function.
-      Every 3 seconds, che logfile is parsed, it is checked if the simulation is
-      finished, then the status webpage is updated.
-      In the end, the same webpage is written in the result file.
-    
-    '''
-    folder = sys.argv[1]
-    casename = basename((getcwd()))
-    logfilename = folder + '/' + casename + '.log'
-    statusfilename = '/service/status.html'
-    resultfilename = '/service/result.txt'
-    time.sleep(5)
-    finished = False
-    log_offset = 0
-    output_data = [[],[],[],[],[],[],[]]
-###    time, timestep, ux, uy, uz, pres, clock
-    while not finished:
-        time.sleep(3)
-        log_offset = parse_logfile(logfilename,output_data,log_offset)
-        finished = check_if_finished(logfilename)
-        plot_images(output_data)
-        with open('/service/output.png','rb') as imgfile:
-            b64image = base64.b64encode(imgfile.read()).decode()
-        with open(statusfilename,'w') as statfile:
-            statfile.write(str(PROGRESS_HEAD + PROGRESS_BODY.format(casename,b64image)))
-    with open(resultfilename,'w') as resfile:
-        resfile.write(str(PROGRESS_HEAD + PROGRESS_BODY.format(casename,b64image)))
-
-if __name__ == "__main__":
-    main()
diff --git a/Ubuntu/16.04-OpenFOAM/app/monitor b/Ubuntu/16.04-OpenFOAM/app/monitor
deleted file mode 100755
index 92943a226a4b279e10513e86dac597b176cef2f7..0000000000000000000000000000000000000000
--- a/Ubuntu/16.04-OpenFOAM/app/monitor
+++ /dev/null
@@ -1,62 +0,0 @@
-#!/usr/bin/env python3
-
-
-'''
-  This file checks if something is written in the notification file
-  If the message ABORT is written, the controlDict file is modified in order to
-  stop the simulation.
-  Other answers to other command could be implemented, if needed.
-
-'''
-
-
-import os
-import sys
-import logging
-import time
-from subprocess import check_output
-
-logging.basicConfig(level=logging.DEBUG)
-logger = logging.getLogger("Notifications monitor")
-
-def modify_dict(dictionary,keyword,value):
-  spaces = " " * (16-len(keyword))
-  try:
-    with open(dictionary,"r") as old_filedict:
-      with open(dictionary+"new","w") as new_filedict:
-        for line in old_filedict:
-          keys = line.split()
-          if (len(keys) > 1) and not "//" in keys[0]:
-            if keyword == keys[0]:
-              line = keyword + spaces + str(value) + ";\n"
-          print(line,end='',file=new_filedict) 
-    os.remove(dictionary)
-    os.rename(dictionary+"new",dictionary)
-  except FileNotFoundError:
-    print("File " + dictionary + " not found.\n")
-    exit()
-  return 
-
-def main():
-
-    logger.info("Notification monitor started")
-    folder = sys.argv[1]
-    dictFile = folder + '/system/controlDict'
-    cached_stamp = 0
-
-    while True:
-        if os.path.exists('/service/notifications.txt'):
-            stamp = os.stat('/service/notifications.txt').st_mtime
-            if stamp != cached_stamp:
-                logger.info("New notifications received")
-                cached_stamp = stamp
-                command = check_output(["tail","-1","/service/notifications.txt"]).strip().decode()
-                if command == "ABORT":
-                    logger.info("Received abort command")
-                    modify_dict(dictFile,"stopAt","writeNow")
-                else:
-                    logger.info("Ignoring unknown command {}".format(command))
-        time.sleep(1)
-
-if __name__ == "__main__":
-    main()
diff --git a/Ubuntu/16.04-OpenFOAM/app/startup b/Ubuntu/16.04-OpenFOAM/app/startup
deleted file mode 100755
index 0c2a461d5008601f5cf887322315239d66275ba5..0000000000000000000000000000000000000000
--- a/Ubuntu/16.04-OpenFOAM/app/startup
+++ /dev/null
@@ -1,106 +0,0 @@
-#!/usr/bin/env python3
-
-
-'''
-  This is the principal file.
-  It parses the command line, in which requested openFoam solver, case folder 
-  and number of processors are specified.
-  It decomposes the case, calls the check and monitor scripts, then calls 
-  the solver with the correct parameters and, finally, reconstructs the case.
-  
-  cmdline syntax:
-  
-    startup -s SOLVER [-f FOLDER] -p PROCESSORS
-    
-  The execution is parallel, but since mpi is called inside the container, 
-  processes are spawn only on one node, so there can be at maximum 16 processes
-  on Anselm ann 24 on Salomon.
- 
-  A truly parallel execution would probably require an mpi4py procedure.
-  
-  (Leonardo) It seems that subprocess commands don't work in conjunction with 
-             an mpi4py script. I have no idea on how to launch an MPI
-             openfoam solver from inside a MPI python script.
-
-'''
-
-from subprocess import Popen, run, DEVNULL
-from os import getcwd, chdir, rename, remove
-from os.path import basename, abspath
-import logging
-import argparse
-
-logging.basicConfig(level=logging.DEBUG)
-logger = logging.getLogger("Openfoam image logger")
-
-def command_line():
-    '''
-      Define and parses the command line arguments.
-      
-    '''
-    parser = argparse.ArgumentParser()
-    parser.add_argument('-solver',action='store',dest='solver')
-    parser.add_argument('-folder', action='store', dest='folder')
-    parser.add_argument('-processor',action='store', type=int, dest='np')
-    args = vars(parser.parse_args())
-    solver = args['solver']
-    folder = args['folder']
-    np = args['np']
-    return solver,folder,np
-    
-def modify_dict(dictionary,keyword,value):
-  '''
-   Modify the VALUE of the desired KEYWORD in the desider DICTIONARY
-  
-  '''    
-  spaces = " " * (16-len(keyword))
-  try:
-    with open(dictionary,"r") as old_filedict:
-      with open(dictionary+"new","w") as new_filedict:
-        for line in old_filedict:
-          keys = line.split()
-          if (len(keys) > 1) and not "//" in keys[0]:
-            if keyword == keys[0]:
-              line = keyword + spaces + str(value) + ";\n"
-          print(line,end='',file=new_filedict) 
-    remove(dictionary)
-    rename(dictionary+"new",dictionary)
-  except FileNotFoundError:
-    print("File " + dictionary + " not found.\n")
-    exit()
-  return 
-
-def main():
-    solver,folder,np = command_line()
-    # folder check
-    if folder is not None:
-        try:
-            chdir(folder)
-        except FileNotFoundError:
-            logger.error("Folder {} not found".format(folder))
-            exit()
-    else:
-        folder = getcwd()
-    folder = abspath(getcwd())
-    casename = basename(getcwd())
-    logfilename = folder + '/' + casename + '.log'
-    statusfilename = '/service/status.html'
-
-    with open(logfilename,'w') as logfile:
-        logger.info("Running decomposePar utility")
-        run(["decomposePar","-force"],stdout=logfile)
-        check_proc = Popen(["/app/check",folder])
-        monitor_proc = Popen(["/app/monitor",folder])
-        logger.info("Running {} on {} processors".format(solver,str(np)))
-        run(["mpirun","-np",str(np),solver,"-parallel","-case",folder],stdout=logfile)
-        logger.info("Running reconstructPar")
-        run(["reconstructPar"],stdout=DEVNULL)
-
-    monitor_proc.terminate()
-### in case of abort command, set the controlDict file in the original state
-    ctrlDict = folder + '/system/controlDict'
-    modify_dict(ctrlDict,"stopAt","endTime")
-    logger.info("Calculation ended")
-
-if __name__ == "__main__":
-    main()
diff --git a/Ubuntu/16.04-OpenFOAM/hpc_image b/Ubuntu/16.04-OpenFOAM/hpc_image
deleted file mode 100644
index 7072c9468da1ae9d21ef50cc765f0858a2a45ac2..0000000000000000000000000000000000000000
--- a/Ubuntu/16.04-OpenFOAM/hpc_image
+++ /dev/null
@@ -1,71 +0,0 @@
-#!/usr/bin/python3
-
-"""Ugly but working hard-coded test script for the HPC client"""
-""" 
-    For upload and register, hpc_image upload image_name
-    For unregister and delete, hpc_image delete image_name
-    
-    
-    N.B. Images are uploaded in /home/images folder in anselm cluster
-    N.B. Folder /home/images has to exist on the cluster
-    N.B. Username, password and project should be filled with needed values
-
-"""
-
-
-
-import os
-import filecmp
-import json
-
-import clfpy as cf
-import sys
-
-auth_url = "https://api.hetcomp.org/authManager/AuthManager?wsdl"
-hpc_url = "https://api.hetcomp.org/hpc_anselm/Images?wsdl"
-gss_url = "https://api.hetcomp.org/gss-0.1/FileUtilities?wsdl"
-username = ""
-password = ""
-project = ''
-
-
-print("Obtaining session token ...")
-auth = cf.AuthClient(auth_url)
-session_token = auth.get_session_token(username, project, password)
-
-gss = cf.GssClient(gss_url)
-hpc = cf.HpcImagesClient(hpc_url)
-
-
-
-def upload():
-    print("Uploading and registering a new image")
-    image_filepath = sys.argv[2]
-    gss_ID = "it4i_anselm://home/images/" + sys.argv[2]
-    print(gss.upload(gss_ID, session_token, image_filepath))
-    print(hpc.register_image(session_token, sys.argv[2], gss_ID))
-
-def delete():
-    print("Removing and deleting image")
-    print(hpc.delete_image(session_token, sys.argv[2]))  
-    gss_ID = "it4i_anselm://home/images/" + sys.argv[2]
-    print(gss.delete(gss_ID, session_token))
-
-
-def main():
-    if sys.argv[1] == "upload":
-        upload()
-    elif sys.argv[1] == "delete":
-        delete()
-        
-if __name__ == "__main__":
-    main()
-    
-
-
-
-
-
-
-
-
diff --git a/Ubuntu/16.04-OpenFOAM/openfoam6-linux b/Ubuntu/16.04-OpenFOAM/openfoam6-linux
deleted file mode 100644
index 619a88c550a6783a4264165952f9b098741c40cb..0000000000000000000000000000000000000000
--- a/Ubuntu/16.04-OpenFOAM/openfoam6-linux
+++ /dev/null
@@ -1,144 +0,0 @@
-#!/bin/sh
-#------------------------------------------------------------------------------
-# =========                 |
-# \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
-#  \\    /   O peration     |
-#   \\  /    A nd           | Copyright (C) 2017 OpenFOAM Foundation
-#    \\/     M anipulation  |
-#-------------------------------------------------------------------------------
-# License
-#     This program is free software: you can redistribute it and/or modify it
-#     under the terms of the GNU 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 General Public License
-#     for more details.
-#
-#     You should have received a copy of the GNU General Public License
-#     along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
-#
-# Script
-#     openfoam6-linux
-#
-# Description
-#     Run script for an OpenFOAM 6 Docker image at:
-#     https://hub.docker.com/r/openfoam
-#
-#------------------------------------------------------------------------------
-Script=${0##*/}
-VER=6
-
-usage () {
-    exec 1>&2
-    while [ "$#" -ge 1 ]; do echo "$1"; shift; done
-    cat <<USAGE
-
-Usage: ${0##*/} [OPTIONS]
-options:
-  -d | -dir            host directory mounted (defaults to current directory)
-  -x | -xhost          use custom X authority and give container host network
-  -h | -help           help
-
-Launches the OpenFOAM ${VER} Docker image.
-- Requires installation of docker-engine.
-- Runs a "containerized" bash shell environment where the user can run OpenFOAM
-  and, optionally, ParaView (see below).
-- The container mounts the user's file system so that case files are stored
-  permanently.  The container mounts the current directory by default, but the
-  user can also specify a particular directory using the "-d" option.
-- Mounting the user's HOME directory is disallowed.
-- The '-xhost' option is useful when accessing the host via 'ssh -X'.
-  This option should only be used when strictly necessary, as it relies on the
-  option '--net=host' when launching the container in Docker, which will
-  give to the container full access to the Docker host network stack and
-  potentially the host's system services that rely on network communication,
-  making it potentially insecure.
-
-Example:
-To store data in ${HOME}/OpenFOAM/${USER}-${VER}, the user can launch
-${Script} either by:
-    cd ${HOME}/OpenFOAM/${USER}-${VER} && ${Script}
-or
-    ${Script} -d ${HOME}/OpenFOAM/${USER}-${VER}
-
-Further Information:
-http://openfoam.org/download/6-linux
-
-Note:
-The container user name appears as "openfoam" but it is just an alias.
-
-USAGE
-    exit 1
-}
-
-DOCKER_IMAGE='openfoam/openfoam6-paraview54'
-MOUNT_DIR=$(pwd)
-CUSTOM_XAUTH=""
-DOCKER_OPTIONS=""
-
-while [ "$#" -gt 0 ]
-do
-   case "$1" in
-   -d | -dir)
-      [ "$#" -ge 2 ] || usage "'$1' option requires an argument"
-      MOUNT_DIR=$2
-      shift 2
-      ;;
-   -x | -xhost)
-      CUSTOM_XAUTH=yes
-      shift
-      ;;
-   -h | -help)
-      usage
-      ;;
-   *)
-      usage "Invalid option '$1'"
-      ;;
-    esac
-done
-
-[ -d "$MOUNT_DIR" ] || usage "No directory exists: $MOUNT_DIR"
-MOUNT_DIR=$(cd "$MOUNT_DIR" && pwd -P)
-
-[ "$MOUNT_DIR" = "$(cd "$HOME" && pwd -P)" ] && \
-    usage "Mount directory cannot be the user's home directory" \
-          "Make a subdirectory and run from there, e.g." \
-          "    mkdir -p ${HOME}/OpenFOAM/$(whoami)-${VER}" \
-          "    ${Script} -d ${HOME}/OpenFOAM/$(whoami)-${VER}"
-
-if [ -n "$CUSTOM_XAUTH" ]
-then
-    XAUTH_PATH="${MOUNT_DIR}/.docker.xauth.$$"
-    touch "${XAUTH_PATH}"
-
-    # Generate a custom X-authority file that allows any hostname
-    xauth nlist "$DISPLAY" |  sed -e 's/^..../ffff/' | \
-        xauth -f "$XAUTH_PATH" nmerge -
-
-    DOCKER_OPTIONS="-e XAUTHORITY=$XAUTH_PATH
-                    -v $XAUTH_PATH:$XAUTH_PATH
-                    --net=host"
-fi
-
-USER_ID=$(id -u 2> /dev/null)
-[ -n "$USER_ID" ] || usage "Cannot determine current user ID"
-GROUP_ID=$(id -g)
-
-HOME_DIR='/home/openfoam'
-
-echo "Launching $0"
-echo "User: \"$(id -un)\" (ID $USER_ID, group ID $GROUP_ID)"
-
-docker run -it \
-    --rm \
-    -e DISPLAY=$DISPLAY \
-    -u $USER_ID:$GROUP_ID \
-    -v /tmp/.X11-unix:/tmp/.X11-unix \
-    -v $MOUNT_DIR:$HOME_DIR \
-    $DOCKER_OPTIONS \
-    $DOCKER_IMAGE
-
-[ -n "$CUSTOM_XAUTH" -a -e "${XAUTH_PATH}" ] && rm "${XAUTH_PATH}"
diff --git a/Ubuntu/16.04-OpenFOAM/openfoam_hacks/aliases b/Ubuntu/16.04-OpenFOAM/openfoam_hacks/aliases
deleted file mode 100755
index 098874b986eac48aad426bfbdebd7a9442204e41..0000000000000000000000000000000000000000
--- a/Ubuntu/16.04-OpenFOAM/openfoam_hacks/aliases
+++ /dev/null
@@ -1,120 +0,0 @@
-#----------------------------------*-sh-*--------------------------------------
-# =========                 |
-# \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
-#  \\    /   O peration     |
-#   \\  /    A nd           | Copyright (C) 2011-2016 OpenFOAM Foundation
-#    \\/     M anipulation  |
-#------------------------------------------------------------------------------
-# License
-#     This file is part of OpenFOAM.
-#
-#     OpenFOAM is free software: you can redistribute it and/or modify it
-#     under the terms of the GNU General Public License as published by
-#     the Free Software Foundation, either version 3 of the License, or
-#     (at your option) any later version.
-#
-#     OpenFOAM 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 General Public License
-#     for more details.
-#
-#     You should have received a copy of the GNU General Public License
-#     along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
-#
-# File
-#     etc/config.sh/aliases
-#
-# Description
-#     Aliases for working with OpenFOAM
-#     Sourced from OpenFOAM-<VERSION>/etc/bashrc and/or ~/.bashrc
-#
-#------------------------------------------------------------------------------
-
-# Change compiled version aliases
-# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-alias wmSet='. $WM_PROJECT_DIR/etc/bashrc'
-alias wm64='wmSet WM_ARCH_OPTION=64'
-alias wm32='wmSet WM_ARCH_OPTION=32'
-alias wmSP='wmSet WM_PRECISION_OPTION=SP'
-alias wmDP='wmSet WM_PRECISION_OPTION=DP'
-
-# Clear env
-alias wmUnset='. $WM_PROJECT_DIR/etc/config.sh/unset'
-
-# Toggle wmakeScheduler on/off
-#  - also need to set WM_HOSTS
-# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-alias wmSchedOn='export WM_SCHEDULER=$WM_PROJECT_DIR/wmake/wmakeScheduler'
-alias wmSchedOff='unset WM_SCHEDULER'
-
-# Change directory aliases
-# ~~~~~~~~~~~~~~~~~~~~~~~~
-alias foam='cd $WM_PROJECT_DIR'
-
-if [ -n "$WM_PROJECT_SITE" ]
-then
-    alias foamSite='cd $WM_PROJECT_SITE'
-else
-    alias foamSite='cd $WM_PROJECT_INST_DIR/site'
-fi
-
-alias src='cd $FOAM_SRC'
-alias lib='cd $FOAM_LIBBIN'
-alias app='cd $FOAM_APP'
-alias sol='cd $FOAM_SOLVERS'
-alias util='cd $FOAM_UTILITIES'
-alias tut='cd $FOAM_TUTORIALS'
-alias run='cd $FOAM_RUN'
-
-
-# Refresh the environment
-# ~~~~~~~~~~~~~~~~~~~~~~~
-
-
-
-# For backward-compatibility unalias wmRefresh if it is defined as an alias
-[ "$(type -t wmRefresh)" = "alias" ] && unalias wmRefresh || unset wmRefresh
-#if declare -f wmRefresh > /dev/null
-#then
-#    unset wmRefresh
-#else
-#    unalias wmRefresh 2> /dev/null
-#fi
-
-wmRefresh()
-{
-    wmProjectDir=$WM_PROJECT_DIR
-    foamSettings=$FOAM_SETTINGS
-    wmUnset
-    . $wmProjectDir/etc/bashrc $foamSettings
-}
-
-
-# Change OpenFOAM version
-# ~~~~~~~~~~~~~~~~~~~~~~~
-unset foamVersion
-foamVersion()
-{
-    if [ "$1" ]; then
-        foamInstDir=$FOAM_INST_DIR
-        wmUnset
-        . $foamInstDir/OpenFOAM-$1/etc/bashrc
-        foam
-        echo "Changed to OpenFOAM-$1" 1>&2
-    else
-        echo "OpenFOAM-$WM_PROJECT_VERSION" 1>&2
-    fi
-}
-
-
-# Change ParaView version
-# ~~~~~~~~~~~~~~~~~~~~~~~
-unset foamPV
-foamPV()
-{
-    . $WM_PROJECT_DIR/etc/config.sh/paraview ParaView_VERSION=$1
-    echo "paraview-$ParaView_VERSION  (major: $ParaView_MAJOR)" 1>&2
-}
-
-
-#------------------------------------------------------------------------------
diff --git a/Ubuntu/16.04-OpenFOAM/openfoam_hacks/bashrc b/Ubuntu/16.04-OpenFOAM/openfoam_hacks/bashrc
deleted file mode 100755
index d69506a0212dbd98ea92195ac725a25e588e04fd..0000000000000000000000000000000000000000
--- a/Ubuntu/16.04-OpenFOAM/openfoam_hacks/bashrc
+++ /dev/null
@@ -1,215 +0,0 @@
-#----------------------------------*-sh-*--------------------------------------
-# =========                 |
-# \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
-#  \\    /   O peration     |
-#   \\  /    A nd           | Copyright (C) 2011-2017 OpenFOAM Foundation
-#    \\/     M anipulation  |
-#------------------------------------------------------------------------------
-# License
-#     This file is part of OpenFOAM.
-#
-#     OpenFOAM is free software: you can redistribute it and/or modify it
-#     under the terms of the GNU General Public License as published by
-#     the Free Software Foundation, either version 3 of the License, or
-#     (at your option) any later version.
-#
-#     OpenFOAM 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 General Public License
-#     for more details.
-#
-#     You should have received a copy of the GNU General Public License
-#     along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
-#
-# File
-#     etc/bashrc
-#
-# Description
-#     Startup file for OpenFOAM
-#     Sourced from ~/.profile or ~/.bashrc
-#     Should be usable by any POSIX-compliant shell (eg, ksh)
-#
-#------------------------------------------------------------------------------
-
-export WM_PROJECT=OpenFOAM
-export WM_PROJECT_VERSION=5.0
-
-################################################################################
-# USER EDITABLE PART: Changes made here may be lost with the next upgrade
-#
-# FOAM_INST_DIR is the location of the OpenFOAM installation which defaults to
-# the directory containing this file if sourced by a bash shell.
-#
-# Please set to the appropriate path if the default is not correct.
-#
-[ "$BASH" -o "$ZSH_NAME" ]
-#export FOAM_INST_DIR=$(cd $(dirname ${BASH_SOURCE:-$0})/../.. && pwd -P) || \
-export FOAM_INST_DIR=/opt
-# export FOAM_INST_DIR=~$WM_PROJECT
-# export FOAM_INST_DIR=/opt/$WM_PROJECT
-# export FOAM_INST_DIR=/usr/local/$WM_PROJECT
-#
-# END OF (NORMAL) USER EDITABLE PART
-################################################################################
-
-# The default environment variables below can be overridden in a prefs.sh file
-# located in ~/.OpenFOAM/$WM_PROJECT_VERSION, ~/.OpenFOAM,
-# $FOAM_INST_DIR/site/$WM_PROJECT_VERSION or $FOAM_INST_DIR/site
-
-#- Compiler location:
-#    WM_COMPILER_TYPE= system | ThirdParty (OpenFOAM)
-export WM_COMPILER_TYPE=system
-
-#- Compiler:
-#    WM_COMPILER = Gcc | Gcc48 ... Gcc62 | Clang | Icc
-export WM_COMPILER=Gcc
-unset WM_COMPILER_ARCH WM_COMPILER_LIB_ARCH
-
-#- Memory addressing:
-#    On a 64bit OS this can be 32bit or 64bit
-#    On a 32bit OS addressing is 32bit and this option is not used
-#    WM_ARCH_OPTION = 32 | 64
-export WM_ARCH_OPTION=64
-
-#- Precision:
-#    WM_PRECISION_OPTION = DP | SP
-export WM_PRECISION_OPTION=DP
-
-#- Label size:
-#    WM_LABEL_SIZE = 32 | 64
-export WM_LABEL_SIZE=32
-
-#- Optimised, debug, profiling:
-#    WM_COMPILE_OPTION = Opt | Debug | Prof
-export WM_COMPILE_OPTION=Opt
-
-#- MPI implementation:
-#    WM_MPLIB = SYSTEMOPENMPI | OPENMPI | SYSTEMMPI | MPICH | MPICH-GM | HPMPI
-#               | MPI | FJMPI | QSMPI | SGIMPI | INTELMPI
-export WM_MPLIB=SYSTEMOPENMPI
-
-#- Operating System:
-#    WM_OSTYPE = POSIX | ???
-export WM_OSTYPE=POSIX
-
-#- Floating-point signal handling:
-#    set or unset
-export FOAM_SIGFPE=
-
-#- memory initialisation:
-#    set or unset
-#export FOAM_SETNAN=
-
-################################################################################
-
-# The old dirs to be cleaned from the environment variables
-foamOldDirs="$WM_PROJECT_DIR $WM_THIRD_PARTY_DIR \
-    $HOME/$WM_PROJECT/$USER $FOAM_USER_APPBIN $FOAM_USER_LIBBIN \
-    $WM_PROJECT_SITE $FOAM_SITE_APPBIN $FOAM_SITE_LIBBIN"
-
-# Location of installation
-# ~~~~~~~~~~~~~~~~~~~~~~~~
-export WM_PROJECT_INST_DIR=$FOAM_INST_DIR
-export WM_PROJECT_DIR=$WM_PROJECT_INST_DIR/openfoam5
-
-# Location of third-party software
-# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-export WM_THIRD_PARTY_DIR=$WM_PROJECT_INST_DIR/ThirdParty-$WM_PROJECT_VERSION
-
-# Location of site-specific templates etc
-# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-# unset is equivalent to $WM_PROJECT_INST_DIR/site
-if [ -d "$WM_PROJECT_SITE" ]
-then
-    export WM_PROJECT_SITE
-else
-    unset WM_PROJECT_SITE
-fi
-
-# Location of user files
-# ~~~~~~~~~~~~~~~~~~~~~~
-export WM_PROJECT_USER_DIR=$HOME/$WM_PROJECT/$USER-$WM_PROJECT_VERSION
-
-# Source initialization functions
-# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-. $WM_PROJECT_DIR/etc/config.sh/functions
-
-# Add in preset user or site preferences:
-_foamSource `$WM_PROJECT_DIR/bin/foamEtcFile prefs.sh`
-
-# Evaluate command-line parameters and record settings for later
-# these can be used to set/unset values, or specify alternative pref files
-export FOAM_SETTINGS="$@"
-
-# _foamEval $@
-
-# Clean standard environment variables (PATH, LD_LIBRARY_PATH, MANPATH)
-# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-foamClean=$WM_PROJECT_DIR/bin/foamCleanPath
-
-#- Clean PATH
-cleaned=`$foamClean "$PATH" "$foamOldDirs"` && PATH="$cleaned"
-
-#- Clean LD_LIBRARY_PATH
-cleaned=`$foamClean "$LD_LIBRARY_PATH" "$foamOldDirs"` \
-    && LD_LIBRARY_PATH="$cleaned"
-
-#- Clean MANPATH
-cleaned=`$foamClean "$MANPATH" "$foamOldDirs"` && MANPATH="$cleaned"
-
-export PATH LD_LIBRARY_PATH MANPATH
-
-# Source project setup files
-# ~~~~~~~~~~~~~~~~~~~~~~~~~~
-_foamSource $WM_PROJECT_DIR/etc/config.sh/settings
-_foamSource $WM_PROJECT_DIR/etc/config.sh/aliases
-
-
-# Source user setup files for optional packages
-# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-_foamSource `$WM_PROJECT_DIR/bin/foamEtcFile config.sh/mpi`
-_foamSource `$WM_PROJECT_DIR/bin/foamEtcFile config.sh/paraview`
-_foamSource `$WM_PROJECT_DIR/bin/foamEtcFile config.sh/ensight`
-_foamSource `$WM_PROJECT_DIR/bin/foamEtcFile config.sh/gperftools`
-
-if [ ! -z "$FOAMY_HEX_MESH" ]
-then
-    _foamSource `$WM_PROJECT_DIR/bin/foamEtcFile config.sh/CGAL`
-fi
-
-
-# Clean environment paths again. Only remove duplicates
-# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-#- Clean PATH
-cleaned=`$foamClean "$PATH"` && PATH="$cleaned"
-
-#- Clean LD_LIBRARY_PATH
-cleaned=`$foamClean "$LD_LIBRARY_PATH"` && LD_LIBRARY_PATH="$cleaned"
-
-#- Clean MANPATH (trailing ':' to find system pages)
-cleaned=`$foamClean "$MANPATH"`: && MANPATH="$cleaned"
-
-export PATH LD_LIBRARY_PATH MANPATH
-
-#- Clean LD_PRELOAD
-if [ -n "$LD_PRELOAD" ]
-then
-    cleaned=`$foamClean "$LD_PRELOAD"` && LD_PRELOAD="$cleaned"
-    export LD_PRELOAD
-fi
-
-
-# Cleanup environment:
-# ~~~~~~~~~~~~~~~~~~~~
-unset cleaned foamClean foamOldDirs
-
-
-# Unload initialization functions:
-# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-. $WM_PROJECT_DIR/etc/config.sh/functions
-
-# Source the bash completion file:
-# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-[ "$BASH" ] && . $WM_PROJECT_DIR/etc/config.sh/bash_completion
-
-#------------------------------------------------------------------------------
diff --git a/Ubuntu/16.04-OpenFOAM/openfoam_hacks/exec b/Ubuntu/16.04-OpenFOAM/openfoam_hacks/exec
deleted file mode 100755
index c24a5c62601182e31eb663beee82da1cfa09ad16..0000000000000000000000000000000000000000
--- a/Ubuntu/16.04-OpenFOAM/openfoam_hacks/exec
+++ /dev/null
@@ -1,9 +0,0 @@
-#!/bin/bash
-
-for script in /.singularity.d/env/*.sh; do
-    if [ -f "$script" ]; then
-        . "$script"
-    fi
-done
-
-exec "$@"
diff --git a/Ubuntu/16.04-OpenFOAM/recipe-openfoam.txt b/Ubuntu/16.04-OpenFOAM/recipe-openfoam.txt
deleted file mode 100644
index 9e0c90d6ecc9373462511579da8f1198a2f2533e..0000000000000000000000000000000000000000
--- a/Ubuntu/16.04-OpenFOAM/recipe-openfoam.txt
+++ /dev/null
@@ -1,48 +0,0 @@
-Bootstrap: docker
-From: ubuntu:17.10
-
-%post
-
-  ### folders and files ###
-
-  mkdir /scratch
-  mkdir /service  
-  mkdir /app
-  mv /opt/startup /app
-  mv /opt/check /app
-  mv /opt/monitor /app
-
-  ### update & upgrade ###
-  
-  apt update
-  apt upgrade -y
-  apt install -y nano ssh
-  
-  ### set-up python3 ###  
-
-  apt install -y python3-pip python3-mpi4py
-  pip3 install numpy matplotlib
-  
-  ### install openfoam ###
-
-  apt install -y software-properties-common wget
-  add-apt-repository "http://dl.openfoam.org/ubuntu"
-  sh -c "wget -O - http://dl.openfoam.org/gpg.key | apt-key add -"
-  apt update
-  apt install -y openfoam5
-  echo '. /opt/openfoam5/etc/bashrc' >>$SINGULARITY_ENVIRONMENT
-
-  ### openfoam hacks ###
-
-  mv -f /opt/bashrc /opt/openfoam5/etc
-  mv -f /opt/aliases /opt/openfoam5/etc/config.sh
-  mv -f /opt/exec /.singularity.d/actions
-
-  
-%files
- app/startup opt/
- app/check   opt/
- app/monitor opt/
- openfoam_hacks/bashrc opt/
- openfoam_hacks/aliases opt/
- openfoam_hacks/exec opt/
diff --git a/Ubuntu/16.04-OpenFOAM/singularity_image.tar b/Ubuntu/16.04-OpenFOAM/singularity_image.tar
deleted file mode 100644
index c129e103b5e985ad18399a39e24925cb77a1809d..0000000000000000000000000000000000000000
Binary files a/Ubuntu/16.04-OpenFOAM/singularity_image.tar and /dev/null differ
diff --git a/Ubuntu/16.04/Ubuntu-16.04-Bootstrap b/Ubuntu/16.04/Ubuntu-16.04-Bootstrap
deleted file mode 100644
index f35db223b07c72a56fc9edb65a325a3b0d677298..0000000000000000000000000000000000000000
--- a/Ubuntu/16.04/Ubuntu-16.04-Bootstrap
+++ /dev/null
@@ -1,57 +0,0 @@
-Bootstrap: docker
-From: ubuntu:latest
-
-%post
-apt -y update && apt -y upgrade
-apt -y install python curl wget gcc g++ make vim mc libncurses-dev rsync tclsh lua5.2 liblua5.2 gfortran ssh
-
-curl -s -O https://bootstrap.pypa.io/get-pip.py
-python get-pip.py
-pip install setuptools python-graph-core python-graph-dot tabulate numpy scipy pandas wheel --upgrade
-
-wget https://github.com/luarocks/luarocks/archive/v2.4.2.tar.gz
-tar xvf v2.4.2.tar.gz
-cd luarocks-2.4.2
-./configure
-make build
-make install
-mkdir ~/.luarocks
-echo "fs_use_modules = false" > ~/.luarocks/config.lua
-luarocks install luaposix
-luarocks install luafilesystem
-LUAROCKS_PREFIX=/usr/local
-export LUA_PATH="$LUAROCKS_PREFIX/share/lua/5.1/?.lua;$LUAROCKS_PREFIX/share/lua/5.1/?/init.lua;;"
-export LUA_CPATH="$LUAROCKS_PREFIX/lib/lua/5.1/?.so;;"
-
-echo "# !/bin/bash" > /bin/logger
-echo "exit 0" >> /bin/logger
-chmod +x /bin/logger
-
-# Lmod
-wget https://github.com/TACC/Lmod/archive/7.7.7.tar.gz
-tar xvf 7.7.7.tar.gz
-cd Lmod-7.7.7
-./configure --prefix=/opt/apps
-make install
-
-# OpenMPI
-wget https://www.open-mpi.org/software/ompi/v2.1/downloads/openmpi-2.1.1.tar.gz
-tar xvf openmpi-2.1.1.tar.gz && cd openmpi-2.1.1
-./configure --prefix=/usr/local
-make -j 16
-make install
-
-# APPS and SCRATCH
-mkdir /apps
-mkdir /scratch
-
-cd /bin
-rm sh && ln -s /bin/bash sh
-
-%environment
-source /opt/apps/lmod/7.7.7/init/profile
-clearMT
-export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib
-export -f ml
-export -f module
-export -f clearMT
diff --git a/install/CENTOS7LATEST b/install/CENTOS7LATEST
index 29bd2a00d12183e2475eb84a2c3a495fc636dcd7..4e6a953dd1f92a83eeac8ad814505c54c2e2cd25 100644
--- a/install/CENTOS7LATEST
+++ b/install/CENTOS7LATEST
@@ -19,10 +19,10 @@ yum -y install libXdmcp libXfont2 libXxf86misc libxkbfile libXtst libX11-devel m
 cd /tmp
 
 # OpenMPI
-wget https://www.open-mpi.org/software/ompi/v2.1/downloads/openmpi-2.1.1.tar.gz
-tar xvf openmpi-2.1.1.tar.gz && cd openmpi-2.1.1
+wget https://www.open-mpi.org/software/ompi/v3.1/downloads/openmpi-3.1.5.tar.gz
+tar xvf openmpi-3.1.5.tar.gz && cd openmpi-3.1.5
 ./configure --prefix=/usr/local
-make -j 16
+make -j 36
 make install
 
 # pip
diff --git a/install/CONFIG b/install/CONFIG
index e8059efce578ae8cd3fc418378bfc4d9e8f26044..69fa6e8f7e5175c5621bcbe21fb74bb20f87d3a3 100644
--- a/install/CONFIG
+++ b/install/CONFIG
@@ -1,10 +1,6 @@
-GPU_DRIVER_VERSION=390.30
-GPU_DRIVER_PATH=/apps/easybuild/sources/n/NVIDIA/NVIDIA-Linux-x86_64-390.30.run
-MPSS_PATH=/opt/mpss
-MIC_PATH=./rpm.tar.gz
-SINGULARITY_BIN_PATH=/apps/all/Singularity/3.4.1/bin
+SINGULARITY_BIN_PATH=/apps/all/Singularity/3.5.1/bin
 IMAGE_PATH=/apps/all/OS
 MODULEFILE_PATH=/apps/modules
 USER_IMAGE=easybuild
 EBROOTSQUASHFSMINTOOLS=/apps/all/squashfs-tools/4.3
-PATH=$PATH:/apps/all/Singularity/3.4.1/bin:/apps/all/squashfs-tools/4.3/bin
+PATH=$PATH:/apps/all/Singularity/3.5.1/bin:/apps/all/squashfs-tools/4.3/bin
diff --git a/install/UBUNTULATEST b/install/UBUNTULATEST
index 9d42e1d45442c91db475b1defadf86eaf4ec64dc..2c12e90f3255f786d647a5805c6e02ac4266b288 100644
--- a/install/UBUNTULATEST
+++ b/install/UBUNTULATEST
@@ -36,10 +36,10 @@ cd Lmod-7.7.7
 make install
 
 # OpenMPI
-wget https://www.open-mpi.org/software/ompi/v2.1/downloads/openmpi-2.1.1.tar.gz
-tar xvf openmpi-2.1.1.tar.gz && cd openmpi-2.1.1
+wget https://www.open-mpi.org/software/ompi/v3.1/downloads/openmpi-3.1.5.tar.gz
+tar xvf openmpi-3.1.5.tar.gz && cd openmpi-3.1.5
 ./configure --prefix=/usr/local
-make -j 16
+make -j 36
 make install
 
 # APPS and SCRATCH