diff --git a/snap7/.gitignore b/snap7/.gitignore
index 07cc7ee8b748f8b795cdfc33645efd42e8048b70..4d3bafb0cddadcda30430c2b6aaa9a0e03f90e1a 100644
--- a/snap7/.gitignore
+++ b/snap7/.gitignore
@@ -1,2 +1 @@
-snap7-full/
-/snap7-full-1.4.0.tar.gz
+/snap7-ful*
diff --git a/snap7/build.sh b/snap7/build.sh
index 4fb7c066d1f03df3d78b2a45f3279c07876cb7ce..256d4150d77cfd7b1128fdc7099643f4cade3896 100755
--- a/snap7/build.sh
+++ b/snap7/build.sh
@@ -1,16 +1,50 @@
 #!/bin/sh
 set -e
 
-SNAP7_VERSION=1.4.0
+# First argument has to be the desired snap7 version
+SNAP7_VERSION=$1
+
+SCRIPT=$(readlink -f "$0")
+SCRIPTPATH=$(dirname "$SCRIPT")     # path where this script is located in
 SNAP7_FOLDER=snap7-full-${SNAP7_VERSION}
+SNAP7_PATH=${SCRIPTPATH}/${SNAP7_FOLDER}
+
+echo ${SNAP7_PATH}
+# If there is no snap7 folder yet, we download the required version and build it
+if [ -d ${SNAP7_PATH} ]; then
+  echo "Some snap7 version is already available. No need to download/build it"
+  #TODO Check if the version matches
+else
+  
+  archiveFile=${SNAP7_FOLDER}.tar.gz
+  archiveFilePath=${SCRIPTPATH}/${SNAP7_FOLDER}.tar.gz
+
+  echo "Cleanup"
+  rm -rf snap7-ful*
+
+  if [ ! -f "$archiveFilePath" ]
+  then
+     echo "Downloading snap7"
+     cd ${SCRIPTPATH}
+     wget http://downloads.sourceforge.net/project/snap7/${SNAP7_VERSION}/${archiveFile}
+  fi
 
-archiveFile=${SNAP7_FOLDER}.tar.gz
-if [ ! -f "$archiveFile" ]
-then
-   rm -rf snap7-full*
-   wget http://downloads.sourceforge.net/project/snap7/${SNAP7_VERSION}/${archiveFile}
-   tar -vxzf ${archiveFile}
-   mv ${SNAP7_FOLDER} snap7-full
+  if [ ! -d ${SNAP7_PATH} ]
+  then
+     echo "Extracting snap7"
+     tar -vxzf ${archiveFilePath}
+     rm ${archiveFilePath}
+  fi
+
+  if [ ! -d ${SCRIPTPATH}/snap7-full ]
+  then
+     echo "Creating symlink"
+     ln -s ${SNAP7_PATH} ${SCRIPTPATH}/snap7-full
+  fi
+
+  echo "Building snap7"
+  cd ${SNAP7_FOLDER}/build/unix
+  make -f x86_64_linux.mk
 fi
-cd snap7-full/build/unix
-make -f x86_64_linux.mk
+
+
diff --git a/snap7/install.sh b/snap7/install.sh
index c89ea37224cf4a2f537918299d6d08cd3c548377..553fbf9dfbbf8e719c6b237d99281902b264cd1c 100755
--- a/snap7/install.sh
+++ b/snap7/install.sh
@@ -4,7 +4,7 @@ set -e
 RELEASE_DIR_BASE=$1
 SILECS_VERSION=$2
 
-SNAP7_VERSION=1.4.2
+SNAP7_VERSION=1.4.0
 
 SCRIPT=$(readlink -f "$0")
 SCRIPTPATH=$(dirname "$SCRIPT")     # path where this script is located in
@@ -15,6 +15,9 @@ if [ -d ${RELEASE_DIR} ]; then
     exit 1
 fi
 
+# Download and build snap7 if required
+${SCRIPTPATH}/build.sh ${SNAP7_VERSION}
+
 mkdir -p ${RELEASE_DIR}
 cp -r ${SCRIPTPATH}/snap7-full/build/bin/x86_64-linux ${RELEASE_DIR}