diff --git a/Makefile.in b/Makefile.in
index d64efbe..2d3a033 100644
--- a/Makefile.in
+++ b/Makefile.in
@@ -29,6 +29,7 @@ CFLAGS   = @CFLAGS@ $(perl_optimize) $(perl_ccflags) -I$(perl_archlib)/CORE -I.
 DLCFLAGS = @CFLAGS@ $(perl_optimize) $(perl_cccdlflags) $(perl_ccflags) -I$(perl_archlib)/CORE -I.
 LDFLAGS  = @LDFLAGS@ $(perl_ccdlflags) $(perl_ldflags) -L$(perl_archlib)/CORE 
 LDLIBS   = $(perl_dla) -lperl $(perl_libs)
+EXEEXT   = @EXEEXT@
 AR       = @AR@
 RANLIB   = @RANLIB@
 SIZE     = @SIZE@
@@ -95,7 +96,7 @@ _UPDATEVERS = \
 #   THE DEFAULT TARGET
 # ------------------------------------------------
 
-all: eperl eperl.1
+all: eperl$(EXEEXT) eperl.1
 
 
 # ------------------------------------------------
@@ -212,9 +213,9 @@ OBJS = \
  eperl_logo.o \
  eperl_powered.o
 
-eperl: $(OBJS)
-	$(CC) $(LDFLAGS) -o eperl $(OBJS) $(LDLIBS) $(dmalloc)
-	@[ "x$(debug)" = xon ] || strip eperl
+eperl$(EXEEXT): $(OBJS)
+	$(CC) $(LDFLAGS) -o $@ $(OBJS) $(LDLIBS) $(dmalloc)
+	@[ "x$(debug)" = xon ] || strip $@
 
 eperl_main.o: eperl_main.c
 	$(CC) $(CFLAGS) -c eperl_main.c
@@ -357,7 +358,8 @@ install: all
 
 clean:
 	-rm -f $(OBJS)
-	-rm -f eperl
+	-rm -f eperl$(EXEEXT)
+	-rm -f eperl.1
 	-rm -f $(SOBJS)
 	-rm -f libeperl.a
 	-rm -f core *.core
diff --git a/eperl_main.c b/eperl_main.c
index e998607..b3dc878 100644
--- a/eperl_main.c
+++ b/eperl_main.c
@@ -1102,6 +1102,10 @@ int main(int argc, char **argv, char **env)
         HTTP_StripResponseHeaders(&cpOut, &nOut);
     }
 
+    /* now when the request was not a HEAD request we create the output */
+    cp = getenv("REQUEST_METHOD");
+    if (! ((mode == MODE_CGI || mode == MODE_NPHCGI) &&
+           cp != NULL && stringEQ(cp, "HEAD"))) {
         if (outputfile != NULL && stringNE(outputfile, "-")) {
             /* if we remembered current working dir, restore it now */
             if (mode == MODE_FILTER && cwd[0] != NUL)
@@ -1120,6 +1124,7 @@ int main(int argc, char **argv, char **env)
             /* make sure that the data is out before we exit */
             fflush(stdout);
         }
+    }
 
     CUS: /* the Clean Up Sequence */
 
diff --git a/eperl_parse.c b/eperl_parse.c
index 6e3cb7e..1969de1 100644
--- a/eperl_parse.c
+++ b/eperl_parse.c
@@ -381,7 +381,7 @@ char *ePerl_Cfnwrite(char *cpBuf, int nBuf, int cNum, char *cpOut, int *cpOutLen
 **
 */
 
-char *strnchr(char *buf, char chr, int n)
+char *ep_strnchr(char *buf, char chr, int n)
 {
     char *cp;
     char *cpe;
@@ -393,7 +393,7 @@ char *strnchr(char *buf, char chr, int n)
     return NULL;
 }
 
-char *strnstr(char *buf, char *str, int n)
+char *ep_strnstr(char *buf, char *str, int n)
 {
     char *cp;
     char *cpe;
@@ -407,7 +407,7 @@ char *strnstr(char *buf, char *str, int n)
     return NULL;
 }
 
-char *strncasestr(char *buf, char *str, int n)
+char *ep_strncasestr(char *buf, char *str, int n)
 {
     char *cp;
     char *cpe;
@@ -466,9 +466,9 @@ char *ePerl_Bristled2Plain(char *cpBuf)
     while (cps < cpEND) {
 
         if (ePerl_case_sensitive_delimiters)
-            cpe = strnstr(cps, ePerl_begin_delimiter, cpEND-cps);
+            cpe = ep_strnstr(cps, ePerl_begin_delimiter, cpEND-cps);
         else
-            cpe = strncasestr(cps, ePerl_begin_delimiter, cpEND-cps);
+            cpe = ep_strncasestr(cps, ePerl_begin_delimiter, cpEND-cps);
         if (cpe == NULL) {
 
             /* there are no more ePerl blocks, so
@@ -478,7 +478,7 @@ char *ePerl_Bristled2Plain(char *cpBuf)
             if (cps < cpEND) {
                 cps2 = cps;
                 /* first, do all complete lines */
-                while (cps2 < cpEND && (cpe2 = strnchr(cps2, '\n', cpEND-cps2)) != NULL) {
+                while (cps2 < cpEND && (cpe2 = ep_strnchr(cps2, '\n', cpEND-cps2)) != NULL) {
                     if (ePerl_line_continuation && cps < cpe2 && *(cpe2-1) == '\\') {
                         if (cpe2-1-cps2 > 0) {
                             cpOut = ePerl_fnprintf(cpOut, &cpOutLen, "print \"");
@@ -513,7 +513,7 @@ char *ePerl_Bristled2Plain(char *cpBuf)
                up to the begin of the ePerl block as print statements */
             if (cps < cpe) {
                 cps2 = cps;
-                while ((cpe2 = strnchr(cps2, '\n', cpe-cps2)) != NULL) {
+                while ((cpe2 = ep_strnchr(cps2, '\n', cpe-cps2)) != NULL) {
                     if (ePerl_line_continuation && cps < cpe2 && *(cpe2-1) == '\\') {
                         if (cpe2-1-cps2 > 0) {
                             cpOut = ePerl_fnprintf(cpOut, &cpOutLen, "print \"");
@@ -564,9 +564,9 @@ char *ePerl_Bristled2Plain(char *cpBuf)
 
             /* move forward to end of ePerl block. */
             if (ePerl_case_sensitive_delimiters)
-                cpe = strnstr(cpe, ePerl_end_delimiter, cpEND-cpe);
+                cpe = ep_strnstr(cpe, ePerl_end_delimiter, cpEND-cpe);
             else
-                cpe = strncasestr(cpe, ePerl_end_delimiter, cpEND-cpe);
+                cpe = ep_strncasestr(cpe, ePerl_end_delimiter, cpEND-cpe);
             if (cpe == NULL) {
                 ePerl_SetError("Missing end delimiter");
                 CU(NULL);
diff --git a/eperl_perl5_sm.pl b/eperl_perl5_sm.pl
index 0a881f9..763a7bf 100644
--- a/eperl_perl5_sm.pl
+++ b/eperl_perl5_sm.pl
@@ -53,7 +53,9 @@ EOT
 
 sub static_ext {
     unless (scalar @Extensions) {
-        @Extensions = sort split /\s+/, $Config{static_ext};
+        # my $static_ext = $Config{static_ext};
+        # $static_ext =~ s{^\s+}{};
+        # @Extensions = sort split /\s+/, $static_ext;
         unshift @Extensions, qw(DynaLoader);
     }
     return @Extensions;
diff --git a/eperl_pp.c b/eperl_pp.c
index 27091e9..97242bf 100644
--- a/eperl_pp.c
+++ b/eperl_pp.c
@@ -170,13 +170,13 @@ char *ePerl_PP_Process(char *cpInput, char **cppINC, int mode)
             if ((strncmp(cps, "#endif",    6) == 0) && (cp == NULL)) cp = cps;
             if ((strncmp(cps, "#c",        2) == 0) && (cp == NULL)) cp = cps;
         }
-        if (((cpT = strnstr(cps, "\n#include",  cpEND-cps)) != NULL) && ((cpT < cp) || (cp == NULL))) cp = cpT+1;
-        if (((cpT = strnstr(cps, "\n#sinclude", cpEND-cps)) != NULL) && ((cpT < cp) || (cp == NULL))) cp = cpT+1;
-        if (((cpT = strnstr(cps, "\n#if",       cpEND-cps)) != NULL) && ((cpT < cp) || (cp == NULL))) cp = cpT+1;
-        if (((cpT = strnstr(cps, "\n#elsif",    cpEND-cps)) != NULL) && ((cpT < cp) || (cp == NULL))) cp = cpT+1;
-        if (((cpT = strnstr(cps, "\n#else",     cpEND-cps)) != NULL) && ((cpT < cp) || (cp == NULL))) cp = cpT+1;
-        if (((cpT = strnstr(cps, "\n#endif",    cpEND-cps)) != NULL) && ((cpT < cp) || (cp == NULL))) cp = cpT+1;
-        if (((cpT = strnstr(cps, "\n#c",        cpEND-cps)) != NULL) && ((cpT < cp) || (cp == NULL))) cp = cpT+1;
+        if (((cpT = ep_strnstr(cps, "\n#include",  cpEND-cps)) != NULL) && ((cpT < cp) || (cp == NULL))) cp = cpT+1;
+        if (((cpT = ep_strnstr(cps, "\n#sinclude", cpEND-cps)) != NULL) && ((cpT < cp) || (cp == NULL))) cp = cpT+1;
+        if (((cpT = ep_strnstr(cps, "\n#if",       cpEND-cps)) != NULL) && ((cpT < cp) || (cp == NULL))) cp = cpT+1;
+        if (((cpT = ep_strnstr(cps, "\n#elsif",    cpEND-cps)) != NULL) && ((cpT < cp) || (cp == NULL))) cp = cpT+1;
+        if (((cpT = ep_strnstr(cps, "\n#else",     cpEND-cps)) != NULL) && ((cpT < cp) || (cp == NULL))) cp = cpT+1;
+        if (((cpT = ep_strnstr(cps, "\n#endif",    cpEND-cps)) != NULL) && ((cpT < cp) || (cp == NULL))) cp = cpT+1;
+        if (((cpT = ep_strnstr(cps, "\n#c",        cpEND-cps)) != NULL) && ((cpT < cp) || (cp == NULL))) cp = cpT+1;
 
         if (cp != NULL && (cp == cpBuf || (cp > cpBuf && *(cp-1) == '\n'))) {
             /* 
diff --git a/eperl_proto.h b/eperl_proto.h
index d2aef9c..f1f9d0a 100644
--- a/eperl_proto.h
+++ b/eperl_proto.h
@@ -53,7 +53,6 @@ extern void RememberINC(char *str);
 extern void mysighandler(int rc);
 extern void myinit(void);
 extern void myexit(int rc);
-extern int main(int argc, char **argv, char **env);
 
 /* eperl_parse.c */
 extern char *ePerl_begin_delimiter;
@@ -71,9 +70,9 @@ extern char *ePerl_Efwrite(char *cpBuf, int nBuf, int cNum, char *cpOut);
 extern char *ePerl_Efnwrite(char *cpBuf, int nBuf, int cNum, char *cpOut, int *n);
 extern char *ePerl_Cfwrite(char *cpBuf, int nBuf, int cNum, char *cpOut);
 extern char *ePerl_Cfnwrite(char *cpBuf, int nBuf, int cNum, char *cpOut, int *cpOutLen);
-extern char *strnchr(char *buf, char chr, int n);
-extern char *strnstr(char *buf, char *str, int n);
-extern char *strncasestr(char *buf, char *str, int n);
+extern char *ep_strnchr(char *buf, char chr, int n);
+extern char *ep_strnstr(char *buf, char *str, int n);
+extern char *ep_strncasestr(char *buf, char *str, int n);
 extern char *ePerl_Bristled2Plain(char *cpBuf);
 
 /* eperl_perl5.c */
diff --git a/etc/mkproto b/etc/mkproto
index 8c4fc1c..b191418 100755
--- a/etc/mkproto
+++ b/etc/mkproto
@@ -1,6 +1,10 @@
 :
 eval 'exec perl -S $0 ${1+"$@"}'
     if $running_under_some_shell;
+##
+##  mkproto -- generate prototype header
+##  Copyright (c) Ralf S. Engelschall, All Rights Reserved.
+##
 
 $header = $ARGV[0];
 shift @ARGV;
