--- a/Makefile
+++ b/Makefile
@@ -24,7 +24,7 @@
 CFLAGS=-Wall -Winline -O2 -g $(BIGFILES)
 
 # Where you want it installed when you do 'make install'
-PREFIX=/usr/local
+PREFIX=/usr
 DOCDIR=share/doc/$(DISTNAME)
 
 OBJS= blocksort.o  \
@@ -35,7 +35,7 @@
       decompress.o \
       bzlib.o
 
-all: libbz2.a bzip2 bzip2recover test
+all: libbz2.a bzip2 bzip2recover
 
 bzip2: libbz2.a bzip2.o
 	$(CC) $(CFLAGS) $(LDFLAGS) -o bzip2 bzip2.o -L. -lbz2
@@ -70,52 +70,71 @@
 	@cat words3
 
 install: bzip2 bzip2recover
-	if ( test ! -d $(PREFIX)/bin ) ; then mkdir -p $(PREFIX)/bin ; fi
-	if ( test ! -d $(PREFIX)/lib ) ; then mkdir -p $(PREFIX)/lib ; fi
-	if ( test ! -d $(PREFIX)/man ) ; then mkdir -p $(PREFIX)/man ; fi
-	if ( test ! -d $(PREFIX)/man/man1 ) ; then mkdir -p $(PREFIX)/man/man1 ; fi
-	if ( test ! -d $(PREFIX)/$(DOCDIR) ) ; then mkdir -p $(PREFIX)/$(DOCDIR); fi
-	if ( test ! -d $(PREFIX)/include ) ; then mkdir -p $(PREFIX)/include ; fi
-	cp -f bzip2 $(PREFIX)/bin/bzip2
-	cp -f bzip2 $(PREFIX)/bin/bunzip2
-	cp -f bzip2 $(PREFIX)/bin/bzcat
-	cp -f bzip2recover $(PREFIX)/bin/bzip2recover
-	chmod a+x $(PREFIX)/bin/bzip2
-	chmod a+x $(PREFIX)/bin/bunzip2
-	chmod a+x $(PREFIX)/bin/bzcat
-	chmod a+x $(PREFIX)/bin/bzip2recover
-	cp -f bzip2.1 $(PREFIX)/man/man1
-	chmod a+r $(PREFIX)/man/man1/bzip2.1
-	cp -f bzlib.h $(PREFIX)/include
-	chmod a+r $(PREFIX)/include/bzlib.h
-	cp -f libbz2.a $(PREFIX)/lib
-	chmod a+r $(PREFIX)/lib/libbz2.a
-	cp -f bzgrep $(PREFIX)/bin/bzgrep
-	ln -s -f $(PREFIX)/bin/bzgrep $(PREFIX)/bin/bzegrep
-	ln -s -f $(PREFIX)/bin/bzgrep $(PREFIX)/bin/bzfgrep
-	chmod a+x $(PREFIX)/bin/bzgrep
-	cp -f bzmore $(PREFIX)/bin/bzmore
-	ln -s -f $(PREFIX)/bin/bzmore $(PREFIX)/bin/bzless
-	chmod a+x $(PREFIX)/bin/bzmore
-	cp -f bzdiff $(PREFIX)/bin/bzdiff
-	ln -s -f $(PREFIX)/bin/bzdiff $(PREFIX)/bin/bzcmp
-	chmod a+x $(PREFIX)/bin/bzdiff
-	cp -f bzgrep.1 bzmore.1 bzdiff.1 $(PREFIX)/man/man1
-	chmod a+r $(PREFIX)/man/man1/bzgrep.1
-	chmod a+r $(PREFIX)/man/man1/bzmore.1
-	chmod a+r $(PREFIX)/man/man1/bzdiff.1
-	echo ".so man1/bzgrep.1" > $(PREFIX)/man/man1/bzegrep.1
-	echo ".so man1/bzgrep.1" > $(PREFIX)/man/man1/bzfgrep.1
-	echo ".so man1/bzmore.1" > $(PREFIX)/man/man1/bzless.1
-	echo ".so man1/bzdiff.1" > $(PREFIX)/man/man1/bzcmp.1
-	cp -f manual.html $(PREFIX)/$(DOCDIR)
-	cp -f manual.pdf $(PREFIX)/$(DOCDIR)
-	cp -f manual.ps $(PREFIX)/$(DOCDIR)
-	cp -f bzip2.txt $(PREFIX)/$(DOCDIR)
-	chmod a+r $(PREFIX)/$(DOCDIR)/manual.html
-	chmod a+r $(PREFIX)/$(DOCDIR)/manual.pdf
-	chmod a+r $(PREFIX)/$(DOCDIR)/manual.ps
-	chmod a+r $(PREFIX)/$(DOCDIR)/bzip2.txt
+	if ( test ! -d $(DESTDIR)$(PREFIX)/bin ) ; then mkdir -p $(DESTDIR)$(PREFIX)/bin ; fi
+	if ( test ! -d $(DESTDIR)$(PREFIX)/lib ) ; then mkdir -p $(DESTDIR)$(PREFIX)/lib ; fi
+	if ( test ! -d $(DESTDIR)/bin ) ; then mkdir -p $(DESTDIR)/bin ; fi
+	if ( test ! -d $(DESTDIR)/lib ) ; then mkdir -p $(DESTDIR)/lib ; fi
+	if ( test ! -d $(DESTDIR)$(PREFIX)/share/man/man1 ) ; then mkdir -p $(DESTDIR)$(PREFIX)/share/man/man1 ; fi
+	if ( test ! -d $(DESTDIR)$(PREFIX)/$(DOCDIR) ) ; then mkdir -p $(DESTDIR)$(PREFIX)/$(DOCDIR); fi
+	if ( test ! -d $(DESTDIR)$(PREFIX)/include ) ; then mkdir -p $(DESTDIR)$(PREFIX)/include ; fi
+
+# shared bzip2
+	cp -a bzip2-shared $(DESTDIR)/bin/bzip2
+	chmod a+x $(DESTDIR)/bin/bzip2
+# shared library
+	cp -a libbz2.so* $(DESTDIR)/lib
+	ln -s ../../lib/libbz2.so.1.0 $(DESTDIR)$(PREFIX)/lib/libbz2.so
+# bunzip2
+	ln -s ../../bin/bzip2 $(DESTDIR)$(PREFIX)/bin/bunzip2
+# bzcat
+	ln -s ../../bin/bzip2 $(DESTDIR)$(PREFIX)/bin/bzcat
+# bzdiff
+	cp -f bzdiff $(DESTDIR)$(PREFIX)/bin/bzdiff
+	chmod a+x $(DESTDIR)$(PREFIX)/bin/bzdiff
+# bzcmp
+	ln -s bzdiff $(DESTDIR)$(PREFIX)/bin/bzcmp
+# bzgrep
+	cp -f bzgrep $(DESTDIR)$(PREFIX)/bin/bzgrep
+	chmod a+x $(DESTDIR)$(PREFIX)/bin/bzgrep
+# bzegrep
+	ln -s bzgrep $(DESTDIR)$(PREFIX)/bin/bzegrep
+# bzfgrep
+	ln -s bzgrep $(DESTDIR)$(PREFIX)/bin/bzfgrep
+# bzip2recover
+	cp -f bzip2recover $(DESTDIR)$(PREFIX)/bin/bzip2recover
+	chmod a+x $(DESTDIR)$(PREFIX)/bin/bzip2recover
+# bzmore
+	cp -f bzmore $(DESTDIR)$(PREFIX)/bin/bzmore
+	chmod a+x $(DESTDIR)$(PREFIX)/bin/bzmore
+# bzless
+	ln -s bzmore $(DESTDIR)$(PREFIX)/bin/bzless
+# headers
+	cp -f bzlib.h bzlib_private.h $(DESTDIR)$(PREFIX)/include
+	chmod a+r $(DESTDIR)$(PREFIX)/include/bzlib.h
+	chmod a+r $(DESTDIR)$(PREFIX)/include/bzlib_private.h
+# static library
+	cp -f libbz2.a $(DESTDIR)$(PREFIX)/lib
+	chmod a+r $(DESTDIR)$(PREFIX)/lib/libbz2.a
+# man pages
+	cp -f bzip2.1 $(DESTDIR)$(PREFIX)/share/man/man1
+	chmod a+r $(DESTDIR)$(PREFIX)/share/man/man1/bzip2.1
+	cp -f bzgrep.1 bzmore.1 bzdiff.1 $(DESTDIR)$(PREFIX)/share/man/man1
+	chmod a+r $(DESTDIR)$(PREFIX)/share/man/man1/bzgrep.1
+	chmod a+r $(DESTDIR)$(PREFIX)/share/man/man1/bzmore.1
+	chmod a+r $(DESTDIR)$(PREFIX)/share/man/man1/bzdiff.1
+	echo ".so man1/bzgrep.1" > $(DESTDIR)$(PREFIX)/share/man/man1/bzegrep.1
+	echo ".so man1/bzgrep.1" > $(DESTDIR)$(PREFIX)/share/man/man1/bzfgrep.1
+	echo ".so man1/bzmore.1" > $(DESTDIR)$(PREFIX)/share/man/man1/bzless.1
+	echo ".so man1/bzdiff.1" > $(DESTDIR)$(PREFIX)/share/man/man1/bzcmp.1
+# docs
+	cp -f manual.html $(DESTDIR)$(PREFIX)/$(DOCDIR)
+	cp -f manual.pdf $(DESTDIR)$(PREFIX)/$(DOCDIR)
+	cp -f manual.ps $(DESTDIR)$(PREFIX)/$(DOCDIR)
+	cp -f bzip2.txt $(DESTDIR)$(PREFIX)/$(DOCDIR)
+	chmod a+r $(DESTDIR)$(PREFIX)/$(DOCDIR)/manual.html
+	chmod a+r $(DESTDIR)$(PREFIX)/$(DOCDIR)/manual.pdf
+	chmod a+r $(DESTDIR)$(PREFIX)/$(DOCDIR)/manual.ps
+	chmod a+r $(DESTDIR)$(PREFIX)/$(DOCDIR)/bzip2.txt
 
 clean: 
 	rm -f *.o libbz2.a bzip2 bzip2recover \
