diff --git a/Makefile b/Makefile
index 7e69389a808cbb7fe9fc03b66604cccb60e76589..58e58591a421b95b2ef7f70d5cf8f35203a3b2be 100644
--- a/Makefile
+++ b/Makefile
@@ -12,8 +12,8 @@ includes:
 	-mkdir $(INCLUDEDIR)
 	for i in $(SUBDIRS) ;	\
 	do	\
-		echo making includes in directory $$i; \
-		(cd $$i; $(MAKE) $(EXPORTS) includes)	\
+		[ -d $$i ] && { echo making includes in directory $$i; \
+		(cd $$i; $(MAKE) $(EXPORTS) includes) }	\
 	done
 
 
@@ -21,56 +21,34 @@ libraries:
 	-mkdir $(LIBDIR)
 	for i in $(SUBDIRS) ;	\
 	do	\
-		echo making libraries in directory $$i; \
-		(cd $$i; $(MAKE) $(EXPORTS) libraries)	\
+		[ -d $$i ] && { echo making libraries in directory $$i; \
+		(cd $$i; $(MAKE) $(EXPORTS) libraries) }  \
 	done
 
+include $(SCRIPTDIR)/sub-binaries.make
+include $(SCRIPTDIR)/sub-install.make
+include $(SCRIPTDIR)/sub-clean.make
+include $(SCRIPTDIR)/sub-depend.make
 
-binaries:
-	for i in $(SUBDIRS) ;	\
-	do	\
-		echo making binaries in directory $$i; \
-		(cd $$i; $(MAKE) $(EXPORTS) binaries)	\
-	done
-
-
-install:
-	for i in $(SUBDIRS) ;	\
-	do	\
-		echo making install in directory $$i; \
-		(cd $$i; $(MAKE) $(EXPORTS) install)	\
-	done
-
-
-depend: includes
-	for i in $(SUBDIRS) ;	\
-	do	\
-		echo making depend in directory $$i; \
-		(cd $$i; $(MAKE) $(EXPORTS) depend);	\
-	done
-
-
-clean:
-	$(RM) *~ core
-	for i in $(SUBDIRS); \
-	do \
-	   echo making clean in directory $$i; \
-	   (cd $$i; $(MAKE) $(EXPORTS) clean) \
-	done
 
 distribution: clean
 	-$(RM) -r lyskom-$(SERVER-VER)
 	mkdir lyskom-$(SERVER-VER)
-	cp -r doc lyskom-$(SERVER-VER)/doc
-	cp -r scripts lyskom-$(SERVER-VER)/scripts
+	cp Build Makefile lyskom-$(SERVER-VER)/
 	mkdir lyskom-$(SERVER-VER)/src
+	cp src/Makefile lyskom-$(SERVER-VER)/src/
 	mkdir lyskom-$(SERVER-VER)/src/libraries
+	cp src/libraries/Makefile lyskom-$(SERVER-VER)/src/libraries/
+	cp -r doc lyskom-$(SERVER-VER)/doc
+	cp -r scripts lyskom-$(SERVER-VER)/scripts
 	cp -r src/libraries/libansi lyskom-$(SERVER-VER)/src/libraries
 	cp -r src/libraries/libcommon lyskom-$(SERVER-VER)/src/libraries
 	cp -r src/libraries/libisc lyskom-$(SERVER-VER)/src/libraries
 	cp -r src/libraries/libmisc lyskom-$(SERVER-VER)/src/libraries
 	cp -r src/server lyskom-$(SERVER-VER)/src
+	cp -r src/include lyskom-$(SERVER-VER)/src/include
 	find lyskom-$(SERVER-VER) -name CVS.adm -print -exec rm -rf {} \; -prune
-	tar cvf lyskom-$(SERVER-VER).tar lyskom-$(SERVER-VER).tar
+	tar cvf lyskom-$(SERVER-VER).tar lyskom-$(SERVER-VER)
+	$(RM) lyskom-$(SERVER-VER).tar.Z
 	compress lyskom-$(SERVER-VER).tar
 	$(RM) -r lyskom-$(SERVER-VER)
diff --git a/doc/Makefile b/doc/Makefile
index 78a834ae40685c0a856b3ecf244c7fe3d5998c7f..0d1f99b1eb0e63e9b6d3e9de246785d8447aa373 100644
--- a/doc/Makefile
+++ b/doc/Makefile
@@ -11,18 +11,5 @@ includes:;
 libraries:;
 binaries:;
 
-clean:
-	$(RM) *~ core
-	for i in $(SUBDIRS); \
-	do \
-	   echo making clean in directory $$i; \
-	   (cd $$i; $(MAKE) $(EXPORTS) clean) \
-	done
-
-install:
-	for i in $(SUBDIRS); \
-	do \
-	   echo installing directory in directory $$i; \
-	   (cd $$i; $(MAKE) $(EXPORTS) install) \
-	done
-
+include $(SCRIPTDIR)/sub-clean.make
+include $(SCRIPTDIR)/sub-install.make
diff --git a/doc/man/Makefile b/doc/man/Makefile
index 1b91259d48a674e03f8f6e7e36ccd0871c830103..5d929ae136aa6199e8cd1cfe71e2fc49b0751e4f 100644
--- a/doc/man/Makefile
+++ b/doc/man/Makefile
@@ -10,20 +10,20 @@ all:;
 depend:;
 
 clean:
-	$(RM) *~ core
+	$(RM) $(GENERIC-CLEAN)
 	-for i in $(MANEXTS); \
 	do \
-	   echo making clean in directory man$$i; \
-	   (cd man$$i; $(RM) *~ core) \
+	   [ -d man$$i ] && { echo making clean in directory man$$i; \
+	   (cd man$$i; $(RM) *~ core) } \
 	done
 
 install:
 	for i in $(MANEXTS); \
 	do \
-	   for page in man$$i/*.$$i; \
+	   [ -d man$$i ] && { for page in man$$i/*.$$i; \
 	   do \
 	      echo installing $$page; \
 	      install $$page $(MANDIR)/man$$i; \
-	   done \
+	   done } \
 	done
 	ln $(MANDIR)/man8/ramkomd.8 $(MANDIR)/man8/lyskomd.8
diff --git a/scripts/Makefile b/scripts/Makefile
index 6da10fa0a75bba0e07ef906cfb1f3f3ec73d45e5..9588f98f6e854b54ac835237b65a9ccbefadf7c5 100644
--- a/scripts/Makefile
+++ b/scripts/Makefile
@@ -12,4 +12,4 @@ binaries:;
 	
 
 clean:
-	$(RM) *~ core
+	$(RM) $(GENERIC-CLEAN)
diff --git a/scripts/Parallell-depend.make b/scripts/Parallell-depend.make
index 7d985218622f23be3832755d2f1957b0f8a260fe..c1bba00ad3d03e5da29850a797de79b26d6047f1 100644
--- a/scripts/Parallell-depend.make
+++ b/scripts/Parallell-depend.make
@@ -24,3 +24,6 @@ c-indexes:
 	ls *.c|${AWK} '{ a[i++] = $$1; }				\
 	   END { for ( j = 0; j < i; j++ )				\
 		   print a[j] > sprintf("temp-%c-files", 65 + j % 5); }
+
+dependencies:
+	touch dependencies
diff --git a/scripts/import.make b/scripts/import.make
index 25420ee59977ec1dee1ab9a3bc6df11c5f4492a8..e0c3cb1e1389f22545bd1a446143c323f6184279 100644
--- a/scripts/import.make
+++ b/scripts/import.make
@@ -36,6 +36,10 @@ LYSKOMSYSBIN = /usr/lyskom/bin
 
 LYSKOMUSRBIN = /usr/local/bin
 
+
+
+GENERIC-CLEAN = *~ *.o dependencies core TAGS temp-Makefile temp-?-Makefile
+
 EXPORTS = CC="${CC}" SHELL="${SHELL}" AWK="${AWK}" SED="${SED}" 	\
 	RM="${RM}" INCLUDEDIR="${INCLUDEDIR}" LIBDIR="${LIBDIR}"	\
 	ANSIDIR="${ANSIDIR}" INCLUDES="${INCLUDES}"			\
@@ -44,7 +48,7 @@ EXPORTS = CC="${CC}" SHELL="${SHELL}" AWK="${AWK}" SED="${SED}" 	\
 	LDFLAGS="${LDFLAGS}" CFLAGS="${CFLAGS}"				\
 	LYSKOMSYSBIN="${LYSKOMSYSBIN}" LYSKOMUSRBIN="${LYSKOMUSRBIN}"	\
 	TOPDIR="${TOPDIR}" SCRIPTDIR="${SCRIPTDIR}" AR="${AR}" 		\
-	ARFLAGS="${ARFLAGS}"
+	ARFLAGS="${ARFLAGS}" GENERIC-CLEAN="${GENERIC-CLEAN}"
 
 # The Makefiles also dependes on the variables
 # AR, ARFLAGS
diff --git a/src/Makefile b/src/Makefile
index bdeabed4a62269fecb4553de984964bdf33e209c..e72781bf023969217c8bb56eebe5058cd1a9dddc 100644
--- a/src/Makefile
+++ b/src/Makefile
@@ -9,51 +9,14 @@ SUBDIRS = include libraries server komutils clients
 
 all: includes libraries binaries
 
-includes:
-	for i in $(SUBDIRS) ;	\
-	do	\
-		echo making includes in directory $$i; \
-		(cd $$i; $(MAKE) $(EXPORTS) includes)	\
-	done
-
-
-.PHONY: libraries
-libraries:
-	for i in $(SUBDIRS) ;	\
-	do	\
-		echo making libraries in directory $$i; \
-		(cd $$i; $(MAKE) $(EXPORTS) libraries)	\
-	done
-
-
-binaries:
-	for i in $(SUBDIRS) ;	\
-	do	\
-		echo making binaries in directory $$i; \
-		(cd $$i; $(MAKE) $(EXPORTS) binaries)	\
-	done
-
-
-install:
-	for i in $(SUBDIRS) ;	\
-	do	\
-		echo making install in directory $$i; \
-		(cd $$i; $(MAKE) $(EXPORTS) install)	\
-	done
-
-
-depend:
-	for i in $(SUBDIRS) ;	\
-	do	\
-		echo making depend in directory $$i; \
-		(cd $$i; $(MAKE) $(EXPORTS) depend)	\
-	done
-
-
-clean:
-	$(RM) *~ core
-	for i in $(SUBDIRS); \
-	do \
-	   echo making clean in directory $$i; \
-	   (cd $$i; $(MAKE) $(EXPORTS) clean) \
-	done
+include $(SCRIPTDIR)/includes.make
+include $(SCRIPTDIR)/libraries.make
+include $(SCRIPTDIR)/binaries.make
+include $(SCRIPTDIR)/install.make
+include $(SCRIPTDIR)/clean.make
+include $(SCRIPTDIR)/depend.make
+
+
+
+
+
diff --git a/src/include/Makefile b/src/include/Makefile
index 87a2e431b7dd534f3cc778d03cc2230fcf767613..ede472f6f166ed4733745bcb38033bf6286dae24 100644
--- a/src/include/Makefile
+++ b/src/include/Makefile
@@ -19,20 +19,21 @@ binaries:;
 includes:
 	for i in $(INSTALL-HDRS);\
 	do	\
-		cmp $$i $(INCLUDEDIR)/$$i || cp $$i $(INCLUDEDIR)/$$i; \
+		{ cmp $$i $(INCLUDEDIR)/$$i 2>/dev/null } \
+		  || cp $$i $(INCLUDEDIR)/$$i; \
 	done
 	for i in $(SUBDIRS); \
 	do	\
-		echo making includes in directory $$i; \
-		(cd $$i; $(MAKE) $(EXPORTS) includes); \
+		[ -d $$i ] && { echo making includes in directory $$i; \
+		(cd $$i; $(MAKE) $(EXPORTS) includes); } \
 	done
 
 clean:
-	$(RM) *~ core temp-Makefile Distfile *.o
+	$(RM) $(GENERIC-CLEAN)
 	for i in $(SUBDIRS); \
 	do	\
-		echo making clean in directory $$i; \
-		(cd $$i; $(MAKE) $(EXPORTS) clean); \
+		[ -d $$i ] && { echo making clean in directory $$i; \
+		(cd $$i; $(MAKE) $(EXPORTS) clean); } \
 	done
 
 depend:;
\ No newline at end of file
diff --git a/src/include/server/Makefile b/src/include/server/Makefile
index 29b539d16ce8620f1ed0194cd2e2750cff475143..8ddae46b4d25e752e8c07dbb1df428e3627d4f36 100644
--- a/src/include/server/Makefile
+++ b/src/include/server/Makefile
@@ -22,6 +22,6 @@ includes:
 	done
 
 clean:
-	$(RM) ${OBJECTS} *~ core temp-Makefile Distfile *.o
+	$(RM) $(GENERIC-CLEAN)
 
 depend:;
diff --git a/src/libraries/Makefile b/src/libraries/Makefile
index 3cc5db29fa4119512032b9498901bf3b06394338..9ced39ad9bb2b5acdca8dd5d740fc0cd46b8b7e6 100644
--- a/src/libraries/Makefile
+++ b/src/libraries/Makefile
@@ -10,47 +10,10 @@ SUBDIRS = libansi libmisc libisc libcommon client-support
 
 all: includes libraries binaries
 
-
-includes:
-	for i in $(SUBDIRS) ;	\
-	do	\
-		echo making includes in directory $$i; \
-		(cd $$i; $(MAKE) $(EXPORTS) includes)	\
-	done
-
-
-libraries:
-	for i in $(SUBDIRS) ;	\
-	do	\
-		echo making libraries in directory $$i; \
-		(cd $$i; $(MAKE) $(EXPORTS) libraries)	\
-	done
-
+include $(SCRIPTDIR)/includes.make
+include $(SCRIPTDIR)/libraries.make
+include $(SCRIPTDIR)/clean.make
+include $(SCRIPTDIR)/depend.make
+include $(SCRIPTDIR)/install.make
 
 binaries:;
-
-
-depend:
-	for i in $(SUBDIRS) ;	\
-	do	\
-		echo making depend in directory $$i; \
-		(cd $$i; $(MAKE) $(EXPORTS) depend);	\
-	done
-
-
-install:
-	for i in $(SUBDIRS) ;	\
-	do	\
-		echo making install in directory $$i; \
-		(cd $$i; $(MAKE) $(EXPORTS) install)	\
-	done
-
-
-clean:
-	$(RM) *~ core
-	for i in $(SUBDIRS); \
-	do \
-	   echo making clean in directory $$i; \
-	   (cd $$i; $(MAKE) $(EXPORTS) clean) \
-	done
-		
diff --git a/src/libraries/libansi/Makefile b/src/libraries/libansi/Makefile
index db1a7b19c0a6be7f6f8ff31f561764a0729b1257..f7df32a9cb2f5d27e23c5e11f12a23a0431fd1a2 100644
--- a/src/libraries/libansi/Makefile
+++ b/src/libraries/libansi/Makefile
@@ -25,7 +25,7 @@ libraries: $(LIBNAME)
 binaries:;
 
 clean:
-	$(RM) ${LIBOBJS} *~ core temp-Makefile Distfile *.o
+	$(RM) ${LIBOBJS} $(GENERIC-CLEAN)
 
 
 # Recreate the Makefile
diff --git a/src/libraries/libcommon/Makefile b/src/libraries/libcommon/Makefile
index b859ee5baefbbf39f65092a7716fd48a9654afec..91d30290a7e327e5dcc06bbdf503d85529cf0044 100644
--- a/src/libraries/libcommon/Makefile
+++ b/src/libraries/libcommon/Makefile
@@ -7,19 +7,19 @@ TARGET = -DCLIENT
 
 
 LIBOBJS = kom-errno.o misc-parser.o parser.o
-HDRS = misc-parser.h parser.h
+INSTALL-HDRS = misc-parser.h parser.h
 LIBRARIES = liblyskom-server.a liblyskom-client.a
 
 all: $(LIBRARIES)
 
 client-dir:
 	mkdir client-dir
-	ln -s `echo $(LIBOBJS) $(HDRS) dependencies| tr ' ' '\012' | \
+	ln -s `echo $(LIBOBJS) $(INSTALL-HDRS) dependencies| tr ' ' '\012' | \
 	sed 's/.o$$/.c/' | sed 's:^:\.\./:' ` client-dir/
 
 server-dir:
 	mkdir server-dir
-	ln -s `echo $(LIBOBJS) $(HDRS) dependencies| tr ' ' '\012' | \
+	ln -s `echo $(LIBOBJS) $(INSTALL-HDRS) dependencies| tr ' ' '\012' | \
 	sed 's/.o$$/.c/' | sed 's:^:\.\./:' ` server-dir/
 
 .PHONY: liblyskom-server.a
@@ -42,20 +42,15 @@ liblyskom-client.a: client-dir
 
 
 clean:
-	$(RM) -r *.o core Distfile *~ client-dir server-dir $(LIBRARIES)
+	$(RM) $(GENERIC-CLEAN) $(LIBRARIES)
+	$(RM) -r client-dir server-dir
 
 libraries: includes all 
 	(cd $(LIBDIR); $(RM)  $(LIBRARIES))
 	cp $(LIBRARIES) $(LIBDIR)
 	(cd $(LIBDIR); ranlib -t $(LIBRARIES))
 
-.PHONY: includes
-includes:
-	for i in $(HDRS);\
-	do	\
-		cmp $$i $(INCLUDEDIR)/$$i || cp $$i $(INCLUDEDIR)/$$i; \
-	done
-
+include $(SCRIPTDIR)/install-includes.make
 
 binaries:;
 
diff --git a/src/libraries/libmisc/Makefile b/src/libraries/libmisc/Makefile
index cd4627ab6a771f0883e17e78cf5960c67f6a387f..38afc971234958262de84d9188ecb7dcd241afd2 100644
--- a/src/libraries/libmisc/Makefile
+++ b/src/libraries/libmisc/Makefile
@@ -37,11 +37,7 @@ libraries: $(LIBNAME)
 	cp $(LIBNAME) $(LIBDIR)/$(LIBNAME)
 	ranlib -t $(LIBDIR)/$(LIBNAME)
 
-includes:
-	for i in $(INSTALL-HDRS);\
-	do	\
-		cmp $$i $(INCLUDEDIR)/$$i || cp $$i $(INCLUDEDIR)/$$i; \
-	done
+include $(SCRIPTDIR)/install-includes.make
 
 binaries:;
 
@@ -50,7 +46,7 @@ testnumlist: testnumlist.o numlist.o
 
 
 clean:
-	$(RM) ${OBJECTS} *~ core temp-Makefile Distfile *.o
+	$(RM) ${OBJECTS} $(GENERIC-CLEAN) Distfile
 
 
 # Recreate the Makefile
diff --git a/src/server/Makefile b/src/server/Makefile
index bd161fb4486af2b0f4f5b7f8ef37868d221fa55d..96af7f59f055dc88b77a812852cb7fb3770eebdc 100755
--- a/src/server/Makefile
+++ b/src/server/Makefile
@@ -1,4 +1,4 @@
-# $Id: Makefile,v 0.7 1991/08/28 02:22:07 ceder Exp $
+# $Id: Makefile,v 0.8 1991/08/29 02:44:25 ceder Exp $
 
 TOPDIR = /usr/lyskom/src
 SCRIPTDIR = $(TOPDIR)/scripts
@@ -112,7 +112,7 @@ install:  $(PROGRAMS)
 # Don't strip ramkomd - we want debugging info!
 
 clean:
-	$(RM) *.o *~ core $(PROGRAMS) $(SPECIALS) TAGS
+	$(RM) $(GENERIC-CLEAN) $(PROGRAMS) $(SPECIALS)
 
 specials: $(SPECIALS)