diff --git a/src/compile b/src/compile
index 930020cbfb004d4e6949a7a450652390e26bb7e9..76646a49729676220ca3bdf078101db9a2ebf131 100755
--- a/src/compile
+++ b/src/compile
@@ -2,28 +2,49 @@
 
 
 print_help() {
-    echo " an argument is needed at least"
+    echo " at least the -c argument is needed"
     echo " compile -c name [-p]"
     echo "  -c \$compiler_name  : specifies the compiler to be used { gcc, icx }"
     echo "  -p                 : activates PAPI support "
     exit 0
     }
 
-SRC_DIR=../src
-X_DIR=.
-INC_DIR=../headers
-PAPI_OPTS=" -DUSE_PAPI "
-PAPI_LIB="-lpapi"
-OPTS=" -std=c2x -DFILL=25 -DNDEBUG "
+
+# the relevant folders
+#
+
+SRC_DIR=../src         # this setup is useful if you want to compile
+X_DIR=.                # not in src/ but in a sibling folder
+INC_DIR=../headers     #
+
+# options that you need to compile
+#
+OPTS=" -std=c2x -DFILL=25 "
+
+# specific options
+#
+ASSERT_OPT=" -DNDEBUG "
+PAPI_OPT=" -DUSE_PAPI "
+PAPI_LIB=" -lpapi "
+
 GCC_OPTS=" -O3 -march=native -mtune=native -ftree-vectorize -funroll-loops "
 ICX_OPTS=" -O3 -xHost -vec -axCORE-AVX2,CORE-AVX512 "
 
+# variables that control the behaviour
+#
 compiler=0
 gcc=1
 icx=2
+assert_on=0
 support_papi=0
 
-CLOPTIONS="c:ph"
+#
+# ==================================================
+#
+#  parse the arguments
+#
+
+CLOPTIONS="c:aph"
 
 if [[ $# -lt 1 ]]; then print_help; fi
 
@@ -42,6 +63,10 @@ while getopts ${CLOPTIONS} opt; do
 	     fi
 	     ;;
 
+	  a) assert_on=1
+	     echo "compile with asserts on"
+	     ;;
+	  
 	  p) support_papi=1
 	     echo "compile with PAPI support"
 	     ;;
@@ -57,7 +82,11 @@ while getopts ${CLOPTIONS} opt; do
 
 done
 
-
+#
+# ===========================================
+#
+#  set-up things
+#
 	    
 if [ ${compiler} == ${gcc} ];
 then
@@ -70,43 +99,30 @@ else
     cc=icx
 fi
 
+if [[ ${assert_on} -eq 1 ]];
+then
+    ASSERT_OPT=""
+fi
+
 if [[ ${support_papi} -eq 1 ]];
 then
-    ADD_PAPI_OPTS=${PAPI_OPTS}
+    ADD_PAPI_OPT=${PAPI_OPT}
     ADD_PAPI_LIB=${PAPI_LIB}
     suffix=${suffix}.papi
 else
-    ADD_PAPI_OPTS=""
+    ADD_PAPI_OPT=""
     ADD_PAPI_LIB=""
 fi
 
-cc ${OPTS} ${ADD_PAPI_OPTS} -I${INC_DIR} ${OPTIMIZATION} -o ${X_DIR}/vect.1${suffix} ${SRC_DIR}/vect.1.c ${ADD_PAPI_LIB} 2> compile.log.out
-cc ${OPTS} ${ADD_PAPI_OPTS} -I${INC_DIR} ${OPTIMIZATION} -o ${X_DIR}/vect.1b${suffix} ${SRC_DIR}/vect.1b.c -lm ${ADD_PAPI_LIB} 2>> compile.log.out
-
-cc ${OPTS} ${ADD_PAPI_OPTS} -I${INC_DIR} ${OPTIMIZATION} -o ${X_DIR}/vect.2${suffix} ${SRC_DIR}/vect.2.c ${ADD_PAPI_LIB} 2>> compile.log.out
-cc ${OPTS} ${ADD_PAPI_OPTS} -I${INC_DIR} ${OPTIMIZATION} -o ${X_DIR}/vect.2b${suffix} ${SRC_DIR}/vect.2b.c -lm ${ADD_PAPI_LIB} 2>> compile.log.out
-
-
-    
-# gcc -std=c2x -DFILL=25 -DNDEBUG -I../headers -O3 -march=native -mtune=native -ftree-vectorize -funroll-loops -o vect.1b.gcc vect.1b.c
-# gcc -std=c2x -DFILL=25 -DNDEBUG -DUSE_PAPI -I../headers -O3 -march=native -mtune=native -ftree-vectorize -funroll-loops -o vect.1b.gcc.papi ../src/vect.1b.c -lm -lpapi
-
-# gcc -std=c2x -DFILL=25 -DNDEBUG -I../headers -O3 -march=native -mtune=native -ftree-vectorize -funroll-loops -o vect.2.gcc vect.2.c -lm
-# gcc -std=c2x -DFILL=25 -DNDEBUG -I../headers -O3 -march=native -mtune=native -ftree-vectorize -funroll-loops -o vect.2b.gcc vect.2b.c -lm
-# gcc -std=c2x -DFILL=25 -DNDEBUG -DUSE_PAPI -I../headers -O3 -march=native -mtune=native -ftree-vectorize -funroll-loops -o vect.2b.gcc.papi ../src/vect.2b.c -lm -lpapi
-
-
-# gcc -std=c2x -DNDEBUG -I../headers -O3 -march=native -mtune=native -ftree-vectorize -funroll-loops -o compare_outputs compare_outputs.c
-# gcc -std=c2x -DNDEBUG -I../headers -O3 -march=native -mtune=native -ftree-vectorize -funroll-loops -o compare_outputs_vforce compare_outputs_vforce.c
-
-
-# # ------------------- icx
+#
+# ===========================================
+#
+#  compile
+#
 
-# icx -std=c2x -DFILL=25 -DNDEBUG -I../headers -O3 -xHost -vec -axCORE-AVX2,CORE-AVX512 -o vect.1.icx vect.1.c
 
-# icx -std=c2x -DFILL=25 -DNDEBUG -I../headers -O3 -xHost -vec -axCORE-AVX2,CORE-AVX512 -o vect.1b.icx vect.1b.c
-# icx -std=c2x -DFILL=25 -DNDEBUG -DUSE_PAPI -I../headers -O3 -xHost -vec -axCORE-AVX2,CORE-AVX512 -o vect.1b.icx.papi ../src/vect.1b.c -lm -lpapi
+cc ${OPTS} ${ADD_PAPI_OPT} -I${INC_DIR} ${OPTIMIZATION} -o ${X_DIR}/vect.1${suffix} ${SRC_DIR}/vect.1.c ${ADD_PAPI_LIB} 2> compile.log.out
+cc ${OPTS} ${ADD_PAPI_OPT} -I${INC_DIR} ${OPTIMIZATION} -o ${X_DIR}/vect.1b${suffix} ${SRC_DIR}/vect.1b.c -lm ${ADD_PAPI_LIB} 2>> compile.log.out
 
-# icx -std=c2x -DFILL=25 -DNDEBUG -I../headers -O3 -xHost -vec -axCORE-AVX2,CORE-AVX512 -o vect.2.icx vect.2.c -lm
-# icx -std=c2x -DFILL=25 -DNDEBUG -I../headers -O3 -xHost -vec -axCORE-AVX2,CORE-AVX512 -o vect.2b.icx vect.2b.c -lm
-# icx -std=c2x -DFILL=25 -DNDEBUG -DUSE_PAPI -I../headers -O3 -xHost -vec -axCORE-AVX2,CORE-AVX512 -o vect.2b.icx.papi ../src/vect.2b.c -lm -lpapi
+cc ${OPTS} ${ADD_PAPI_OPT} -I${INC_DIR} ${OPTIMIZATION} -o ${X_DIR}/vect.2${suffix} ${SRC_DIR}/vect.2.c ${ADD_PAPI_LIB} 2>> compile.log.out
+cc ${OPTS} ${ADD_PAPI_OPT} -I${INC_DIR} ${OPTIMIZATION} -o ${X_DIR}/vect.2b${suffix} ${SRC_DIR}/vect.2b.c -lm ${ADD_PAPI_LIB} 2>> compile.log.out