diff --git a/src/SConscript b/src/SConscript
index d41215f6b5046e7c20d5264890c64372e814801c..65471d414277aae4f8dc2e0d72664ae6572fc450 100644
--- a/src/SConscript
+++ b/src/SConscript
@@ -13,10 +13,13 @@ cpppath='''
         '''
 
 myenv=myenv.Clone(CPPPATH=Split(cpppath))
+
 myenv.Append(CXXFLAGS = " -std=c++11 ")
+#myenv.Append(CXXFLAGS = " -std=c++11 -DZAFL_AUTO_INIT_FORK_SERVER")
 
 lib=myenv.SharedLibrary("zafl",  Split(files))
 install=myenv.Install("$SECURITY_TRANSFORMS_HOME/lib/", lib)
+
 Default(install)
 
 Return('install')
diff --git a/src/SConstruct b/src/SConstruct
index 9ef80fbaa6ceab1f977535f08b3a5d7c15719661..05d1c2bb2c704bc9b30cf29e2ebd2b3a4ee4c451 100644
--- a/src/SConstruct
+++ b/src/SConstruct
@@ -5,7 +5,6 @@ Export('env')
 
 env.Replace(debug=ARGUMENTS.get("debug",0))
 
-
 if int(env['debug']) == 1:
         print "Setting debug mode"
         env.Append(CFLAGS=" -g ")
diff --git a/src/libzafl.cpp b/src/libzafl.cpp
index 4dcb27412df3a5271a09d02fd82925b9f72da6c4..81ba7771bbebaf5f21e17ed1e50617b60dce48d0 100644
--- a/src/libzafl.cpp
+++ b/src/libzafl.cpp
@@ -44,16 +44,28 @@ static auto debug = false;
 static void zafl_setupSharedMemory();
 static bool shared_memory_is_setup = false;
 
+#ifdef ZAFL_AUTO_INIT_FORK_SERVER
 void __attribute__((constructor)) zafl_initAflForkServer();
+#else
+void __attribute__((constructor)) zafl_setupSharedMemory();
+#endif
 
 static void zafl_setupSharedMemory()
 {
+	if (getenv("ZAFL_DEBUG")) debug = true;
+
+	if (shared_memory_is_setup)
+		return;
+
 	zafl_prev_id = 0;
 	zafl_trace_map = NULL;
 
 	char *shm_env_var = getenv(SHM_ENV_VAR);
 	if(!shm_env_var) {
-		PRINT_ERROR("Error getting shm environment variable\n");
+		PRINT_ERROR("Error getting shm environment variable - fake allocate AFL trace map\n");
+
+		// fake allocate until someone calls zafl_initAflForkServer()
+		zafl_trace_map = (u8*)malloc(MAP_SIZE); 
 		return;
 	}
 	shm_id = atoi(shm_env_var);
@@ -74,8 +86,7 @@ void zafl_initAflForkServer()
 
 	if (getenv("ZAFL_DEBUG")) debug = true;
 
-	if (!shared_memory_is_setup)
-		zafl_setupSharedMemory();
+	zafl_setupSharedMemory();
 
 	if (!zafl_trace_map) {
 		zafl_trace_map = (u8*)malloc(MAP_SIZE);
@@ -121,8 +132,8 @@ void zafl_initAflForkServer()
 	}
 }
 
-// for debugging purposes only
-// basic block instrumentations will be inlined via a Zipr transformation
+// for efficiency, basic block instrumentation is inlined via a Zipr transformation
+// this code is used for debugging purposes only
 void zafl_bbInstrument(unsigned short id) {
 	zafl_trace_map[zafl_prev_id ^ id]++;
 	zafl_prev_id = id >> 1;