convert non-low-level non-google pkg code
to whole-package compilation.

R=r
OCL=33070
CL=33101
diff --git a/src/pkg/archive/tar/Makefile b/src/pkg/archive/tar/Makefile
index 78734ef..debe062 100644
--- a/src/pkg/archive/tar/Makefile
+++ b/src/pkg/archive/tar/Makefile
@@ -2,69 +2,12 @@
 # Use of this source code is governed by a BSD-style
 # license that can be found in the LICENSE file.
 
-
-# DO NOT EDIT.  Automatically generated by gobuild.
-# gobuild -m >Makefile
-
-D=/archive/
-
 include $(GOROOT)/src/Make.$(GOARCH)
-AR=gopack
 
-default: packages
+TARG=archive/tar
+GOFILES=\
+	common.go\
+	reader.go\
+	writer.go\
 
-clean:
-	rm -rf *.[$(OS)] *.a [$(OS)].out _obj
-
-test: packages
-	gotest
-
-coverage: packages
-	gotest
-	6cov -g $$(pwd) | grep -v '_test\.go:'
-
-%.$O: %.go
-	$(GC) -I_obj $*.go
-
-%.$O: %.c
-	$(CC) $*.c
-
-%.$O: %.s
-	$(AS) $*.s
-
-O1=\
-	common.$O\
-
-O2=\
-	reader.$O\
-	writer.$O\
-
-
-phases: a1 a2
-_obj$D/tar.a: phases
-
-a1: $(O1)
-	$(AR) grc _obj$D/tar.a common.$O
-	rm -f $(O1)
-
-a2: $(O2)
-	$(AR) grc _obj$D/tar.a reader.$O writer.$O
-	rm -f $(O2)
-
-
-newpkg: clean
-	mkdir -p _obj$D
-	$(AR) grc _obj$D/tar.a
-
-$(O1): newpkg
-$(O2): a1
-$(O3): a2
-
-nuke: clean
-	rm -f $(GOROOT)/pkg/$(GOOS)_$(GOARCH)$D/tar.a
-
-packages: _obj$D/tar.a
-
-install: packages
-	test -d $(GOROOT)/pkg && mkdir -p $(GOROOT)/pkg/$(GOOS)_$(GOARCH)$D
-	cp _obj$D/tar.a $(GOROOT)/pkg/$(GOOS)_$(GOARCH)$D/tar.a
+include $(GOROOT)/src/Make.pkg
diff --git a/src/pkg/archive/tar/reader.go b/src/pkg/archive/tar/reader.go
index 56b8404..044d5ab 100644
--- a/src/pkg/archive/tar/reader.go
+++ b/src/pkg/archive/tar/reader.go
@@ -8,7 +8,6 @@
 //   - pax extensions
 
 import (
-	"archive/tar";
 	"bytes";
 	"io";
 	"os";
@@ -25,8 +24,8 @@
 // and then it can be treated as an io.Reader to access the file's data.
 //
 // Example:
-// 	tr := tar.NewReader(r);
-// 	for {
+//	tr := tar.NewReader(r);
+//	for {
 //		hdr, err := tr.Next();
 //		if err != nil {
 //			// handle error
@@ -36,7 +35,7 @@
 //			break
 //		}
 //		io.Copy(tr, data);
-// 	}
+//	}
 type Reader struct {
 	r io.Reader;
 	err os.Error;
@@ -44,9 +43,6 @@
 	pad int64;	// amount of padding (ignored) after current file entry
 }
 
-func (tr *Reader) skipUnread()
-func (tr *Reader) readHeader() *Header
-
 // NewReader creates a new Reader reading from r.
 func NewReader(r io.Reader) *Reader {
 	return &Reader{ r: r }
diff --git a/src/pkg/archive/tar/reader_test.go b/src/pkg/archive/tar/reader_test.go
index 428f73e..cc3f8fe 100644
--- a/src/pkg/archive/tar/reader_test.go
+++ b/src/pkg/archive/tar/reader_test.go
@@ -5,7 +5,6 @@
 package tar
 
 import (
-	"archive/tar";
 	"bytes";
 	"fmt";
 	"io";
diff --git a/src/pkg/archive/tar/writer.go b/src/pkg/archive/tar/writer.go
index fbb0031..b3ce6b5 100644
--- a/src/pkg/archive/tar/writer.go
+++ b/src/pkg/archive/tar/writer.go
@@ -8,7 +8,6 @@
 // - catch more errors (no first header, write after close, etc.)
 
 import (
-	"archive/tar";
 	"bytes";
 	"io";
 	"os";
@@ -28,7 +27,7 @@
 // writing at most hdr.Size bytes in total.
 //
 // Example:
-// 	tw := tar.NewWriter(w);
+//	tw := tar.NewWriter(w);
 //	hdr := new(Header);
 //	hdr.Size = length of data in bytes;
 //	// populate other hdr fields as desired
diff --git a/src/pkg/archive/tar/writer_test.go b/src/pkg/archive/tar/writer_test.go
index 5ada36b..775882c 100644
--- a/src/pkg/archive/tar/writer_test.go
+++ b/src/pkg/archive/tar/writer_test.go
@@ -5,7 +5,6 @@
 package tar
 
 import (
-	"archive/tar";
 	"bytes";
 	"fmt";
 	"io";
diff --git a/src/pkg/base64/Makefile b/src/pkg/base64/Makefile
index 38e7f9b..ff91695 100644
--- a/src/pkg/base64/Makefile
+++ b/src/pkg/base64/Makefile
@@ -2,60 +2,10 @@
 # Use of this source code is governed by a BSD-style
 # license that can be found in the LICENSE file.
 
-
-# DO NOT EDIT.  Automatically generated by gobuild.
-# gobuild -m >Makefile
-
-D=
-
 include $(GOROOT)/src/Make.$(GOARCH)
-AR=gopack
 
-default: packages
+TARG=base64
+GOFILES=\
+	base64.go\
 
-clean:
-	rm -rf *.[$(OS)] *.a [$(OS)].out _obj
-
-test: packages
-	gotest
-
-coverage: packages
-	gotest
-	6cov -g $$(pwd) | grep -v '_test\.go:'
-
-%.$O: %.go
-	$(GC) -I_obj $*.go
-
-%.$O: %.c
-	$(CC) $*.c
-
-%.$O: %.s
-	$(AS) $*.s
-
-O1=\
-	base64.$O\
-
-
-phases: a1
-_obj$D/base64.a: phases
-
-a1: $(O1)
-	$(AR) grc _obj$D/base64.a base64.$O
-	rm -f $(O1)
-
-
-newpkg: clean
-	mkdir -p _obj$D
-	$(AR) grc _obj$D/base64.a
-
-$(O1): newpkg
-$(O2): a1
-
-nuke: clean
-	rm -f $(GOROOT)/pkg/$(GOOS)_$(GOARCH)$D/base64.a
-
-packages: _obj$D/base64.a
-
-install: packages
-	test -d $(GOROOT)/pkg && mkdir -p $(GOROOT)/pkg/$(GOOS)_$(GOARCH)$D
-	cp _obj$D/base64.a $(GOROOT)/pkg/$(GOOS)_$(GOARCH)$D/base64.a
+include $(GOROOT)/src/Make.pkg
diff --git a/src/pkg/base64/base64_test.go b/src/pkg/base64/base64_test.go
index 6ebaa23..34bcfb3 100644
--- a/src/pkg/base64/base64_test.go
+++ b/src/pkg/base64/base64_test.go
@@ -5,7 +5,6 @@
 package base64
 
 import (
-	"base64";
 	"bytes";
 	"io";
 	"os";
diff --git a/src/pkg/bignum/Makefile b/src/pkg/bignum/Makefile
index 20f75bc..bcb8752 100644
--- a/src/pkg/bignum/Makefile
+++ b/src/pkg/bignum/Makefile
@@ -2,84 +2,13 @@
 # Use of this source code is governed by a BSD-style
 # license that can be found in the LICENSE file.
 
-
-# DO NOT EDIT.  Automatically generated by gobuild.
-# gobuild -m arith.go bignum.go integer.go rational.go >Makefile
-
-D=
-
 include $(GOROOT)/src/Make.$(GOARCH)
-AR=gopack
 
-default: packages
+TARG=bignum
+GOFILES=\
+	arith.go\
+	bignum.go\
+	integer.go\
+	rational.go\
 
-clean:
-	rm -rf *.[$(OS)] *.a [$(OS)].out _obj
-
-test: packages
-	gotest
-
-coverage: packages
-	gotest
-	6cov -g $$(pwd) | grep -v '_test\.go:'
-
-%.$O: %.go
-	$(GC) -I_obj $*.go
-
-%.$O: %.c
-	$(CC) $*.c
-
-%.$O: %.s
-	$(AS) $*.s
-
-O1=\
-	arith.$O\
-
-O2=\
-	bignum.$O\
-
-O3=\
-	integer.$O\
-
-O4=\
-	rational.$O\
-
-
-phases: a1 a2 a3 a4
-_obj$D/bignum.a: phases
-
-a1: $(O1)
-	$(AR) grc _obj$D/bignum.a arith.$O
-	rm -f $(O1)
-
-a2: $(O2)
-	$(AR) grc _obj$D/bignum.a bignum.$O
-	rm -f $(O2)
-
-a3: $(O3)
-	$(AR) grc _obj$D/bignum.a integer.$O
-	rm -f $(O3)
-
-a4: $(O4)
-	$(AR) grc _obj$D/bignum.a rational.$O
-	rm -f $(O4)
-
-
-newpkg: clean
-	mkdir -p _obj$D
-	$(AR) grc _obj$D/bignum.a
-
-$(O1): newpkg
-$(O2): a1
-$(O3): a2
-$(O4): a3
-$(O5): a4
-
-nuke: clean
-	rm -f $(GOROOT)/pkg/$(GOOS)_$(GOARCH)$D/bignum.a
-
-packages: _obj$D/bignum.a
-
-install: packages
-	test -d $(GOROOT)/pkg && mkdir -p $(GOROOT)/pkg/$(GOOS)_$(GOARCH)$D
-	cp _obj$D/bignum.a $(GOROOT)/pkg/$(GOOS)_$(GOARCH)$D/bignum.a
+include $(GOROOT)/src/Make.pkg
diff --git a/src/pkg/bignum/bignum.go b/src/pkg/bignum/bignum.go
index 2b36fbd..7d2dde6 100755
--- a/src/pkg/bignum/bignum.go
+++ b/src/pkg/bignum/bignum.go
@@ -12,7 +12,6 @@
 package bignum
 
 import (
-	"bignum";
 	"fmt";
 )
 
@@ -308,9 +307,6 @@
 }
 
 
-// MulAdd128 is defined in arith.go and arith.s .
-func MulAdd128(x, y, c uint64) (z1, z0 uint64)
-
 // Returns z1 = (x*y + c) div B, z0 = (x*y + c) mod B.
 //
 func muladd11(x, y, c digit) (digit, digit) {
diff --git a/src/pkg/bignum/bignum_test.go b/src/pkg/bignum/bignum_test.go
index d691da2..5b4cf8f 100644
--- a/src/pkg/bignum/bignum_test.go
+++ b/src/pkg/bignum/bignum_test.go
@@ -5,7 +5,6 @@
 package bignum
 
 import (
-	"bignum";
 	"fmt";
 	"testing";
 )
diff --git a/src/pkg/bignum/integer.go b/src/pkg/bignum/integer.go
index 30e13092..35a95bb 100644
--- a/src/pkg/bignum/integer.go
+++ b/src/pkg/bignum/integer.go
@@ -10,7 +10,6 @@
 package bignum
 
 import (
-	"bignum";
 	"fmt";
 )
 
@@ -352,7 +351,7 @@
 		// (-x) >> s == ^(x-1) >> s == ^((x-1) >> s) == -(((x-1) >> s) + 1)
 		return MakeInt(true, x.mant.Sub(Nat(1)).Shr(s).Add(Nat(1)));
 	}
-	
+
 	return MakeInt(false, x.mant.Shr(s));
 }
 
diff --git a/src/pkg/bignum/rational.go b/src/pkg/bignum/rational.go
index 92b5d88..baa9b41 100644
--- a/src/pkg/bignum/rational.go
+++ b/src/pkg/bignum/rational.go
@@ -6,7 +6,6 @@
 
 package bignum
 
-import "bignum"
 import "fmt"
 
 
@@ -179,7 +178,7 @@
 // of the numerator is returned. If the mantissa contains a decimal point,
 // the base for the fractional part is the same as for the part before the
 // decimal point and the fractional part does not accept a base prefix.
-// The base for the exponent is always 10. 
+// The base for the exponent is always 10.
 //
 func RatFromString(s string, base uint) (*Rational, uint, int) {
 	// read numerator
diff --git a/src/pkg/bufio/Makefile b/src/pkg/bufio/Makefile
index abb826e..af41e88 100644
--- a/src/pkg/bufio/Makefile
+++ b/src/pkg/bufio/Makefile
@@ -2,59 +2,10 @@
 # Use of this source code is governed by a BSD-style
 # license that can be found in the LICENSE file.
 
-# DO NOT EDIT.  Automatically generated by gobuild.
-# gobuild -m >Makefile
-
-D=
-
 include $(GOROOT)/src/Make.$(GOARCH)
-AR=gopack
 
-default: packages
+TARG=bufio
+GOFILES=\
+	bufio.go\
 
-clean:
-	rm -rf *.[$(OS)] *.a [$(OS)].out _obj
-
-test: packages
-	gotest
-
-coverage: packages
-	gotest
-	6cov -g `pwd` | grep -v '_test\.go:'
-
-%.$O: %.go
-	$(GC) -I_obj $*.go
-
-%.$O: %.c
-	$(CC) $*.c
-
-%.$O: %.s
-	$(AS) $*.s
-
-O1=\
-	bufio.$O\
-
-
-phases: a1
-_obj$D/bufio.a: phases
-
-a1: $(O1)
-	$(AR) grc _obj$D/bufio.a bufio.$O
-	rm -f $(O1)
-
-
-newpkg: clean
-	mkdir -p _obj$D
-	$(AR) grc _obj$D/bufio.a
-
-$(O1): newpkg
-$(O2): a1
-
-nuke: clean
-	rm -f $(GOROOT)/pkg/$(GOOS)_$(GOARCH)$D/bufio.a
-
-packages: _obj$D/bufio.a
-
-install: packages
-	test -d $(GOROOT)/pkg && mkdir -p $(GOROOT)/pkg/$(GOOS)_$(GOARCH)$D
-	cp _obj$D/bufio.a $(GOROOT)/pkg/$(GOOS)_$(GOARCH)$D/bufio.a
+include $(GOROOT)/src/Make.pkg
diff --git a/src/pkg/bufio/bufio_test.go b/src/pkg/bufio/bufio_test.go
index c08f68e..e5bf904 100644
--- a/src/pkg/bufio/bufio_test.go
+++ b/src/pkg/bufio/bufio_test.go
@@ -6,7 +6,6 @@
 
 import (
 	"bytes";
-	"bufio";
 	"fmt";
 	"io";
 	"os";
@@ -191,7 +190,7 @@
 func readRuneSegments(t *testing.T, segments []string) {
 	got := "";
 	want := strings.Join(segments, "");
-	r := bufio.NewReader(&StringReader{data: segments});
+	r := NewReader(&StringReader{data: segments});
 	for {
 		rune, size, err := r.ReadRune();
 		if err != nil {
diff --git a/src/pkg/compress/flate/Makefile b/src/pkg/compress/flate/Makefile
index 3f73a19..1759dfb 100644
--- a/src/pkg/compress/flate/Makefile
+++ b/src/pkg/compress/flate/Makefile
@@ -2,59 +2,10 @@
 # Use of this source code is governed by a BSD-style
 # license that can be found in the LICENSE file.
 
-# DO NOT EDIT.  Automatically generated by gobuild.
-# gobuild -m >Makefile
-
-D=/compress/
-
 include $(GOROOT)/src/Make.$(GOARCH)
-AR=gopack
 
-default: packages
+TARG=compress/flate
+GOFILES=\
+	inflate.go\
 
-clean:
-	rm -rf *.[$(OS)] *.a [$(OS)].out _obj
-
-test: packages
-	gotest
-
-coverage: packages
-	gotest
-	6cov -g `pwd` | grep -v '_test\.go:'
-
-%.$O: %.go
-	$(GC) -I_obj $*.go
-
-%.$O: %.c
-	$(CC) $*.c
-
-%.$O: %.s
-	$(AS) $*.s
-
-O1=\
-	inflate.$O\
-
-
-phases: a1
-_obj$D/flate.a: phases
-
-a1: $(O1)
-	$(AR) grc _obj$D/flate.a inflate.$O
-	rm -f $(O1)
-
-
-newpkg: clean
-	mkdir -p _obj$D
-	$(AR) grc _obj$D/flate.a
-
-$(O1): newpkg
-$(O2): a1
-
-nuke: clean
-	rm -f $(GOROOT)/pkg/$(GOOS)_$(GOARCH)$D/flate.a
-
-packages: _obj$D/flate.a
-
-install: packages
-	test -d $(GOROOT)/pkg && mkdir -p $(GOROOT)/pkg/$(GOOS)_$(GOARCH)$D
-	cp _obj$D/flate.a $(GOROOT)/pkg/$(GOOS)_$(GOARCH)$D/flate.a
+include $(GOROOT)/src/Make.pkg
diff --git a/src/pkg/compress/flate/flate_test.go b/src/pkg/compress/flate/flate_test.go
index bfa5627..01d875c 100644
--- a/src/pkg/compress/flate/flate_test.go
+++ b/src/pkg/compress/flate/flate_test.go
@@ -11,7 +11,6 @@
 import (
 	"bytes";
 	"bufio";
-	"compress/flate";
 	"io";
 	"os";
 	"reflect";
@@ -102,7 +101,7 @@
 		fixedHuffmanDecoder,
 		true,
 	},
-	
+
 	// Illegal input.
 	&InitDecoderTest{
 		[]int{ },
diff --git a/src/pkg/compress/flate/inflate.go b/src/pkg/compress/flate/inflate.go
index 95973b4..8719473 100644
--- a/src/pkg/compress/flate/inflate.go
+++ b/src/pkg/compress/flate/inflate.go
@@ -263,13 +263,6 @@
 	buf [4]byte;
 }
 
-func (f *inflater) dataBlock() os.Error
-func (f *inflater) readHuffman() os.Error
-func (f *inflater) decodeBlock(hl, hd *huffmanDecoder) os.Error
-func (f *inflater) moreBits() os.Error
-func (f *inflater) huffSym(h *huffmanDecoder) (int, os.Error)
-func (f *inflater) flush() os.Error
-
 func (f *inflater) inflate() (err os.Error) {
 	final := false;
 	for err == nil && !final {
diff --git a/src/pkg/compress/gzip/Makefile b/src/pkg/compress/gzip/Makefile
index 514118a..717a2d6 100644
--- a/src/pkg/compress/gzip/Makefile
+++ b/src/pkg/compress/gzip/Makefile
@@ -2,59 +2,10 @@
 # Use of this source code is governed by a BSD-style
 # license that can be found in the LICENSE file.
 
-# DO NOT EDIT.  Automatically generated by gobuild.
-# gobuild -m >Makefile
-
-D=/compress/
-
 include $(GOROOT)/src/Make.$(GOARCH)
-AR=gopack
 
-default: packages
+TARG=compress/gzip
+GOFILES=\
+	gunzip.go\
 
-clean:
-	rm -rf *.[$(OS)] *.a [$(OS)].out _obj
-
-test: packages
-	gotest
-
-coverage: packages
-	gotest
-	6cov -g `pwd` | grep -v '_test\.go:'
-
-%.$O: %.go
-	$(GC) -I_obj $*.go
-
-%.$O: %.c
-	$(CC) $*.c
-
-%.$O: %.s
-	$(AS) $*.s
-
-O1=\
-	gunzip.$O\
-
-
-phases: a1
-_obj$D/gzip.a: phases
-
-a1: $(O1)
-	$(AR) grc _obj$D/gzip.a gunzip.$O
-	rm -f $(O1)
-
-
-newpkg: clean
-	mkdir -p _obj$D
-	$(AR) grc _obj$D/gzip.a
-
-$(O1): newpkg
-$(O2): a1
-
-nuke: clean
-	rm -f $(GOROOT)/pkg/$(GOOS)_$(GOARCH)$D/gzip.a
-
-packages: _obj$D/gzip.a
-
-install: packages
-	test -d $(GOROOT)/pkg && mkdir -p $(GOROOT)/pkg/$(GOOS)_$(GOARCH)$D
-	cp _obj$D/gzip.a $(GOROOT)/pkg/$(GOOS)_$(GOARCH)$D/gzip.a
+include $(GOROOT)/src/Make.pkg
diff --git a/src/pkg/compress/gzip/gunzip.go b/src/pkg/compress/gzip/gunzip.go
index f170e8b..f4accf1 100644
--- a/src/pkg/compress/gzip/gunzip.go
+++ b/src/pkg/compress/gzip/gunzip.go
@@ -71,8 +71,6 @@
 	eof bool;
 }
 
-func (z *GzipInflater) readHeader(save bool) os.Error
-
 // NewGzipInflater creates a new GzipInflater reading the given reader.
 // The implementation buffers input and may read more data than necessary from r.
 func NewGzipInflater(r io.Reader) (*GzipInflater, os.Error) {
diff --git a/src/pkg/compress/gzip/gunzip_test.go b/src/pkg/compress/gzip/gunzip_test.go
index b8c9c71..99df326 100644
--- a/src/pkg/compress/gzip/gunzip_test.go
+++ b/src/pkg/compress/gzip/gunzip_test.go
@@ -6,7 +6,6 @@
 
 import (
 	"bytes";
-	"compress/gzip";
 	"fmt";
 	"io";
 	"testing";
diff --git a/src/pkg/container/list/Makefile b/src/pkg/container/list/Makefile
index 2a647eb..3ed4d1f 100644
--- a/src/pkg/container/list/Makefile
+++ b/src/pkg/container/list/Makefile
@@ -2,59 +2,10 @@
 # Use of this source code is governed by a BSD-style
 # license that can be found in the LICENSE file.
 
-# DO NOT EDIT.  Automatically generated by gobuild.
-# gobuild -m >Makefile
-
-D=/container/
-
 include $(GOROOT)/src/Make.$(GOARCH)
-AR=gopack
 
-default: packages
+TARG=container/list
+GOFILES=\
+	list.go\
 
-clean:
-	rm -rf *.[$(OS)] *.a [$(OS)].out _obj
-
-test: packages
-	gotest
-
-coverage: packages
-	gotest
-	6cov -g `pwd` | grep -v '_test\.go:'
-
-%.$O: %.go
-	$(GC) -I_obj $*.go
-
-%.$O: %.c
-	$(CC) $*.c
-
-%.$O: %.s
-	$(AS) $*.s
-
-O1=\
-	list.$O\
-
-
-phases: a1
-_obj$D/list.a: phases
-
-a1: $(O1)
-	$(AR) grc _obj$D/list.a list.$O
-	rm -f $(O1)
-
-
-newpkg: clean
-	mkdir -p _obj$D
-	$(AR) grc _obj$D/list.a
-
-$(O1): newpkg
-$(O2): a1
-
-nuke: clean
-	rm -f $(GOROOT)/pkg/$(GOOS)_$(GOARCH)$D/list.a
-
-packages: _obj$D/list.a
-
-install: packages
-	test -d $(GOROOT)/pkg && mkdir -p $(GOROOT)/pkg/$(GOOS)_$(GOARCH)$D
-	cp _obj$D/list.a $(GOROOT)/pkg/$(GOOS)_$(GOARCH)$D/list.a
+include $(GOROOT)/src/Make.pkg
diff --git a/src/pkg/container/list/list_test.go b/src/pkg/container/list/list_test.go
index bdfed35..7b2480f 100755
--- a/src/pkg/container/list/list_test.go
+++ b/src/pkg/container/list/list_test.go
@@ -5,7 +5,6 @@
 package list
 
 import (
-	"container/list";
 	"testing";
 )
 
diff --git a/src/pkg/container/ring/Makefile b/src/pkg/container/ring/Makefile
index 931f405..70046cb 100644
--- a/src/pkg/container/ring/Makefile
+++ b/src/pkg/container/ring/Makefile
@@ -2,60 +2,10 @@
 # Use of this source code is governed by a BSD-style
 # license that can be found in the LICENSE file.
 
-
-# DO NOT EDIT.  Automatically generated by gobuild.
-# gobuild -m >Makefile
-
-D=/container/
-
 include $(GOROOT)/src/Make.$(GOARCH)
-AR=gopack
 
-default: packages
+TARG=container/ring
+GOFILES=\
+	ring.go\
 
-clean:
-	rm -rf *.[$(OS)] *.a [$(OS)].out _obj
-
-test: packages
-	gotest
-
-coverage: packages
-	gotest
-	6cov -g $$(pwd) | grep -v '_test\.go:'
-
-%.$O: %.go
-	$(GC) -I_obj $*.go
-
-%.$O: %.c
-	$(CC) $*.c
-
-%.$O: %.s
-	$(AS) $*.s
-
-O1=\
-	ring.$O\
-
-
-phases: a1
-_obj$D/ring.a: phases
-
-a1: $(O1)
-	$(AR) grc _obj$D/ring.a ring.$O
-	rm -f $(O1)
-
-
-newpkg: clean
-	mkdir -p _obj$D
-	$(AR) grc _obj$D/ring.a
-
-$(O1): newpkg
-$(O2): a1
-
-nuke: clean
-	rm -f $(GOROOT)/pkg/$(GOOS)_$(GOARCH)$D/ring.a
-
-packages: _obj$D/ring.a
-
-install: packages
-	test -d $(GOROOT)/pkg && mkdir -p $(GOROOT)/pkg/$(GOOS)_$(GOARCH)$D
-	cp _obj$D/ring.a $(GOROOT)/pkg/$(GOOS)_$(GOARCH)$D/ring.a
+include $(GOROOT)/src/Make.pkg
diff --git a/src/pkg/container/ring/ring_test.go b/src/pkg/container/ring/ring_test.go
index c2e9d41..8ecbacd 100644
--- a/src/pkg/container/ring/ring_test.go
+++ b/src/pkg/container/ring/ring_test.go
@@ -5,7 +5,6 @@
 package ring
 
 import (
-	"container/ring";
 	"fmt";
 	"testing";
 )
@@ -90,7 +89,7 @@
 	if r.Prev() != r.prev {
 		t.Errorf("r.Prev() != r.prev");
 	}
-	
+
 	// Move
 	if r.Move(0) != r {
 		t.Errorf("r.Move(0) != r");
diff --git a/src/pkg/container/vector/Makefile b/src/pkg/container/vector/Makefile
index 2049054..1237f2c 100644
--- a/src/pkg/container/vector/Makefile
+++ b/src/pkg/container/vector/Makefile
@@ -2,68 +2,12 @@
 # Use of this source code is governed by a BSD-style
 # license that can be found in the LICENSE file.
 
-# DO NOT EDIT.  Automatically generated by gobuild.
-# gobuild -m >Makefile
-
-D=/container/
-
 include $(GOROOT)/src/Make.$(GOARCH)
-AR=gopack
 
-default: packages
+TARG=container/vector
+GOFILES=\
+	intvector.go\
+	stringvector.go\
+	vector.go\
 
-clean:
-	rm -rf *.[$(OS)] *.a [$(OS)].out _obj
-
-test: packages
-	gotest
-
-coverage: packages
-	gotest
-	6cov -g `pwd` | grep -v '_test\.go:'
-
-%.$O: %.go
-	$(GC) -I_obj $*.go
-
-%.$O: %.c
-	$(CC) $*.c
-
-%.$O: %.s
-	$(AS) $*.s
-
-O1=\
-	vector.$O\
-
-O2=\
-	intvector.$O\
-	stringvector.$O\
-
-
-phases: a1 a2
-_obj$D/vector.a: phases
-
-a1: $(O1)
-	$(AR) grc _obj$D/vector.a vector.$O
-	rm -f $(O1)
-
-a2: $(O2)
-	$(AR) grc _obj$D/vector.a intvector.$O stringvector.$O
-	rm -f $(O2)
-
-
-newpkg: clean
-	mkdir -p _obj$D
-	$(AR) grc _obj$D/vector.a
-
-$(O1): newpkg
-$(O2): a1
-$(O3): a2
-
-nuke: clean
-	rm -f $(GOROOT)/pkg/$(GOOS)_$(GOARCH)$D/vector.a
-
-packages: _obj$D/vector.a
-
-install: packages
-	test -d $(GOROOT)/pkg && mkdir -p $(GOROOT)/pkg/$(GOOS)_$(GOARCH)$D
-	cp _obj$D/vector.a $(GOROOT)/pkg/$(GOOS)_$(GOARCH)$D/vector.a
+include $(GOROOT)/src/Make.pkg
diff --git a/src/pkg/container/vector/intvector.go b/src/pkg/container/vector/intvector.go
index ca2c4d1..f599ce1 100644
--- a/src/pkg/container/vector/intvector.go
+++ b/src/pkg/container/vector/intvector.go
@@ -4,7 +4,6 @@
 
 package vector
 
-import "container/vector"
 
 // IntVector is a specialization of Vector that hides the wrapping of Elements around ints.
 type IntVector struct {
diff --git a/src/pkg/container/vector/stringvector.go b/src/pkg/container/vector/stringvector.go
index 4cf047f..4f6d74e 100644
--- a/src/pkg/container/vector/stringvector.go
+++ b/src/pkg/container/vector/stringvector.go
@@ -4,8 +4,6 @@
 
 package vector
 
-import "container/vector"
-
 // StringVector is a specialization of Vector that hides the wrapping of Elements around strings.
 type StringVector struct {
 	Vector;
diff --git a/src/pkg/container/vector/vector_test.go b/src/pkg/container/vector/vector_test.go
index 8b4f54d..51acb74 100644
--- a/src/pkg/container/vector/vector_test.go
+++ b/src/pkg/container/vector/vector_test.go
@@ -4,7 +4,6 @@
 
 package vector
 
-import "container/vector"
 import "testing"
 import "sort"
 import "fmt"
diff --git a/src/pkg/crypto/aes/Makefile b/src/pkg/crypto/aes/Makefile
index c62275b..f7352cb 100644
--- a/src/pkg/crypto/aes/Makefile
+++ b/src/pkg/crypto/aes/Makefile
@@ -2,75 +2,12 @@
 # Use of this source code is governed by a BSD-style
 # license that can be found in the LICENSE file.
 
-# DO NOT EDIT.  Automatically generated by gobuild.
-# gobuild -m >Makefile
-
-D=/crypto/
-
 include $(GOROOT)/src/Make.$(GOARCH)
-AR=gopack
 
-default: packages
+TARG=crypto/aes
+GOFILES=\
+	block.go\
+	cipher.go\
+	const.go\
 
-clean:
-	rm -rf *.[$(OS)] *.a [$(OS)].out _obj
-
-test: packages
-	gotest
-
-coverage: packages
-	gotest
-	6cov -g `pwd` | grep -v '_test\.go:'
-
-%.$O: %.go
-	$(GC) -I_obj $*.go
-
-%.$O: %.c
-	$(CC) $*.c
-
-%.$O: %.s
-	$(AS) $*.s
-
-O1=\
-	const.$O\
-
-O2=\
-	block.$O\
-
-O3=\
-	cipher.$O\
-
-
-phases: a1 a2 a3
-_obj$D/aes.a: phases
-
-a1: $(O1)
-	$(AR) grc _obj$D/aes.a const.$O
-	rm -f $(O1)
-
-a2: $(O2)
-	$(AR) grc _obj$D/aes.a block.$O
-	rm -f $(O2)
-
-a3: $(O3)
-	$(AR) grc _obj$D/aes.a cipher.$O
-	rm -f $(O3)
-
-
-newpkg: clean
-	mkdir -p _obj$D
-	$(AR) grc _obj$D/aes.a
-
-$(O1): newpkg
-$(O2): a1
-$(O3): a2
-$(O4): a3
-
-nuke: clean
-	rm -f $(GOROOT)/pkg/$(GOOS)_$(GOARCH)$D/aes.a
-
-packages: _obj$D/aes.a
-
-install: packages
-	test -d $(GOROOT)/pkg && mkdir -p $(GOROOT)/pkg/$(GOOS)_$(GOARCH)$D
-	cp _obj$D/aes.a $(GOROOT)/pkg/$(GOOS)_$(GOARCH)$D/aes.a
+include $(GOROOT)/src/Make.pkg
diff --git a/src/pkg/crypto/aes/aes_test.go b/src/pkg/crypto/aes/aes_test.go
index 2f6cb4a..95e43f1 100644
--- a/src/pkg/crypto/aes/aes_test.go
+++ b/src/pkg/crypto/aes/aes_test.go
@@ -5,7 +5,6 @@
 package aes
 
 import (
-	"crypto/aes";
 	"fmt";
 	"testing";
 )
diff --git a/src/pkg/crypto/aes/block.go b/src/pkg/crypto/aes/block.go
index 3c67d1c..fb4efc1 100644
--- a/src/pkg/crypto/aes/block.go
+++ b/src/pkg/crypto/aes/block.go
@@ -36,8 +36,6 @@
 
 package aes
 
-import "crypto/aes"
-
 // Encrypt one block from src into dst, using the expanded key xk.
 func encryptBlock(xk []uint32, src, dst []byte) {
 	var s0, s1, s2, s3, t0, t1, t2, t3 uint32;
diff --git a/src/pkg/crypto/aes/cipher.go b/src/pkg/crypto/aes/cipher.go
index e430c9e..e73335f 100644
--- a/src/pkg/crypto/aes/cipher.go
+++ b/src/pkg/crypto/aes/cipher.go
@@ -5,7 +5,6 @@
 package aes
 
 import (
-	"crypto/aes";
 	"os";
 	"strconv";
 )
diff --git a/src/pkg/crypto/block/Makefile b/src/pkg/crypto/block/Makefile
index e8bc8e9..a277d0dd 100644
--- a/src/pkg/crypto/block/Makefile
+++ b/src/pkg/crypto/block/Makefile
@@ -2,81 +2,18 @@
 # Use of this source code is governed by a BSD-style
 # license that can be found in the LICENSE file.
 
-# DO NOT EDIT.  Automatically generated by gobuild.
-# gobuild -m >Makefile
-
-D=/crypto/
-
 include $(GOROOT)/src/Make.$(GOARCH)
-AR=gopack
 
-default: packages
+TARG=crypto/block
+GOFILES=\
+	cbc.go\
+	cfb.go\
+	cipher.go\
+	cmac.go\
+	ctr.go\
+	eax.go\
+	ecb.go\
+	ofb.go\
+	xor.go\
 
-clean:
-	rm -rf *.[$(OS)] *.a [$(OS)].out _obj
-
-test: packages
-	gotest
-
-coverage: packages
-	gotest
-	6cov -g `pwd` | grep -v '_test\.go:'
-
-%.$O: %.go
-	$(GC) -I_obj $*.go
-
-%.$O: %.c
-	$(CC) $*.c
-
-%.$O: %.s
-	$(AS) $*.s
-
-O1=\
-	cipher.$O\
-	xor.$O\
-
-O2=\
-	cmac.$O\
-	ctr.$O\
-	ecb.$O\
-	ofb.$O\
-
-O3=\
-	cbc.$O\
-	cfb.$O\
-	eax.$O\
-
-
-phases: a1 a2 a3
-_obj$D/block.a: phases
-
-a1: $(O1)
-	$(AR) grc _obj$D/block.a cipher.$O xor.$O
-	rm -f $(O1)
-
-a2: $(O2)
-	$(AR) grc _obj$D/block.a cmac.$O ctr.$O ecb.$O ofb.$O
-	rm -f $(O2)
-
-a3: $(O3)
-	$(AR) grc _obj$D/block.a cbc.$O cfb.$O eax.$O
-	rm -f $(O3)
-
-
-newpkg: clean
-	mkdir -p _obj$D
-	$(AR) grc _obj$D/block.a
-
-$(O1): newpkg
-$(O2): a1
-$(O3): a2
-$(O4): a3
-
-nuke: clean
-	rm -f $(GOROOT)/pkg/$(GOOS)_$(GOARCH)$D/block.a
-
-packages: _obj$D/block.a
-
-install: packages
-	test -d $(GOROOT)/pkg && mkdir -p $(GOROOT)/pkg/$(GOOS)_$(GOARCH)$D
-	cp _obj$D/block.a $(GOROOT)/pkg/$(GOOS)_$(GOARCH)$D/block.a
+include $(GOROOT)/src/Make.pkg
diff --git a/src/pkg/crypto/block/cbc.go b/src/pkg/crypto/block/cbc.go
index 85a746b..3aea0c1 100644
--- a/src/pkg/crypto/block/cbc.go
+++ b/src/pkg/crypto/block/cbc.go
@@ -12,7 +12,6 @@
 package block
 
 import (
-	"crypto/block";
 	"io";
 )
 
diff --git a/src/pkg/crypto/block/cbc_aes_test.go b/src/pkg/crypto/block/cbc_aes_test.go
index 0c10b17..51e30b5 100644
--- a/src/pkg/crypto/block/cbc_aes_test.go
+++ b/src/pkg/crypto/block/cbc_aes_test.go
@@ -10,17 +10,12 @@
 
 package block
 
-// gobuild: $GC ecb_aes_test.go
-
 import (
 	"bytes";
 	"crypto/aes";
-	"crypto/block";
 	"io";
 	"os";
 	"testing";
-
-	"./ecb_aes_test";
 )
 
 type cbcTest struct {
diff --git a/src/pkg/crypto/block/cfb.go b/src/pkg/crypto/block/cfb.go
index 5c4c09a1..0d73827 100644
--- a/src/pkg/crypto/block/cfb.go
+++ b/src/pkg/crypto/block/cfb.go
@@ -13,7 +13,6 @@
 package block
 
 import (
-	"crypto/block";
 	"io";
 )
 
diff --git a/src/pkg/crypto/block/cfb_aes_test.go b/src/pkg/crypto/block/cfb_aes_test.go
index 95b2511..b0dcef7 100644
--- a/src/pkg/crypto/block/cfb_aes_test.go
+++ b/src/pkg/crypto/block/cfb_aes_test.go
@@ -10,17 +10,12 @@
 
 package block
 
-// gobuild: $GC ecb_aes_test.go
-
 import (
 	"bytes";
 	"crypto/aes";
-	"crypto/block";
 	"io";
 	"os";
 	"testing";
-
-	"./ecb_aes_test";
 )
 
 type cfbTest struct {
diff --git a/src/pkg/crypto/block/cmac.go b/src/pkg/crypto/block/cmac.go
index 40697ca..a556cf5 100644
--- a/src/pkg/crypto/block/cmac.go
+++ b/src/pkg/crypto/block/cmac.go
@@ -8,7 +8,6 @@
 package block
 
 import (
-	"crypto/block";
 	"io";
 	"os";
 )
diff --git a/src/pkg/crypto/block/cmac_aes_test.go b/src/pkg/crypto/block/cmac_aes_test.go
index 9284ac4..3b2602c 100644
--- a/src/pkg/crypto/block/cmac_aes_test.go
+++ b/src/pkg/crypto/block/cmac_aes_test.go
@@ -6,14 +6,9 @@
 
 package block
 
-// gobuild: $GC ecb_aes_test.go
-
 import (
 	"crypto/aes";
-	"crypto/block";
 	"testing";
-
-	"./ecb_aes_test";
 )
 
 type cmacAESTest struct {
diff --git a/src/pkg/crypto/block/ctr.go b/src/pkg/crypto/block/ctr.go
index eecb615..38700c1 100644
--- a/src/pkg/crypto/block/ctr.go
+++ b/src/pkg/crypto/block/ctr.go
@@ -13,7 +13,6 @@
 package block
 
 import (
-	"crypto/block";
 	"io";
 )
 
diff --git a/src/pkg/crypto/block/ctr_aes_test.go b/src/pkg/crypto/block/ctr_aes_test.go
index dceb85a..4f90af1 100644
--- a/src/pkg/crypto/block/ctr_aes_test.go
+++ b/src/pkg/crypto/block/ctr_aes_test.go
@@ -13,12 +13,9 @@
 import (
 	"bytes";
 	"crypto/aes";
-	"crypto/block";
 	"io";
 	"os";
 	"testing";
-
-	"./ecb_aes_test";
 )
 
 type ctrTest struct {
@@ -86,7 +83,7 @@
 		for j := 0; j <= 5; j += 5 {
 			var crypt bytes.Buffer;
 			in := tt.in[0:len(tt.in) - j];
-			w := block.NewCTRWriter(c, tt.iv, &crypt);
+			w := NewCTRWriter(c, tt.iv, &crypt);
 			var r io.Reader = io.NewByteReader(in);
 			n, err := io.Copy(r, w);
 			if n != int64(len(in)) || err != nil {
@@ -99,7 +96,7 @@
 		for j := 0; j <= 7; j += 7 {
 			var plain bytes.Buffer;
 			out := tt.out[0:len(tt.out) - j];
-			r := block.NewCTRReader(c, tt.iv, io.NewByteReader(out));
+			r := NewCTRReader(c, tt.iv, io.NewByteReader(out));
 			w := &plain;
 			n, err := io.Copy(r, w);
 			if n != int64(len(out)) || err != nil {
diff --git a/src/pkg/crypto/block/eax.go b/src/pkg/crypto/block/eax.go
index 3015640..bac721d 100644
--- a/src/pkg/crypto/block/eax.go
+++ b/src/pkg/crypto/block/eax.go
@@ -15,7 +15,6 @@
 package block
 
 import (
-	"crypto/block";
 	"fmt";
 	"io";
 	"os";
diff --git a/src/pkg/crypto/block/eax_aes_test.go b/src/pkg/crypto/block/eax_aes_test.go
index b4280ee..94a3d7c 100644
--- a/src/pkg/crypto/block/eax_aes_test.go
+++ b/src/pkg/crypto/block/eax_aes_test.go
@@ -7,7 +7,6 @@
 import (
 	"bytes";
 	"crypto/aes";
-	"crypto/block";
 	"fmt";
 	"io";
 	"testing";
diff --git a/src/pkg/crypto/block/ecb.go b/src/pkg/crypto/block/ecb.go
index 134ac6d..d250b18 100644
--- a/src/pkg/crypto/block/ecb.go
+++ b/src/pkg/crypto/block/ecb.go
@@ -14,7 +14,6 @@
 package block
 
 import (
-	"crypto/block";
 	"io";
 	"os";
 	"strconv";
diff --git a/src/pkg/crypto/block/ecb_aes_test.go b/src/pkg/crypto/block/ecb_aes_test.go
index 518897d..7359c6c 100644
--- a/src/pkg/crypto/block/ecb_aes_test.go
+++ b/src/pkg/crypto/block/ecb_aes_test.go
@@ -13,7 +13,6 @@
 import (
 	"bytes";
 	"crypto/aes";
-	"crypto/block";
 	"io";
 	"os";
 	"testing";
diff --git a/src/pkg/crypto/block/ecb_test.go b/src/pkg/crypto/block/ecb_test.go
index 8722265..0938cbe 100644
--- a/src/pkg/crypto/block/ecb_test.go
+++ b/src/pkg/crypto/block/ecb_test.go
@@ -6,7 +6,6 @@
 
 import (
 	"bytes";
-	"crypto/block";
 	"fmt";
 	"io";
 	"testing";
diff --git a/src/pkg/crypto/block/ofb.go b/src/pkg/crypto/block/ofb.go
index 084274a..f6d5f98 100644
--- a/src/pkg/crypto/block/ofb.go
+++ b/src/pkg/crypto/block/ofb.go
@@ -13,7 +13,6 @@
 package block
 
 import (
-	"crypto/block";
 	"io";
 )
 
diff --git a/src/pkg/crypto/block/ofb_aes_test.go b/src/pkg/crypto/block/ofb_aes_test.go
index 96673fe..303202d 100644
--- a/src/pkg/crypto/block/ofb_aes_test.go
+++ b/src/pkg/crypto/block/ofb_aes_test.go
@@ -10,17 +10,12 @@
 
 package block
 
-// gotest: $GC ecb_aes_test.go
-
 import (
 	"bytes";
 	"crypto/aes";
-	"crypto/block";
 	"io";
 	"os";
 	"testing";
-
-	"./ecb_aes_test";
 )
 
 type ofbTest struct {
diff --git a/src/pkg/crypto/block/xor.go b/src/pkg/crypto/block/xor.go
index 63229db..675dcb7 100644
--- a/src/pkg/crypto/block/xor.go
+++ b/src/pkg/crypto/block/xor.go
@@ -7,7 +7,6 @@
 package block
 
 import (
-	"crypto/block";
 	"io";
 	"os";
 )
diff --git a/src/pkg/crypto/block/xor_test.go b/src/pkg/crypto/block/xor_test.go
index 1dca92e..7e26533 100644
--- a/src/pkg/crypto/block/xor_test.go
+++ b/src/pkg/crypto/block/xor_test.go
@@ -6,7 +6,6 @@
 
 import (
 	"bytes";
-	"crypto/block";
 	"fmt";
 	"io";
 	"testing";
diff --git a/src/pkg/crypto/hmac/Makefile b/src/pkg/crypto/hmac/Makefile
index 1da3f58..9da53a4 100644
--- a/src/pkg/crypto/hmac/Makefile
+++ b/src/pkg/crypto/hmac/Makefile
@@ -2,59 +2,10 @@
 # Use of this source code is governed by a BSD-style
 # license that can be found in the LICENSE file.
 
-# DO NOT EDIT.  Automatically generated by gobuild.
-# gobuild -m >Makefile
-
-D=/crypto/
-
 include $(GOROOT)/src/Make.$(GOARCH)
-AR=gopack
 
-default: packages
+TARG=crypto/hmac
+GOFILES=\
+	hmac.go\
 
-clean:
-	rm -rf *.[$(OS)] *.a [$(OS)].out _obj
-
-test: packages
-	gotest
-
-coverage: packages
-	gotest
-	6cov -g `pwd` | grep -v '_test\.go:'
-
-%.$O: %.go
-	$(GC) -I_obj $*.go
-
-%.$O: %.c
-	$(CC) $*.c
-
-%.$O: %.s
-	$(AS) $*.s
-
-O1=\
-	hmac.$O\
-
-
-phases: a1
-_obj$D/hmac.a: phases
-
-a1: $(O1)
-	$(AR) grc _obj$D/hmac.a hmac.$O
-	rm -f $(O1)
-
-
-newpkg: clean
-	mkdir -p _obj$D
-	$(AR) grc _obj$D/hmac.a
-
-$(O1): newpkg
-$(O2): a1
-
-nuke: clean
-	rm -f $(GOROOT)/pkg/$(GOOS)_$(GOARCH)$D/hmac.a
-
-packages: _obj$D/hmac.a
-
-install: packages
-	test -d $(GOROOT)/pkg && mkdir -p $(GOROOT)/pkg/$(GOOS)_$(GOARCH)$D
-	cp _obj$D/hmac.a $(GOROOT)/pkg/$(GOOS)_$(GOARCH)$D/hmac.a
+include $(GOROOT)/src/Make.pkg
diff --git a/src/pkg/crypto/hmac/hmac_test.go b/src/pkg/crypto/hmac/hmac_test.go
index 74fcacf..d0de00d 100644
--- a/src/pkg/crypto/hmac/hmac_test.go
+++ b/src/pkg/crypto/hmac/hmac_test.go
@@ -8,7 +8,6 @@
 
 import (
 	"hash";
-	"crypto/hmac";
 	"fmt";
 	"strings";
 	"testing";
diff --git a/src/pkg/crypto/md5/Makefile b/src/pkg/crypto/md5/Makefile
index b6c88d4..53fcf87 100644
--- a/src/pkg/crypto/md5/Makefile
+++ b/src/pkg/crypto/md5/Makefile
@@ -2,67 +2,11 @@
 # Use of this source code is governed by a BSD-style
 # license that can be found in the LICENSE file.
 
-# DO NOT EDIT.  Automatically generated by gobuild.
-# gobuild -m >Makefile
-
-D=/crypto/
-
 include $(GOROOT)/src/Make.$(GOARCH)
-AR=gopack
 
-default: packages
+TARG=crypto/md5
+GOFILES=\
+	md5.go\
+	md5block.go\
 
-clean:
-	rm -rf *.[$(OS)] *.a [$(OS)].out _obj
-
-test: packages
-	gotest
-
-coverage: packages
-	gotest
-	6cov -g `pwd` | grep -v '_test\.go:'
-
-%.$O: %.go
-	$(GC) -I_obj $*.go
-
-%.$O: %.c
-	$(CC) $*.c
-
-%.$O: %.s
-	$(AS) $*.s
-
-O1=\
-	md5.$O\
-
-O2=\
-	md5block.$O\
-
-
-phases: a1 a2
-_obj$D/md5.a: phases
-
-a1: $(O1)
-	$(AR) grc _obj$D/md5.a md5.$O
-	rm -f $(O1)
-
-a2: $(O2)
-	$(AR) grc _obj$D/md5.a md5block.$O
-	rm -f $(O2)
-
-
-newpkg: clean
-	mkdir -p _obj$D
-	$(AR) grc _obj$D/md5.a
-
-$(O1): newpkg
-$(O2): a1
-$(O3): a2
-
-nuke: clean
-	rm -f $(GOROOT)/pkg/$(GOOS)_$(GOARCH)$D/md5.a
-
-packages: _obj$D/md5.a
-
-install: packages
-	test -d $(GOROOT)/pkg && mkdir -p $(GOROOT)/pkg/$(GOOS)_$(GOARCH)$D
-	cp _obj$D/md5.a $(GOROOT)/pkg/$(GOOS)_$(GOARCH)$D/md5.a
+include $(GOROOT)/src/Make.pkg
diff --git a/src/pkg/crypto/md5/md5.go b/src/pkg/crypto/md5/md5.go
index cbc007f..a47d913 100644
--- a/src/pkg/crypto/md5/md5.go
+++ b/src/pkg/crypto/md5/md5.go
@@ -50,8 +50,6 @@
 	return Size;
 }
 
-func _Block(dig *digest, p []byte) int
-
 func (d *digest) Write(p []byte) (nn int, err os.Error) {
 	nn = len(p);
 	d.len += uint64(nn);
diff --git a/src/pkg/crypto/md5/md5_test.go b/src/pkg/crypto/md5/md5_test.go
index f610f11..c6319c7 100644
--- a/src/pkg/crypto/md5/md5_test.go
+++ b/src/pkg/crypto/md5/md5_test.go
@@ -6,7 +6,6 @@
 
 import (
 	"fmt";
-	"crypto/md5";
 	"io";
 	"testing";
 )
diff --git a/src/pkg/crypto/md5/md5block.go b/src/pkg/crypto/md5/md5block.go
index 2776c87..6ca9d58 100644
--- a/src/pkg/crypto/md5/md5block.go
+++ b/src/pkg/crypto/md5/md5block.go
@@ -8,8 +8,6 @@
 
 package md5
 
-import "crypto/md5"
-
 // table[i] = int((1<<32) * abs(sin(i+1 radians))).
 var table = []uint32 {
 	// round 1
diff --git a/src/pkg/crypto/sha1/Makefile b/src/pkg/crypto/sha1/Makefile
index 03ffe4f..940e2ff 100644
--- a/src/pkg/crypto/sha1/Makefile
+++ b/src/pkg/crypto/sha1/Makefile
@@ -2,67 +2,11 @@
 # Use of this source code is governed by a BSD-style
 # license that can be found in the LICENSE file.
 
-# DO NOT EDIT.  Automatically generated by gobuild.
-# gobuild -m >Makefile
-
-D=/crypto/
-
 include $(GOROOT)/src/Make.$(GOARCH)
-AR=gopack
 
-default: packages
+TARG=crypto/sha1
+GOFILES=\
+	sha1.go\
+	sha1block.go\
 
-clean:
-	rm -rf *.[$(OS)] *.a [$(OS)].out _obj
-
-test: packages
-	gotest
-
-coverage: packages
-	gotest
-	6cov -g `pwd` | grep -v '_test\.go:'
-
-%.$O: %.go
-	$(GC) -I_obj $*.go
-
-%.$O: %.c
-	$(CC) $*.c
-
-%.$O: %.s
-	$(AS) $*.s
-
-O1=\
-	sha1.$O\
-
-O2=\
-	sha1block.$O\
-
-
-phases: a1 a2
-_obj$D/sha1.a: phases
-
-a1: $(O1)
-	$(AR) grc _obj$D/sha1.a sha1.$O
-	rm -f $(O1)
-
-a2: $(O2)
-	$(AR) grc _obj$D/sha1.a sha1block.$O
-	rm -f $(O2)
-
-
-newpkg: clean
-	mkdir -p _obj$D
-	$(AR) grc _obj$D/sha1.a
-
-$(O1): newpkg
-$(O2): a1
-$(O3): a2
-
-nuke: clean
-	rm -f $(GOROOT)/pkg/$(GOOS)_$(GOARCH)$D/sha1.a
-
-packages: _obj$D/sha1.a
-
-install: packages
-	test -d $(GOROOT)/pkg && mkdir -p $(GOROOT)/pkg/$(GOOS)_$(GOARCH)$D
-	cp _obj$D/sha1.a $(GOROOT)/pkg/$(GOOS)_$(GOARCH)$D/sha1.a
+include $(GOROOT)/src/Make.pkg
diff --git a/src/pkg/crypto/sha1/sha1.go b/src/pkg/crypto/sha1/sha1.go
index a4cccd7..fd55389 100644
--- a/src/pkg/crypto/sha1/sha1.go
+++ b/src/pkg/crypto/sha1/sha1.go
@@ -52,8 +52,6 @@
 	return Size;
 }
 
-func _Block(dig *digest, p []byte) int
-
 func (d *digest) Write(p []byte) (nn int, err os.Error) {
 	nn = len(p);
 	d.len += uint64(nn);
diff --git a/src/pkg/crypto/sha1/sha1_test.go b/src/pkg/crypto/sha1/sha1_test.go
index 381cc76e..d2f3788 100644
--- a/src/pkg/crypto/sha1/sha1_test.go
+++ b/src/pkg/crypto/sha1/sha1_test.go
@@ -8,7 +8,6 @@
 
 import (
 	"fmt";
-	"crypto/sha1";
 	"io";
 	"testing";
 )
diff --git a/src/pkg/crypto/sha1/sha1block.go b/src/pkg/crypto/sha1/sha1block.go
index 01ddd95..023703b 100644
--- a/src/pkg/crypto/sha1/sha1block.go
+++ b/src/pkg/crypto/sha1/sha1block.go
@@ -8,8 +8,6 @@
 
 package sha1
 
-import "crypto/sha1"
-
 const (
 	_K0 = 0x5A827999;
 	_K1 = 0x6ED9EBA1;
diff --git a/src/pkg/datafmt/Makefile b/src/pkg/datafmt/Makefile
index 1546faf..421382d 100644
--- a/src/pkg/datafmt/Makefile
+++ b/src/pkg/datafmt/Makefile
@@ -2,67 +2,11 @@
 # Use of this source code is governed by a BSD-style
 # license that can be found in the LICENSE file.
 
-# DO NOT EDIT.  Automatically generated by gobuild.
-# gobuild -m >Makefile
-
-D=
-
 include $(GOROOT)/src/Make.$(GOARCH)
-AR=gopack
 
-default: packages
+TARG=datafmt
+GOFILES=\
+	datafmt.go\
+	parser.go\
 
-clean:
-	rm -rf *.[$(OS)] *.a [$(OS)].out _obj
-
-test: packages
-	gotest
-
-coverage: packages
-	gotest
-	6cov -g `pwd` | grep -v '_test\.go:'
-
-%.$O: %.go
-	$(GC) -I_obj $*.go
-
-%.$O: %.c
-	$(CC) $*.c
-
-%.$O: %.s
-	$(AS) $*.s
-
-O1=\
-	datafmt.$O\
-
-O2=\
-	parser.$O\
-
-
-phases: a1 a2
-_obj$D/datafmt.a: phases
-
-a1: $(O1)
-	$(AR) grc _obj$D/datafmt.a datafmt.$O
-	rm -f $(O1)
-
-a2: $(O2)
-	$(AR) grc _obj$D/datafmt.a parser.$O
-	rm -f $(O2)
-
-
-newpkg: clean
-	mkdir -p _obj$D
-	$(AR) grc _obj$D/datafmt.a
-
-$(O1): newpkg
-$(O2): a1
-$(O3): a2
-
-nuke: clean
-	rm -f $(GOROOT)/pkg/$(GOOS)_$(GOARCH)$D/datafmt.a
-
-packages: _obj$D/datafmt.a
-
-install: packages
-	test -d $(GOROOT)/pkg && mkdir -p $(GOROOT)/pkg/$(GOOS)_$(GOARCH)$D
-	cp _obj$D/datafmt.a $(GOROOT)/pkg/$(GOOS)_$(GOARCH)$D/datafmt.a
+include $(GOROOT)/src/Make.pkg
diff --git a/src/pkg/datafmt/datafmt_test.go b/src/pkg/datafmt/datafmt_test.go
index 8c3e002..e1355dd 100644
--- a/src/pkg/datafmt/datafmt_test.go
+++ b/src/pkg/datafmt/datafmt_test.go
@@ -6,7 +6,6 @@
 
 import (
 	"fmt";
-	"datafmt";
 	"os";
 	"strings";
 	"testing";
diff --git a/src/pkg/datafmt/parser.go b/src/pkg/datafmt/parser.go
index ea34623..3e86e0f 100644
--- a/src/pkg/datafmt/parser.go
+++ b/src/pkg/datafmt/parser.go
@@ -6,7 +6,6 @@
 
 import (
 	"container/vector";
-	"datafmt";
 	"fmt";
 	"go/scanner";
 	"go/token";
@@ -203,8 +202,6 @@
 }
 
 
-func (p *parser) parseExpression() expr
-
 func (p *parser) parseOperand() (x expr) {
 	switch p.tok {
 	case token.STRING:
diff --git a/src/pkg/ebnf/Makefile b/src/pkg/ebnf/Makefile
index 06c0fc8..8b3b077 100644
--- a/src/pkg/ebnf/Makefile
+++ b/src/pkg/ebnf/Makefile
@@ -2,68 +2,11 @@
 # Use of this source code is governed by a BSD-style
 # license that can be found in the LICENSE file.
 
-
-# DO NOT EDIT.  Automatically generated by gobuild.
-# gobuild -m ebnf.go parser.go >Makefile
-
-D=
-
 include $(GOROOT)/src/Make.$(GOARCH)
-AR=gopack
 
-default: packages
+TARG=ebnf
+GOFILES=\
+	ebnf.go\
+	parser.go\
 
-clean:
-	rm -rf *.[$(OS)] *.a [$(OS)].out _obj
-
-test: packages
-	gotest
-
-coverage: packages
-	gotest
-	6cov -g $$(pwd) | grep -v '_test\.go:'
-
-%.$O: %.go
-	$(GC) -I_obj $*.go
-
-%.$O: %.c
-	$(CC) $*.c
-
-%.$O: %.s
-	$(AS) $*.s
-
-O1=\
-	ebnf.$O\
-
-O2=\
-	parser.$O\
-
-
-phases: a1 a2
-_obj$D/ebnf.a: phases
-
-a1: $(O1)
-	$(AR) grc _obj$D/ebnf.a ebnf.$O
-	rm -f $(O1)
-
-a2: $(O2)
-	$(AR) grc _obj$D/ebnf.a parser.$O
-	rm -f $(O2)
-
-
-newpkg: clean
-	mkdir -p _obj$D
-	$(AR) grc _obj$D/ebnf.a
-
-$(O1): newpkg
-$(O2): a1
-$(O3): a2
-
-nuke: clean
-	rm -f $(GOROOT)/pkg/$(GOOS)_$(GOARCH)$D/ebnf.a
-
-packages: _obj$D/ebnf.a
-
-install: packages
-	test -d $(GOROOT)/pkg && mkdir -p $(GOROOT)/pkg/$(GOOS)_$(GOARCH)$D
-	cp _obj$D/ebnf.a $(GOROOT)/pkg/$(GOOS)_$(GOARCH)$D/ebnf.a
+include $(GOROOT)/src/Make.pkg
diff --git a/src/pkg/ebnf/ebnf_test.go b/src/pkg/ebnf/ebnf_test.go
index 9bcb5d9..3dd3c7a 100644
--- a/src/pkg/ebnf/ebnf_test.go
+++ b/src/pkg/ebnf/ebnf_test.go
@@ -5,7 +5,6 @@
 package ebnf
 
 import (
-	"ebnf";
 	"io";
 	"strings";
 	"testing";
diff --git a/src/pkg/ebnf/parser.go b/src/pkg/ebnf/parser.go
index e621c4d8..d32b1b9 100644
--- a/src/pkg/ebnf/parser.go
+++ b/src/pkg/ebnf/parser.go
@@ -6,7 +6,6 @@
 
 import (
 	"container/vector";
-	"ebnf";
 	"fmt";
 	"go/scanner";
 	"go/token";
@@ -86,8 +85,6 @@
 }
 
 
-func (p *parser) parseExpression() Expression
-
 func (p *parser) parseTerm() (x Expression) {
 	pos := p.pos;
 
diff --git a/src/pkg/exec/Makefile b/src/pkg/exec/Makefile
index 679cc39..9927eb3 100644
--- a/src/pkg/exec/Makefile
+++ b/src/pkg/exec/Makefile
@@ -2,59 +2,10 @@
 # Use of this source code is governed by a BSD-style
 # license that can be found in the LICENSE file.
 
-# DO NOT EDIT.  Automatically generated by gobuild.
-# gobuild -m >Makefile
-
-D=
-
 include $(GOROOT)/src/Make.$(GOARCH)
-AR=gopack
 
-default: packages
+TARG=exec
+GOFILES=\
+	exec.go\
 
-clean:
-	rm -rf *.[$(OS)] *.a [$(OS)].out _obj
-
-test: packages
-	gotest
-
-coverage: packages
-	gotest
-	6cov -g `pwd` | grep -v '_test\.go:'
-
-%.$O: %.go
-	$(GC) -I_obj $*.go
-
-%.$O: %.c
-	$(CC) $*.c
-
-%.$O: %.s
-	$(AS) $*.s
-
-O1=\
-	exec.$O\
-
-
-phases: a1
-_obj$D/exec.a: phases
-
-a1: $(O1)
-	$(AR) grc _obj$D/exec.a exec.$O
-	rm -f $(O1)
-
-
-newpkg: clean
-	mkdir -p _obj$D
-	$(AR) grc _obj$D/exec.a
-
-$(O1): newpkg
-$(O2): a1
-
-nuke: clean
-	rm -f $(GOROOT)/pkg/$(GOOS)_$(GOARCH)$D/exec.a
-
-packages: _obj$D/exec.a
-
-install: packages
-	test -d $(GOROOT)/pkg && mkdir -p $(GOROOT)/pkg/$(GOOS)_$(GOARCH)$D
-	cp _obj$D/exec.a $(GOROOT)/pkg/$(GOOS)_$(GOARCH)$D/exec.a
+include $(GOROOT)/src/Make.pkg
diff --git a/src/pkg/exec/exec_test.go b/src/pkg/exec/exec_test.go
index 9a9fca2..d558502 100644
--- a/src/pkg/exec/exec_test.go
+++ b/src/pkg/exec/exec_test.go
@@ -5,14 +5,13 @@
 package exec
 
 import (
-	"exec";
 	"io";
 	"testing";
 )
 
 func TestRunCat(t *testing.T) {
-	cmd, err := exec.Run("/bin/cat", []string{"cat"}, nil,
-		exec.Pipe, exec.Pipe, exec.DevNull);
+	cmd, err := Run("/bin/cat", []string{"cat"}, nil,
+		Pipe, Pipe, DevNull);
 	if err != nil {
 		t.Fatalf("opencmd /bin/cat: %v", err);
 	}
@@ -32,7 +31,7 @@
 
 func TestRunEcho(t *testing.T) {
 	cmd, err := Run("/bin/echo", []string{"echo", "hello", "world"}, nil,
-		exec.DevNull, exec.Pipe, exec.DevNull);
+		DevNull, Pipe, DevNull);
 	if err != nil {
 		t.Fatalf("opencmd /bin/echo: %v", err);
 	}
diff --git a/src/pkg/exvar/Makefile b/src/pkg/exvar/Makefile
index a65a1ee..795e8a6 100644
--- a/src/pkg/exvar/Makefile
+++ b/src/pkg/exvar/Makefile
@@ -2,59 +2,10 @@
 # Use of this source code is governed by a BSD-style
 # license that can be found in the LICENSE file.
 
-# DO NOT EDIT.  Automatically generated by gobuild.
-# gobuild -m >Makefile
-
-D=
-
 include $(GOROOT)/src/Make.$(GOARCH)
-AR=gopack
 
-default: packages
+TARG=exvar
+GOFILES=\
+	exvar.go\
 
-clean:
-	rm -rf *.[$(OS)] *.a [$(OS)].out _obj
-
-test: packages
-	gotest
-
-coverage: packages
-	gotest
-	6cov -g `pwd` | grep -v '_test\.go:'
-
-%.$O: %.go
-	$(GC) -I_obj $*.go
-
-%.$O: %.c
-	$(CC) $*.c
-
-%.$O: %.s
-	$(AS) $*.s
-
-O1=\
-	exvar.$O\
-
-
-phases: a1
-_obj$D/exvar.a: phases
-
-a1: $(O1)
-	$(AR) grc _obj$D/exvar.a exvar.$O
-	rm -f $(O1)
-
-
-newpkg: clean
-	mkdir -p _obj$D
-	$(AR) grc _obj$D/exvar.a
-
-$(O1): newpkg
-$(O2): a1
-
-nuke: clean
-	rm -f $(GOROOT)/pkg/$(GOOS)_$(GOARCH)$D/exvar.a
-
-packages: _obj$D/exvar.a
-
-install: packages
-	test -d $(GOROOT)/pkg && mkdir -p $(GOROOT)/pkg/$(GOOS)_$(GOARCH)$D
-	cp _obj$D/exvar.a $(GOROOT)/pkg/$(GOOS)_$(GOARCH)$D/exvar.a
+include $(GOROOT)/src/Make.pkg
diff --git a/src/pkg/exvar/exvar_test.go b/src/pkg/exvar/exvar_test.go
index 8b028bc..34b87ac 100644
--- a/src/pkg/exvar/exvar_test.go
+++ b/src/pkg/exvar/exvar_test.go
@@ -5,7 +5,6 @@
 package exvar
 
 import (
-	"exvar";
 	"fmt";
 	"json";
 	"testing";
diff --git a/src/pkg/go/ast/Makefile b/src/pkg/go/ast/Makefile
index cf37bba..0c3d9f1 100644
--- a/src/pkg/go/ast/Makefile
+++ b/src/pkg/go/ast/Makefile
@@ -2,68 +2,11 @@
 # Use of this source code is governed by a BSD-style
 # license that can be found in the LICENSE file.
 
-
-# DO NOT EDIT.  Automatically generated by gobuild.
-# gobuild -m ast.go filter.go >Makefile
-
-D=/go/
-
 include $(GOROOT)/src/Make.$(GOARCH)
-AR=gopack
 
-default: packages
+TARG=go/ast
+GOFILES=\
+	ast.go\
+	filter.go\
 
-clean:
-	rm -rf *.[$(OS)] *.a [$(OS)].out _obj
-
-test: packages
-	gotest
-
-coverage: packages
-	gotest
-	6cov -g $$(pwd) | grep -v '_test\.go:'
-
-%.$O: %.go
-	$(GC) -I_obj $*.go
-
-%.$O: %.c
-	$(CC) $*.c
-
-%.$O: %.s
-	$(AS) $*.s
-
-O1=\
-	ast.$O\
-
-O2=\
-	filter.$O\
-
-
-phases: a1 a2
-_obj$D/ast.a: phases
-
-a1: $(O1)
-	$(AR) grc _obj$D/ast.a ast.$O
-	rm -f $(O1)
-
-a2: $(O2)
-	$(AR) grc _obj$D/ast.a filter.$O
-	rm -f $(O2)
-
-
-newpkg: clean
-	mkdir -p _obj$D
-	$(AR) grc _obj$D/ast.a
-
-$(O1): newpkg
-$(O2): a1
-$(O3): a2
-
-nuke: clean
-	rm -f $(GOROOT)/pkg/$(GOOS)_$(GOARCH)$D/ast.a
-
-packages: _obj$D/ast.a
-
-install: packages
-	test -d $(GOROOT)/pkg && mkdir -p $(GOROOT)/pkg/$(GOOS)_$(GOARCH)$D
-	cp _obj$D/ast.a $(GOROOT)/pkg/$(GOOS)_$(GOARCH)$D/ast.a
+include $(GOROOT)/src/Make.pkg
diff --git a/src/pkg/go/ast/filter.go b/src/pkg/go/ast/filter.go
index 0b9d508..16bcdb9 100644
--- a/src/pkg/go/ast/filter.go
+++ b/src/pkg/go/ast/filter.go
@@ -5,7 +5,6 @@
 package ast
 
 import (
-	"go/ast";
 	"go/token";
 )
 
@@ -39,8 +38,6 @@
 }
 
 
-func filterType(typ Expr)
-
 func filterFieldList(list []*Field) []*Field {
 	j := 0;
 	for _, f := range list {
diff --git a/src/pkg/go/doc/Makefile b/src/pkg/go/doc/Makefile
index d7c6aca..60ce264 100644
--- a/src/pkg/go/doc/Makefile
+++ b/src/pkg/go/doc/Makefile
@@ -2,67 +2,11 @@
 # Use of this source code is governed by a BSD-style
 # license that can be found in the LICENSE file.
 
-# DO NOT EDIT.  Automatically generated by gobuild.
-# gobuild -m >Makefile
-
-D=/go/
-
 include $(GOROOT)/src/Make.$(GOARCH)
-AR=gopack
 
-default: packages
+TARG=go/doc
+GOFILES=\
+	comment.go\
+	doc.go\
 
-clean:
-	rm -rf *.[$(OS)] *.a [$(OS)].out _obj
-
-test: packages
-	gotest
-
-coverage: packages
-	gotest
-	6cov -g `pwd` | grep -v '_test\.go:'
-
-%.$O: %.go
-	$(GC) -I_obj $*.go
-
-%.$O: %.c
-	$(CC) $*.c
-
-%.$O: %.s
-	$(AS) $*.s
-
-O1=\
-	comment.$O\
-
-O2=\
-	doc.$O\
-
-
-phases: a1 a2
-_obj$D/doc.a: phases
-
-a1: $(O1)
-	$(AR) grc _obj$D/doc.a comment.$O
-	rm -f $(O1)
-
-a2: $(O2)
-	$(AR) grc _obj$D/doc.a doc.$O
-	rm -f $(O2)
-
-
-newpkg: clean
-	mkdir -p _obj$D
-	$(AR) grc _obj$D/doc.a
-
-$(O1): newpkg
-$(O2): a1
-$(O3): a2
-
-nuke: clean
-	rm -f $(GOROOT)/pkg/$(GOOS)_$(GOARCH)$D/doc.a
-
-packages: _obj$D/doc.a
-
-install: packages
-	test -d $(GOROOT)/pkg && mkdir -p $(GOROOT)/pkg/$(GOOS)_$(GOARCH)$D
-	cp _obj$D/doc.a $(GOROOT)/pkg/$(GOOS)_$(GOARCH)$D/doc.a
+include $(GOROOT)/src/Make.pkg
diff --git a/src/pkg/go/doc/doc.go b/src/pkg/go/doc/doc.go
index 2edc846..b887099 100644
--- a/src/pkg/go/doc/doc.go
+++ b/src/pkg/go/doc/doc.go
@@ -8,7 +8,6 @@
 	"container/vector";
 	"fmt";
 	"go/ast";
-	"go/doc";
 	"go/token";
 	"io";
 	"regexp";
@@ -237,9 +236,6 @@
 }
 
 
-type PackageDoc struct
-func (doc *docReader) newDoc(pkgname, importpath, filepath string, filenames []string) *PackageDoc
-
 func NewFileDoc(file *ast.File) *PackageDoc {
 	var r docReader;
 	r.init();
diff --git a/src/pkg/go/parser/Makefile b/src/pkg/go/parser/Makefile
index 5e5c51a..a8f14ff 100644
--- a/src/pkg/go/parser/Makefile
+++ b/src/pkg/go/parser/Makefile
@@ -2,68 +2,11 @@
 # Use of this source code is governed by a BSD-style
 # license that can be found in the LICENSE file.
 
-
-# DO NOT EDIT.  Automatically generated by gobuild.
-# gobuild -m parser.go interface.go >Makefile
-
-D=/go/
-
 include $(GOROOT)/src/Make.$(GOARCH)
-AR=gopack
 
-default: packages
+TARG=go/parser
+GOFILES=\
+	interface.go\
+	parser.go\
 
-clean:
-	rm -rf *.[$(OS)] *.a [$(OS)].out _obj
-
-test: packages
-	gotest
-
-coverage: packages
-	gotest
-	6cov -g $$(pwd) | grep -v '_test\.go:'
-
-%.$O: %.go
-	$(GC) -I_obj $*.go
-
-%.$O: %.c
-	$(CC) $*.c
-
-%.$O: %.s
-	$(AS) $*.s
-
-O1=\
-	parser.$O\
-
-O2=\
-	interface.$O\
-
-
-phases: a1 a2
-_obj$D/parser.a: phases
-
-a1: $(O1)
-	$(AR) grc _obj$D/parser.a parser.$O
-	rm -f $(O1)
-
-a2: $(O2)
-	$(AR) grc _obj$D/parser.a interface.$O
-	rm -f $(O2)
-
-
-newpkg: clean
-	mkdir -p _obj$D
-	$(AR) grc _obj$D/parser.a
-
-$(O1): newpkg
-$(O2): a1
-$(O3): a2
-
-nuke: clean
-	rm -f $(GOROOT)/pkg/$(GOOS)_$(GOARCH)$D/parser.a
-
-packages: _obj$D/parser.a
-
-install: packages
-	test -d $(GOROOT)/pkg && mkdir -p $(GOROOT)/pkg/$(GOOS)_$(GOARCH)$D
-	cp _obj$D/parser.a $(GOROOT)/pkg/$(GOOS)_$(GOARCH)$D/parser.a
+include $(GOROOT)/src/Make.pkg
diff --git a/src/pkg/go/parser/interface.go b/src/pkg/go/parser/interface.go
index 5fa60c1..94835b8 100644
--- a/src/pkg/go/parser/interface.go
+++ b/src/pkg/go/parser/interface.go
@@ -10,7 +10,6 @@
 	"bytes";
 	"fmt";
 	"go/ast";
-	"go/parser";
 	"go/scanner";
 	"io";
 	"os";
diff --git a/src/pkg/go/parser/parser.go b/src/pkg/go/parser/parser.go
index f0fa487..5378322 100644
--- a/src/pkg/go/parser/parser.go
+++ b/src/pkg/go/parser/parser.go
@@ -74,8 +74,6 @@
 }
 
 
-func (p *parser) next()
-
 func (p *parser) init(filename string, src []byte, mode uint) {
 	p.ErrorVector.Init();
 	p.scanner.Init(filename, src, p, scannerMode(mode));
@@ -267,13 +265,6 @@
 // ----------------------------------------------------------------------------
 // Common productions
 
-func (p *parser) tryType() ast.Expr
-func (p *parser) parseStringList(x *ast.StringLit) []*ast.StringLit
-func (p *parser) parseExpr() ast.Expr
-func (p *parser) parseStmt() ast.Stmt
-func (p *parser) parseDecl(getSemi bool) (decl ast.Decl, gotSemi bool)
-
-
 func (p *parser) parseIdent() *ast.Ident {
 	if p.tok == token.IDENT {
 		x := &ast.Ident{p.pos, string(p.lit)};
diff --git a/src/pkg/go/parser/parser_test.go b/src/pkg/go/parser/parser_test.go
index 29719b6..7a0b24d 100644
--- a/src/pkg/go/parser/parser_test.go
+++ b/src/pkg/go/parser/parser_test.go
@@ -6,7 +6,6 @@
 
 import (
 	"go/ast";
-	"go/parser";
 	"os";
 	"testing";
 )
diff --git a/src/pkg/go/printer/Makefile b/src/pkg/go/printer/Makefile
index 88fb48b..c18cb8d 100644
--- a/src/pkg/go/printer/Makefile
+++ b/src/pkg/go/printer/Makefile
@@ -2,60 +2,10 @@
 # Use of this source code is governed by a BSD-style
 # license that can be found in the LICENSE file.
 
-
-# DO NOT EDIT.  Automatically generated by gobuild.
-# gobuild -m >Makefile
-
-D=/go/
-
 include $(GOROOT)/src/Make.$(GOARCH)
-AR=gopack
 
-default: packages
+TARG=go/printer
+GOFILES=\
+	printer.go\
 
-clean:
-	rm -rf *.[$(OS)] *.a [$(OS)].out _obj
-
-test: packages
-	gotest
-
-coverage: packages
-	gotest
-	6cov -g $$(pwd) | grep -v '_test\.go:'
-
-%.$O: %.go
-	$(GC) -I_obj $*.go
-
-%.$O: %.c
-	$(CC) $*.c
-
-%.$O: %.s
-	$(AS) $*.s
-
-O1=\
-	printer.$O\
-
-
-phases: a1
-_obj$D/printer.a: phases
-
-a1: $(O1)
-	$(AR) grc _obj$D/printer.a printer.$O
-	rm -f $(O1)
-
-
-newpkg: clean
-	mkdir -p _obj$D
-	$(AR) grc _obj$D/printer.a
-
-$(O1): newpkg
-$(O2): a1
-
-nuke: clean
-	rm -f $(GOROOT)/pkg/$(GOOS)_$(GOARCH)$D/printer.a
-
-packages: _obj$D/printer.a
-
-install: packages
-	test -d $(GOROOT)/pkg && mkdir -p $(GOROOT)/pkg/$(GOOS)_$(GOARCH)$D
-	cp _obj$D/printer.a $(GOROOT)/pkg/$(GOOS)_$(GOARCH)$D/printer.a
+include $(GOROOT)/src/Make.pkg
diff --git a/src/pkg/go/printer/printer.go b/src/pkg/go/printer/printer.go
index d863c01..bb2f63a 100644
--- a/src/pkg/go/printer/printer.go
+++ b/src/pkg/go/printer/printer.go
@@ -457,8 +457,6 @@
 }
 
 
-func (p *printer) expr(x ast.Expr) bool
-
 func (p *printer) identList(list []*ast.Ident) {
 	for i, x := range list {
 		if i > 0 {
@@ -595,8 +593,6 @@
 // ----------------------------------------------------------------------------
 // Expressions
 
-func (p *printer) stmt(s ast.Stmt) (optSemi bool)
-
 // Returns true if a separating semicolon is optional.
 func (p *printer) expr1(expr ast.Expr, prec1 int) (optSemi bool) {
 	p.print(expr.Pos());
@@ -781,8 +777,6 @@
 // ----------------------------------------------------------------------------
 // Statements
 
-func (p *printer) decl(decl ast.Decl) (comment *ast.CommentGroup, optSemi bool)
-
 // Print the statement list indented, but without a newline after the last statement.
 func (p *printer) stmtList(list []ast.Stmt) {
 	if len(list) > 0 {
diff --git a/src/pkg/go/printer/printer_test.go b/src/pkg/go/printer/printer_test.go
index d4046e2..a7207ba 100644
--- a/src/pkg/go/printer/printer_test.go
+++ b/src/pkg/go/printer/printer_test.go
@@ -10,7 +10,6 @@
 	"io";
 	"go/ast";
 	"go/parser";
-	"go/printer";
 	"os";
 	"path";
 	"testing";
diff --git a/src/pkg/go/scanner/Makefile b/src/pkg/go/scanner/Makefile
index 7845fe5..5e3f38d 100644
--- a/src/pkg/go/scanner/Makefile
+++ b/src/pkg/go/scanner/Makefile
@@ -2,68 +2,11 @@
 # Use of this source code is governed by a BSD-style
 # license that can be found in the LICENSE file.
 
-
-# DO NOT EDIT.  Automatically generated by gobuild.
-# gobuild -m scanner.go errors.go >Makefile
-
-D=/go/
-
 include $(GOROOT)/src/Make.$(GOARCH)
-AR=gopack
 
-default: packages
+TARG=go/scanner
+GOFILES=\
+	errors.go\
+	scanner.go\
 
-clean:
-	rm -rf *.[$(OS)] *.a [$(OS)].out _obj
-
-test: packages
-	gotest
-
-coverage: packages
-	gotest
-	6cov -g $$(pwd) | grep -v '_test\.go:'
-
-%.$O: %.go
-	$(GC) -I_obj $*.go
-
-%.$O: %.c
-	$(CC) $*.c
-
-%.$O: %.s
-	$(AS) $*.s
-
-O1=\
-	errors.$O\
-
-O2=\
-	scanner.$O\
-
-
-phases: a1 a2
-_obj$D/scanner.a: phases
-
-a1: $(O1)
-	$(AR) grc _obj$D/scanner.a errors.$O
-	rm -f $(O1)
-
-a2: $(O2)
-	$(AR) grc _obj$D/scanner.a scanner.$O
-	rm -f $(O2)
-
-
-newpkg: clean
-	mkdir -p _obj$D
-	$(AR) grc _obj$D/scanner.a
-
-$(O1): newpkg
-$(O2): a1
-$(O3): a2
-
-nuke: clean
-	rm -f $(GOROOT)/pkg/$(GOOS)_$(GOARCH)$D/scanner.a
-
-packages: _obj$D/scanner.a
-
-install: packages
-	test -d $(GOROOT)/pkg && mkdir -p $(GOROOT)/pkg/$(GOOS)_$(GOARCH)$D
-	cp _obj$D/scanner.a $(GOROOT)/pkg/$(GOOS)_$(GOARCH)$D/scanner.a
+include $(GOROOT)/src/Make.pkg
diff --git a/src/pkg/go/scanner/scanner.go b/src/pkg/go/scanner/scanner.go
index 2d5e2a8..9a040aa6 100644
--- a/src/pkg/go/scanner/scanner.go
+++ b/src/pkg/go/scanner/scanner.go
@@ -11,7 +11,6 @@
 import (
 	"bytes";
 	"go/token";
-	"go/scanner";
 	"strconv";
 	"unicode";
 	"utf8";
diff --git a/src/pkg/go/scanner/scanner_test.go b/src/pkg/go/scanner/scanner_test.go
index 0cb200b..2b3c946 100644
--- a/src/pkg/go/scanner/scanner_test.go
+++ b/src/pkg/go/scanner/scanner_test.go
@@ -5,7 +5,6 @@
 package scanner
 
 import (
-	"go/scanner";
 	"go/token";
 	"os";
 	"strings";
@@ -207,7 +206,7 @@
 	// verify scan
 	index := 0;
 	epos := token.Position{"", 0, 1, 1};
-	nerrors := scanner.Tokenize("", strings.Bytes(src), &TestErrorHandler{t}, scanner.ScanComments,
+	nerrors := Tokenize("", strings.Bytes(src), &TestErrorHandler{t}, ScanComments,
 		func (pos token.Position, tok token.Token, litb []byte) bool {
 			e := elt{token.EOF, "", special};
 			if index < len(tokens) {
@@ -280,7 +279,7 @@
 	}
 
 	// verify scan
-	var S scanner.Scanner;
+	var S Scanner;
 	S.Init("TestLineComments", strings.Bytes(src), nil, 0);
 	for _, s := range segments {
 		pos, tok, lit := S.Scan();
@@ -295,7 +294,7 @@
 
 // Verify that initializing the same scanner more then once works correctly.
 func TestInit(t *testing.T) {
-	var s scanner.Scanner;
+	var s Scanner;
 
 	// 1st init
 	s.Init("", strings.Bytes("if true { }"), nil, 0);
@@ -320,10 +319,10 @@
 
 
 func TestIllegalChars(t *testing.T) {
-	var s scanner.Scanner;
+	var s Scanner;
 
 	const src = "*?*$*@*";
-	s.Init("", strings.Bytes(src), &TestErrorHandler{t}, scanner.AllowIllegalChars);
+	s.Init("", strings.Bytes(src), &TestErrorHandler{t}, AllowIllegalChars);
 	for offs, ch := range src {
 		pos, tok, lit := s.Scan();
 		if pos.Offset != offs {
@@ -352,9 +351,9 @@
 		"@ @ @"  // original file, line 1 again
 	;
 
-	var s scanner.Scanner;
+	var s Scanner;
 	v := NewErrorVector();
-	nerrors := scanner.Tokenize("File1", strings.Bytes(src), v, 0,
+	nerrors := Tokenize("File1", strings.Bytes(src), v, 0,
 		func (pos token.Position, tok token.Token, litb []byte) bool {
 			return tok != token.EOF;
 		}
diff --git a/src/pkg/go/token/Makefile b/src/pkg/go/token/Makefile
index 12ef2a4..259fb29 100644
--- a/src/pkg/go/token/Makefile
+++ b/src/pkg/go/token/Makefile
@@ -2,59 +2,10 @@
 # Use of this source code is governed by a BSD-style
 # license that can be found in the LICENSE file.
 
-# DO NOT EDIT.  Automatically generated by gobuild.
-# gobuild -m >Makefile
-
-D=/go/
-
 include $(GOROOT)/src/Make.$(GOARCH)
-AR=gopack
 
-default: packages
+TARG=go/token
+GOFILES=\
+	token.go\
 
-clean:
-	rm -rf *.[$(OS)] *.a [$(OS)].out _obj
-
-test: packages
-	gotest
-
-coverage: packages
-	gotest
-	6cov -g `pwd` | grep -v '_test\.go:'
-
-%.$O: %.go
-	$(GC) -I_obj $*.go
-
-%.$O: %.c
-	$(CC) $*.c
-
-%.$O: %.s
-	$(AS) $*.s
-
-O1=\
-	token.$O\
-
-
-phases: a1
-_obj$D/token.a: phases
-
-a1: $(O1)
-	$(AR) grc _obj$D/token.a token.$O
-	rm -f $(O1)
-
-
-newpkg: clean
-	mkdir -p _obj$D
-	$(AR) grc _obj$D/token.a
-
-$(O1): newpkg
-$(O2): a1
-
-nuke: clean
-	rm -f $(GOROOT)/pkg/$(GOOS)_$(GOARCH)$D/token.a
-
-packages: _obj$D/token.a
-
-install: packages
-	test -d $(GOROOT)/pkg && mkdir -p $(GOROOT)/pkg/$(GOOS)_$(GOARCH)$D
-	cp _obj$D/token.a $(GOROOT)/pkg/$(GOOS)_$(GOARCH)$D/token.a
+include $(GOROOT)/src/Make.pkg
diff --git a/src/pkg/hash/Makefile b/src/pkg/hash/Makefile
index bdbb6f3..5bf470f 100644
--- a/src/pkg/hash/Makefile
+++ b/src/pkg/hash/Makefile
@@ -2,59 +2,10 @@
 # Use of this source code is governed by a BSD-style
 # license that can be found in the LICENSE file.
 
-# DO NOT EDIT.  Automatically generated by gobuild.
-# gobuild -m >Makefile
-
-D=
-
 include $(GOROOT)/src/Make.$(GOARCH)
-AR=gopack
 
-default: packages
+TARG=hash
+GOFILES=\
+	hash.go\
 
-clean:
-	rm -rf *.[$(OS)] *.a [$(OS)].out _obj
-
-test: packages
-	gotest
-
-coverage: packages
-	gotest
-	6cov -g `pwd` | grep -v '_test\.go:'
-
-%.$O: %.go
-	$(GC) -I_obj $*.go
-
-%.$O: %.c
-	$(CC) $*.c
-
-%.$O: %.s
-	$(AS) $*.s
-
-O1=\
-	hash.$O\
-
-
-phases: a1
-_obj$D/hash.a: phases
-
-a1: $(O1)
-	$(AR) grc _obj$D/hash.a hash.$O
-	rm -f $(O1)
-
-
-newpkg: clean
-	mkdir -p _obj$D
-	$(AR) grc _obj$D/hash.a
-
-$(O1): newpkg
-$(O2): a1
-
-nuke: clean
-	rm -f $(GOROOT)/pkg/$(GOOS)_$(GOARCH)$D/hash.a
-
-packages: _obj$D/hash.a
-
-install: packages
-	test -d $(GOROOT)/pkg && mkdir -p $(GOROOT)/pkg/$(GOOS)_$(GOARCH)$D
-	cp _obj$D/hash.a $(GOROOT)/pkg/$(GOOS)_$(GOARCH)$D/hash.a
+include $(GOROOT)/src/Make.pkg
diff --git a/src/pkg/hash/adler32/Makefile b/src/pkg/hash/adler32/Makefile
index 1341312..8e5a338 100644
--- a/src/pkg/hash/adler32/Makefile
+++ b/src/pkg/hash/adler32/Makefile
@@ -2,59 +2,10 @@
 # Use of this source code is governed by a BSD-style
 # license that can be found in the LICENSE file.
 
-# DO NOT EDIT.  Automatically generated by gobuild.
-# gobuild -m >Makefile
-
-D=/hash/
-
 include $(GOROOT)/src/Make.$(GOARCH)
-AR=gopack
 
-default: packages
+TARG=hash/adler32
+GOFILES=\
+	adler32.go\
 
-clean:
-	rm -rf *.[$(OS)] *.a [$(OS)].out _obj
-
-test: packages
-	gotest
-
-coverage: packages
-	gotest
-	6cov -g `pwd` | grep -v '_test\.go:'
-
-%.$O: %.go
-	$(GC) -I_obj $*.go
-
-%.$O: %.c
-	$(CC) $*.c
-
-%.$O: %.s
-	$(AS) $*.s
-
-O1=\
-	adler32.$O\
-
-
-phases: a1
-_obj$D/adler32.a: phases
-
-a1: $(O1)
-	$(AR) grc _obj$D/adler32.a adler32.$O
-	rm -f $(O1)
-
-
-newpkg: clean
-	mkdir -p _obj$D
-	$(AR) grc _obj$D/adler32.a
-
-$(O1): newpkg
-$(O2): a1
-
-nuke: clean
-	rm -f $(GOROOT)/pkg/$(GOOS)_$(GOARCH)$D/adler32.a
-
-packages: _obj$D/adler32.a
-
-install: packages
-	test -d $(GOROOT)/pkg && mkdir -p $(GOROOT)/pkg/$(GOOS)_$(GOARCH)$D
-	cp _obj$D/adler32.a $(GOROOT)/pkg/$(GOOS)_$(GOARCH)$D/adler32.a
+include $(GOROOT)/src/Make.pkg
diff --git a/src/pkg/hash/adler32/adler32_test.go b/src/pkg/hash/adler32/adler32_test.go
index ce49a11..87ca2e0 100644
--- a/src/pkg/hash/adler32/adler32_test.go
+++ b/src/pkg/hash/adler32/adler32_test.go
@@ -5,7 +5,6 @@
 package adler32
 
 import (
-	"hash/adler32";
 	"io";
 	"testing";
 )
diff --git a/src/pkg/hash/crc32/Makefile b/src/pkg/hash/crc32/Makefile
index 08d4f5e..dbfcda1 100644
--- a/src/pkg/hash/crc32/Makefile
+++ b/src/pkg/hash/crc32/Makefile
@@ -2,59 +2,10 @@
 # Use of this source code is governed by a BSD-style
 # license that can be found in the LICENSE file.
 
-# DO NOT EDIT.  Automatically generated by gobuild.
-# gobuild -m >Makefile
-
-D=/hash/
-
 include $(GOROOT)/src/Make.$(GOARCH)
-AR=gopack
 
-default: packages
+TARG=hash/crc32
+GOFILES=\
+	crc32.go\
 
-clean:
-	rm -rf *.[$(OS)] *.a [$(OS)].out _obj
-
-test: packages
-	gotest
-
-coverage: packages
-	gotest
-	6cov -g `pwd` | grep -v '_test\.go:'
-
-%.$O: %.go
-	$(GC) -I_obj $*.go
-
-%.$O: %.c
-	$(CC) $*.c
-
-%.$O: %.s
-	$(AS) $*.s
-
-O1=\
-	crc32.$O\
-
-
-phases: a1
-_obj$D/crc32.a: phases
-
-a1: $(O1)
-	$(AR) grc _obj$D/crc32.a crc32.$O
-	rm -f $(O1)
-
-
-newpkg: clean
-	mkdir -p _obj$D
-	$(AR) grc _obj$D/crc32.a
-
-$(O1): newpkg
-$(O2): a1
-
-nuke: clean
-	rm -f $(GOROOT)/pkg/$(GOOS)_$(GOARCH)$D/crc32.a
-
-packages: _obj$D/crc32.a
-
-install: packages
-	test -d $(GOROOT)/pkg && mkdir -p $(GOROOT)/pkg/$(GOOS)_$(GOARCH)$D
-	cp _obj$D/crc32.a $(GOROOT)/pkg/$(GOOS)_$(GOARCH)$D/crc32.a
+include $(GOROOT)/src/Make.pkg
diff --git a/src/pkg/hash/crc32/crc32_test.go b/src/pkg/hash/crc32/crc32_test.go
index c037da6..6873898 100644
--- a/src/pkg/hash/crc32/crc32_test.go
+++ b/src/pkg/hash/crc32/crc32_test.go
@@ -5,7 +5,6 @@
 package crc32
 
 import (
-	"hash/crc32";
 	"io";
 	"testing";
 )
diff --git a/src/pkg/http/Makefile b/src/pkg/http/Makefile
index 34445b5..9740678 100644
--- a/src/pkg/http/Makefile
+++ b/src/pkg/http/Makefile
@@ -2,85 +2,15 @@
 # Use of this source code is governed by a BSD-style
 # license that can be found in the LICENSE file.
 
-# DO NOT EDIT.  Automatically generated by gobuild.
-# gobuild -m >Makefile
-
-D=
-
 include $(GOROOT)/src/Make.$(GOARCH)
-AR=gopack
 
-default: packages
+TARG=http
+GOFILES=\
+	client.go\
+	fs.go\
+	request.go\
+	server.go\
+	status.go\
+	url.go\
 
-clean:
-	rm -rf *.[$(OS)] *.a [$(OS)].out _obj
-
-test: packages
-	gotest
-
-coverage: packages
-	gotest
-	6cov -g `pwd` | grep -v '_test\.go:'
-
-%.$O: %.go
-	$(GC) -I_obj $*.go
-
-%.$O: %.c
-	$(CC) $*.c
-
-%.$O: %.s
-	$(AS) $*.s
-
-O1=\
-	status.$O\
-	url.$O\
-
-O2=\
-	request.$O\
-
-O3=\
-	client.$O\
-	server.$O\
-
-O4=\
-	fs.$O\
-
-
-phases: a1 a2 a3 a4
-_obj$D/http.a: phases
-
-a1: $(O1)
-	$(AR) grc _obj$D/http.a status.$O url.$O
-	rm -f $(O1)
-
-a2: $(O2)
-	$(AR) grc _obj$D/http.a request.$O
-	rm -f $(O2)
-
-a3: $(O3)
-	$(AR) grc _obj$D/http.a client.$O server.$O
-	rm -f $(O3)
-
-a4: $(O4)
-	$(AR) grc _obj$D/http.a fs.$O
-	rm -f $(O4)
-
-
-newpkg: clean
-	mkdir -p _obj$D
-	$(AR) grc _obj$D/http.a
-
-$(O1): newpkg
-$(O2): a1
-$(O3): a2
-$(O4): a3
-$(O5): a4
-
-nuke: clean
-	rm -f $(GOROOT)/pkg/$(GOOS)_$(GOARCH)$D/http.a
-
-packages: _obj$D/http.a
-
-install: packages
-	test -d $(GOROOT)/pkg && mkdir -p $(GOROOT)/pkg/$(GOOS)_$(GOARCH)$D
-	cp _obj$D/http.a $(GOROOT)/pkg/$(GOOS)_$(GOARCH)$D/http.a
+include $(GOROOT)/src/Make.pkg
diff --git a/src/pkg/http/client.go b/src/pkg/http/client.go
index 197f6c8..839241d 100644
--- a/src/pkg/http/client.go
+++ b/src/pkg/http/client.go
@@ -9,7 +9,6 @@
 import (
 	"bufio";
 	"fmt";
-	"http";
 	"io";
 	"log";
 	"net";
diff --git a/src/pkg/http/client_test.go b/src/pkg/http/client_test.go
index f697fb8..69938f0 100644
--- a/src/pkg/http/client_test.go
+++ b/src/pkg/http/client_test.go
@@ -8,7 +8,6 @@
 
 import (
 	"fmt";
-	"http";
 	"io";
 	"strings";
 	"testing";
diff --git a/src/pkg/http/fs.go b/src/pkg/http/fs.go
index 6af85ca..e8dda1d 100644
--- a/src/pkg/http/fs.go
+++ b/src/pkg/http/fs.go
@@ -8,7 +8,6 @@
 
 import (
 	"fmt";
-	"http";
 	"io";
 	"os";
 	"path";
diff --git a/src/pkg/http/request.go b/src/pkg/http/request.go
index 0cc83a8..15dc15c 100644
--- a/src/pkg/http/request.go
+++ b/src/pkg/http/request.go
@@ -14,7 +14,6 @@
 	"bytes";
 	"container/vector";
 	"fmt";
-	"http";
 	"io";
 	"os";
 	"strconv";
diff --git a/src/pkg/http/request_test.go b/src/pkg/http/request_test.go
index 1cd9171..86ec0ef 100644
--- a/src/pkg/http/request_test.go
+++ b/src/pkg/http/request_test.go
@@ -6,7 +6,6 @@
 
 import (
 	"fmt";
-	"http";
 	"os";
 	"testing";
 )
diff --git a/src/pkg/http/server.go b/src/pkg/http/server.go
index c1de5de..47f7d01 100644
--- a/src/pkg/http/server.go
+++ b/src/pkg/http/server.go
@@ -14,7 +14,6 @@
 import (
 	"bufio";
 	"fmt";
-	"http";
 	"io";
 	"log";
 	"net";
@@ -70,8 +69,6 @@
 	return c, nil
 }
 
-func (c *Conn) SetHeader(hdr, val string)
-
 // Read next request from connection.
 func (c *Conn) readRequest() (req *Request, err os.Error) {
 	if c.hijacked {
@@ -547,7 +544,6 @@
 //	package main
 //
 //	import (
-//		"http";
 //		"io";
 //	)
 //
diff --git a/src/pkg/http/triv.go b/src/pkg/http/triv.go
index 546f2a7..7b7484d 100644
--- a/src/pkg/http/triv.go
+++ b/src/pkg/http/triv.go
@@ -10,7 +10,6 @@
 	"exvar";
 	"flag";
 	"fmt";
-	"http";
 	"io";
 	"log";
 	"net";
diff --git a/src/pkg/http/url_test.go b/src/pkg/http/url_test.go
index 51d0283..6a3cdb0 100644
--- a/src/pkg/http/url_test.go
+++ b/src/pkg/http/url_test.go
@@ -6,7 +6,6 @@
 
 import (
 	"fmt";
-	"http";
 	"os";
 	"reflect";
 	"testing";
@@ -14,7 +13,7 @@
 
 // TODO(rsc):
 //	test URLUnescape
-// 	test URLEscape
+//	test URLEscape
 //	test ParseURL
 
 type URLTest struct {
diff --git a/src/pkg/json/Makefile b/src/pkg/json/Makefile
index 2d70c2c..061ab88 100644
--- a/src/pkg/json/Makefile
+++ b/src/pkg/json/Makefile
@@ -2,68 +2,12 @@
 # Use of this source code is governed by a BSD-style
 # license that can be found in the LICENSE file.
 
-# DO NOT EDIT.  Automatically generated by gobuild.
-# gobuild -m >Makefile
-
-D=
-
 include $(GOROOT)/src/Make.$(GOARCH)
-AR=gopack
 
-default: packages
+TARG=json
+GOFILES=\
+	generic.go\
+	parse.go\
+	struct.go\
 
-clean:
-	rm -rf *.[$(OS)] *.a [$(OS)].out _obj
-
-test: packages
-	gotest
-
-coverage: packages
-	gotest
-	6cov -g `pwd` | grep -v '_test\.go:'
-
-%.$O: %.go
-	$(GC) -I_obj $*.go
-
-%.$O: %.c
-	$(CC) $*.c
-
-%.$O: %.s
-	$(AS) $*.s
-
-O1=\
-	parse.$O\
-
-O2=\
-	generic.$O\
-	struct.$O\
-
-
-phases: a1 a2
-_obj$D/json.a: phases
-
-a1: $(O1)
-	$(AR) grc _obj$D/json.a parse.$O
-	rm -f $(O1)
-
-a2: $(O2)
-	$(AR) grc _obj$D/json.a generic.$O struct.$O
-	rm -f $(O2)
-
-
-newpkg: clean
-	mkdir -p _obj$D
-	$(AR) grc _obj$D/json.a
-
-$(O1): newpkg
-$(O2): a1
-$(O3): a2
-
-nuke: clean
-	rm -f $(GOROOT)/pkg/$(GOOS)_$(GOARCH)$D/json.a
-
-packages: _obj$D/json.a
-
-install: packages
-	test -d $(GOROOT)/pkg && mkdir -p $(GOROOT)/pkg/$(GOOS)_$(GOARCH)$D
-	cp _obj$D/json.a $(GOROOT)/pkg/$(GOOS)_$(GOARCH)$D/json.a
+include $(GOROOT)/src/Make.pkg
diff --git a/src/pkg/json/generic.go b/src/pkg/json/generic.go
index e3194eb..302b0c9 100644
--- a/src/pkg/json/generic.go
+++ b/src/pkg/json/generic.go
@@ -9,7 +9,6 @@
 import (
 	"container/vector";
 	"fmt";
-	"json";
 	"math";
 	"strconv";
 	"strings";
diff --git a/src/pkg/json/generic_test.go b/src/pkg/json/generic_test.go
index 68868d7..3d82c8e 100644
--- a/src/pkg/json/generic_test.go
+++ b/src/pkg/json/generic_test.go
@@ -5,7 +5,6 @@
 package json
 
 import (
-	"json";
 	"testing";
 )
 
diff --git a/src/pkg/json/struct.go b/src/pkg/json/struct.go
index b6cebe1..99312e9 100644
--- a/src/pkg/json/struct.go
+++ b/src/pkg/json/struct.go
@@ -8,7 +8,6 @@
 package json
 
 import (
-	"json";
 	"reflect";
 	"strings";
 )
diff --git a/src/pkg/json/struct_test.go b/src/pkg/json/struct_test.go
index 4fbfd42..ce0ab34 100644
--- a/src/pkg/json/struct_test.go
+++ b/src/pkg/json/struct_test.go
@@ -5,7 +5,6 @@
 package json
 
 import (
-	"json";
 	"testing";
 )
 
diff --git a/src/pkg/log/Makefile b/src/pkg/log/Makefile
index 4b1c4b5..b569c9e 100644
--- a/src/pkg/log/Makefile
+++ b/src/pkg/log/Makefile
@@ -2,59 +2,10 @@
 # Use of this source code is governed by a BSD-style
 # license that can be found in the LICENSE file.
 
-# DO NOT EDIT.  Automatically generated by gobuild.
-# gobuild -m >Makefile
-
-D=
-
 include $(GOROOT)/src/Make.$(GOARCH)
-AR=gopack
 
-default: packages
+TARG=log
+GOFILES=\
+	log.go\
 
-clean:
-	rm -rf *.[$(OS)] *.a [$(OS)].out _obj
-
-test: packages
-	gotest
-
-coverage: packages
-	gotest
-	6cov -g `pwd` | grep -v '_test\.go:'
-
-%.$O: %.go
-	$(GC) -I_obj $*.go
-
-%.$O: %.c
-	$(CC) $*.c
-
-%.$O: %.s
-	$(AS) $*.s
-
-O1=\
-	log.$O\
-
-
-phases: a1
-_obj$D/log.a: phases
-
-a1: $(O1)
-	$(AR) grc _obj$D/log.a log.$O
-	rm -f $(O1)
-
-
-newpkg: clean
-	mkdir -p _obj$D
-	$(AR) grc _obj$D/log.a
-
-$(O1): newpkg
-$(O2): a1
-
-nuke: clean
-	rm -f $(GOROOT)/pkg/$(GOOS)_$(GOARCH)$D/log.a
-
-packages: _obj$D/log.a
-
-install: packages
-	test -d $(GOROOT)/pkg && mkdir -p $(GOROOT)/pkg/$(GOOS)_$(GOARCH)$D
-	cp _obj$D/log.a $(GOROOT)/pkg/$(GOOS)_$(GOARCH)$D/log.a
+include $(GOROOT)/src/Make.pkg
diff --git a/src/pkg/log/log_test.go b/src/pkg/log/log_test.go
index e346b3b..12f7326 100644
--- a/src/pkg/log/log_test.go
+++ b/src/pkg/log/log_test.go
@@ -8,7 +8,6 @@
 
 import (
 	"bufio";
-	"log";
 	"os";
 	"regexp";
 	"testing";
diff --git a/src/pkg/malloc/Makefile b/src/pkg/malloc/Makefile
index 61894f7..8a108c8 100644
--- a/src/pkg/malloc/Makefile
+++ b/src/pkg/malloc/Makefile
@@ -2,59 +2,10 @@
 # Use of this source code is governed by a BSD-style
 # license that can be found in the LICENSE file.
 
-# DO NOT EDIT.  Automatically generated by gobuild.
-# gobuild -m >Makefile
-
-D=
-
 include $(GOROOT)/src/Make.$(GOARCH)
-AR=gopack
 
-default: packages
+TARG=malloc
+GOFILES=\
+	malloc.go\
 
-clean:
-	rm -rf *.[$(OS)] *.a [$(OS)].out _obj
-
-test: packages
-	gotest
-
-coverage: packages
-	gotest
-	6cov -g `pwd` | grep -v '_test\.go:'
-
-%.$O: %.go
-	$(GC) -I_obj $*.go
-
-%.$O: %.c
-	$(CC) $*.c
-
-%.$O: %.s
-	$(AS) $*.s
-
-O1=\
-	malloc.$O\
-
-
-phases: a1
-_obj$D/malloc.a: phases
-
-a1: $(O1)
-	$(AR) grc _obj$D/malloc.a malloc.$O
-	rm -f $(O1)
-
-
-newpkg: clean
-	mkdir -p _obj$D
-	$(AR) grc _obj$D/malloc.a
-
-$(O1): newpkg
-$(O2): a1
-
-nuke: clean
-	rm -f $(GOROOT)/pkg/$(GOOS)_$(GOARCH)$D/malloc.a
-
-packages: _obj$D/malloc.a
-
-install: packages
-	test -d $(GOROOT)/pkg && mkdir -p $(GOROOT)/pkg/$(GOOS)_$(GOARCH)$D
-	cp _obj$D/malloc.a $(GOROOT)/pkg/$(GOOS)_$(GOARCH)$D/malloc.a
+include $(GOROOT)/src/Make.pkg
diff --git a/src/pkg/net/Makefile b/src/pkg/net/Makefile
index 7705619..a56f7c9 100644
--- a/src/pkg/net/Makefile
+++ b/src/pkg/net/Makefile
@@ -2,89 +2,18 @@
 # Use of this source code is governed by a BSD-style
 # license that can be found in the LICENSE file.
 
-
-# DO NOT EDIT.  Automatically generated by gobuild.
-# gobuild -m dnsclient.go dnsconfig.go dnsmsg.go fd.go fd_${GOOS}.go ip.go net.go parse.go port.go >Makefile
-
-D=
-
 include $(GOROOT)/src/Make.$(GOARCH)
-AR=gopack
 
-default: packages
+TARG=net
+GOFILES=\
+	dnsclient.go\
+	dnsconfig.go\
+	dnsmsg.go\
+	fd.go\
+	fd_$(GOOS).go\
+	ip.go\
+	net.go\
+	parse.go\
+	port.go\
 
-clean:
-	rm -rf *.[$(OS)] *.a [$(OS)].out _obj
-
-test: packages
-	gotest
-
-coverage: packages
-	gotest
-	6cov -g $$(pwd) | grep -v '_test\.go:'
-
-%.$O: %.go
-	$(GC) -I_obj $*.go
-
-%.$O: %.c
-	$(CC) $*.c
-
-%.$O: %.s
-	$(AS) $*.s
-
-O1=\
-	fd_$(GOOS).$O\
-	parse.$O\
-
-O2=\
-	fd.$O\
-	ip.$O\
-
-O3=\
-	dnsconfig.$O\
-	dnsmsg.$O\
-	net.$O\
-
-O4=\
-	dnsclient.$O\
-	port.$O\
-
-
-phases: a1 a2 a3 a4
-_obj$D/net.a: phases
-
-a1: $(O1)
-	$(AR) grc _obj$D/net.a fd_$(GOOS).$O parse.$O
-	rm -f $(O1)
-
-a2: $(O2)
-	$(AR) grc _obj$D/net.a fd.$O ip.$O
-	rm -f $(O2)
-
-a3: $(O3)
-	$(AR) grc _obj$D/net.a dnsconfig.$O dnsmsg.$O net.$O
-	rm -f $(O3)
-
-a4: $(O4)
-	$(AR) grc _obj$D/net.a dnsclient.$O port.$O
-	rm -f $(O4)
-
-
-newpkg: clean
-	mkdir -p _obj$D
-	$(AR) grc _obj$D/net.a
-
-$(O1): newpkg
-$(O2): a1
-$(O3): a2
-$(O4): a3
-$(O5): a4
-
-nuke: clean
-	rm -f $(GOROOT)/pkg/$(GOOS)_$(GOARCH)$D/net.a
-
-packages: _obj$D/net.a
-
-install: packages
-	test -d $(GOROOT)/pkg && mkdir -p $(GOROOT)/pkg/$(GOOS)_$(GOARCH)$D
-	cp _obj$D/net.a $(GOROOT)/pkg/$(GOOS)_$(GOARCH)$D/net.a
+include $(GOROOT)/src/Make.pkg
diff --git a/src/pkg/net/dialgoogle_test.go b/src/pkg/net/dialgoogle_test.go
index e65aaac..cb5389a 100644
--- a/src/pkg/net/dialgoogle_test.go
+++ b/src/pkg/net/dialgoogle_test.go
@@ -7,7 +7,6 @@
 import (
 	"flag";
 	"io";
-	"net";
 	"os";
 	"strings";
 	"syscall";
@@ -19,7 +18,7 @@
 
 // fd is already connected to the destination, port 80.
 // Run an HTTP request to fetch the appropriate page.
-func fetchGoogle(t *testing.T, fd net.Conn, network, addr string) {
+func fetchGoogle(t *testing.T, fd Conn, network, addr string) {
 	req := strings.Bytes("GET /intl/en/privacy.html HTTP/1.0\r\nHost: www.google.com\r\n\r\n");
 	n, err := fd.Write(req);
 
@@ -33,9 +32,9 @@
 }
 
 func doDial(t *testing.T, network, addr string) {
-	fd, err := net.Dial(network, "", addr);
+	fd, err := Dial(network, "", addr);
 	if err != nil {
-		t.Errorf("net.Dial(%q, %q, %q) = _, %v", network, "", addr, err);
+		t.Errorf("Dial(%q, %q, %q) = _, %v", network, "", addr, err);
 		return
 	}
 	fetchGoogle(t, fd, network, addr);
@@ -43,9 +42,9 @@
 }
 
 func doDialTCP(t *testing.T, network, addr string) {
-	fd, err := net.DialTCP(network, "", addr);
+	fd, err := DialTCP(network, "", addr);
 	if err != nil {
-		t.Errorf("net.DialTCP(%q, %q, %q) = _, %v", network, "", addr, err);
+		t.Errorf("DialTCP(%q, %q, %q) = _, %v", network, "", addr, err);
 	} else {
 		fetchGoogle(t, fd, network, addr);
 	}
diff --git a/src/pkg/net/dnsclient.go b/src/pkg/net/dnsclient.go
index 7e82855..859bef3 100644
--- a/src/pkg/net/dnsclient.go
+++ b/src/pkg/net/dnsclient.go
@@ -17,7 +17,6 @@
 
 import (
 	"io";
-	"net";
 	"once";
 	"os";
 	"strings";
diff --git a/src/pkg/net/dnsconfig.go b/src/pkg/net/dnsconfig.go
index 7e455d5..5cbfbc4 100644
--- a/src/pkg/net/dnsconfig.go
+++ b/src/pkg/net/dnsconfig.go
@@ -8,7 +8,6 @@
 
 import (
 	"io";
-	"net";
 	"os";
 	"strconv";
 )
diff --git a/src/pkg/net/dnsmsg.go b/src/pkg/net/dnsmsg.go
index c7fb07f..a166c96 100644
--- a/src/pkg/net/dnsmsg.go
+++ b/src/pkg/net/dnsmsg.go
@@ -25,7 +25,6 @@
 
 import (
 	"fmt";
-	"net";
 	"os";
 	"reflect";
 )
diff --git a/src/pkg/net/fd.go b/src/pkg/net/fd.go
index 0917c50..ec125f2 100644
--- a/src/pkg/net/fd.go
+++ b/src/pkg/net/fd.go
@@ -7,7 +7,6 @@
 package net
 
 import (
-	"net";
 	"once";
 	"os";
 	"sync";
@@ -73,7 +72,6 @@
 	poll *pollster;	// low-level OS hooks
 	deadline int64;	// next deadline (nsec since 1970)
 }
-func (s *pollServer) Run();
 
 func newPollServer() (s *pollServer, err os.Error) {
 	s = new(pollServer);
@@ -324,8 +322,6 @@
 	return e == os.EAGAIN;
 }
 
-func sockaddrToString(sa syscall.Sockaddr) (name string, err os.Error)
-
 func (fd *netFD) addr() string {
 	sa, e := syscall.Getsockname(fd.fd);
 	if e != 0 {
diff --git a/src/pkg/net/fd_darwin.go b/src/pkg/net/fd_darwin.go
index c5b38eb..8de8ce3 100644
--- a/src/pkg/net/fd_darwin.go
+++ b/src/pkg/net/fd_darwin.go
@@ -7,7 +7,6 @@
 package net
 
 import (
-	"net";
 	"os";
 	"syscall";
 )
diff --git a/src/pkg/net/fd_linux.go b/src/pkg/net/fd_linux.go
index 04cf8ea..5f4b5a9 100644
--- a/src/pkg/net/fd_linux.go
+++ b/src/pkg/net/fd_linux.go
@@ -7,7 +7,6 @@
 package net
 
 import (
-	"net";
 	"os";
 	"syscall";
 )
diff --git a/src/pkg/net/ip.go b/src/pkg/net/ip.go
index 8c52ede..8efdb57 100644
--- a/src/pkg/net/ip.go
+++ b/src/pkg/net/ip.go
@@ -13,7 +13,6 @@
 package net
 
 import (
-	"net"
 )
 
 // IP address lengths (bytes).
diff --git a/src/pkg/net/ip_test.go b/src/pkg/net/ip_test.go
index fb2ae82..32840a8 100644
--- a/src/pkg/net/ip_test.go
+++ b/src/pkg/net/ip_test.go
@@ -5,7 +5,6 @@
 package net
 
 import (
-	"net";
 	"testing"
 )
 
diff --git a/src/pkg/net/net.go b/src/pkg/net/net.go
index 46efa6e..c8d5332 100644
--- a/src/pkg/net/net.go
+++ b/src/pkg/net/net.go
@@ -5,7 +5,6 @@
 package net
 
 import (
-	"net";
 	"os";
 	"reflect";
 	"strconv";
@@ -158,9 +157,6 @@
 	return syscall.SOMAXCONN
 }
 
-func LookupHost(name string) (cname string, addrs []string, err os.Error)
-func LookupPort(network, service string) (port int, err os.Error)
-
 // Split "host:port" into "host" and "port".
 // Host cannot contain colons unless it is bracketed.
 func splitHostPort(hostport string) (host, port string, err os.Error) {
diff --git a/src/pkg/net/net_test.go b/src/pkg/net/net_test.go
index ec2037f..3430efb 100644
--- a/src/pkg/net/net_test.go
+++ b/src/pkg/net/net_test.go
@@ -5,7 +5,6 @@
 package net
 
 import (
-	"net";
 	"os";
 	"regexp";
 	"testing";
@@ -55,7 +54,7 @@
 
 func TestDialError(t *testing.T) {
 	for i, tt := range dialErrorTests {
-		c, e := net.Dial(tt.Net, tt.Laddr, tt.Raddr);
+		c, e := Dial(tt.Net, tt.Laddr, tt.Raddr);
 		if c != nil {
 			c.Close();
 		}
diff --git a/src/pkg/net/parse_test.go b/src/pkg/net/parse_test.go
index ce0bb47..227ae55 100644
--- a/src/pkg/net/parse_test.go
+++ b/src/pkg/net/parse_test.go
@@ -6,7 +6,6 @@
 
 import (
 	"bufio";
-	"net";
 	"os";
 	"testing";
 )
diff --git a/src/pkg/net/port.go b/src/pkg/net/port.go
index a9cd98d..c5789ad 100644
--- a/src/pkg/net/port.go
+++ b/src/pkg/net/port.go
@@ -8,7 +8,6 @@
 
 import (
 	"io";
-	"net";
 	"once";
 	"os";
 )
diff --git a/src/pkg/net/port_test.go b/src/pkg/net/port_test.go
index c535d4c..aa2a3a7 100644
--- a/src/pkg/net/port_test.go
+++ b/src/pkg/net/port_test.go
@@ -5,7 +5,6 @@
 package net
 
 import (
-	"net";
 	"testing";
 )
 
diff --git a/src/pkg/net/server_test.go b/src/pkg/net/server_test.go
index 92ed683..c2be68a 100644
--- a/src/pkg/net/server_test.go
+++ b/src/pkg/net/server_test.go
@@ -6,7 +6,6 @@
 
 import (
 	"io";
-	"net";
 	"os";
 	"strings";
 	"syscall";
@@ -27,7 +26,7 @@
 }
 
 func runServe(t *testing.T, network, addr string, listening chan<- string, done chan<- int) {
-	l, err := net.Listen(network, addr);
+	l, err := Listen(network, addr);
 	if err != nil {
 		t.Fatalf("net.Listen(%q, %q) = _, %v", network, addr, err);
 	}
@@ -47,7 +46,7 @@
 }
 
 func connect(t *testing.T, network, addr string) {
-	fd, err := net.Dial(network, "", addr);
+	fd, err := Dial(network, "", addr);
 	if err != nil {
 		t.Fatalf("net.Dial(%q, %q, %q) = _, %v", network, "", addr, err);
 	}
diff --git a/src/pkg/net/timeout_test.go b/src/pkg/net/timeout_test.go
index 0aebce8..bc49dad 100644
--- a/src/pkg/net/timeout_test.go
+++ b/src/pkg/net/timeout_test.go
@@ -5,14 +5,13 @@
 package net
 
 import (
-	"net";
 	"os";
 	"testing";
 	"time";
 )
 
 func testTimeout(t *testing.T, network, addr string) {
-	fd, err := net.Dial(network, "", addr);
+	fd, err := Dial(network, "", addr);
 	defer fd.Close();
 	if err != nil {
 		t.Errorf("dial %s %s failed: %v", network, addr, err);
diff --git a/src/pkg/path/Makefile b/src/pkg/path/Makefile
index d9f9fd5..d3a40bf 100644
--- a/src/pkg/path/Makefile
+++ b/src/pkg/path/Makefile
@@ -2,59 +2,10 @@
 # Use of this source code is governed by a BSD-style
 # license that can be found in the LICENSE file.
 
-# DO NOT EDIT.  Automatically generated by gobuild.
-# gobuild -m >Makefile
-
-D=
-
 include $(GOROOT)/src/Make.$(GOARCH)
-AR=gopack
 
-default: packages
+TARG=path
+GOFILES=\
+	path.go\
 
-clean:
-	rm -rf *.[$(OS)] *.a [$(OS)].out _obj
-
-test: packages
-	gotest
-
-coverage: packages
-	gotest
-	6cov -g `pwd` | grep -v '_test\.go:'
-
-%.$O: %.go
-	$(GC) -I_obj $*.go
-
-%.$O: %.c
-	$(CC) $*.c
-
-%.$O: %.s
-	$(AS) $*.s
-
-O1=\
-	path.$O\
-
-
-phases: a1
-_obj$D/path.a: phases
-
-a1: $(O1)
-	$(AR) grc _obj$D/path.a path.$O
-	rm -f $(O1)
-
-
-newpkg: clean
-	mkdir -p _obj$D
-	$(AR) grc _obj$D/path.a
-
-$(O1): newpkg
-$(O2): a1
-
-nuke: clean
-	rm -f $(GOROOT)/pkg/$(GOOS)_$(GOARCH)$D/path.a
-
-packages: _obj$D/path.a
-
-install: packages
-	test -d $(GOROOT)/pkg && mkdir -p $(GOROOT)/pkg/$(GOOS)_$(GOARCH)$D
-	cp _obj$D/path.a $(GOROOT)/pkg/$(GOOS)_$(GOARCH)$D/path.a
+include $(GOROOT)/src/Make.pkg
diff --git a/src/pkg/path/path_test.go b/src/pkg/path/path_test.go
index 1238ac1..386c17c 100644
--- a/src/pkg/path/path_test.go
+++ b/src/pkg/path/path_test.go
@@ -5,7 +5,6 @@
 package path
 
 import (
-	"path";
 	"testing"
 )
 
@@ -120,7 +119,6 @@
 var exttests = []ExtTest {
 	ExtTest{"path.go", ".go"},
 	ExtTest{"path.pb.go", ".go"},
-	ExtTest{"path", ""},
 	ExtTest{"a.dir/b", ""},
 	ExtTest{"a.dir/b.go", ".go"},
 	ExtTest{"a.dir/", ""},
diff --git a/src/pkg/rand/Makefile b/src/pkg/rand/Makefile
index 63d26ac9..142aa7f 100644
--- a/src/pkg/rand/Makefile
+++ b/src/pkg/rand/Makefile
@@ -2,59 +2,10 @@
 # Use of this source code is governed by a BSD-style
 # license that can be found in the LICENSE file.
 
-# DO NOT EDIT.  Automatically generated by gobuild.
-# gobuild -m >Makefile
-
-D=
-
 include $(GOROOT)/src/Make.$(GOARCH)
-AR=gopack
 
-default: packages
+TARG=rand
+GOFILES=\
+	rand.go\
 
-clean:
-	rm -rf *.[$(OS)] *.a [$(OS)].out _obj
-
-test: packages
-	gotest
-
-coverage: packages
-	gotest
-	6cov -g `pwd` | grep -v '_test\.go:'
-
-%.$O: %.go
-	$(GC) -I_obj $*.go
-
-%.$O: %.c
-	$(CC) $*.c
-
-%.$O: %.s
-	$(AS) $*.s
-
-O1=\
-	rand.$O\
-
-
-phases: a1
-_obj$D/rand.a: phases
-
-a1: $(O1)
-	$(AR) grc _obj$D/rand.a rand.$O
-	rm -f $(O1)
-
-
-newpkg: clean
-	mkdir -p _obj$D
-	$(AR) grc _obj$D/rand.a
-
-$(O1): newpkg
-$(O2): a1
-
-nuke: clean
-	rm -f $(GOROOT)/pkg/$(GOOS)_$(GOARCH)$D/rand.a
-
-packages: _obj$D/rand.a
-
-install: packages
-	test -d $(GOROOT)/pkg && mkdir -p $(GOROOT)/pkg/$(GOOS)_$(GOARCH)$D
-	cp _obj$D/rand.a $(GOROOT)/pkg/$(GOOS)_$(GOARCH)$D/rand.a
+include $(GOROOT)/src/Make.pkg
diff --git a/src/pkg/regexp/Makefile b/src/pkg/regexp/Makefile
index 0312d51..84d1a5d 100644
--- a/src/pkg/regexp/Makefile
+++ b/src/pkg/regexp/Makefile
@@ -2,59 +2,10 @@
 # Use of this source code is governed by a BSD-style
 # license that can be found in the LICENSE file.
 
-# DO NOT EDIT.  Automatically generated by gobuild.
-# gobuild -m >Makefile
-
-D=
-
 include $(GOROOT)/src/Make.$(GOARCH)
-AR=gopack
 
-default: packages
+TARG=regexp
+GOFILES=\
+	regexp.go\
 
-clean:
-	rm -rf *.[$(OS)] *.a [$(OS)].out _obj
-
-test: packages
-	gotest
-
-coverage: packages
-	gotest
-	6cov -g `pwd` | grep -v '_test\.go:'
-
-%.$O: %.go
-	$(GC) -I_obj $*.go
-
-%.$O: %.c
-	$(CC) $*.c
-
-%.$O: %.s
-	$(AS) $*.s
-
-O1=\
-	regexp.$O\
-
-
-phases: a1
-_obj$D/regexp.a: phases
-
-a1: $(O1)
-	$(AR) grc _obj$D/regexp.a regexp.$O
-	rm -f $(O1)
-
-
-newpkg: clean
-	mkdir -p _obj$D
-	$(AR) grc _obj$D/regexp.a
-
-$(O1): newpkg
-$(O2): a1
-
-nuke: clean
-	rm -f $(GOROOT)/pkg/$(GOOS)_$(GOARCH)$D/regexp.a
-
-packages: _obj$D/regexp.a
-
-install: packages
-	test -d $(GOROOT)/pkg && mkdir -p $(GOROOT)/pkg/$(GOOS)_$(GOARCH)$D
-	cp _obj$D/regexp.a $(GOROOT)/pkg/$(GOOS)_$(GOARCH)$D/regexp.a
+include $(GOROOT)/src/Make.pkg
diff --git a/src/pkg/regexp/all_test.go b/src/pkg/regexp/all_test.go
index c985dad..e6e3eb2 100644
--- a/src/pkg/regexp/all_test.go
+++ b/src/pkg/regexp/all_test.go
@@ -6,7 +6,6 @@
 
 import (
 	"os";
-	"regexp";
 	"strings";
 	"testing";
 )
diff --git a/src/pkg/regexp/regexp.go b/src/pkg/regexp/regexp.go
index f78bf86..15361a2 100644
--- a/src/pkg/regexp/regexp.go
+++ b/src/pkg/regexp/regexp.go
@@ -288,8 +288,6 @@
 	return p;
 }
 
-func (p *parser) regexp() (start, end instr)
-
 var iNULL instr
 
 func special(c int) bool {
diff --git a/src/pkg/rpc/Makefile b/src/pkg/rpc/Makefile
index a062503..9ea1782 100644
--- a/src/pkg/rpc/Makefile
+++ b/src/pkg/rpc/Makefile
@@ -2,69 +2,12 @@
 # Use of this source code is governed by a BSD-style
 # license that can be found in the LICENSE file.
 
-
-# DO NOT EDIT.  Automatically generated by gobuild.
-# gobuild -m >Makefile
-
-D=
-
 include $(GOROOT)/src/Make.$(GOARCH)
-AR=gopack
 
-default: packages
+TARG=rpc
+GOFILES=\
+	client.go\
+	debug.go\
+	server.go\
 
-clean:
-	rm -rf *.[$(OS)] *.a [$(OS)].out _obj
-
-test: packages
-	gotest
-
-coverage: packages
-	gotest
-	6cov -g $$(pwd) | grep -v '_test\.go:'
-
-%.$O: %.go
-	$(GC) -I_obj $*.go
-
-%.$O: %.c
-	$(CC) $*.c
-
-%.$O: %.s
-	$(AS) $*.s
-
-O1=\
-	server.$O\
-
-O2=\
-	client.$O\
-	debug.$O\
-
-
-phases: a1 a2
-_obj$D/rpc.a: phases
-
-a1: $(O1)
-	$(AR) grc _obj$D/rpc.a server.$O
-	rm -f $(O1)
-
-a2: $(O2)
-	$(AR) grc _obj$D/rpc.a client.$O debug.$O
-	rm -f $(O2)
-
-
-newpkg: clean
-	mkdir -p _obj$D
-	$(AR) grc _obj$D/rpc.a
-
-$(O1): newpkg
-$(O2): a1
-$(O3): a2
-
-nuke: clean
-	rm -f $(GOROOT)/pkg/$(GOOS)_$(GOARCH)$D/rpc.a
-
-packages: _obj$D/rpc.a
-
-install: packages
-	test -d $(GOROOT)/pkg && mkdir -p $(GOROOT)/pkg/$(GOOS)_$(GOARCH)$D
-	cp _obj$D/rpc.a $(GOROOT)/pkg/$(GOOS)_$(GOARCH)$D/rpc.a
+include $(GOROOT)/src/Make.pkg
diff --git a/src/pkg/rpc/client.go b/src/pkg/rpc/client.go
index 92c283e..5846d6b 100644
--- a/src/pkg/rpc/client.go
+++ b/src/pkg/rpc/client.go
@@ -12,7 +12,6 @@
 	"log";
 	"net";
 	"os";
-	"rpc";
 	"strconv";
 	"sync";
 )
diff --git a/src/pkg/rpc/debug.go b/src/pkg/rpc/debug.go
index 3b927cf..990bd1f 100644
--- a/src/pkg/rpc/debug.go
+++ b/src/pkg/rpc/debug.go
@@ -16,7 +16,6 @@
 	"io";
 	"log";
 	"os";
-	"rpc";
 	"sort";
 	"template";
 )
diff --git a/src/pkg/rpc/server.go b/src/pkg/rpc/server.go
index d1b7de7..37afa77 100644
--- a/src/pkg/rpc/server.go
+++ b/src/pkg/rpc/server.go
@@ -409,8 +409,6 @@
 	server.input(conn);
 }
 
-func debugHTTP(c *http.Conn, req *http.Request)
-
 // HandleHTTP registers an HTTP handler for RPC messages.
 // It is still necessary to invoke http.Serve(), typically in a go statement.
 func HandleHTTP() {
diff --git a/src/pkg/rpc/server_test.go b/src/pkg/rpc/server_test.go
index e21680e..ff5de90 100644
--- a/src/pkg/rpc/server_test.go
+++ b/src/pkg/rpc/server_test.go
@@ -12,7 +12,6 @@
 	"net";
 	"once";
 	"os";
-	"rpc";
 	"strings";
 	"testing";
 )
diff --git a/src/pkg/sort/Makefile b/src/pkg/sort/Makefile
index 4d193f8..a10e407 100644
--- a/src/pkg/sort/Makefile
+++ b/src/pkg/sort/Makefile
@@ -2,59 +2,10 @@
 # Use of this source code is governed by a BSD-style
 # license that can be found in the LICENSE file.
 
-# DO NOT EDIT.  Automatically generated by gobuild.
-# gobuild -m >Makefile
-
-D=
-
 include $(GOROOT)/src/Make.$(GOARCH)
-AR=gopack
 
-default: packages
+TARG=sort
+GOFILES=\
+	sort.go\
 
-clean:
-	rm -rf *.[$(OS)] *.a [$(OS)].out _obj
-
-test: packages
-	gotest
-
-coverage: packages
-	gotest
-	6cov -g `pwd` | grep -v '_test\.go:'
-
-%.$O: %.go
-	$(GC) -I_obj $*.go
-
-%.$O: %.c
-	$(CC) $*.c
-
-%.$O: %.s
-	$(AS) $*.s
-
-O1=\
-	sort.$O\
-
-
-phases: a1
-_obj$D/sort.a: phases
-
-a1: $(O1)
-	$(AR) grc _obj$D/sort.a sort.$O
-	rm -f $(O1)
-
-
-newpkg: clean
-	mkdir -p _obj$D
-	$(AR) grc _obj$D/sort.a
-
-$(O1): newpkg
-$(O2): a1
-
-nuke: clean
-	rm -f $(GOROOT)/pkg/$(GOOS)_$(GOARCH)$D/sort.a
-
-packages: _obj$D/sort.a
-
-install: packages
-	test -d $(GOROOT)/pkg && mkdir -p $(GOROOT)/pkg/$(GOOS)_$(GOARCH)$D
-	cp _obj$D/sort.a $(GOROOT)/pkg/$(GOOS)_$(GOARCH)$D/sort.a
+include $(GOROOT)/src/Make.pkg
diff --git a/src/pkg/sort/sort_test.go b/src/pkg/sort/sort_test.go
index 1747dac..bc56469 100644
--- a/src/pkg/sort/sort_test.go
+++ b/src/pkg/sort/sort_test.go
@@ -7,7 +7,6 @@
 import (
 	"fmt";
 	"rand";
-	"sort";
 	"testing";
 )
 
@@ -19,8 +18,8 @@
 func TestSortIntArray(t *testing.T) {
 	data := ints;
 	a := IntArray(&data);
-	sort.Sort(a);
-	if !sort.IsSorted(a) {
+	Sort(a);
+	if !IsSorted(a) {
 		t.Errorf("sorted %v", ints);
 		t.Errorf("   got %v", data);
 	}
@@ -29,8 +28,8 @@
 func TestSortFloatArray(t *testing.T) {
 	data := floats;
 	a := FloatArray(&data);
-	sort.Sort(a);
-	if !sort.IsSorted(a) {
+	Sort(a);
+	if !IsSorted(a) {
 		t.Errorf("sorted %v", floats);
 		t.Errorf("   got %v", data);
 	}
@@ -39,8 +38,8 @@
 func TestSortStringArray(t *testing.T) {
 	data := strings;
 	a := StringArray(&data);
-	sort.Sort(a);
-	if !sort.IsSorted(a) {
+	Sort(a);
+	if !IsSorted(a) {
 		t.Errorf("sorted %v", strings);
 		t.Errorf("   got %v", data);
 	}
@@ -48,8 +47,8 @@
 
 func TestSortInts(t *testing.T) {
 	data := ints;
-	sort.SortInts(&data);
-	if !sort.IntsAreSorted(&data) {
+	SortInts(&data);
+	if !IntsAreSorted(&data) {
 		t.Errorf("sorted %v", ints);
 		t.Errorf("   got %v", data);
 	}
@@ -57,8 +56,8 @@
 
 func TestSortFloats(t *testing.T) {
 	data := floats;
-	sort.SortFloats(&data);
-	if !sort.FloatsAreSorted(&data) {
+	SortFloats(&data);
+	if !FloatsAreSorted(&data) {
 		t.Errorf("sorted %v", floats);
 		t.Errorf("   got %v", data);
 	}
@@ -66,8 +65,8 @@
 
 func TestSortStrings(t *testing.T) {
 	data := strings;
-	sort.SortStrings(&data);
-	if !sort.StringsAreSorted(&data) {
+	SortStrings(&data);
+	if !StringsAreSorted(&data) {
 		t.Errorf("sorted %v", strings);
 		t.Errorf("   got %v", data);
 	}
@@ -78,11 +77,11 @@
 	for i := 0; i < len(data); i++ {
 		data[i] = rand.Intn(100);
 	}
-	if sort.IntsAreSorted(data) {
+	if IntsAreSorted(data) {
 		t.Fatalf("terrible rand.rand");
 	}
-	sort.SortInts(data);
-	if !sort.IntsAreSorted(data) {
+	SortInts(data);
+	if !IntsAreSorted(data) {
 		t.Errorf("sort didn't sort - 1M ints");
 	}
 }
@@ -195,9 +194,9 @@
 						for i := 0; i < n; i++ {
 							mdata[i] = data[i];
 						}
-						// sort.SortInts is known to be correct
+						// SortInts is known to be correct
 						// because mode Sort runs after mode _Copy.
-						sort.SortInts(mdata);
+						SortInts(mdata);
 					case _Dither:
 						for i := 0; i < n; i++ {
 							mdata[i] = data[i] + i%5;
@@ -206,7 +205,7 @@
 
 					desc := fmt.Sprintf("n=%d m=%d dist=%s mode=%s", n, m, dists[dist], modes[mode]);
 					d := &testingData{desc, t, mdata[0:n], n*lg(n)*12/10, 0};
-					sort.Sort(d);
+					Sort(d);
 
 					// If we were testing C qsort, we'd have to make a copy
 					// of the array and sort it ourselves and then compare
@@ -214,9 +213,9 @@
 					// the data, not (for example) overwriting it with zeros.
 					//
 					// In go, we don't have to be so paranoid: since the only
-					// mutating method sort.Sort can call is TestingData.swap,
+					// mutating method Sort can call is TestingData.swap,
 					// it suffices here just to check that the final array is sorted.
-					if !sort.IntsAreSorted(mdata) {
+					if !IntsAreSorted(mdata) {
 						t.Errorf("%s: ints not sorted", desc);
 						t.Errorf("\t%v", mdata);
 						t.FailNow();
diff --git a/src/pkg/strings/Makefile b/src/pkg/strings/Makefile
index b6660cf..dcfa606 100644
--- a/src/pkg/strings/Makefile
+++ b/src/pkg/strings/Makefile
@@ -2,59 +2,10 @@
 # Use of this source code is governed by a BSD-style
 # license that can be found in the LICENSE file.
 
-# DO NOT EDIT.  Automatically generated by gobuild.
-# gobuild -m >Makefile
-
-D=
-
 include $(GOROOT)/src/Make.$(GOARCH)
-AR=gopack
 
-default: packages
+TARG=strings
+GOFILES=\
+	strings.go\
 
-clean:
-	rm -rf *.[$(OS)] *.a [$(OS)].out _obj
-
-test: packages
-	gotest
-
-coverage: packages
-	gotest
-	6cov -g `pwd` | grep -v '_test\.go:'
-
-%.$O: %.go
-	$(GC) -I_obj $*.go
-
-%.$O: %.c
-	$(CC) $*.c
-
-%.$O: %.s
-	$(AS) $*.s
-
-O1=\
-	strings.$O\
-
-
-phases: a1
-_obj$D/strings.a: phases
-
-a1: $(O1)
-	$(AR) grc _obj$D/strings.a strings.$O
-	rm -f $(O1)
-
-
-newpkg: clean
-	mkdir -p _obj$D
-	$(AR) grc _obj$D/strings.a
-
-$(O1): newpkg
-$(O2): a1
-
-nuke: clean
-	rm -f $(GOROOT)/pkg/$(GOOS)_$(GOARCH)$D/strings.a
-
-packages: _obj$D/strings.a
-
-install: packages
-	test -d $(GOROOT)/pkg && mkdir -p $(GOROOT)/pkg/$(GOOS)_$(GOARCH)$D
-	cp _obj$D/strings.a $(GOROOT)/pkg/$(GOOS)_$(GOARCH)$D/strings.a
+include $(GOROOT)/src/Make.pkg
diff --git a/src/pkg/strings/strings_test.go b/src/pkg/strings/strings_test.go
index a1733b3..714507b 100644
--- a/src/pkg/strings/strings_test.go
+++ b/src/pkg/strings/strings_test.go
@@ -5,7 +5,6 @@
 package strings
 
 import (
-	"strings";
 	"testing";
 )
 
diff --git a/src/pkg/syscall/Makefile b/src/pkg/syscall/Makefile
index a5cc042..2800a84 100644
--- a/src/pkg/syscall/Makefile
+++ b/src/pkg/syscall/Makefile
@@ -2,96 +2,22 @@
 # Use of this source code is governed by a BSD-style
 # license that can be found in the LICENSE file.
 
-# DO NOT EDIT.  Automatically generated by gobuild.
-# gobuild -m asm_${GOOS}_${GOARCH}.s errstr.go exec.go syscall.go syscall_${GOOS}.go syscall_${GOOS}_${GOARCH}.go zerrors_${GOOS}_${GOARCH}.go zsyscall_${GOOS}_${GOARCH}.go zsysnum_${GOOS}_${GOARCH}.go ztypes_${GOOS}_${GOARCH}.go >Makefile
-
-D=
-
 include $(GOROOT)/src/Make.$(GOARCH)
-AR=gopack
 
-default: packages
+TARG=syscall
+GOFILES=\
+	errstr.go\
+	exec.go\
+	syscall.go\
+	syscall_$(GOOS).go\
+	syscall_$(GOOS)_$(GOARCH).go\
+	zerrors_$(GOOS)_$(GOARCH).go\
+	zsyscall_$(GOOS)_$(GOARCH).go\
+	zsysnum_$(GOOS)_$(GOARCH).go\
+	ztypes_$(GOOS)_$(GOARCH).go\
 
-clean:
-	rm -rf *.[$(OS)] *.a [$(OS)].out _obj
-
-test: packages
-	gotest
-
-coverage: packages
-	gotest
-	6cov -g `pwd` | grep -v '_test\.go:'
-
-%.$O: %.go
-	$(GC) -I_obj $*.go
-
-%.$O: %.c
-	$(CC) $*.c
-
-%.$O: %.s
-	$(AS) $*.s
-
-O1=\
+OFILES=\
 	asm_$(GOOS)_$(GOARCH).$O\
-	syscall.$O\
-	zerrors_$(GOOS)_$(GOARCH).$O\
-	zsysnum_$(GOOS)_$(GOARCH).$O\
-	ztypes_$(GOOS)_$(GOARCH).$O\
+	types_$(GOOS)_$(GOARCH).$O\
 
-O2=\
-	errstr.$O\
-	zsyscall_$(GOOS)_$(GOARCH).$O\
-
-O3=\
-	syscall_$(GOOS)_$(GOARCH).$O\
-
-O4=\
-	syscall_$(GOOS).$O\
-
-O5=\
-	exec.$O\
-
-
-phases: a1 a2 a3 a4 a5
-_obj$D/syscall.a: phases
-
-a1: $(O1)
-	$(AR) grc _obj$D/syscall.a asm_$(GOOS)_$(GOARCH).$O syscall.$O zerrors_$(GOOS)_$(GOARCH).$O zsysnum_$(GOOS)_$(GOARCH).$O ztypes_$(GOOS)_$(GOARCH).$O
-	rm -f $(O1)
-
-a2: $(O2)
-	$(AR) grc _obj$D/syscall.a errstr.$O zsyscall_$(GOOS)_$(GOARCH).$O
-	rm -f $(O2)
-
-a3: $(O3)
-	$(AR) grc _obj$D/syscall.a syscall_$(GOOS)_$(GOARCH).$O
-	rm -f $(O3)
-
-a4: $(O4)
-	$(AR) grc _obj$D/syscall.a syscall_$(GOOS).$O
-	rm -f $(O4)
-
-a5: $(O5)
-	$(AR) grc _obj$D/syscall.a exec.$O
-	rm -f $(O5)
-
-
-newpkg: clean
-	mkdir -p _obj$D
-	$(AR) grc _obj$D/syscall.a
-
-$(O1): newpkg
-$(O2): a1
-$(O3): a2
-$(O4): a3
-$(O5): a4
-$(O6): a5
-
-nuke: clean
-	rm -f $(GOROOT)/pkg/$(GOOS)_$(GOARCH)$D/syscall.a
-
-packages: _obj$D/syscall.a
-
-install: packages
-	test -d $(GOROOT)/pkg && mkdir -p $(GOROOT)/pkg/$(GOOS)_$(GOARCH)$D
-	cp _obj$D/syscall.a $(GOROOT)/pkg/$(GOOS)_$(GOARCH)$D/syscall.a
+include $(GOROOT)/src/Make.pkg
diff --git a/src/pkg/syscall/errstr.go b/src/pkg/syscall/errstr.go
index 67a529d..12a2c0d 100644
--- a/src/pkg/syscall/errstr.go
+++ b/src/pkg/syscall/errstr.go
@@ -4,7 +4,6 @@
 
 package syscall
 
-import "syscall"
 
 func str(val int) string {  // do it here rather than with fmt to avoid dependency
 	if val < 0 {
diff --git a/src/pkg/syscall/exec.go b/src/pkg/syscall/exec.go
index 3dd0727..91d8a3f 100644
--- a/src/pkg/syscall/exec.go
+++ b/src/pkg/syscall/exec.go
@@ -8,7 +8,6 @@
 
 import (
 	"sync";
-	"syscall";
 	"unsafe";
 )
 
diff --git a/src/pkg/syscall/syscall.go b/src/pkg/syscall/syscall.go
index 5ee44e3..59f35b2 100644
--- a/src/pkg/syscall/syscall.go
+++ b/src/pkg/syscall/syscall.go
@@ -11,10 +11,7 @@
 // the manuals for the appropriate operating system.
 package syscall
 
-import (
-	"syscall";
-	"unsafe";
-)
+import "unsafe"
 
 func Syscall(trap, a1, a2, a3 uintptr) (r1, r2, err uintptr)
 func Syscall6(trap, a1, a2, a3, a4, a5, a6 uintptr) (r1, r2, err uintptr)
diff --git a/src/pkg/syscall/syscall_darwin.go b/src/pkg/syscall/syscall_darwin.go
index 49d2815..b19d427 100644
--- a/src/pkg/syscall/syscall_darwin.go
+++ b/src/pkg/syscall/syscall_darwin.go
@@ -11,10 +11,7 @@
 
 package syscall
 
-import (
-	"syscall";
-	"unsafe";
-)
+import "unsafe"
 
 const OS = "darwin"
 
diff --git a/src/pkg/syscall/syscall_darwin_386.go b/src/pkg/syscall/syscall_darwin_386.go
index 6792109..aa558c2 100644
--- a/src/pkg/syscall/syscall_darwin_386.go
+++ b/src/pkg/syscall/syscall_darwin_386.go
@@ -4,8 +4,6 @@
 
 package syscall
 
-import "syscall"
-
 func Getpagesize() int {
 	return 4096
 }
diff --git a/src/pkg/syscall/syscall_darwin_amd64.go b/src/pkg/syscall/syscall_darwin_amd64.go
index f7a93f1..34e83ec 100644
--- a/src/pkg/syscall/syscall_darwin_amd64.go
+++ b/src/pkg/syscall/syscall_darwin_amd64.go
@@ -4,8 +4,6 @@
 
 package syscall
 
-import "syscall"
-
 func Getpagesize() int {
 	return 4096
 }
diff --git a/src/pkg/syscall/syscall_linux.go b/src/pkg/syscall/syscall_linux.go
index ac77942..10fedb9 100644
--- a/src/pkg/syscall/syscall_linux.go
+++ b/src/pkg/syscall/syscall_linux.go
@@ -11,10 +11,7 @@
 
 package syscall
 
-import (
-	"syscall";
-	"unsafe";
-)
+import "unsafe"
 
 const OS = "linux"
 
diff --git a/src/pkg/syscall/syscall_linux_386.go b/src/pkg/syscall/syscall_linux_386.go
index b44428e..dc64ae7 100644
--- a/src/pkg/syscall/syscall_linux_386.go
+++ b/src/pkg/syscall/syscall_linux_386.go
@@ -4,10 +4,7 @@
 
 package syscall
 
-import (
-	"syscall";
-	"unsafe";
-)
+import "unsafe"
 
 func Getpagesize() int {
 	return 4096
diff --git a/src/pkg/syscall/syscall_linux_amd64.go b/src/pkg/syscall/syscall_linux_amd64.go
index 4f7b33b..28d74b7 100644
--- a/src/pkg/syscall/syscall_linux_amd64.go
+++ b/src/pkg/syscall/syscall_linux_amd64.go
@@ -4,8 +4,6 @@
 
 package syscall
 
-import "syscall"
-
 //sys	Chown(path string, uid int, gid int) (errno int)
 //sys	Fchown(fd int, uid int, gid int) (errno int)
 //sys	Fstat(fd int, stat *Stat_t) (errno int)
diff --git a/src/pkg/syscall/zsyscall_darwin_386.go b/src/pkg/syscall/zsyscall_darwin_386.go
index c83e63d..688649a 100644
--- a/src/pkg/syscall/zsyscall_darwin_386.go
+++ b/src/pkg/syscall/zsyscall_darwin_386.go
@@ -3,10 +3,7 @@
 
 package syscall
 
-import (
-	"syscall";
-	"unsafe";
-)
+import "unsafe"
 
 func getgroups(ngid int, gid *_Gid_t) (n int, errno int) {
 	r0, r1, e1 := Syscall(SYS_GETGROUPS, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0);
diff --git a/src/pkg/syscall/zsyscall_darwin_amd64.go b/src/pkg/syscall/zsyscall_darwin_amd64.go
index 7afb209..28d04c6 100644
--- a/src/pkg/syscall/zsyscall_darwin_amd64.go
+++ b/src/pkg/syscall/zsyscall_darwin_amd64.go
@@ -3,10 +3,7 @@
 
 package syscall
 
-import (
-	"syscall";
-	"unsafe";
-)
+import "unsafe"
 
 func getgroups(ngid int, gid *_Gid_t) (n int, errno int) {
 	r0, r1, e1 := Syscall(SYS_GETGROUPS, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0);
diff --git a/src/pkg/syscall/zsyscall_linux_386.go b/src/pkg/syscall/zsyscall_linux_386.go
index 11d08d2..3444c6d 100644
--- a/src/pkg/syscall/zsyscall_linux_386.go
+++ b/src/pkg/syscall/zsyscall_linux_386.go
@@ -3,10 +3,7 @@
 
 package syscall
 
-import (
-	"syscall";
-	"unsafe";
-)
+import "unsafe"
 
 func pipe(p *[2]_C_int) (errno int) {
 	r0, r1, e1 := Syscall(SYS_PIPE, uintptr(unsafe.Pointer(p)), 0, 0);
diff --git a/src/pkg/syscall/zsyscall_linux_amd64.go b/src/pkg/syscall/zsyscall_linux_amd64.go
index 743c528..7834cfb 100644
--- a/src/pkg/syscall/zsyscall_linux_amd64.go
+++ b/src/pkg/syscall/zsyscall_linux_amd64.go
@@ -3,10 +3,7 @@
 
 package syscall
 
-import (
-	"syscall";
-	"unsafe";
-)
+import "unsafe"
 
 func pipe(p *[2]_C_int) (errno int) {
 	r0, r1, e1 := Syscall(SYS_PIPE, uintptr(unsafe.Pointer(p)), 0, 0);
diff --git a/src/pkg/tabwriter/Makefile b/src/pkg/tabwriter/Makefile
index 1c45180..28cb505 100644
--- a/src/pkg/tabwriter/Makefile
+++ b/src/pkg/tabwriter/Makefile
@@ -2,59 +2,10 @@
 # Use of this source code is governed by a BSD-style
 # license that can be found in the LICENSE file.
 
-# DO NOT EDIT.  Automatically generated by gobuild.
-# gobuild -m >Makefile
-
-D=
-
 include $(GOROOT)/src/Make.$(GOARCH)
-AR=gopack
 
-default: packages
+TARG=tabwriter
+GOFILES=\
+	tabwriter.go\
 
-clean:
-	rm -rf *.[$(OS)] *.a [$(OS)].out _obj
-
-test: packages
-	gotest
-
-coverage: packages
-	gotest
-	6cov -g `pwd` | grep -v '_test\.go:'
-
-%.$O: %.go
-	$(GC) -I_obj $*.go
-
-%.$O: %.c
-	$(CC) $*.c
-
-%.$O: %.s
-	$(AS) $*.s
-
-O1=\
-	tabwriter.$O\
-
-
-phases: a1
-_obj$D/tabwriter.a: phases
-
-a1: $(O1)
-	$(AR) grc _obj$D/tabwriter.a tabwriter.$O
-	rm -f $(O1)
-
-
-newpkg: clean
-	mkdir -p _obj$D
-	$(AR) grc _obj$D/tabwriter.a
-
-$(O1): newpkg
-$(O2): a1
-
-nuke: clean
-	rm -f $(GOROOT)/pkg/$(GOOS)_$(GOARCH)$D/tabwriter.a
-
-packages: _obj$D/tabwriter.a
-
-install: packages
-	test -d $(GOROOT)/pkg && mkdir -p $(GOROOT)/pkg/$(GOOS)_$(GOARCH)$D
-	cp _obj$D/tabwriter.a $(GOROOT)/pkg/$(GOOS)_$(GOARCH)$D/tabwriter.a
+include $(GOROOT)/src/Make.pkg
diff --git a/src/pkg/tabwriter/tabwriter_test.go b/src/pkg/tabwriter/tabwriter_test.go
index 7967a46..65641da 100644
--- a/src/pkg/tabwriter/tabwriter_test.go
+++ b/src/pkg/tabwriter/tabwriter_test.go
@@ -7,7 +7,6 @@
 import (
 	"io";
 	"os";
-	"tabwriter";
 	"testing";
 )
 
@@ -47,7 +46,7 @@
 }
 
 
-func write(t *testing.T, testname string, w *tabwriter.Writer, src string) {
+func write(t *testing.T, testname string, w *Writer, src string) {
 	written, err := io.WriteString(w, src);
 	if err != nil {
 		t.Errorf("--- test: %s\n--- src:\n%s\n--- write error: %v\n", testname, src, err);
@@ -58,7 +57,7 @@
 }
 
 
-func verify(t *testing.T, testname string, w *tabwriter.Writer, b *buffer, src, expected string) {
+func verify(t *testing.T, testname string, w *Writer, b *buffer, src, expected string) {
 	err := w.Flush();
 	if err != nil {
 		t.Errorf("--- test: %s\n--- src:\n%s\n--- flush error: %v\n", testname, src, err);
@@ -75,7 +74,7 @@
 	var b buffer;
 	b.init(1000);
 
-	var w tabwriter.Writer;
+	var w Writer;
 	w.Init(&b, tabwidth, padding, padchar, flags);
 
 	// write all at once
@@ -143,7 +142,7 @@
 
 	entry{
 		"4b",
-		8, 1, '.', tabwriter.AlignRight,
+		8, 1, '.', AlignRight,
 		"\t",  // '\t' terminates an empty cell on last line - nothing to print
 		""
 	},
@@ -171,7 +170,7 @@
 
 	entry{
 		"5d",
-		8, 1, '.', tabwriter.AlignRight,
+		8, 1, '.', AlignRight,
 		"*\t*\t",
 		".......**"
 	},
@@ -220,14 +219,14 @@
 
 	entry{
 		"7f",
-		8, 1, '.', tabwriter.FilterHTML,
+		8, 1, '.', FilterHTML,
 		"f) f&lt;o\t<b>bar</b>\t\n",
 		"f) f&lt;o..<b>bar</b>.....\n"
 	},
 
 	entry{
 		"7g",
-		8, 1, '.', tabwriter.FilterHTML,
+		8, 1, '.', FilterHTML,
 		"g) f&lt;o\t<b>bar</b>\t non-terminated entity &amp",
 		"g) f&lt;o..<b>bar</b>..... non-terminated entity &amp"
 	},
@@ -251,7 +250,7 @@
 
 	entry{
 		"9b",
-		0, 0, '.', tabwriter.FilterHTML,
+		0, 0, '.', FilterHTML,
 		"1\t2<!---\f--->\t3\t4\n"  // \f inside HTML is ignored
 		"11\t222\t3333\t44444\n",
 
@@ -297,7 +296,7 @@
 
 	entry{
 		"12a",
-		8, 1, ' ', tabwriter.AlignRight,
+		8, 1, ' ', AlignRight,
 		"a\tè\tc\t\n"
 		"aa\tèèè\tcccc\tddddd\t\n"
 		"aaa\tèèèè\t\n",
@@ -373,7 +372,7 @@
 
 	entry{
 		"13c",
-		8, 1, '\t', tabwriter.FilterHTML,
+		8, 1, '\t', FilterHTML,
 		"4444\t333\t22\t1\t333\n"
 		"999999999\t22\n"
 		"7\t22\n"
@@ -393,7 +392,7 @@
 
 	entry{
 		"14",
-		0, 2, ' ', tabwriter.AlignRight,
+		0, 2, ' ', AlignRight,
 		".0\t.3\t2.4\t-5.1\t\n"
 		"23.0\t12345678.9\t2.4\t-989.4\t\n"
 		"5.1\t12.0\t2.4\t-7.0\t\n"
diff --git a/src/pkg/template/Makefile b/src/pkg/template/Makefile
index e91c088..832f504 100644
--- a/src/pkg/template/Makefile
+++ b/src/pkg/template/Makefile
@@ -2,67 +2,11 @@
 # Use of this source code is governed by a BSD-style
 # license that can be found in the LICENSE file.
 
-# DO NOT EDIT.  Automatically generated by gobuild.
-# gobuild -m >Makefile
-
-D=
-
 include $(GOROOT)/src/Make.$(GOARCH)
-AR=gopack
 
-default: packages
+TARG=template
+GOFILES=\
+	format.go\
+	template.go\
 
-clean:
-	rm -rf *.[$(OS)] *.a [$(OS)].out _obj
-
-test: packages
-	gotest
-
-coverage: packages
-	gotest
-	6cov -g `pwd` | grep -v '_test\.go:'
-
-%.$O: %.go
-	$(GC) -I_obj $*.go
-
-%.$O: %.c
-	$(CC) $*.c
-
-%.$O: %.s
-	$(AS) $*.s
-
-O1=\
-	format.$O\
-
-O2=\
-	template.$O\
-
-
-phases: a1 a2
-_obj$D/template.a: phases
-
-a1: $(O1)
-	$(AR) grc _obj$D/template.a format.$O
-	rm -f $(O1)
-
-a2: $(O2)
-	$(AR) grc _obj$D/template.a template.$O
-	rm -f $(O2)
-
-
-newpkg: clean
-	mkdir -p _obj$D
-	$(AR) grc _obj$D/template.a
-
-$(O1): newpkg
-$(O2): a1
-$(O3): a2
-
-nuke: clean
-	rm -f $(GOROOT)/pkg/$(GOOS)_$(GOARCH)$D/template.a
-
-packages: _obj$D/template.a
-
-install: packages
-	test -d $(GOROOT)/pkg && mkdir -p $(GOROOT)/pkg/$(GOOS)_$(GOARCH)$D
-	cp _obj$D/template.a $(GOROOT)/pkg/$(GOOS)_$(GOARCH)$D/template.a
+include $(GOROOT)/src/Make.pkg
diff --git a/src/pkg/template/template.go b/src/pkg/template/template.go
index 956e452..a752655 100644
--- a/src/pkg/template/template.go
+++ b/src/pkg/template/template.go
@@ -63,7 +63,6 @@
 	"reflect";
 	"runtime";
 	"strings";
-	"template";
 )
 
 // Errors returned during parsing and execution.  Users may extract the information and reformat
@@ -442,8 +441,7 @@
 	return false, tok, w
 }
 
-// parseSection and parseRepeated are mutually recursive
-func (t *Template) parseSection(words []string) *sectionElement
+// parseRepeated and parseSection are mutually recursive
 
 func (t *Template) parseRepeated(words []string) *repeatedElement {
 	r := new(repeatedElement);
@@ -641,10 +639,6 @@
 	t.execError(st, v.linenum, "missing formatter %s for variable %s", v.formatter, v.name)
 }
 
-// execute{|Element|Section|Repeated} are mutually recursive
-func (t *Template) executeSection(s *sectionElement, st *state)
-func (t *Template) executeRepeated(r *repeatedElement, st *state)
-
 // Execute element i.  Return next index to execute.
 func (t *Template) executeElement(i int, st *state) int {
 	switch elem := t.elems.At(i).(type) {
diff --git a/src/pkg/template/template_test.go b/src/pkg/template/template_test.go
index c293f66..f31f43d 100644
--- a/src/pkg/template/template_test.go
+++ b/src/pkg/template/template_test.go
@@ -10,7 +10,6 @@
 	"io";
 	"os";
 	"reflect";
-	"template";
 	"testing";
 )
 
diff --git a/src/pkg/testing/Makefile b/src/pkg/testing/Makefile
index eab8a4c..809bb56 100644
--- a/src/pkg/testing/Makefile
+++ b/src/pkg/testing/Makefile
@@ -2,68 +2,11 @@
 # Use of this source code is governed by a BSD-style
 # license that can be found in the LICENSE file.
 
-
-# DO NOT EDIT.  Automatically generated by gobuild.
-# gobuild -m >Makefile
-
-D=
-
 include $(GOROOT)/src/Make.$(GOARCH)
-AR=gopack
 
-default: packages
+TARG=testing
+GOFILES=\
+	regexp.go\
+	testing.go\
 
-clean:
-	rm -rf *.[$(OS)] *.a [$(OS)].out _obj
-
-test: packages
-	gotest
-
-coverage: packages
-	gotest
-	6cov -g $$(pwd) | grep -v '_test\.go:'
-
-%.$O: %.go
-	$(GC) -I_obj $*.go
-
-%.$O: %.c
-	$(CC) $*.c
-
-%.$O: %.s
-	$(AS) $*.s
-
-O1=\
-	regexp.$O\
-
-O2=\
-	testing.$O\
-
-
-phases: a1 a2
-_obj$D/testing.a: phases
-
-a1: $(O1)
-	$(AR) grc _obj$D/testing.a regexp.$O
-	rm -f $(O1)
-
-a2: $(O2)
-	$(AR) grc _obj$D/testing.a testing.$O
-	rm -f $(O2)
-
-
-newpkg: clean
-	mkdir -p _obj$D
-	$(AR) grc _obj$D/testing.a
-
-$(O1): newpkg
-$(O2): a1
-$(O3): a2
-
-nuke: clean
-	rm -f $(GOROOT)/pkg/$(GOOS)_$(GOARCH)$D/testing.a
-
-packages: _obj$D/testing.a
-
-install: packages
-	test -d $(GOROOT)/pkg && mkdir -p $(GOROOT)/pkg/$(GOOS)_$(GOARCH)$D
-	cp _obj$D/testing.a $(GOROOT)/pkg/$(GOOS)_$(GOARCH)$D/testing.a
+include $(GOROOT)/src/Make.pkg
diff --git a/src/pkg/testing/iotest/Makefile b/src/pkg/testing/iotest/Makefile
index 1d01041..b223fb9 100644
--- a/src/pkg/testing/iotest/Makefile
+++ b/src/pkg/testing/iotest/Makefile
@@ -2,60 +2,11 @@
 # Use of this source code is governed by a BSD-style
 # license that can be found in the LICENSE file.
 
-# DO NOT EDIT.  Automatically generated by gobuild.
-# gobuild -m >Makefile
-
-D=/testing/
-
 include $(GOROOT)/src/Make.$(GOARCH)
-AR=gopack
 
-default: packages
+TARG=testing/iotest
+GOFILES=\
+	logger.go\
+	reader.go\
 
-clean:
-	rm -rf *.[$(OS)] *.a [$(OS)].out _obj
-
-test: packages
-	gotest
-
-coverage: packages
-	gotest
-	6cov -g `pwd` | grep -v '_test\.go:'
-
-%.$O: %.go
-	$(GC) -I_obj $*.go
-
-%.$O: %.c
-	$(CC) $*.c
-
-%.$O: %.s
-	$(AS) $*.s
-
-O1=\
-	logger.$O\
-	reader.$O\
-
-
-phases: a1
-_obj$D/iotest.a: phases
-
-a1: $(O1)
-	$(AR) grc _obj$D/iotest.a logger.$O reader.$O
-	rm -f $(O1)
-
-
-newpkg: clean
-	mkdir -p _obj$D
-	$(AR) grc _obj$D/iotest.a
-
-$(O1): newpkg
-$(O2): a1
-
-nuke: clean
-	rm -f $(GOROOT)/pkg/$(GOOS)_$(GOARCH)$D/iotest.a
-
-packages: _obj$D/iotest.a
-
-install: packages
-	test -d $(GOROOT)/pkg && mkdir -p $(GOROOT)/pkg/$(GOOS)_$(GOARCH)$D
-	cp _obj$D/iotest.a $(GOROOT)/pkg/$(GOOS)_$(GOARCH)$D/iotest.a
+include $(GOROOT)/src/Make.pkg
diff --git a/src/pkg/testing/regexp.go b/src/pkg/testing/regexp.go
index ae69826..2b12250 100644
--- a/src/pkg/testing/regexp.go
+++ b/src/pkg/testing/regexp.go
@@ -306,8 +306,6 @@
 	return p;
 }
 
-func (p *parser) regexp() (start, end instr)
-
 var iNULL instr
 
 func special(c int) bool {
diff --git a/src/pkg/testing/testing.go b/src/pkg/testing/testing.go
index 2761293..617efa4 100644
--- a/src/pkg/testing/testing.go
+++ b/src/pkg/testing/testing.go
@@ -16,7 +16,6 @@
 	"fmt";
 	"os";
 	"runtime";
-	"testing";
 )
 
 // Report as tests are run; default is silent for success.
diff --git a/src/pkg/unicode/Makefile b/src/pkg/unicode/Makefile
index de1677b..7ab29c6 100644
--- a/src/pkg/unicode/Makefile
+++ b/src/pkg/unicode/Makefile
@@ -2,67 +2,11 @@
 # Use of this source code is governed by a BSD-style
 # license that can be found in the LICENSE file.
 
-# DO NOT EDIT.  Automatically generated by gobuild.
-# gobuild -m >Makefile
-
-D=
-
 include $(GOROOT)/src/Make.$(GOARCH)
-AR=gopack
 
-default: packages
+TARG=unicode
+GOFILES=\
+	decimaldigit.go\
+	letter.go\
 
-clean:
-	rm -rf *.[$(OS)] *.a [$(OS)].out _obj
-
-test: packages
-	gotest
-
-coverage: packages
-	gotest
-	6cov -g `pwd` | grep -v '_test\.go:'
-
-%.$O: %.go
-	$(GC) -I_obj $*.go
-
-%.$O: %.c
-	$(CC) $*.c
-
-%.$O: %.s
-	$(AS) $*.s
-
-O1=\
-	letter.$O\
-
-O2=\
-	decimaldigit.$O\
-
-
-phases: a1 a2
-_obj$D/unicode.a: phases
-
-a1: $(O1)
-	$(AR) grc _obj$D/unicode.a letter.$O
-	rm -f $(O1)
-
-a2: $(O2)
-	$(AR) grc _obj$D/unicode.a decimaldigit.$O
-	rm -f $(O2)
-
-
-newpkg: clean
-	mkdir -p _obj$D
-	$(AR) grc _obj$D/unicode.a
-
-$(O1): newpkg
-$(O2): a1
-$(O3): a2
-
-nuke: clean
-	rm -f $(GOROOT)/pkg/$(GOOS)_$(GOARCH)$D/unicode.a
-
-packages: _obj$D/unicode.a
-
-install: packages
-	test -d $(GOROOT)/pkg && mkdir -p $(GOROOT)/pkg/$(GOOS)_$(GOARCH)$D
-	cp _obj$D/unicode.a $(GOROOT)/pkg/$(GOOS)_$(GOARCH)$D/unicode.a
+include $(GOROOT)/src/Make.pkg
diff --git a/src/pkg/unicode/decimaldigit.go b/src/pkg/unicode/decimaldigit.go
index 1165e3a..ab65b43 100644
--- a/src/pkg/unicode/decimaldigit.go
+++ b/src/pkg/unicode/decimaldigit.go
@@ -9,8 +9,6 @@
 // These ranges are the characters with the third field "Nd".
 // Should generate automatically etc.
 
-import "unicode"
-
 // Decimal digit is the set of Unicode characters with the "decimal digit" property.
 var DecimalDigit = []Range{
 	Range{0x0030, 0x0039, 1},
diff --git a/src/pkg/unicode/decimaldigit_test.go b/src/pkg/unicode/decimaldigit_test.go
index 393846e..05d75b4 100644
--- a/src/pkg/unicode/decimaldigit_test.go
+++ b/src/pkg/unicode/decimaldigit_test.go
@@ -4,10 +4,7 @@
 
 package unicode
 
-import (
-	"testing";
-	"unicode";
-)
+import "testing"
 
 // To get data:
 //	grep '^....;[^;]*;Nd;' UnicodeData.txt
diff --git a/src/pkg/unicode/letter_test.go b/src/pkg/unicode/letter_test.go
index 8e4290d..15a0a0e 100644
--- a/src/pkg/unicode/letter_test.go
+++ b/src/pkg/unicode/letter_test.go
@@ -4,10 +4,7 @@
 
 package unicode
 
-import (
-	"testing";
-	"unicode";
-)
+import "testing"
 
 var upper = []int{
 	0x41,