diff --git a/doc/README.mpi b/doc/README.mpi
index 3069856..847abf4 100644
--- a/doc/README.mpi
+++ b/doc/README.mpi
@@ -22,7 +22,13 @@ COMPILING:
     Unless using OMP, you should consider applying the nsk-3 patch, also known
     as "Faster bitslice DES key setup".
 
-    To enable MPI in John, un-comment the MPIFLAGS line in Makefile.
+    To enable MPI in John, un-comment these two line in Makefile:
+
+----8<--------------8<--------------8<--------------8<--------------8<----------
+# Uncomment the TWO lines below for MPI (can be used together with OMP as well)
+CC = mpicc -DHAVE_MPI
+MPIOBJ = john-mpi.o
+----8<--------------8<--------------8<--------------8<--------------8<----------
 
     You must have an operational MPI environment prior to both compiling and
     using the MPI version; configuring one is outside the scope of this
diff --git a/src/HDAA_fmt.c b/src/HDAA_fmt.c
index d1c2dd1..dc0dda7 100644
--- a/src/HDAA_fmt.c
+++ b/src/HDAA_fmt.c
@@ -5,10 +5,14 @@
  */
 
 #include <string.h>
-#ifndef _MSC_VER
+
+#ifdef __STDC_VERSION__
 #include <stdint.h>
 #else
 typedef unsigned int uint32_t;
+#endif
+
+#ifdef _MSC_VER
 #define snprintf _snprintf
 #endif
 
diff --git a/src/Makefile b/src/Makefile
index b06d7d4..7d5fff1 100644
--- a/src/Makefile
+++ b/src/Makefile
@@ -10,19 +10,25 @@ AS = $(CC)
 LD = $(CC)
 CPP = $(CC)
 CP = cp
-LN = ln -sf
+LN = ln -f -s
 RM = rm -f
 TR = tr
 SED = sed
 NULL = /dev/null
 CPPFLAGS = -E
-# Uncomment the line below for MPI (can be used together with OMP as well)
-#MPIFLAGS = -DHAVE_MPI
+
+# Uncomment the TWO lines below for MPI (can be used together with OMP as well)
+#CC = mpicc -DHAVE_MPI
+#MPIOBJ = john-mpi.o
+
 OMPFLAGS =
 # gcc with OpenMP
 #OMPFLAGS = -fopenmp
 # Sun Studio with OpenMP (set the OMP_NUM_THREADS env var at runtime)
 #OMPFLAGS = -xopenmp
+# icc with OpenMP (for make target linux-x86-64-icc)
+#OMPFLAGS = -openmp
+
 CFLAGS = -c -Wall -O2 -fomit-frame-pointer -I/usr/local/include $(OMPFLAGS)
 # -DHAVE_SKEY
 ASFLAGS = -c $(OMPFLAGS)
@@ -33,11 +39,6 @@ LDFLAGS_MKV = -s -lm
 OPT_NORMAL = -funroll-loops
 OPT_INLINE = -finline-functions
 
-ifneq ($(strip $(MPIFLAGS)),)
-CC = mpicc $(MPIFLAGS)
-MPIOBJ = john-mpi.o
-endif
-
 JOHN_OBJS = \
     $(MPIOBJ) \
 	DES_fmt.o DES_std.o DES_bs.o DES_bs_b.o \
@@ -267,8 +268,8 @@ linux-x86-64-icc:
 	$(LN) x86-64.h arch.h
 	$(MAKE) $(PROJ) \
 		JOHN_OBJS="$(JOHN_OBJS) c3_fmt.o x86-64.o sse-intrinsics.o" \
-		CFLAGS="-c -fast -I/usr/include -static-intel -DHAVE_CRYPT -openmp " \
-		LDFLAGS="-lm -lssl -lcrypto -ipo -no-prec-div -xP -static-intel -lcrypt -openmp -s " \
+		CFLAGS="-c -fast -I/usr/include -static-intel -DHAVE_CRYPT $(OMPFLAGS)" \
+		LDFLAGS="-lm -lssl -lcrypto -ipo -no-prec-div -xSSE3 -static-intel -lcrypt $(OMPFLAGS) -s " \
 		CPP="icc" CC="icc" AS="icc" LD="icc"
 
 linux-x86-64-32-sse2:
@@ -511,6 +512,7 @@ netbsd-vax:
 	$(MAKE) $(PROJ)
 
 solaris-sparc64-cc:
+	$(RM) arch.h
 	$(LN) sparc64.h arch.h
 	$(MAKE) $(PROJ) \
 		JOHN_OBJS="$(JOHN_OBJS) c3_fmt.o" \
@@ -521,6 +523,7 @@ solaris-sparc64-cc:
 		OPT_INLINE="-xinline=s1,s2,s3,s4,s5,s6,s7,s8"
 
 solaris-sparc64-gcc:
+	$(RM) arch.h
 	$(LN) sparc64.h arch.h
 	$(MAKE) $(PROJ) \
 		JOHN_OBJS="$(JOHN_OBJS) c3_fmt.o" \
@@ -528,6 +531,7 @@ solaris-sparc64-gcc:
 		LDFLAGS="$(LDFLAGS) -m64 $(LDFLAGS_SOLARIS)"
 
 solaris-sparcv9-cc:
+	$(RM) arch.h
 	$(LN) sparc32.h arch.h
 	$(MAKE) $(PROJ) \
 		JOHN_OBJS="$(JOHN_OBJS) c3_fmt.o" \
@@ -538,6 +542,7 @@ solaris-sparcv9-cc:
 		OPT_INLINE="-xinline=s1,s2,s3,s4,s5,s6,s7,s8"
 
 solaris-sparcv8-cc:
+	$(RM) arch.h
 	$(LN) sparc32.h arch.h
 	$(MAKE) $(PROJ) \
 		JOHN_OBJS="$(JOHN_OBJS) c3_fmt.o" \
@@ -548,6 +553,7 @@ solaris-sparcv8-cc:
 		OPT_INLINE="-xinline=s1,s2,s3,s4,s5,s6,s7,s8"
 
 solaris-sparc-gcc:
+	$(RM) arch.h
 	$(LN) sparc32.h arch.h
 	$(MAKE) $(PROJ) \
 		JOHN_OBJS="$(JOHN_OBJS) c3_fmt.o" \
@@ -555,6 +561,7 @@ solaris-sparc-gcc:
 		LDFLAGS="$(LDFLAGS) $(LDFLAGS_SOLARIS)"
 
 solaris-x86-64-cc:
+	$(RM) arch.h
 	$(LN) x86-64.h arch.h
 	$(MAKE) $(PROJ) \
 		JOHN_OBJS="$(JOHN_OBJS) c3_fmt.o x86-64.o sse-intrinsics.o" \
@@ -566,6 +573,7 @@ solaris-x86-64-cc:
 		OPT_INLINE="-xinline=s1,s2,s3,s4,s5,s6,s7,s8"
 
 solaris-x86-64-gcc:
+	$(RM) arch.h
 	$(LN) x86-64.h arch.h
 	$(MAKE) $(PROJ) \
 		JOHN_OBJS="$(JOHN_OBJS) c3_fmt.o x86-64.o sse-intrinsics.o" \
@@ -574,6 +582,7 @@ solaris-x86-64-gcc:
 		LDFLAGS="$(LDFLAGS) -m64 $(LDFLAGS_SOLARIS)"
 
 solaris-x86-sse2-cc:
+	$(RM) arch.h
 	$(LN) x86-sse.h arch.h
 	$(MAKE) $(PROJ) \
 		JOHN_OBJS="$(JOHN_OBJS) c3_fmt.o solaris-x86.o x86-sse.o sha1-mmx.o md5-mmx.o" \
@@ -585,6 +594,7 @@ solaris-x86-sse2-cc:
 		OPT_INLINE="-xinline=s1,s2,s3,s4,s5,s6,s7,s8"
 
 solaris-x86-sse2-gcc:
+	$(RM) arch.h
 	$(LN) x86-sse.h arch.h
 	$(MAKE) $(PROJ) \
 		JOHN_OBJS="$(JOHN_OBJS) c3_fmt.o solaris-x86.o x86-sse.o sha1-mmx.o md5-mmx.o" \
@@ -592,6 +602,7 @@ solaris-x86-sse2-gcc:
 		LDFLAGS="$(LDFLAGS) $(LDFLAGS_SOLARIS)"
 
 solaris-x86-mmx-cc:
+	$(RM) arch.h
 	$(LN) x86-mmx.h arch.h
 	$(MAKE) $(PROJ) \
 		JOHN_OBJS="$(JOHN_OBJS) c3_fmt.o solaris-x86.o x86-mmx.o sha1-mmx.o md5-mmx.o" \
@@ -603,6 +614,7 @@ solaris-x86-mmx-cc:
 		OPT_INLINE="-xinline=s1,s2,s3,s4,s5,s6,s7,s8"
 
 solaris-x86-mmx-gcc:
+	$(RM) arch.h
 	$(LN) x86-mmx.h arch.h
 	$(MAKE) $(PROJ) \
 		JOHN_OBJS="$(JOHN_OBJS) c3_fmt.o solaris-x86.o x86-mmx.o sha1-mmx.o md5-mmx.o" \
diff --git a/src/bench.c b/src/bench.c
index 5d8faac..8a76ecc 100644
--- a/src/bench.c
+++ b/src/bench.c
@@ -327,7 +327,11 @@ int benchmark_all(void)
 			format->params.format_name,
 			format->params.benchmark_comment,
 			format->params.algorithm_name,
+#ifndef _JOHN_BENCH_TMP
 			(options.flags & FLG_UTF8) ? " in UTF-8 mode" : "");
+#else
+			"");
+#endif
 		fflush(stdout);
 
 #ifdef HAVE_MPI
