diff --git a/src/cmd/gotest/gotest b/src/cmd/gotest/gotest
index cddbeb0..0ec1732 100755
--- a/src/cmd/gotest/gotest
+++ b/src/cmd/gotest/gotest
@@ -71,7 +71,7 @@
 	echo 'import "testing"'
 	# test array
 	echo
-	echo 'var tests = []testing.Test('
+	echo 'var tests = []testing.Test {'
 	for ofile in $ofiles
 	do
 		# test functions are named TestFoo
@@ -84,11 +84,11 @@
 		else
 			for i in $tests
 			do
-				echo '	testing.Test( "'$i'", '$i' ),'
+				echo '	testing.Test{ "'$i'", '$i' },'
 			done
 		fi
 	done
-	echo ')'
+	echo '}'
 	# body
 	echo
 	echo 'func main() {'
diff --git a/src/lib/bignum.go b/src/lib/bignum.go
index 2ae3a73..078374a 100755
--- a/src/lib/bignum.go
+++ b/src/lib/bignum.go
@@ -114,10 +114,10 @@
 type Natural []Digit;
 
 var (
-	natZero Natural = Natural();
-	natOne Natural = Natural(1);
-	natTwo Natural = Natural(2);
-	natTen Natural = Natural(10);
+	natZero Natural = Natural{};
+	natOne Natural = Natural{1};
+	natTwo Natural = Natural{2};
+	natTen Natural = Natural{10};
 )
 
 
@@ -131,7 +131,7 @@
 	case 10: return natTen;
 	}
 	assert(Digit(x) < _B);
-	return Natural(Digit(x));
+	return Natural{Digit(x)};
 }
 
 
@@ -818,7 +818,7 @@
 	if mant.IsZero() {
 		sign = false;  // normalize
 	}
-	return &Integer(sign, mant);
+	return &Integer{sign, mant};
 }
 
 
@@ -1140,7 +1140,7 @@
 		a = MakeInt(a.sign, a.mant.Div(f));
 		b = b.Div(f);
 	}
-	return &Rational(a, b);
+	return &Rational{a, b};
 }
 
 
diff --git a/src/lib/bignum_test.go b/src/lib/bignum_test.go
index 91304c1..d8d214d 100644
--- a/src/lib/bignum_test.go
+++ b/src/lib/bignum_test.go
@@ -264,16 +264,16 @@
 	tester = t;
 	test_msg = "IntQuoRem";
 	type T struct { x, y, q, r int };
-	a := []T(
-		T(+8, +3, +2, +2),
-		T(+8, -3, -2, +2),
-		T(-8, +3, -2, -2),
-		T(-8, -3, +2, -2),
-		T(+1, +2,  0, +1),
-		T(+1, -2,  0, +1),
-		T(-1, +2,  0, -1),
-		T(-1, -2,  0, -1),
-	);
+	a := []T{
+		T{+8, +3, +2, +2},
+		T{+8, -3, -2, +2},
+		T{-8, +3, -2, -2},
+		T{-8, -3, +2, -2},
+		T{+1, +2,  0, +1},
+		T{+1, -2,  0, +1},
+		T{-1, +2,  0, -1},
+		T{-1, -2,  0, -1},
+	};
 	for i := uint(0); i < uint(len(a)); i++ {
 		e := &a[i];
 		x, y := bignum.Int(e.x).Mul(ip), bignum.Int(e.y).Mul(ip);
@@ -291,16 +291,16 @@
 	tester = t;
 	test_msg = "IntDivMod";
 	type T struct { x, y, q, r int };
-	a := []T(
-		T(+8, +3, +2, +2),
-		T(+8, -3, -2, +2),
-		T(-8, +3, -3, +1),
-		T(-8, -3, +3, +1),
-		T(+1, +2,  0, +1),
-		T(+1, -2,  0, +1),
-		T(-1, +2, -1, +1),
-		T(-1, -2, +1, +1),
-	);
+	a := []T{
+		T{+8, +3, +2, +2},
+		T{+8, -3, -2, +2},
+		T{-8, +3, -3, +1},
+		T{-8, -3, +3, +1},
+		T{+1, +2,  0, +1},
+		T{+1, -2,  0, +1},
+		T{-1, +2, -1, +1},
+		T{-1, -2, +1, +1},
+	};
 	for i := uint(0); i < uint(len(a)); i++ {
 		e := &a[i];
 		x, y := bignum.Int(e.x).Mul(ip), bignum.Int(e.y).Mul(ip);
diff --git a/src/lib/bufio.go b/src/lib/bufio.go
index fd3267f..9f36885 100644
--- a/src/lib/bufio.go
+++ b/src/lib/bufio.go
@@ -477,6 +477,6 @@
 }
 
 func NewBufReadWrite(r *BufRead, w *BufWrite) *BufReadWrite {
-	return &BufReadWrite(r, w)
+	return &BufReadWrite{r, w}
 }
 
diff --git a/src/lib/bufio_test.go b/src/lib/bufio_test.go
index fe8698b..9ffd6cb 100644
--- a/src/lib/bufio_test.go
+++ b/src/lib/bufio_test.go
@@ -98,10 +98,10 @@
 	name string;
 	fn func([]byte) io.Read;
 }
-var readMakers = []readMaker (
-	readMaker( "full", func(p []byte) io.Read { return newByteReader(p) } ),
-	readMaker( "half", func(p []byte) io.Read { return newHalfByteReader(p) } ),
-)
+var readMakers = []readMaker {
+	readMaker{ "full", func(p []byte) io.Read { return newByteReader(p) } },
+	readMaker{ "half", func(p []byte) io.Read { return newHalfByteReader(p) } },
+}
 
 // Call ReadLineString (which ends up calling everything else)
 // to accumulate the text of a file.
@@ -157,21 +157,21 @@
 	name string;
 	fn func(*BufRead) string;
 }
-var bufreaders = []bufReader (
-	bufReader( "1", func(b *BufRead) string { return reads(b, 1) } ),
-	bufReader( "2", func(b *BufRead) string { return reads(b, 2) } ),
-	bufReader( "3", func(b *BufRead) string { return reads(b, 3) } ),
-	bufReader( "4", func(b *BufRead) string { return reads(b, 4) } ),
-	bufReader( "5", func(b *BufRead) string { return reads(b, 5) } ),
-	bufReader( "7", func(b *BufRead) string { return reads(b, 7) } ),
-	bufReader( "bytes", readBytes ),
-	bufReader( "lines", readLines ),
-)
+var bufreaders = []bufReader {
+	bufReader{ "1", func(b *BufRead) string { return reads(b, 1) } },
+	bufReader{ "2", func(b *BufRead) string { return reads(b, 2) } },
+	bufReader{ "3", func(b *BufRead) string { return reads(b, 3) } },
+	bufReader{ "4", func(b *BufRead) string { return reads(b, 4) } },
+	bufReader{ "5", func(b *BufRead) string { return reads(b, 5) } },
+	bufReader{ "7", func(b *BufRead) string { return reads(b, 7) } },
+	bufReader{ "bytes", readBytes },
+	bufReader{ "lines", readLines },
+}
 
-var bufsizes = []int (
+var bufsizes = []int {
 	1, 2, 3, 4, 5, 6, 7, 8, 9, 10,
 	23, 32, 46, 64, 93, 128, 1024, 4096
-)
+}
 
 func TestBufReadSimple(t *testing.T) {
 	b := NewBufRead(newByteReader(io.StringBytes("hello world")));
@@ -281,10 +281,10 @@
 func TestBufWrite(t *testing.T) {
 	var data [8192]byte;
 
-	var writers = []writeMaker (
-		writeMaker( "full", newByteWriter ),
-		writeMaker( "half", newHalfByteWriter ),
-	);
+	var writers = []writeMaker {
+		writeMaker{ "full", newByteWriter },
+		writeMaker{ "half", newHalfByteWriter },
+	};
 
 	for i := 0; i < len(data); i++ {
 		data[i] = byte(' '+ i%('~'-' '));
diff --git a/src/lib/exec_test.go b/src/lib/exec_test.go
index 740dfa7..54d4837 100644
--- a/src/lib/exec_test.go
+++ b/src/lib/exec_test.go
@@ -11,7 +11,7 @@
 )
 
 func TestOpenCmdCat(t *testing.T) {
-	cmd, err := exec.OpenCmd("/bin/cat", []string("cat"), nil,
+	cmd, err := exec.OpenCmd("/bin/cat", []string{"cat"}, nil,
 		exec.Pipe, exec.Pipe, exec.DevNull);
 	if err != nil {
 		t.Fatalf("opencmd /bin/cat: %v", err);
@@ -32,7 +32,7 @@
 }
 
 func TestOpenCmdEcho(t *testing.T) {
-	cmd, err := OpenCmd("/bin/echo", []string("echo", "hello", "world"), nil,
+	cmd, err := OpenCmd("/bin/echo", []string{"echo", "hello", "world"}, nil,
 		exec.DevNull, exec.Pipe, exec.DevNull);
 	if err != nil {
 		t.Fatalf("opencmd /bin/echo: %v", err);
diff --git a/src/lib/flag.go b/src/lib/flag.go
index 188cb90..164b9c5 100644
--- a/src/lib/flag.go
+++ b/src/lib/flag.go
@@ -74,7 +74,7 @@
 
 func newBoolValue(val bool, p *bool) *boolValue {
 	*p = val;
-	return &boolValue(p)
+	return &boolValue{p}
 }
 
 func (b *boolValue) set(s string) bool {
@@ -94,7 +94,7 @@
 
 func newIntValue(val int, p *int) *intValue {
 	*p = val;
-	return &intValue(p)
+	return &intValue{p}
 }
 
 func (i *intValue) set(s string) bool {
@@ -114,7 +114,7 @@
 
 func newInt64Value(val int64, p *int64) *int64Value {
 	*p = val;
-	return &int64Value(p)
+	return &int64Value{p}
 }
 
 func (i *int64Value) set(s string) bool {
@@ -134,7 +134,7 @@
 
 func newUintValue(val uint, p *uint) *uintValue {
 	*p = val;
-	return &uintValue(p)
+	return &uintValue{p}
 }
 
 func (i *uintValue) set(s string) bool {
@@ -154,7 +154,7 @@
 
 func newUint64Value(val uint64, p *uint64) *uint64Value {
 	*p = val;
-	return &uint64Value(p)
+	return &uint64Value{p}
 }
 
 func (i *uint64Value) set(s string) bool {
@@ -174,7 +174,7 @@
 
 func newStringValue(val string, p *string) *stringValue {
 	*p = val;
-	return &stringValue(p)
+	return &stringValue{p}
 }
 
 func (s *stringValue) set(val string) bool {
@@ -206,7 +206,7 @@
 	first_arg	int;	// 0 is the program name, 1 is first arg
 }
 
-var flags *allFlags = &allFlags(make(map[string] *Flag), make(map[string] *Flag), 1)
+var flags *allFlags = &allFlags{make(map[string] *Flag), make(map[string] *Flag), 1}
 
 // Visit all flags, including those defined but not set.
 func VisitAll(fn func(*Flag)) {
@@ -282,7 +282,7 @@
 
 func add(name string, value FlagValue, usage string) {
 	// Remember the default value as a string; it won't change.
-	f := &Flag(name, usage, value, value.String());
+	f := &Flag{name, usage, value, value.String()};
 	dummy, alreadythere := flags.formal[name];
 	if alreadythere {
 		print("flag redefined: ", name, "\n");
diff --git a/src/lib/fmt/fmt_test.go b/src/lib/fmt/fmt_test.go
index 6541ee0..8cafcd1 100644
--- a/src/lib/fmt/fmt_test.go
+++ b/src/lib/fmt/fmt_test.go
@@ -29,127 +29,127 @@
 
 const b32 uint32 = 1<<32 - 1
 const b64 uint64 = 1<<64 - 1
-var array = []int(1, 2, 3, 4, 5)
+var array = []int{1, 2, 3, 4, 5}
 
 
-var fmttests = []fmtTest(
+var fmttests = []fmtTest{
 	// basic string
-	fmtTest( "%s",	"abc",	"abc" ),
-	fmtTest( "%x",	"abc",	"616263" ),
-	fmtTest( "%x",	"xyz",	"78797a" ),
-	fmtTest( "%X",	"xyz",	"78797A" ),
-	fmtTest( "%q",	"abc",	`"abc"` ),
+	fmtTest{ "%s",	"abc",	"abc" },
+	fmtTest{ "%x",	"abc",	"616263" },
+	fmtTest{ "%x",	"xyz",	"78797a" },
+	fmtTest{ "%X",	"xyz",	"78797A" },
+	fmtTest{ "%q",	"abc",	`"abc"` },
 
 	// basic bytes
-	fmtTest( "%s",	io.StringBytes("abc"),	"abc" ),
-	fmtTest( "%x",	io.StringBytes("abc"),	"616263" ),
-	fmtTest( "% x",	io.StringBytes("abc"),	"61 62 63" ),
-	fmtTest( "%x",	io.StringBytes("xyz"),	"78797a" ),
-	fmtTest( "%X",	io.StringBytes("xyz"),	"78797A" ),
-	fmtTest( "%q",	io.StringBytes("abc"),	`"abc"` ),
+	fmtTest{ "%s",	io.StringBytes("abc"),	"abc" },
+	fmtTest{ "%x",	io.StringBytes("abc"),	"616263" },
+	fmtTest{ "% x",	io.StringBytes("abc"),	"61 62 63" },
+	fmtTest{ "%x",	io.StringBytes("xyz"),	"78797a" },
+	fmtTest{ "%X",	io.StringBytes("xyz"),	"78797A" },
+	fmtTest{ "%q",	io.StringBytes("abc"),	`"abc"` },
 
 	// escaped strings
-	fmtTest( "%#q",	`abc`,		"`abc`" ),
-	fmtTest( "%#q",	`"`,		"`\"`" ),
-	fmtTest( "1 %#q", `\n`,		"1 `\\n`" ),
-	fmtTest( "2 %#q", "\n",		`2 "\n"` ),
-	fmtTest( "%q",	`"`,		`"\""` ),
-	fmtTest( "%q",	"\a\b\f\r\n\t\v",	`"\a\b\f\r\n\t\v"` ),
-	fmtTest( "%q",	"abc\xffdef",		`"abc\xffdef"` ),
-	fmtTest( "%q",	"\u263a",	`"\u263a"` ),
-	fmtTest( "%q",	"\U0010ffff",	`"\U0010ffff"` ),
+	fmtTest{ "%#q",	`abc`,		"`abc`" },
+	fmtTest{ "%#q",	`"`,		"`\"`" },
+	fmtTest{ "1 %#q", `\n`,		"1 `\\n`" },
+	fmtTest{ "2 %#q", "\n",		`2 "\n"` },
+	fmtTest{ "%q",	`"`,		`"\""` },
+	fmtTest{ "%q",	"\a\b\f\r\n\t\v",	`"\a\b\f\r\n\t\v"` },
+	fmtTest{ "%q",	"abc\xffdef",		`"abc\xffdef"` },
+	fmtTest{ "%q",	"\u263a",	`"\u263a"` },
+	fmtTest{ "%q",	"\U0010ffff",	`"\U0010ffff"` },
 
 	// width
-	fmtTest( "%5s",		"abc",	"  abc" ),
-	fmtTest( "%-5s",	"abc",	"abc  " ),
-	fmtTest( "%05s",	"abc",	"00abc" ),
+	fmtTest{ "%5s",		"abc",	"  abc" },
+	fmtTest{ "%-5s",	"abc",	"abc  " },
+	fmtTest{ "%05s",	"abc",	"00abc" },
 
 	// integers
-	fmtTest( "%d",		12345,	"12345" ),
-	fmtTest( "%d",		-12345,	"-12345" ),
-	fmtTest( "%10d",	12345,	"     12345" ),
-	fmtTest( "%10d",	-12345,	"    -12345" ),
-	fmtTest( "%+10d",	12345,	"    +12345" ),
-	fmtTest( "%010d",	12345,	"0000012345" ),
-	fmtTest( "%010d",	-12345,	"-000012345" ),
-	fmtTest( "%-10d",	12345,	"12345     " ),
-	fmtTest( "%010.3d",	1,	"       001" ),
-	fmtTest( "%010.3d",	-1,	"      -001" ),
-	fmtTest( "%+d",		12345,	"+12345" ),
-	fmtTest( "%+d",		-12345,	"-12345" ),
-	fmtTest( "% d",		12345,	" 12345" ),
-	fmtTest( "% d",		-12345,	"-12345" ),
+	fmtTest{ "%d",		12345,	"12345" },
+	fmtTest{ "%d",		-12345,	"-12345" },
+	fmtTest{ "%10d",	12345,	"     12345" },
+	fmtTest{ "%10d",	-12345,	"    -12345" },
+	fmtTest{ "%+10d",	12345,	"    +12345" },
+	fmtTest{ "%010d",	12345,	"0000012345" },
+	fmtTest{ "%010d",	-12345,	"-000012345" },
+	fmtTest{ "%-10d",	12345,	"12345     " },
+	fmtTest{ "%010.3d",	1,	"       001" },
+	fmtTest{ "%010.3d",	-1,	"      -001" },
+	fmtTest{ "%+d",		12345,	"+12345" },
+	fmtTest{ "%+d",		-12345,	"-12345" },
+	fmtTest{ "% d",		12345,	" 12345" },
+	fmtTest{ "% d",		-12345,	"-12345" },
 
 	// arrays
 	// TODO: when arrays work in interfaces, enable this line
 	// and delete the TestArrayPrinter routine below
 	// fmtTest{ "%v",		array,			"[1 2 3 4 5]" },
-	fmtTest( "%v",		&array,			"&[1 2 3 4 5]" ),
+	fmtTest{ "%v",		&array,			"&[1 2 3 4 5]" },
 
 	// old test/fmt_test.go
-	fmtTest( "%d",		1234,			"1234" ),
-	fmtTest( "%d",		-1234,			"-1234" ),
-	fmtTest( "%d",		uint(1234),		"1234" ),
-	fmtTest( "%d",		uint32(b32),		"4294967295" ),
-	fmtTest( "%d",		uint64(b64),		"18446744073709551615" ),
-	fmtTest( "%o",		01234,			"1234" ),
-	fmtTest( "%o",		uint32(b32),		"37777777777" ),
-	fmtTest( "%o",		uint64(b64),		"1777777777777777777777" ),
-	fmtTest( "%x",		0x1234abcd,		"1234abcd" ),
-	fmtTest( "%x",		b32-0x1234567,		"fedcba98" ),
-	fmtTest( "%X",		0x1234abcd,		"1234ABCD" ),
-	fmtTest( "%X",		b32-0x1234567,		"FEDCBA98" ),
-	fmtTest( "%x",		b64,			"ffffffffffffffff" ),
-	fmtTest( "%b",		7,			"111" ),
-	fmtTest( "%b",		b64,			"1111111111111111111111111111111111111111111111111111111111111111" ),
-	fmtTest( "%e",		float64(1),		"1.000000e+00" ),
-	fmtTest( "%e",		float64(1234.5678e3),	"1.234568e+06" ),
-	fmtTest( "%e",		float64(1234.5678e-8),	"1.234568e-05" ),
-	fmtTest( "%e",		float64(-7),		"-7.000000e+00" ),
-	fmtTest( "%e",		float64(-1e-9),		"-1.000000e-09" ),
-	fmtTest( "%f",		float64(1234.5678e3),	"1234567.800000" ),
-	fmtTest( "%f",		float64(1234.5678e-8),	"0.000012" ),
-	fmtTest( "%f",		float64(-7),		"-7.000000" ),
-	fmtTest( "%f",		float64(-1e-9),		"-0.000000" ),
-	fmtTest( "%g",		float64(1234.5678e3),	"1.2345678e+06" ),
-	fmtTest( "%g",		float32(1234.5678e3),	"1.2345678e+06" ),
-	fmtTest( "%g",		float64(1234.5678e-8),	"1.2345678e-05" ),
-	fmtTest( "%g",		float64(-7),		"-7" ),
-	fmtTest( "%g",		float64(-1e-9),		"-1e-09",	 ),
-	fmtTest( "%g",		float32(-1e-9),		"-1e-09" ),
-	fmtTest( "%c",		'x',			"x" ),
-	fmtTest( "%c",		0xe4,			"ä" ),
-	fmtTest( "%c",		0x672c,			"本" ),
-	fmtTest( "%c",		'日',			"日" ),
-	fmtTest( "%20.8d",	1234,			"            00001234" ),
-	fmtTest( "%20.8d",	-1234,			"           -00001234" ),
-	fmtTest( "%20d",	1234,			"                1234" ),
-	fmtTest( "%-20.8d",	1234,			"00001234            " ),
-	fmtTest( "%-20.8d",	-1234,			"-00001234           " ),
-	fmtTest( "%.20b",	7,			"00000000000000000111" ),
-	fmtTest( "%20.5s",	"qwertyuiop",		"               qwert" ),
-	fmtTest( "%.5s",	"qwertyuiop",		"qwert" ),
-	fmtTest( "%-20.5s",	"qwertyuiop",		"qwert               " ),
-	fmtTest( "%20c",	'x',			"                   x" ),
-	fmtTest( "%-20c",	'x',			"x                   " ),
-	fmtTest( "%20.6e",	1.2345e3,		"        1.234500e+03" ),
-	fmtTest( "%20.6e",	1.2345e-3,		"        1.234500e-03" ),
-	fmtTest( "%20e",	1.2345e3,		"        1.234500e+03" ),
-	fmtTest( "%20e",	1.2345e-3,		"        1.234500e-03" ),
-	fmtTest( "%20.8e",	1.2345e3,		"      1.23450000e+03" ),
-	fmtTest( "%20f",	float64(1.23456789e3),	"         1234.567890" ),
-	fmtTest( "%20f",	float64(1.23456789e-3),	"            0.001235" ),
-	fmtTest( "%20f",	float64(12345678901.23456789),	"  12345678901.234568" ),
-	fmtTest( "%-20f",	float64(1.23456789e3),	"1234.567890         " ),
-	fmtTest( "%20.8f",	float64(1.23456789e3),	"       1234.56789000" ),
-	fmtTest( "%20.8f",	float64(1.23456789e-3),	"          0.00123457" ),
-	fmtTest( "%g",		float64(1.23456789e3),	"1234.56789" ),
-	fmtTest( "%g",		float64(1.23456789e-3),	"0.00123456789" ),
-	fmtTest( "%g",		float64(1.23456789e20),	"1.23456789e+20" ),
-	fmtTest( "%20e",	math.Inf(1),		"                +Inf" ),
-	fmtTest( "%-20f",	math.Inf(-1),		"-Inf                " ),
-	fmtTest( "%20g",	math.NaN(),		"                 NaN" ),
-)
+	fmtTest{ "%d",		1234,			"1234" },
+	fmtTest{ "%d",		-1234,			"-1234" },
+	fmtTest{ "%d",		uint(1234),		"1234" },
+	fmtTest{ "%d",		uint32(b32),		"4294967295" },
+	fmtTest{ "%d",		uint64(b64),		"18446744073709551615" },
+	fmtTest{ "%o",		01234,			"1234" },
+	fmtTest{ "%o",		uint32(b32),		"37777777777" },
+	fmtTest{ "%o",		uint64(b64),		"1777777777777777777777" },
+	fmtTest{ "%x",		0x1234abcd,		"1234abcd" },
+	fmtTest{ "%x",		b32-0x1234567,		"fedcba98" },
+	fmtTest{ "%X",		0x1234abcd,		"1234ABCD" },
+	fmtTest{ "%X",		b32-0x1234567,		"FEDCBA98" },
+	fmtTest{ "%x",		b64,			"ffffffffffffffff" },
+	fmtTest{ "%b",		7,			"111" },
+	fmtTest{ "%b",		b64,			"1111111111111111111111111111111111111111111111111111111111111111" },
+	fmtTest{ "%e",		float64(1),		"1.000000e+00" },
+	fmtTest{ "%e",		float64(1234.5678e3),	"1.234568e+06" },
+	fmtTest{ "%e",		float64(1234.5678e-8),	"1.234568e-05" },
+	fmtTest{ "%e",		float64(-7),		"-7.000000e+00" },
+	fmtTest{ "%e",		float64(-1e-9),		"-1.000000e-09" },
+	fmtTest{ "%f",		float64(1234.5678e3),	"1234567.800000" },
+	fmtTest{ "%f",		float64(1234.5678e-8),	"0.000012" },
+	fmtTest{ "%f",		float64(-7),		"-7.000000" },
+	fmtTest{ "%f",		float64(-1e-9),		"-0.000000" },
+	fmtTest{ "%g",		float64(1234.5678e3),	"1.2345678e+06" },
+	fmtTest{ "%g",		float32(1234.5678e3),	"1.2345678e+06" },
+	fmtTest{ "%g",		float64(1234.5678e-8),	"1.2345678e-05" },
+	fmtTest{ "%g",		float64(-7),		"-7" },
+	fmtTest{ "%g",		float64(-1e-9),		"-1e-09",	 },
+	fmtTest{ "%g",		float32(-1e-9),		"-1e-09" },
+	fmtTest{ "%c",		'x',			"x" },
+	fmtTest{ "%c",		0xe4,			"ä" },
+	fmtTest{ "%c",		0x672c,			"本" },
+	fmtTest{ "%c",		'日',			"日" },
+	fmtTest{ "%20.8d",	1234,			"            00001234" },
+	fmtTest{ "%20.8d",	-1234,			"           -00001234" },
+	fmtTest{ "%20d",	1234,			"                1234" },
+	fmtTest{ "%-20.8d",	1234,			"00001234            " },
+	fmtTest{ "%-20.8d",	-1234,			"-00001234           " },
+	fmtTest{ "%.20b",	7,			"00000000000000000111" },
+	fmtTest{ "%20.5s",	"qwertyuiop",		"               qwert" },
+	fmtTest{ "%.5s",	"qwertyuiop",		"qwert" },
+	fmtTest{ "%-20.5s",	"qwertyuiop",		"qwert               " },
+	fmtTest{ "%20c",	'x',			"                   x" },
+	fmtTest{ "%-20c",	'x',			"x                   " },
+	fmtTest{ "%20.6e",	1.2345e3,		"        1.234500e+03" },
+	fmtTest{ "%20.6e",	1.2345e-3,		"        1.234500e-03" },
+	fmtTest{ "%20e",	1.2345e3,		"        1.234500e+03" },
+	fmtTest{ "%20e",	1.2345e-3,		"        1.234500e-03" },
+	fmtTest{ "%20.8e",	1.2345e3,		"      1.23450000e+03" },
+	fmtTest{ "%20f",	float64(1.23456789e3),	"         1234.567890" },
+	fmtTest{ "%20f",	float64(1.23456789e-3),	"            0.001235" },
+	fmtTest{ "%20f",	float64(12345678901.23456789),	"  12345678901.234568" },
+	fmtTest{ "%-20f",	float64(1.23456789e3),	"1234.567890         " },
+	fmtTest{ "%20.8f",	float64(1.23456789e3),	"       1234.56789000" },
+	fmtTest{ "%20.8f",	float64(1.23456789e-3),	"          0.00123457" },
+	fmtTest{ "%g",		float64(1.23456789e3),	"1234.56789" },
+	fmtTest{ "%g",		float64(1.23456789e-3),	"0.00123456789" },
+	fmtTest{ "%g",		float64(1.23456789e20),	"1.23456789e+20" },
+	fmtTest{ "%20e",	math.Inf(1),		"                +Inf" },
+	fmtTest{ "%-20f",	math.Inf(-1),		"-Inf                " },
+	fmtTest{ "%20g",	math.NaN(),		"                 NaN" },
+}
 
 func TestSprintf(t *testing.T) {
 	for i := 0; i < len(fmttests); i++ {
@@ -190,20 +190,20 @@
 	out string;
 }
 
-var flagtests = []flagTest (
-	flagTest( "%a", "[%a]" ),
-	flagTest( "%-a", "[%-a]" ),
-	flagTest( "%+a", "[%+a]" ),
-	flagTest( "%#a", "[%#a]" ),
-	flagTest( "% a", "[% a]" ),
-	flagTest( "%0a", "[%0a]" ),
-	flagTest( "%1.2a", "[%1.2a]" ),
-	flagTest( "%-1.2a", "[%-1.2a]" ),
-	flagTest( "%+1.2a", "[%+1.2a]" ),
-	flagTest( "%-+1.2a", "[%+-1.2a]" ),
-	flagTest( "%-+1.2abc", "[%+-1.2a]bc" ),
-	flagTest( "%-1.2abc", "[%-1.2a]bc" ),
-)
+var flagtests = []flagTest {
+	flagTest{ "%a", "[%a]" },
+	flagTest{ "%-a", "[%-a]" },
+	flagTest{ "%+a", "[%+a]" },
+	flagTest{ "%#a", "[%#a]" },
+	flagTest{ "% a", "[% a]" },
+	flagTest{ "%0a", "[%0a]" },
+	flagTest{ "%1.2a", "[%1.2a]" },
+	flagTest{ "%-1.2a", "[%-1.2a]" },
+	flagTest{ "%+1.2a", "[%+1.2a]" },
+	flagTest{ "%-+1.2a", "[%+-1.2a]" },
+	flagTest{ "%-+1.2abc", "[%+-1.2a]bc" },
+	flagTest{ "%-1.2abc", "[%-1.2a]bc" },
+}
 
 func TestFlagParser(t *testing.T) {
 	var flagprinter flagPrinter;
@@ -229,10 +229,10 @@
 		fmt string;
 		out string;
 	}
-	var tests = []Test (
-		Test( "%v", "{abc def 123}" ),
-		Test( "%+v", "{a=abc b=def c=123}" ),
-	);
+	var tests = []Test {
+		Test{ "%v", "{abc def 123}" },
+		Test{ "%+v", "{a=abc b=def c=123}" },
+	};
 	for i := 0; i < len(tests); i++ {
 		tt := tests[i];
 		out := fmt.Sprintf(tt.fmt, s);
@@ -243,7 +243,7 @@
 }
 
 func TestArrayPrinter(t *testing.T) {
-	a := []int(1, 2, 3, 4, 5);
+	a := []int{1, 2, 3, 4, 5};
 	want := "[1 2 3 4 5]";
 	out := fmt.Sprintf("%v", a);
 	if out != want {
diff --git a/src/lib/hash/adler32.go b/src/lib/hash/adler32.go
index 9bfca55..0781899 100644
--- a/src/lib/hash/adler32.go
+++ b/src/lib/hash/adler32.go
@@ -25,7 +25,7 @@
 )
 
 func NewDigest() *Digest {
-	return &Digest(1, 0, 0);
+	return &Digest{1, 0, 0};
 }
 
 func (d *Digest) Write(p []byte) (nn int, err *os.Error) {
diff --git a/src/lib/hash/adler32_test.go b/src/lib/hash/adler32_test.go
index aecf90c..97b918f 100644
--- a/src/lib/hash/adler32_test.go
+++ b/src/lib/hash/adler32_test.go
@@ -15,39 +15,39 @@
 	in string;
 }
 
-var golden = []_Adler32Test (
-	_Adler32Test( 0x1, "" ),
-	_Adler32Test( 0x620062, "a" ),
-	_Adler32Test( 0x12600c4, "ab" ),
-	_Adler32Test( 0x24d0127, "abc" ),
-	_Adler32Test( 0x3d8018b, "abcd" ),
-	_Adler32Test( 0x5c801f0, "abcde" ),
-	_Adler32Test( 0x81e0256, "abcdef" ),
-	_Adler32Test( 0xadb02bd, "abcdefg" ),
-	_Adler32Test( 0xe000325, "abcdefgh" ),
-	_Adler32Test( 0x118e038e, "abcdefghi" ),
-	_Adler32Test( 0x158603f8, "abcdefghij" ),
-	_Adler32Test( 0x3f090f02, "Discard medicine more than two years old." ),
-	_Adler32Test( 0x46d81477, "He who has a shady past knows that nice guys finish last." ),
-	_Adler32Test( 0x40ee0ee1, "I wouldn't marry him with a ten foot pole." ),
-	_Adler32Test( 0x16661315, "Free! Free!/A trip/to Mars/for 900/empty jars/Burma Shave" ),
-	_Adler32Test( 0x5b2e1480, "The days of the digital watch are numbered.  -Tom Stoppard" ),
-	_Adler32Test( 0x8c3c09ea, "Nepal premier won't resign." ),
-	_Adler32Test( 0x45ac18fd, "For every action there is an equal and opposite government program." ),
-	_Adler32Test( 0x53c61462, "His money is twice tainted: 'taint yours and 'taint mine." ),
-	_Adler32Test( 0x7e511e63, "There is no reason for any individual to have a computer in their home. -Ken Olsen, 1977" ),
-	_Adler32Test( 0xe4801a6a, "It's a tiny change to the code and not completely disgusting. - Bob Manchek" ),
-	_Adler32Test( 0x61b507df, "size:  a.out:  bad magic" ),
-	_Adler32Test( 0xb8631171, "The major problem is with sendmail.  -Mark Horton" ),
-	_Adler32Test( 0x8b5e1904, "Give me a rock, paper and scissors and I will move the world.  CCFestoon" ),
-	_Adler32Test( 0x7cc6102b, "If the enemy is within range, then so are you." ),
-	_Adler32Test( 0x700318e7, "It's well we cannot hear the screams/That we create in others' dreams." ),
-	_Adler32Test( 0x1e601747, "You remind me of a TV show, but that's all right: I watch it anyway." ),
-	_Adler32Test( 0xb55b0b09, "C is as portable as Stonehedge!!" ),
-	_Adler32Test( 0x39111dd0, "Even if I could be Shakespeare, I think I should still choose to be Faraday. - A. Huxley" ),
-	_Adler32Test( 0x91dd304f, "The fugacity of a constituent in a mixture of gases at a given temperature is proportional to its mole fraction.  Lewis-Randall Rule" ),
-	_Adler32Test( 0x2e5d1316, "How can you write a big system without C++?  -Paul Glick" ),
-)
+var golden = []_Adler32Test {
+	_Adler32Test{ 0x1, "" },
+	_Adler32Test{ 0x620062, "a" },
+	_Adler32Test{ 0x12600c4, "ab" },
+	_Adler32Test{ 0x24d0127, "abc" },
+	_Adler32Test{ 0x3d8018b, "abcd" },
+	_Adler32Test{ 0x5c801f0, "abcde" },
+	_Adler32Test{ 0x81e0256, "abcdef" },
+	_Adler32Test{ 0xadb02bd, "abcdefg" },
+	_Adler32Test{ 0xe000325, "abcdefgh" },
+	_Adler32Test{ 0x118e038e, "abcdefghi" },
+	_Adler32Test{ 0x158603f8, "abcdefghij" },
+	_Adler32Test{ 0x3f090f02, "Discard medicine more than two years old." },
+	_Adler32Test{ 0x46d81477, "He who has a shady past knows that nice guys finish last." },
+	_Adler32Test{ 0x40ee0ee1, "I wouldn't marry him with a ten foot pole." },
+	_Adler32Test{ 0x16661315, "Free! Free!/A trip/to Mars/for 900/empty jars/Burma Shave" },
+	_Adler32Test{ 0x5b2e1480, "The days of the digital watch are numbered.  -Tom Stoppard" },
+	_Adler32Test{ 0x8c3c09ea, "Nepal premier won't resign." },
+	_Adler32Test{ 0x45ac18fd, "For every action there is an equal and opposite government program." },
+	_Adler32Test{ 0x53c61462, "His money is twice tainted: 'taint yours and 'taint mine." },
+	_Adler32Test{ 0x7e511e63, "There is no reason for any individual to have a computer in their home. -Ken Olsen, 1977" },
+	_Adler32Test{ 0xe4801a6a, "It's a tiny change to the code and not completely disgusting. - Bob Manchek" },
+	_Adler32Test{ 0x61b507df, "size:  a.out:  bad magic" },
+	_Adler32Test{ 0xb8631171, "The major problem is with sendmail.  -Mark Horton" },
+	_Adler32Test{ 0x8b5e1904, "Give me a rock, paper and scissors and I will move the world.  CCFestoon" },
+	_Adler32Test{ 0x7cc6102b, "If the enemy is within range, then so are you." },
+	_Adler32Test{ 0x700318e7, "It's well we cannot hear the screams/That we create in others' dreams." },
+	_Adler32Test{ 0x1e601747, "You remind me of a TV show, but that's all right: I watch it anyway." },
+	_Adler32Test{ 0xb55b0b09, "C is as portable as Stonehedge!!" },
+	_Adler32Test{ 0x39111dd0, "Even if I could be Shakespeare, I think I should still choose to be Faraday. - A. Huxley" },
+	_Adler32Test{ 0x91dd304f, "The fugacity of a constituent in a mixture of gases at a given temperature is proportional to its mole fraction.  Lewis-Randall Rule" },
+	_Adler32Test{ 0x2e5d1316, "How can you write a big system without C++?  -Paul Glick" },
+}
 
 func TestGolden(t *testing.T) {
 	for i := 0; i < len(golden); i++ {
diff --git a/src/lib/hash/crc32.go b/src/lib/hash/crc32.go
index 02b2d6c..7bfca39 100644
--- a/src/lib/hash/crc32.go
+++ b/src/lib/hash/crc32.go
@@ -52,7 +52,7 @@
 }
 
 func NewDigest(tab Table) *Digest {
-	return &Digest(0, tab);
+	return &Digest{0, tab};
 }
 
 func NewIEEEDigest() *Digest {
diff --git a/src/lib/hash/crc32_test.go b/src/lib/hash/crc32_test.go
index e827ccc..a2a37cf 100644
--- a/src/lib/hash/crc32_test.go
+++ b/src/lib/hash/crc32_test.go
@@ -15,39 +15,39 @@
 	in string;
 }
 
-var golden = []_Crc32Test (
-	_Crc32Test( 0x0, "" ),
-	_Crc32Test( 0xe8b7be43, "a" ),
-	_Crc32Test( 0x9e83486d, "ab" ),
-	_Crc32Test( 0x352441c2, "abc" ),
-	_Crc32Test( 0xed82cd11, "abcd" ),
-	_Crc32Test( 0x8587d865, "abcde" ),
-	_Crc32Test( 0x4b8e39ef, "abcdef" ),
-	_Crc32Test( 0x312a6aa6, "abcdefg" ),
-	_Crc32Test( 0xaeef2a50, "abcdefgh" ),
-	_Crc32Test( 0x8da988af, "abcdefghi" ),
-	_Crc32Test( 0x3981703a, "abcdefghij" ),
-	_Crc32Test( 0x6b9cdfe7, "Discard medicine more than two years old." ),
-	_Crc32Test( 0xc90ef73f, "He who has a shady past knows that nice guys finish last." ),
-	_Crc32Test( 0xb902341f, "I wouldn't marry him with a ten foot pole." ),
-	_Crc32Test( 0x42080e8, "Free! Free!/A trip/to Mars/for 900/empty jars/Burma Shave" ),
-	_Crc32Test( 0x154c6d11, "The days of the digital watch are numbered.  -Tom Stoppard" ),
-	_Crc32Test( 0x4c418325, "Nepal premier won't resign." ),
-	_Crc32Test( 0x33955150, "For every action there is an equal and opposite government program." ),
-	_Crc32Test( 0x26216a4b, "His money is twice tainted: 'taint yours and 'taint mine." ),
-	_Crc32Test( 0x1abbe45e, "There is no reason for any individual to have a computer in their home. -Ken Olsen, 1977" ),
-	_Crc32Test( 0xc89a94f7, "It's a tiny change to the code and not completely disgusting. - Bob Manchek" ),
-	_Crc32Test( 0xab3abe14, "size:  a.out:  bad magic" ),
-	_Crc32Test( 0xbab102b6, "The major problem is with sendmail.  -Mark Horton" ),
-	_Crc32Test( 0x999149d7, "Give me a rock, paper and scissors and I will move the world.  CCFestoon" ),
-	_Crc32Test( 0x6d52a33c, "If the enemy is within range, then so are you." ),
-	_Crc32Test( 0x90631e8d, "It's well we cannot hear the screams/That we create in others' dreams." ),
-	_Crc32Test( 0x78309130, "You remind me of a TV show, but that's all right: I watch it anyway." ),
-	_Crc32Test( 0x7d0a377f, "C is as portable as Stonehedge!!" ),
-	_Crc32Test( 0x8c79fd79, "Even if I could be Shakespeare, I think I should still choose to be Faraday. - A. Huxley" ),
-	_Crc32Test( 0xa20b7167, "The fugacity of a constituent in a mixture of gases at a given temperature is proportional to its mole fraction.  Lewis-Randall Rule" ),
-	_Crc32Test( 0x8e0bb443, "How can you write a big system without C++?  -Paul Glick" ),
-)
+var golden = []_Crc32Test {
+	_Crc32Test{ 0x0, "" },
+	_Crc32Test{ 0xe8b7be43, "a" },
+	_Crc32Test{ 0x9e83486d, "ab" },
+	_Crc32Test{ 0x352441c2, "abc" },
+	_Crc32Test{ 0xed82cd11, "abcd" },
+	_Crc32Test{ 0x8587d865, "abcde" },
+	_Crc32Test{ 0x4b8e39ef, "abcdef" },
+	_Crc32Test{ 0x312a6aa6, "abcdefg" },
+	_Crc32Test{ 0xaeef2a50, "abcdefgh" },
+	_Crc32Test{ 0x8da988af, "abcdefghi" },
+	_Crc32Test{ 0x3981703a, "abcdefghij" },
+	_Crc32Test{ 0x6b9cdfe7, "Discard medicine more than two years old." },
+	_Crc32Test{ 0xc90ef73f, "He who has a shady past knows that nice guys finish last." },
+	_Crc32Test{ 0xb902341f, "I wouldn't marry him with a ten foot pole." },
+	_Crc32Test{ 0x42080e8, "Free! Free!/A trip/to Mars/for 900/empty jars/Burma Shave" },
+	_Crc32Test{ 0x154c6d11, "The days of the digital watch are numbered.  -Tom Stoppard" },
+	_Crc32Test{ 0x4c418325, "Nepal premier won't resign." },
+	_Crc32Test{ 0x33955150, "For every action there is an equal and opposite government program." },
+	_Crc32Test{ 0x26216a4b, "His money is twice tainted: 'taint yours and 'taint mine." },
+	_Crc32Test{ 0x1abbe45e, "There is no reason for any individual to have a computer in their home. -Ken Olsen, 1977" },
+	_Crc32Test{ 0xc89a94f7, "It's a tiny change to the code and not completely disgusting. - Bob Manchek" },
+	_Crc32Test{ 0xab3abe14, "size:  a.out:  bad magic" },
+	_Crc32Test{ 0xbab102b6, "The major problem is with sendmail.  -Mark Horton" },
+	_Crc32Test{ 0x999149d7, "Give me a rock, paper and scissors and I will move the world.  CCFestoon" },
+	_Crc32Test{ 0x6d52a33c, "If the enemy is within range, then so are you." },
+	_Crc32Test{ 0x90631e8d, "It's well we cannot hear the screams/That we create in others' dreams." },
+	_Crc32Test{ 0x78309130, "You remind me of a TV show, but that's all right: I watch it anyway." },
+	_Crc32Test{ 0x7d0a377f, "C is as portable as Stonehedge!!" },
+	_Crc32Test{ 0x8c79fd79, "Even if I could be Shakespeare, I think I should still choose to be Faraday. - A. Huxley" },
+	_Crc32Test{ 0xa20b7167, "The fugacity of a constituent in a mixture of gases at a given temperature is proportional to its mole fraction.  Lewis-Randall Rule" },
+	_Crc32Test{ 0x8e0bb443, "How can you write a big system without C++?  -Paul Glick" },
+}
 
 func TestGolden(t *testing.T) {
 	for i := 0; i < len(golden); i++ {
diff --git a/src/lib/hash/md5_test.go b/src/lib/hash/md5_test.go
index b6724fb..6410346 100644
--- a/src/lib/hash/md5_test.go
+++ b/src/lib/hash/md5_test.go
@@ -16,39 +16,39 @@
 	in string;
 }
 
-var golden = []md5Test (
-	md5Test( "d41d8cd98f00b204e9800998ecf8427e", "" ),
-	md5Test( "0cc175b9c0f1b6a831c399e269772661", "a" ),
-	md5Test( "187ef4436122d1cc2f40dc2b92f0eba0", "ab" ),
-	md5Test( "900150983cd24fb0d6963f7d28e17f72", "abc" ),
-	md5Test( "e2fc714c4727ee9395f324cd2e7f331f", "abcd" ),
-	md5Test( "ab56b4d92b40713acc5af89985d4b786", "abcde" ),
-	md5Test( "e80b5017098950fc58aad83c8c14978e", "abcdef" ),
-	md5Test( "7ac66c0f148de9519b8bd264312c4d64", "abcdefg" ),
-	md5Test( "e8dc4081b13434b45189a720b77b6818", "abcdefgh" ),
-	md5Test( "8aa99b1f439ff71293e95357bac6fd94", "abcdefghi" ),
-	md5Test( "a925576942e94b2ef57a066101b48876", "abcdefghij" ),
-	md5Test( "d747fc1719c7eacb84058196cfe56d57", "Discard medicine more than two years old." ),
-	md5Test( "bff2dcb37ef3a44ba43ab144768ca837", "He who has a shady past knows that nice guys finish last." ),
-	md5Test( "0441015ecb54a7342d017ed1bcfdbea5", "I wouldn't marry him with a ten foot pole." ),
-	md5Test( "9e3cac8e9e9757a60c3ea391130d3689", "Free! Free!/A trip/to Mars/for 900/empty jars/Burma Shave" ),
-	md5Test( "a0f04459b031f916a59a35cc482dc039", "The days of the digital watch are numbered.  -Tom Stoppard" ),
-	md5Test( "e7a48e0fe884faf31475d2a04b1362cc", "Nepal premier won't resign." ),
-	md5Test( "637d2fe925c07c113800509964fb0e06", "For every action there is an equal and opposite government program." ),
-	md5Test( "834a8d18d5c6562119cf4c7f5086cb71", "His money is twice tainted: 'taint yours and 'taint mine." ),
-	md5Test( "de3a4d2fd6c73ec2db2abad23b444281", "There is no reason for any individual to have a computer in their home. -Ken Olsen, 1977" ),
-	md5Test( "acf203f997e2cf74ea3aff86985aefaf", "It's a tiny change to the code and not completely disgusting. - Bob Manchek" ),
-	md5Test( "e1c1384cb4d2221dfdd7c795a4222c9a", "size:  a.out:  bad magic" ),
-	md5Test( "c90f3ddecc54f34228c063d7525bf644", "The major problem is with sendmail.  -Mark Horton" ),
-	md5Test( "cdf7ab6c1fd49bd9933c43f3ea5af185", "Give me a rock, paper and scissors and I will move the world.  CCFestoon" ),
-	md5Test( "83bc85234942fc883c063cbd7f0ad5d0", "If the enemy is within range, then so are you." ),
-	md5Test( "277cbe255686b48dd7e8f389394d9299", "It's well we cannot hear the screams/That we create in others' dreams." ),
-	md5Test( "fd3fb0a7ffb8af16603f3d3af98f8e1f", "You remind me of a TV show, but that's all right: I watch it anyway." ),
-	md5Test( "469b13a78ebf297ecda64d4723655154", "C is as portable as Stonehedge!!" ),
-	md5Test( "63eb3a2f466410104731c4b037600110", "Even if I could be Shakespeare, I think I should still choose to be Faraday. - A. Huxley" ),
-	md5Test( "72c2ed7592debca1c90fc0100f931a2f", "The fugacity of a constituent in a mixture of gases at a given temperature is proportional to its mole fraction.  Lewis-Randall Rule" ),
-	md5Test( "132f7619d33b523b1d9e5bd8e0928355", "How can you write a big system without C++?  -Paul Glick" ),
-)
+var golden = []md5Test {
+	md5Test{ "d41d8cd98f00b204e9800998ecf8427e", "" },
+	md5Test{ "0cc175b9c0f1b6a831c399e269772661", "a" },
+	md5Test{ "187ef4436122d1cc2f40dc2b92f0eba0", "ab" },
+	md5Test{ "900150983cd24fb0d6963f7d28e17f72", "abc" },
+	md5Test{ "e2fc714c4727ee9395f324cd2e7f331f", "abcd" },
+	md5Test{ "ab56b4d92b40713acc5af89985d4b786", "abcde" },
+	md5Test{ "e80b5017098950fc58aad83c8c14978e", "abcdef" },
+	md5Test{ "7ac66c0f148de9519b8bd264312c4d64", "abcdefg" },
+	md5Test{ "e8dc4081b13434b45189a720b77b6818", "abcdefgh" },
+	md5Test{ "8aa99b1f439ff71293e95357bac6fd94", "abcdefghi" },
+	md5Test{ "a925576942e94b2ef57a066101b48876", "abcdefghij" },
+	md5Test{ "d747fc1719c7eacb84058196cfe56d57", "Discard medicine more than two years old." },
+	md5Test{ "bff2dcb37ef3a44ba43ab144768ca837", "He who has a shady past knows that nice guys finish last." },
+	md5Test{ "0441015ecb54a7342d017ed1bcfdbea5", "I wouldn't marry him with a ten foot pole." },
+	md5Test{ "9e3cac8e9e9757a60c3ea391130d3689", "Free! Free!/A trip/to Mars/for 900/empty jars/Burma Shave" },
+	md5Test{ "a0f04459b031f916a59a35cc482dc039", "The days of the digital watch are numbered.  -Tom Stoppard" },
+	md5Test{ "e7a48e0fe884faf31475d2a04b1362cc", "Nepal premier won't resign." },
+	md5Test{ "637d2fe925c07c113800509964fb0e06", "For every action there is an equal and opposite government program." },
+	md5Test{ "834a8d18d5c6562119cf4c7f5086cb71", "His money is twice tainted: 'taint yours and 'taint mine." },
+	md5Test{ "de3a4d2fd6c73ec2db2abad23b444281", "There is no reason for any individual to have a computer in their home. -Ken Olsen, 1977" },
+	md5Test{ "acf203f997e2cf74ea3aff86985aefaf", "It's a tiny change to the code and not completely disgusting. - Bob Manchek" },
+	md5Test{ "e1c1384cb4d2221dfdd7c795a4222c9a", "size:  a.out:  bad magic" },
+	md5Test{ "c90f3ddecc54f34228c063d7525bf644", "The major problem is with sendmail.  -Mark Horton" },
+	md5Test{ "cdf7ab6c1fd49bd9933c43f3ea5af185", "Give me a rock, paper and scissors and I will move the world.  CCFestoon" },
+	md5Test{ "83bc85234942fc883c063cbd7f0ad5d0", "If the enemy is within range, then so are you." },
+	md5Test{ "277cbe255686b48dd7e8f389394d9299", "It's well we cannot hear the screams/That we create in others' dreams." },
+	md5Test{ "fd3fb0a7ffb8af16603f3d3af98f8e1f", "You remind me of a TV show, but that's all right: I watch it anyway." },
+	md5Test{ "469b13a78ebf297ecda64d4723655154", "C is as portable as Stonehedge!!" },
+	md5Test{ "63eb3a2f466410104731c4b037600110", "Even if I could be Shakespeare, I think I should still choose to be Faraday. - A. Huxley" },
+	md5Test{ "72c2ed7592debca1c90fc0100f931a2f", "The fugacity of a constituent in a mixture of gases at a given temperature is proportional to its mole fraction.  Lewis-Randall Rule" },
+	md5Test{ "132f7619d33b523b1d9e5bd8e0928355", "How can you write a big system without C++?  -Paul Glick" },
+}
 
 func TestGolden(t *testing.T) {
 	for i := 0; i < len(golden); i++ {
diff --git a/src/lib/hash/md5block.go b/src/lib/hash/md5block.go
index b5328cb..7974dbf 100644
--- a/src/lib/hash/md5block.go
+++ b/src/lib/hash/md5block.go
@@ -11,7 +11,7 @@
 import "md5"
 
 // table[i] = int((1<<32) * abs(sin(i+1 radians))).
-var table = []uint32 (
+var table = []uint32 {
 	// round 1
 	0xd76aa478,
 	0xe8c7b756,
@@ -83,12 +83,12 @@
 	0xbd3af235,
 	0x2ad7d2bb,
 	0xeb86d391,
-)
+}
 
-var shift1 = []uint ( 7, 12, 17, 22 );
-var shift2 = []uint ( 5, 9, 14, 20 );
-var shift3 = []uint ( 4, 11, 16, 23 );
-var shift4 = []uint ( 6, 10, 15, 21 );
+var shift1 = []uint { 7, 12, 17, 22 };
+var shift2 = []uint { 5, 9, 14, 20 };
+var shift3 = []uint { 4, 11, 16, 23 };
+var shift4 = []uint { 6, 10, 15, 21 };
 
 func _Block(dig *Digest, p []byte) int {
 	a := dig.s[0];
diff --git a/src/lib/hash/sha1_test.go b/src/lib/hash/sha1_test.go
index 02be3a7..2dde397 100644
--- a/src/lib/hash/sha1_test.go
+++ b/src/lib/hash/sha1_test.go
@@ -18,39 +18,39 @@
 	in string;
 }
 
-var golden = []sha1Test (
-	sha1Test( "da39a3ee5e6b4b0d3255bfef95601890afd80709", "" ),
-	sha1Test( "86f7e437faa5a7fce15d1ddcb9eaeaea377667b8", "a" ),
-	sha1Test( "da23614e02469a0d7c7bd1bdab5c9c474b1904dc", "ab" ),
-	sha1Test( "a9993e364706816aba3e25717850c26c9cd0d89d", "abc" ),
-	sha1Test( "81fe8bfe87576c3ecb22426f8e57847382917acf", "abcd" ),
-	sha1Test( "03de6c570bfe24bfc328ccd7ca46b76eadaf4334", "abcde" ),
-	sha1Test( "1f8ac10f23c5b5bc1167bda84b833e5c057a77d2", "abcdef" ),
-	sha1Test( "2fb5e13419fc89246865e7a324f476ec624e8740", "abcdefg" ),
-	sha1Test( "425af12a0743502b322e93a015bcf868e324d56a", "abcdefgh" ),
-	sha1Test( "c63b19f1e4c8b5f76b25c49b8b87f57d8e4872a1", "abcdefghi" ),
-	sha1Test( "d68c19a0a345b7eab78d5e11e991c026ec60db63", "abcdefghij" ),
-	sha1Test( "ebf81ddcbe5bf13aaabdc4d65354fdf2044f38a7", "Discard medicine more than two years old." ),
-	sha1Test( "e5dea09392dd886ca63531aaa00571dc07554bb6", "He who has a shady past knows that nice guys finish last." ),
-	sha1Test( "45988f7234467b94e3e9494434c96ee3609d8f8f", "I wouldn't marry him with a ten foot pole." ),
-	sha1Test( "55dee037eb7460d5a692d1ce11330b260e40c988", "Free! Free!/A trip/to Mars/for 900/empty jars/Burma Shave" ),
-	sha1Test( "b7bc5fb91080c7de6b582ea281f8a396d7c0aee8", "The days of the digital watch are numbered.  -Tom Stoppard" ),
-	sha1Test( "c3aed9358f7c77f523afe86135f06b95b3999797", "Nepal premier won't resign." ),
-	sha1Test( "6e29d302bf6e3a5e4305ff318d983197d6906bb9", "For every action there is an equal and opposite government program." ),
-	sha1Test( "597f6a540010f94c15d71806a99a2c8710e747bd", "His money is twice tainted: 'taint yours and 'taint mine." ),
-	sha1Test( "6859733b2590a8a091cecf50086febc5ceef1e80", "There is no reason for any individual to have a computer in their home. -Ken Olsen, 1977" ),
-	sha1Test( "514b2630ec089b8aee18795fc0cf1f4860cdacad", "It's a tiny change to the code and not completely disgusting. - Bob Manchek" ),
-	sha1Test( "c5ca0d4a7b6676fc7aa72caa41cc3d5df567ed69", "size:  a.out:  bad magic" ),
-	sha1Test( "74c51fa9a04eadc8c1bbeaa7fc442f834b90a00a", "The major problem is with sendmail.  -Mark Horton" ),
-	sha1Test( "0b4c4ce5f52c3ad2821852a8dc00217fa18b8b66", "Give me a rock, paper and scissors and I will move the world.  CCFestoon" ),
-	sha1Test( "3ae7937dd790315beb0f48330e8642237c61550a", "If the enemy is within range, then so are you." ),
-	sha1Test( "410a2b296df92b9a47412b13281df8f830a9f44b", "It's well we cannot hear the screams/That we create in others' dreams." ),
-	sha1Test( "841e7c85ca1adcddbdd0187f1289acb5c642f7f5", "You remind me of a TV show, but that's all right: I watch it anyway." ),
-	sha1Test( "163173b825d03b952601376b25212df66763e1db", "C is as portable as Stonehedge!!" ),
-	sha1Test( "32b0377f2687eb88e22106f133c586ab314d5279", "Even if I could be Shakespeare, I think I should still choose to be Faraday. - A. Huxley" ),
-	sha1Test( "0885aaf99b569542fd165fa44e322718f4a984e0", "The fugacity of a constituent in a mixture of gases at a given temperature is proportional to its mole fraction.  Lewis-Randall Rule" ),
-	sha1Test( "6627d6904d71420b0bf3886ab629623538689f45", "How can you write a big system without C++?  -Paul Glick" ),
-)
+var golden = []sha1Test {
+	sha1Test{ "da39a3ee5e6b4b0d3255bfef95601890afd80709", "" },
+	sha1Test{ "86f7e437faa5a7fce15d1ddcb9eaeaea377667b8", "a" },
+	sha1Test{ "da23614e02469a0d7c7bd1bdab5c9c474b1904dc", "ab" },
+	sha1Test{ "a9993e364706816aba3e25717850c26c9cd0d89d", "abc" },
+	sha1Test{ "81fe8bfe87576c3ecb22426f8e57847382917acf", "abcd" },
+	sha1Test{ "03de6c570bfe24bfc328ccd7ca46b76eadaf4334", "abcde" },
+	sha1Test{ "1f8ac10f23c5b5bc1167bda84b833e5c057a77d2", "abcdef" },
+	sha1Test{ "2fb5e13419fc89246865e7a324f476ec624e8740", "abcdefg" },
+	sha1Test{ "425af12a0743502b322e93a015bcf868e324d56a", "abcdefgh" },
+	sha1Test{ "c63b19f1e4c8b5f76b25c49b8b87f57d8e4872a1", "abcdefghi" },
+	sha1Test{ "d68c19a0a345b7eab78d5e11e991c026ec60db63", "abcdefghij" },
+	sha1Test{ "ebf81ddcbe5bf13aaabdc4d65354fdf2044f38a7", "Discard medicine more than two years old." },
+	sha1Test{ "e5dea09392dd886ca63531aaa00571dc07554bb6", "He who has a shady past knows that nice guys finish last." },
+	sha1Test{ "45988f7234467b94e3e9494434c96ee3609d8f8f", "I wouldn't marry him with a ten foot pole." },
+	sha1Test{ "55dee037eb7460d5a692d1ce11330b260e40c988", "Free! Free!/A trip/to Mars/for 900/empty jars/Burma Shave" },
+	sha1Test{ "b7bc5fb91080c7de6b582ea281f8a396d7c0aee8", "The days of the digital watch are numbered.  -Tom Stoppard" },
+	sha1Test{ "c3aed9358f7c77f523afe86135f06b95b3999797", "Nepal premier won't resign." },
+	sha1Test{ "6e29d302bf6e3a5e4305ff318d983197d6906bb9", "For every action there is an equal and opposite government program." },
+	sha1Test{ "597f6a540010f94c15d71806a99a2c8710e747bd", "His money is twice tainted: 'taint yours and 'taint mine." },
+	sha1Test{ "6859733b2590a8a091cecf50086febc5ceef1e80", "There is no reason for any individual to have a computer in their home. -Ken Olsen, 1977" },
+	sha1Test{ "514b2630ec089b8aee18795fc0cf1f4860cdacad", "It's a tiny change to the code and not completely disgusting. - Bob Manchek" },
+	sha1Test{ "c5ca0d4a7b6676fc7aa72caa41cc3d5df567ed69", "size:  a.out:  bad magic" },
+	sha1Test{ "74c51fa9a04eadc8c1bbeaa7fc442f834b90a00a", "The major problem is with sendmail.  -Mark Horton" },
+	sha1Test{ "0b4c4ce5f52c3ad2821852a8dc00217fa18b8b66", "Give me a rock, paper and scissors and I will move the world.  CCFestoon" },
+	sha1Test{ "3ae7937dd790315beb0f48330e8642237c61550a", "If the enemy is within range, then so are you." },
+	sha1Test{ "410a2b296df92b9a47412b13281df8f830a9f44b", "It's well we cannot hear the screams/That we create in others' dreams." },
+	sha1Test{ "841e7c85ca1adcddbdd0187f1289acb5c642f7f5", "You remind me of a TV show, but that's all right: I watch it anyway." },
+	sha1Test{ "163173b825d03b952601376b25212df66763e1db", "C is as portable as Stonehedge!!" },
+	sha1Test{ "32b0377f2687eb88e22106f133c586ab314d5279", "Even if I could be Shakespeare, I think I should still choose to be Faraday. - A. Huxley" },
+	sha1Test{ "0885aaf99b569542fd165fa44e322718f4a984e0", "The fugacity of a constituent in a mixture of gases at a given temperature is proportional to its mole fraction.  Lewis-Randall Rule" },
+	sha1Test{ "6627d6904d71420b0bf3886ab629623538689f45", "How can you write a big system without C++?  -Paul Glick" },
+}
 
 func TestGolden(t *testing.T) {
 	for i := 0; i < len(golden); i++ {
diff --git a/src/lib/http/server.go b/src/lib/http/server.go
index 086621a..ffb81cc 100644
--- a/src/lib/http/server.go
+++ b/src/lib/http/server.go
@@ -247,7 +247,7 @@
 }
 
 func RedirectHandler(to string) Handler {
-	return &redirectHandler(to);
+	return &redirectHandler{to};
 }
 
 // Path-based HTTP request multiplexer.
@@ -265,7 +265,7 @@
 }
 
 func NewServeMux() *ServeMux {
-	return &ServeMux(make(map[string] Handler));
+	return &ServeMux{make(map[string] Handler)};
 }
 
 var DefaultServeMux = NewServeMux();
diff --git a/src/lib/http/status.go b/src/lib/http/status.go
index f7409eb..82a8b21 100644
--- a/src/lib/http/status.go
+++ b/src/lib/http/status.go
@@ -53,7 +53,7 @@
 	StatusHTTPVersionNotSupported = 505;
 )
 
-var statusText = map[int]string (
+var statusText = map[int]string {
 	StatusContinue:			"Continue",
 	StatusSwitchingProtocols:	"Switching Protocols",
 
@@ -98,5 +98,5 @@
 	StatusServiceUnavailable:	"Service Unavailable",
 	StatusGatewayTimeout:		"Gateway Timeout",
 	StatusHTTPVersionNotSupported:	"HTTP Version Not Supported",
-)
+}
 
diff --git a/src/lib/io/io.go b/src/lib/io/io.go
index 0325912..e5f02eb 100644
--- a/src/lib/io/io.go
+++ b/src/lib/io/io.go
@@ -91,7 +91,7 @@
 		// already a fullRead
 		return r
 	}
-	return &fullRead(r)
+	return &fullRead{r}
 }
 
 // Copies n bytes (or until EOF is reached) from src to dst.
diff --git a/src/lib/io/pipe.go b/src/lib/io/pipe.go
index 736f497..6ef080f 100644
--- a/src/lib/io/pipe.go
+++ b/src/lib/io/pipe.go
@@ -58,7 +58,7 @@
 	// If write block is done, finish the write.
 	if len(p.wpend) == 0 {
 		p.wpend = nil;
-		p.cw <- pipeReturn(p.wtot, nil);
+		p.cw <- pipeReturn{p.wtot, nil};
 		p.wtot = 0;
 	}
 
@@ -91,7 +91,7 @@
 
 	// Stop the current write.
 	if !p.wclosed {
-		p.cw <- pipeReturn(p.wtot, os.EPIPE);
+		p.cw <- pipeReturn{p.wtot, os.EPIPE};
 	}
 
 	return nil;
diff --git a/src/lib/io/pipe_test.go b/src/lib/io/pipe_test.go
index c187702..9811976 100644
--- a/src/lib/io/pipe_test.go
+++ b/src/lib/io/pipe_test.go
@@ -85,7 +85,7 @@
 func writer(w io.WriteClose, buf []byte, c chan pipeReturn) {
 	n, err := w.Write(buf);
 	w.Close();
-	c <- pipeReturn(n, err);
+	c <- pipeReturn{n, err};
 }
 
 func TestPipe3(t *testing.T) {
diff --git a/src/lib/json/generic.go b/src/lib/json/generic.go
index 89c6921..08ae8dc 100644
--- a/src/lib/json/generic.go
+++ b/src/lib/json/generic.go
@@ -45,7 +45,7 @@
 }
 
 type _Null struct { }
-var Null Json = &_Null()
+var Null Json = &_Null{}
 func (*_Null) Kind() int { return NullKind }
 func (*_Null) String() string { return "null" }
 func (*_Null) Number() float64 { return 0 }
@@ -240,7 +240,7 @@
 }
 
 func (b *_JsonBuilder) Float64(f float64) {
-	b.Put(&_Number(f, _Null()))
+	b.Put(&_Number{f, _Null{}})
 }
 
 func (b *_JsonBuilder) Int64(i int64) {
@@ -252,7 +252,7 @@
 }
 
 func (b *_JsonBuilder) Bool(tf bool) {
-	b.Put(&_Bool(tf, _Null()))
+	b.Put(&_Bool{tf, _Null{}})
 }
 
 func (b *_JsonBuilder) Null() {
@@ -260,16 +260,16 @@
 }
 
 func (b *_JsonBuilder) String(s string) {
-	b.Put(&_String(s, _Null()))
+	b.Put(&_String{s, _Null{}})
 }
 
 
 func (b *_JsonBuilder) Array() {
-	b.Put(&_Array(array.New(0), _Null()))
+	b.Put(&_Array{array.New(0), _Null{}})
 }
 
 func (b *_JsonBuilder) Map() {
-	b.Put(&_Map(make(map[string]Json), _Null()))
+	b.Put(&_Map{make(map[string]Json), _Null{}})
 }
 
 func (b *_JsonBuilder) Elem(i int) Builder {
diff --git a/src/lib/json/generic_test.go b/src/lib/json/generic_test.go
index 6e409b3..ab3e24f 100644
--- a/src/lib/json/generic_test.go
+++ b/src/lib/json/generic_test.go
@@ -9,7 +9,7 @@
 	"testing";
 )
 
-var jsontests = []string (
+var jsontests = []string {
 	`null`,
 	`true`,
 	`false`,
@@ -22,7 +22,7 @@
 	`[1,2,"abc",null,true,false]`,
 	`{}`,
 	`{"a":1}`,
-)
+}
 
 func TestJson(t *testing.T) {
 	for i := 0; i < len(jsontests); i++ {
diff --git a/src/lib/json/struct.go b/src/lib/json/struct.go
index 7d48dff..82e0a80 100644
--- a/src/lib/json/struct.go
+++ b/src/lib/json/struct.go
@@ -163,7 +163,7 @@
 			av.SetLen(i+1);
 		}
 		if i < av.Len() {
-			return &_StructBuilder( av.Elem(i) )
+			return &_StructBuilder{ av.Elem(i) }
 		}
 	}
 	return nobuilder
@@ -195,7 +195,7 @@
 		for i := 0; i < t.Len(); i++ {
 			name, typ, tag, off := t.Field(i);
 			if k == name {
-				return &_StructBuilder( sv.Field(i) )
+				return &_StructBuilder{ sv.Field(i) }
 			}
 		}
 	}
@@ -205,7 +205,7 @@
 func Unmarshal(s string, val interface{}) (ok bool, errtok string) {
 	var errindx int;
 	var val1 interface{};
-	b := &_StructBuilder( reflect.NewValue(val) );
+	b := &_StructBuilder{ reflect.NewValue(val) };
 	ok, errindx, errtok = Parse(s, b);
 	if !ok {
 		return false, errtok
diff --git a/src/lib/log.go b/src/lib/log.go
index 6e03709..1134ace3 100644
--- a/src/lib/log.go
+++ b/src/lib/log.go
@@ -43,7 +43,7 @@
 }
 
 func NewLogger(out0, out1 io.Write, prefix string, flag int) *Logger {
-	return &Logger(out0, out1, prefix, flag)
+	return &Logger{out0, out1, prefix, flag}
 }
 
 var (
diff --git a/src/lib/log_test.go b/src/lib/log_test.go
index aa8cb6e..23e58b9 100644
--- a/src/lib/log_test.go
+++ b/src/lib/log_test.go
@@ -29,21 +29,21 @@
 	pattern	string;	// regexp that log output must match; we add ^ and expected_text$ always
 }
 
-var tests = []tester (
+var tests = []tester {
 	// individual pieces:
-	tester( 0,	"", "" ),
-	tester( 0, "XXX", "XXX" ),
-	tester( Lok|Ldate, "", Rdate+" " ),
-	tester( Lok|Ltime, "", Rtime+" " ),
-	tester( Lok|Ltime|Lmicroseconds, "", Rtime+Rmicroseconds+" " ),
-	tester( Lok|Lmicroseconds, "", Rtime+Rmicroseconds+" " ),	// microsec implies time
-	tester( Lok|Llongfile, "", Rlongfile+" " ),
-	tester( Lok|Lshortfile, "", Rshortfile+" " ),
-	tester( Lok|Llongfile|Lshortfile, "", Rshortfile+" " ),	// shortfile overrides longfile
+	tester{ 0,	"", "" },
+	tester{ 0, "XXX", "XXX" },
+	tester{ Lok|Ldate, "", Rdate+" " },
+	tester{ Lok|Ltime, "", Rtime+" " },
+	tester{ Lok|Ltime|Lmicroseconds, "", Rtime+Rmicroseconds+" " },
+	tester{ Lok|Lmicroseconds, "", Rtime+Rmicroseconds+" " },	// microsec implies time
+	tester{ Lok|Llongfile, "", Rlongfile+" " },
+	tester{ Lok|Lshortfile, "", Rshortfile+" " },
+	tester{ Lok|Llongfile|Lshortfile, "", Rshortfile+" " },	// shortfile overrides longfile
 	// everything at once:
-	tester( Lok|Ldate|Ltime|Lmicroseconds|Llongfile, "XXX", "XXX"+Rdate+" "+Rtime+Rmicroseconds+" "+Rlongfile+" " ),
-	tester( Lok|Ldate|Ltime|Lmicroseconds|Lshortfile, "XXX", "XXX"+Rdate+" "+Rtime+Rmicroseconds+" "+Rshortfile+" " ),
-)
+	tester{ Lok|Ldate|Ltime|Lmicroseconds|Llongfile, "XXX", "XXX"+Rdate+" "+Rtime+Rmicroseconds+" "+Rlongfile+" " },
+	tester{ Lok|Ldate|Ltime|Lmicroseconds|Lshortfile, "XXX", "XXX"+Rdate+" "+Rtime+Rmicroseconds+" "+Rshortfile+" " },
+}
 
 // Test using Log("hello", 23, "world") or using Logf("hello %d world", 23)
 func testLog(t *testing.T, flag int, prefix string, pattern string, useLogf bool) {
diff --git a/src/lib/math/all_test.go b/src/lib/math/all_test.go
index 2f01ff9..c5d5c01 100644
--- a/src/lib/math/all_test.go
+++ b/src/lib/math/all_test.go
@@ -9,7 +9,7 @@
 	"testing";
 )
 
-var vf = []float64 (
+var vf = []float64 {
 	  4.9790119248836735e+00,
 	  7.7388724745781045e+00,
 	 -2.7688005719200159e-01,
@@ -20,8 +20,8 @@
 	  2.7279399104360102e+00,
 	  1.8253080916808550e+00,
 	 -8.6859247685756013e+00,
-)
-var asin = []float64 (
+}
+var asin = []float64 {
 	  5.2117697218417440e-01,
 	  8.8495619865825236e-01,
 	 -2.7691544662819413e-02,
@@ -32,8 +32,8 @@
 	  2.7629597861677200e-01,
 	  1.8355989225745148e-01,
 	 -1.0523547536021498e+00,
-)
-var atan = []float64 (
+}
+var atan = []float64 {
 	  1.3725902621296217e+00,
 	  1.4422906096452980e+00,
 	 -2.7011324359471755e-01,
@@ -44,8 +44,8 @@
 	  1.2194305844639670e+00,
 	  1.0696031952318783e+00,
 	 -1.4561721938838085e+00,
-)
-var exp = []float64 (
+}
+var exp = []float64 {
 	  1.4533071302642137e+02,
 	  2.2958822575694450e+03,
 	  7.5814542574851666e-01,
@@ -56,8 +56,8 @@
 	  1.5301332413189379e+01,
 	  6.2047063430646876e+00,
 	  1.6894712385826522e-04,
-)
-var floor = []float64 (
+}
+var floor = []float64 {
 	  4.0000000000000000e+00,
 	  7.0000000000000000e+00,
 	 -1.0000000000000000e+00,
@@ -68,8 +68,8 @@
 	  2.0000000000000000e+00,
 	  1.0000000000000000e+00,
 	 -9.0000000000000000e+00,
-)
-var log = []float64 (
+}
+var log = []float64 {
 	  1.6052314626930630e+00,
 	  2.0462560018708768e+00,
 	 -1.2841708730962657e+00,
@@ -80,8 +80,8 @@
 	  1.0035467127723465e+00,
 	  6.0174879014578053e-01,
 	  2.1617038728473527e+00,
-)
-var pow = []float64 (
+}
+var pow = []float64 {
 	  9.5282232631648415e+04,
 	  5.4811599352999900e+07,
 	  5.2859121715894400e-01,
@@ -92,8 +92,8 @@
 	  5.3449040147551940e+02,
 	  6.6881821384514159e+01,
 	  2.0609869004248744e-09,
-)
-var sin = []float64 (
+}
+var sin = []float64 {
 	 -9.6466616586009283e-01,
 	  9.9338225271646543e-01,
 	 -2.7335587039794395e-01,
@@ -104,8 +104,8 @@
 	  4.0195666811555783e-01,
 	  9.6778633541688000e-01,
 	 -6.7344058690503452e-01,
-)
-var sinh = []float64 (
+}
+var sinh = []float64 {
 	  7.2661916084208533e+01,
 	  1.1479409110035194e+03,
 	 -2.8043136512812520e-01,
@@ -116,8 +116,8 @@
 	  7.6179893137269143e+00,
 	  3.0217691805496156e+00,
 	 -2.9595057572444951e+03,
-)
-var sqrt = []float64 (
+}
+var sqrt = []float64 {
 	  2.2313699659365484e+00,
 	  2.7818829009464263e+00,
 	  5.2619393496314792e-01,
@@ -128,8 +128,8 @@
 	  1.6516476350711160e+00,
 	  1.3510396336454586e+00,
 	  2.9471892997524950e+00,
-)
-var tan = []float64 (
+}
+var tan = []float64 {
 	 -3.6613165650402277e+00,
 	  8.6490023264859754e+00,
 	 -2.8417941955033615e-01,
@@ -140,8 +140,8 @@
 	 -4.3898089147528178e-01,
 	 -3.8438855602011305e+00,
 	  9.1098879337768517e-01,
-)
-var tanh = []float64 (
+}
+var tanh = []float64 {
 	  9.9990531206936328e-01,
 	  9.9999962057085307e-01,
 	 -2.7001505097318680e-01,
@@ -152,7 +152,7 @@
 	  9.9149409509772863e-01,
 	  9.4936501296239700e-01,
 	 -9.9999994291374019e-01,
-)
+}
 
 func tolerance(a,b,e float64) bool {
 	d := a-b;
diff --git a/src/lib/net/dialgoogle_test.go b/src/lib/net/dialgoogle_test.go
index 248b90d..9e4cff4 100644
--- a/src/lib/net/dialgoogle_test.go
+++ b/src/lib/net/dialgoogle_test.go
@@ -50,7 +50,7 @@
 	fd.Close()
 }
 
-var googleaddrs = []string (
+var googleaddrs = []string {
 	"74.125.19.99:80",
 	"www.google.com:80",
 	"74.125.19.99:http",
@@ -62,7 +62,7 @@
 	"[0:0:0:0:000000:ffff:74.125.19.99]:80",
 	"[0:0:0:0:0:ffff::74.125.19.99]:80",
 	"[2001:4860:0:2001::68]:80"	// ipv6.google.com; removed if ipv6 flag not set
-)
+}
 
 func TestDialGoogle(t *testing.T) {
 	// If no ipv6 tunnel, don't try the last address.
diff --git a/src/lib/net/dnsclient.go b/src/lib/net/dnsclient.go
index 499d366..2d75538 100644
--- a/src/lib/net/dnsclient.go
+++ b/src/lib/net/dnsclient.go
@@ -46,9 +46,9 @@
 	}
 	out := new(DNS_Msg);
 	out.id = 0x1234;
-	out.question = []DNS_Question(
-		DNS_Question( name, DNS_TypeA, DNS_ClassINET )
-	);
+	out.question = []DNS_Question{
+		DNS_Question{ name, DNS_TypeA, DNS_ClassINET }
+	};
 	out.recursion_desired = true;
 	msg, ok := out.Pack();
 	if !ok {
diff --git a/src/lib/net/dnsmsg.go b/src/lib/net/dnsmsg.go
index 245991d..d9d5ad2 100644
--- a/src/lib/net/dnsmsg.go
+++ b/src/lib/net/dnsmsg.go
@@ -197,7 +197,7 @@
 // packing sequence.
 
 // Map of constructors for each RR wire type.
-var rr_mk = map[int] func()DNS_RR (
+var rr_mk = map[int] func()DNS_RR {
 	DNS_TypeCNAME: func() DNS_RR { return new(DNS_RR_CNAME) },
 	DNS_TypeHINFO: func() DNS_RR { return new(DNS_RR_HINFO) },
 	DNS_TypeMB: func() DNS_RR { return new(DNS_RR_MB) },
@@ -210,7 +210,7 @@
 	DNS_TypeSOA: func() DNS_RR { return new(DNS_RR_SOA) },
 	DNS_TypeTXT: func() DNS_RR { return new(DNS_RR_TXT) },
 	DNS_TypeA: func() DNS_RR { return new(DNS_RR_A) },
-)
+}
 
 // Pack a domain name s into msg[off:].
 // Domain names are a sequence of counted strings
diff --git a/src/lib/net/ip_test.go b/src/lib/net/ip_test.go
index c67a7dd..1626f31 100644
--- a/src/lib/net/ip_test.go
+++ b/src/lib/net/ip_test.go
@@ -10,7 +10,7 @@
 )
 
 func ipv4(a, b, c, d byte) []byte {
-	return []byte( 0,0,0,0, 0,0,0,0, 0,0,255,255, a,b,c,d )
+	return []byte{ 0,0,0,0, 0,0,0,0, 0,0,255,255, a,b,c,d }
 }
 
 func isEqual(a []byte, b []byte) bool {
@@ -32,16 +32,17 @@
 	in string;
 	out []byte;
 }
-var parseiptests = []parseIPTest (
-	parseIPTest("127.0.1.2", ipv4(127, 0, 1, 2)),
-	parseIPTest("127.0.0.1", ipv4(127, 0, 0, 1)),
-	parseIPTest("127.0.0.256", nil),
-	parseIPTest("abc", nil),
-	parseIPTest("::ffff:127.0.0.1", ipv4(127, 0, 0, 1)),
-	parseIPTest("2001:4860:0:2001::68",
-		[]byte(0x20,0x01, 0x48,0x60, 0,0, 0x20,0x01, 0,0, 0,0, 0,0, 0x00,0x68)),
-	parseIPTest("::ffff:4a7d:1363", ipv4(74, 125, 19, 99)),
-)
+var parseiptests = []parseIPTest{
+	parseIPTest{"127.0.1.2", ipv4(127, 0, 1, 2)},
+	parseIPTest{"127.0.0.1", ipv4(127, 0, 0, 1)},
+	parseIPTest{"127.0.0.256", nil},
+	parseIPTest{"abc", nil},
+	parseIPTest{"::ffff:127.0.0.1", ipv4(127, 0, 0, 1)},
+	parseIPTest{"2001:4860:0:2001::68",
+		[]byte{0x20,0x01, 0x48,0x60, 0,0, 0x20,0x01,
+			0,0, 0,0, 0,0, 0x00,0x68}},
+	parseIPTest{"::ffff:4a7d:1363", ipv4(74, 125, 19, 99)},
+}
 
 func TestParseIP(t *testing.T) {
 	for i := 0; i < len(parseiptests); i++ {
diff --git a/src/lib/net/net_darwin.go b/src/lib/net/net_darwin.go
index 2d5d11e..d31ea52 100644
--- a/src/lib/net/net_darwin.go
+++ b/src/lib/net/net_darwin.go
@@ -24,7 +24,7 @@
 	for i := 0; i < IPv4len; i++ {
 		sa.Addr[i] = p[i]
 	}
-	return unsafe.Pointer(sa).(*syscall.Sockaddr), nil
+	return (*syscall.Sockaddr)(unsafe.Pointer(sa)), nil
 }
 
 func IPv6ToSockaddr(p []byte, port int) (sa1 *syscall.Sockaddr, err *os.Error) {
@@ -40,21 +40,21 @@
 	for i := 0; i < IPv6len; i++ {
 		sa.Addr[i] = p[i]
 	}
-	return unsafe.Pointer(sa).(*syscall.Sockaddr), nil
+	return (*syscall.Sockaddr)(unsafe.Pointer(sa)), nil
 }
 
 
 func SockaddrToIP(sa1 *syscall.Sockaddr) (p []byte, port int, err *os.Error) {
 	switch sa1.Family {
 	case syscall.AF_INET:
-		sa := unsafe.Pointer(sa1).(*syscall.SockaddrInet4);
+		sa := (*syscall.SockaddrInet4)(unsafe.Pointer(sa1));
 		a := ToIPv6(sa.Addr);
 		if a == nil {
 			return nil, 0, os.EINVAL
 		}
 		return a, int(sa.Port[0])<<8 + int(sa.Port[1]), nil;
 	case syscall.AF_INET6:
-		sa := unsafe.Pointer(sa1).(*syscall.SockaddrInet6);
+		sa := (*syscall.SockaddrInet6)(unsafe.Pointer(sa1));
 		a := ToIPv6(sa.Addr);
 		if a == nil {
 			return nil, 0, os.EINVAL
diff --git a/src/lib/net/net_linux.go b/src/lib/net/net_linux.go
index 01274c9..7041277 100644
--- a/src/lib/net/net_linux.go
+++ b/src/lib/net/net_linux.go
@@ -23,7 +23,7 @@
 	for i := 0; i < IPv4len; i++ {
 		sa.Addr[i] = p[i]
 	}
-	return unsafe.Pointer(sa).(*syscall.Sockaddr), nil
+	return (*syscall.Sockaddr)(unsafe.Pointer(sa)), nil
 }
 
 var ipv6zero [16]byte;
@@ -48,20 +48,20 @@
 	for i := 0; i < IPv6len; i++ {
 		sa.Addr[i] = p[i]
 	}
-	return unsafe.Pointer(sa).(*syscall.Sockaddr), nil
+	return (*syscall.Sockaddr)(unsafe.Pointer(sa)), nil
 }
 
 func SockaddrToIP(sa1 *syscall.Sockaddr) (p []byte, port int, err *os.Error) {
 	switch sa1.Family {
 	case syscall.AF_INET:
-		sa := unsafe.Pointer(sa1).(*syscall.SockaddrInet4);
+		sa := (*syscall.SockaddrInet4)(unsafe.Pointer(sa1));
 		a := ToIPv6(sa.Addr);
 		if a == nil {
 			return nil, 0, os.EINVAL
 		}
 		return a, int(sa.Port[0])<<8 + int(sa.Port[1]), nil;
 	case syscall.AF_INET6:
-		sa := unsafe.Pointer(sa1).(*syscall.SockaddrInet6);
+		sa := (*syscall.SockaddrInet6)(unsafe.Pointer(sa1));
 		a := ToIPv6(sa.Addr);
 		if a == nil {
 			return nil, 0, os.EINVAL
diff --git a/src/lib/net/parse.go b/src/lib/net/parse.go
index b8a13e3..e1f55f1 100644
--- a/src/lib/net/parse.go
+++ b/src/lib/net/parse.go
@@ -60,7 +60,7 @@
 	if err != nil {
 		return nil
 	}
-	return &file(fd, make([]byte, 1024)[0:0]);
+	return &file{fd, make([]byte, 1024)[0:0]};
 }
 
 func byteIndex(s string, c byte) int {
diff --git a/src/lib/net/port_test.go b/src/lib/net/port_test.go
index f48ced0..f6123fd 100644
--- a/src/lib/net/port_test.go
+++ b/src/lib/net/port_test.go
@@ -16,37 +16,37 @@
 	ok bool;
 }
 
-var porttests = []portTest (
-	portTest( "tcp", "echo", 7, true ),
-	portTest( "tcp", "discard", 9, true ),
-	portTest( "tcp", "systat", 11, true ),
-	portTest( "tcp", "daytime", 13, true ),
-	portTest( "tcp", "chargen", 19, true ),
-	portTest( "tcp", "ftp-data", 20, true ),
-	portTest( "tcp", "ftp", 21, true ),
-	portTest( "tcp", "ssh", 22, true ),
-	portTest( "tcp", "telnet", 23, true ),
-	portTest( "tcp", "smtp", 25, true ),
-	portTest( "tcp", "time", 37, true ),
-	portTest( "tcp", "domain", 53, true ),
-	portTest( "tcp", "gopher", 70, true ),
-	portTest( "tcp", "finger", 79, true ),
-	portTest( "tcp", "http", 80, true ),
+var porttests = []portTest {
+	portTest{ "tcp", "echo", 7, true },
+	portTest{ "tcp", "discard", 9, true },
+	portTest{ "tcp", "systat", 11, true },
+	portTest{ "tcp", "daytime", 13, true },
+	portTest{ "tcp", "chargen", 19, true },
+	portTest{ "tcp", "ftp-data", 20, true },
+	portTest{ "tcp", "ftp", 21, true },
+	portTest{ "tcp", "ssh", 22, true },
+	portTest{ "tcp", "telnet", 23, true },
+	portTest{ "tcp", "smtp", 25, true },
+	portTest{ "tcp", "time", 37, true },
+	portTest{ "tcp", "domain", 53, true },
+	portTest{ "tcp", "gopher", 70, true },
+	portTest{ "tcp", "finger", 79, true },
+	portTest{ "tcp", "http", 80, true },
 
-	portTest( "udp", "echo", 7, true ),
-	portTest( "udp", "tacacs", 49, true ),
-	portTest( "udp", "tftp", 69, true ),
-	portTest( "udp", "bootpc", 68, true ),
-	portTest( "udp", "bootps", 67, true ),
-	portTest( "udp", "domain", 53, true ),
-	portTest( "udp", "ntp", 123, true ),
-	portTest( "udp", "snmp", 161, true ),
-	portTest( "udp", "syslog", 514, true ),
-	portTest( "udp", "nfs", 2049, true ),
+	portTest{ "udp", "echo", 7, true },
+	portTest{ "udp", "tacacs", 49, true },
+	portTest{ "udp", "tftp", 69, true },
+	portTest{ "udp", "bootpc", 68, true },
+	portTest{ "udp", "bootps", 67, true },
+	portTest{ "udp", "domain", 53, true },
+	portTest{ "udp", "ntp", 123, true },
+	portTest{ "udp", "snmp", 161, true },
+	portTest{ "udp", "syslog", 514, true },
+	portTest{ "udp", "nfs", 2049, true },
 
-	portTest( "--badnet--", "zzz", 0, false ),
-	portTest( "tcp", "--badport--", 0, false ),
-)
+	portTest{ "--badnet--", "zzz", 0, false },
+	portTest{ "tcp", "--badport--", 0, false },
+}
 
 func TestLookupPort(t *testing.T) {
 	for i := 0; i < len(porttests); i++ {
diff --git a/src/lib/os/dir_amd64_darwin.go b/src/lib/os/dir_amd64_darwin.go
index 2821076..41f6211 100644
--- a/src/lib/os/dir_amd64_darwin.go
+++ b/src/lib/os/dir_amd64_darwin.go
@@ -45,7 +45,7 @@
 		}
 		// Drain the buffer
 		for count != 0 && d.bufp < d.nbuf {
-			dirent := unsafe.Pointer(&d.buf[d.bufp]).(*syscall.Dirent);
+			dirent := (*syscall.Dirent)(unsafe.Pointer(&d.buf[d.bufp]));
 			d.bufp += int64(dirent.Reclen);
 			if dirent.Ino == 0 {	// File absent in directory.
 				continue
diff --git a/src/lib/os/dir_amd64_linux.go b/src/lib/os/dir_amd64_linux.go
index f73febc..7a2ec73 100644
--- a/src/lib/os/dir_amd64_linux.go
+++ b/src/lib/os/dir_amd64_linux.go
@@ -42,7 +42,7 @@
 		// Refill the buffer if necessary
 		if d.bufp == d.nbuf {
 			var errno int64;
-			dbuf := unsafe.Pointer(&d.buf[0]).(*syscall.Dirent);
+			dbuf := (*syscall.Dirent)(unsafe.Pointer(&d.buf[0]));
 			d.nbuf, errno = syscall.Getdents(fd.fd, dbuf, int64(len(d.buf)));
 			if d.nbuf < 0 {
 				return names, os.ErrnoToError(errno)
@@ -54,7 +54,7 @@
 		}
 		// Drain the buffer
 		for count != 0 && d.bufp < d.nbuf {
-			dirent := unsafe.Pointer(&d.buf[d.bufp]).(*syscall.Dirent);
+			dirent := (*syscall.Dirent)(unsafe.Pointer(&d.buf[d.bufp]));
 			d.bufp += int64(dirent.Reclen);
 			if dirent.Ino == 0 {	// File absent in directory.
 				continue
diff --git a/src/lib/os/error.go b/src/lib/os/error.go
index d85d237..63b2dbc 100644
--- a/src/lib/os/error.go
+++ b/src/lib/os/error.go
@@ -33,7 +33,7 @@
 	if ok {
 		return err
 	}
-	err = &Error(s);
+	err = &Error{s};
 	errorStringTab[s] = err;
 	return err;
 }
diff --git a/src/lib/os/file.go b/src/lib/os/file.go
index 24aab12..b41f241 100644
--- a/src/lib/os/file.go
+++ b/src/lib/os/file.go
@@ -35,7 +35,7 @@
 	if fd < 0 {
 		return nil
 	}
-	return &FD(fd, name, nil)
+	return &FD{fd, name, nil}
 }
 
 var (
diff --git a/src/lib/os/os_test.go b/src/lib/os/os_test.go
index 354d7c4..535008e 100644
--- a/src/lib/os/os_test.go
+++ b/src/lib/os/os_test.go
@@ -10,7 +10,7 @@
 	"testing";
 )
 
-var dot = []string(
+var dot = []string{
 	"dir_amd64_darwin.go",
 	"dir_amd64_linux.go",
 	"env.go",
@@ -21,13 +21,13 @@
 	"types.go",
 	"stat_amd64_darwin.go",
 	"stat_amd64_linux.go"
-)
+}
 
-var etc = []string(
+var etc = []string{
 	"group",
 	"hosts",
 	"passwd",
-)
+}
 
 func size(file string, t *testing.T) uint64 {
 	fd, err := Open(file, O_RDONLY, 0);
diff --git a/src/lib/reflect/all_test.go b/src/lib/reflect/all_test.go
index 828e287..f6428fd 100644
--- a/src/lib/reflect/all_test.go
+++ b/src/lib/reflect/all_test.go
@@ -168,7 +168,7 @@
 	}
 	{
 		var i int = 7;
-		var tmp = &T(123, 456.75, "hello", &i);
+		var tmp = &T{123, 456.75, "hello", &i};
 		value := reflect.NewValue(tmp);
 		assert(reflect.ValueToString(value.(reflect.PtrValue).Sub()), "reflect.T{123, 456.75, hello, *int(@)}");
 	}
@@ -188,7 +188,7 @@
 //	}
 	{
 		type AA []int;
-		var tmp = AA(1,2,3,4,5,6,7,8,9,10);
+		var tmp = AA{1,2,3,4,5,6,7,8,9,10};
 		value := reflect.NewValue(&tmp);	// TODO: NewValue(tmp) too
 		assert(reflect.ValueToString(value.(reflect.PtrValue).Sub()), "reflect.AA·all_test{1, 2, 3, 4, 5, 6, 7, 8, 9, 10}");
 		value.(reflect.PtrValue).Sub().(reflect.ArrayValue).Elem(4).(reflect.IntValue).Set(123);
@@ -297,9 +297,9 @@
 }
 
 func TestCopyArray(t *testing.T) {
-	a := []int( 1, 2, 3, 4, 10, 9, 8, 7 );
-	b := []int( 11, 22, 33, 44, 1010, 99, 88, 77, 66, 55, 44 );
-	c := []int( 11, 22, 33, 44, 1010, 99, 88, 77, 66, 55, 44 );
+	a := []int{ 1, 2, 3, 4, 10, 9, 8, 7 };
+	b := []int{ 11, 22, 33, 44, 1010, 99, 88, 77, 66, 55, 44 };
+	c := []int{ 11, 22, 33, 44, 1010, 99, 88, 77, 66, 55, 44 };
 	va := NewValue(&a);
 	vb := NewValue(&b);
 	for i := 0; i < len(b); i++ {
@@ -332,7 +332,7 @@
 }
 
 func TestBigUnnamedStruct(t *testing.T) {
-	b := struct{a,b,c,d int64}(1, 2, 3, 4);
+	b := struct{a,b,c,d int64}{1, 2, 3, 4};
 	v := NewValue(b);
 	b1 := v.Interface().(struct{a,b,c,d int64});
 	if b1.a != b.a || b1.b != b.b || b1.c != b.c || b1.d != b.d {
@@ -344,7 +344,7 @@
 	a, b, c, d, e int64
 }
 func TestBigStruct(t *testing.T) {
-	b := big(1, 2, 3, 4, 5);
+	b := big{1, 2, 3, 4, 5};
 	v := NewValue(b);
 	b1 := v.Interface().(big);
 	if b1.a != b.a || b1.b != b.b || b1.c != b.c || b1.d != b.d || b1.e != b.e {
diff --git a/src/lib/reflect/type.go b/src/lib/reflect/type.go
index 31de06c..438f5b2 100644
--- a/src/lib/reflect/type.go
+++ b/src/lib/reflect/type.go
@@ -101,7 +101,7 @@
 }
 
 func newBasicType(name string, kind int, size int) Type {
-	return &basicType( commonType(kind, name, name, size) )
+	return &basicType{ commonType{kind, name, name, size} }
 }
 
 // Prebuilt basic types
@@ -136,7 +136,7 @@
 }
 
 func newStubType(name string, typ Type) *stubType {
-	return &stubType(name, typ)
+	return &stubType{name, typ}
 }
 
 func (t *stubType) Get() Type {
@@ -159,7 +159,7 @@
 }
 
 func newPtrTypeStruct(name, typestring string, sub *stubType) *ptrTypeStruct {
-	return &ptrTypeStruct( commonType(PtrKind, typestring, name, ptrsize), sub)
+	return &ptrTypeStruct{ commonType{PtrKind, typestring, name, ptrsize}, sub}
 }
 
 func (t *ptrTypeStruct) Sub() Type {
@@ -183,7 +183,7 @@
 }
 
 func newArrayTypeStruct(name, typestring string, open bool, len int, elem *stubType) *arrayTypeStruct {
-	return &arrayTypeStruct( commonType(ArrayKind, typestring, name, 0), elem, open, len)
+	return &arrayTypeStruct{ commonType{ArrayKind, typestring, name, 0}, elem, open, len}
 }
 
 func (t *arrayTypeStruct) Size() int {
@@ -221,7 +221,7 @@
 }
 
 func newMapTypeStruct(name, typestring string, key, elem *stubType) *mapTypeStruct {
-	return &mapTypeStruct( commonType(MapKind, typestring, name, ptrsize), key, elem)
+	return &mapTypeStruct{ commonType{MapKind, typestring, name, ptrsize}, key, elem}
 }
 
 func (t *mapTypeStruct) Key() Type {
@@ -253,7 +253,7 @@
 }
 
 func newChanTypeStruct(name, typestring string, dir int, elem *stubType) *chanTypeStruct {
-	return &chanTypeStruct( commonType(ChanKind, typestring, name, ptrsize), elem, dir)
+	return &chanTypeStruct{ commonType{ChanKind, typestring, name, ptrsize}, elem, dir}
 }
 
 func (t *chanTypeStruct) Dir() int {
@@ -286,7 +286,7 @@
 }
 
 func newStructTypeStruct(name, typestring string, field []structField) *structTypeStruct {
-	return &structTypeStruct( commonType(StructKind, typestring, name, 0), field)
+	return &structTypeStruct{ commonType{StructKind, typestring, name, 0}, field}
 }
 
 // TODO: not portable; depends on 6g
@@ -339,7 +339,7 @@
 }
 
 func newInterfaceTypeStruct(name, typestring string, field []structField) *interfaceTypeStruct {
-	return &interfaceTypeStruct( commonType(InterfaceKind, typestring, name, interfacesize), field )
+	return &interfaceTypeStruct{ commonType{InterfaceKind, typestring, name, interfacesize}, field }
 }
 
 func (t *interfaceTypeStruct) Field(i int) (name string, typ Type, tag string, offset int) {
@@ -367,7 +367,7 @@
 }
 
 func newFuncTypeStruct(name, typestring string, in, out *structTypeStruct) *funcTypeStruct {
-	return &funcTypeStruct( commonType(FuncKind, typestring, name, 0), in, out )
+	return &funcTypeStruct{ commonType{FuncKind, typestring, name, 0}, in, out }
 }
 
 func (t *funcTypeStruct) Size() int {
diff --git a/src/lib/reflect/value.go b/src/lib/reflect/value.go
index ba430c2..9056d74 100644
--- a/src/lib/reflect/value.go
+++ b/src/lib/reflect/value.go
@@ -48,12 +48,12 @@
 func (c *commonValue) Interface() interface {} {
 	var i interface {};
 	if c.typ.Size() > 8 {	// TODO(rsc): how do we know it is 8?
-		i = sys.Unreflect(c.addr.(uintptr).(uint64), c.typ.String(), true);
+		i = sys.Unreflect(uint64(uintptr(c.addr)), c.typ.String(), true);
 	} else {
 		if uintptr(c.addr) == 0 {
 			panicln("reflect: address 0 for", c.typ.String());
 		}
-		i = sys.Unreflect(uint64(uintptr(*c.addr.(*Addr))), c.typ.String(), false);
+		i = sys.Unreflect(uint64(uintptr(*(*Addr)(c.addr))), c.typ.String(), false);
 	}
 	return i;
 }
@@ -74,7 +74,7 @@
 }
 
 func missingCreator(typ Type, addr Addr) Value {
-	return &missingValueStruct( commonValue(MissingKind, typ, addr) )
+	return &missingValueStruct{ commonValue{MissingKind, typ, addr} }
 }
 
 // -- Int
@@ -90,15 +90,15 @@
 }
 
 func intCreator(typ Type, addr Addr) Value {
-	return &intValueStruct( commonValue(IntKind, typ, addr) )
+	return &intValueStruct{ commonValue{IntKind, typ, addr} }
 }
 
 func (v *intValueStruct) Get() int {
-	return *v.addr.(*int)
+	return *(*int)(v.addr)
 }
 
 func (v *intValueStruct) Set(i int) {
-	*v.addr.(*int) = i
+	*(*int)(v.addr) = i
 }
 
 // -- Int8
@@ -114,15 +114,15 @@
 }
 
 func int8Creator(typ Type, addr Addr) Value {
-	return &int8ValueStruct( commonValue(Int8Kind, typ, addr) )
+	return &int8ValueStruct{ commonValue{Int8Kind, typ, addr} }
 }
 
 func (v *int8ValueStruct) Get() int8 {
-	return *v.addr.(*int8)
+	return *(*int8)(v.addr)
 }
 
 func (v *int8ValueStruct) Set(i int8) {
-	*v.addr.(*int8) = i
+	*(*int8)(v.addr) = i
 }
 
 // -- Int16
@@ -138,15 +138,15 @@
 }
 
 func int16Creator(typ Type, addr Addr) Value {
-	return &int16ValueStruct( commonValue(Int16Kind, typ, addr) )
+	return &int16ValueStruct{ commonValue{Int16Kind, typ, addr} }
 }
 
 func (v *int16ValueStruct) Get() int16 {
-	return *v.addr.(*int16)
+	return *(*int16)(v.addr)
 }
 
 func (v *int16ValueStruct) Set(i int16) {
-	*v.addr.(*int16) = i
+	*(*int16)(v.addr) = i
 }
 
 // -- Int32
@@ -162,15 +162,15 @@
 }
 
 func int32Creator(typ Type, addr Addr) Value {
-	return &int32ValueStruct( commonValue(Int32Kind, typ, addr) )
+	return &int32ValueStruct{ commonValue{Int32Kind, typ, addr} }
 }
 
 func (v *int32ValueStruct) Get() int32 {
-	return *v.addr.(*int32)
+	return *(*int32)(v.addr)
 }
 
 func (v *int32ValueStruct) Set(i int32) {
-	*v.addr.(*int32) = i
+	*(*int32)(v.addr) = i
 }
 
 // -- Int64
@@ -186,15 +186,15 @@
 }
 
 func int64Creator(typ Type, addr Addr) Value {
-	return &int64ValueStruct( commonValue(Int64Kind, typ, addr) )
+	return &int64ValueStruct{ commonValue{Int64Kind, typ, addr} }
 }
 
 func (v *int64ValueStruct) Get() int64 {
-	return *v.addr.(*int64)
+	return *(*int64)(v.addr)
 }
 
 func (v *int64ValueStruct) Set(i int64) {
-	*v.addr.(*int64) = i
+	*(*int64)(v.addr) = i
 }
 
 // -- Uint
@@ -210,15 +210,15 @@
 }
 
 func uintCreator(typ Type, addr Addr) Value {
-	return &uintValueStruct( commonValue(UintKind, typ, addr) )
+	return &uintValueStruct{ commonValue{UintKind, typ, addr} }
 }
 
 func (v *uintValueStruct) Get() uint {
-	return *v.addr.(*uint)
+	return *(*uint)(v.addr)
 }
 
 func (v *uintValueStruct) Set(i uint) {
-	*v.addr.(*uint) = i
+	*(*uint)(v.addr) = i
 }
 
 // -- Uint8
@@ -234,15 +234,15 @@
 }
 
 func uint8Creator(typ Type, addr Addr) Value {
-	return &uint8ValueStruct( commonValue(Uint8Kind, typ, addr) )
+	return &uint8ValueStruct{ commonValue{Uint8Kind, typ, addr} }
 }
 
 func (v *uint8ValueStruct) Get() uint8 {
-	return *v.addr.(*uint8)
+	return *(*uint8)(v.addr)
 }
 
 func (v *uint8ValueStruct) Set(i uint8) {
-	*v.addr.(*uint8) = i
+	*(*uint8)(v.addr) = i
 }
 
 // -- Uint16
@@ -258,15 +258,15 @@
 }
 
 func uint16Creator(typ Type, addr Addr) Value {
-	return &uint16ValueStruct( commonValue(Uint16Kind, typ, addr) )
+	return &uint16ValueStruct{ commonValue{Uint16Kind, typ, addr} }
 }
 
 func (v *uint16ValueStruct) Get() uint16 {
-	return *v.addr.(*uint16)
+	return *(*uint16)(v.addr)
 }
 
 func (v *uint16ValueStruct) Set(i uint16) {
-	*v.addr.(*uint16) = i
+	*(*uint16)(v.addr) = i
 }
 
 // -- Uint32
@@ -282,15 +282,15 @@
 }
 
 func uint32Creator(typ Type, addr Addr) Value {
-	return &uint32ValueStruct( commonValue(Uint32Kind, typ, addr) )
+	return &uint32ValueStruct{ commonValue{Uint32Kind, typ, addr} }
 }
 
 func (v *uint32ValueStruct) Get() uint32 {
-	return *v.addr.(*uint32)
+	return *(*uint32)(v.addr)
 }
 
 func (v *uint32ValueStruct) Set(i uint32) {
-	*v.addr.(*uint32) = i
+	*(*uint32)(v.addr) = i
 }
 
 // -- Uint64
@@ -306,15 +306,15 @@
 }
 
 func uint64Creator(typ Type, addr Addr) Value {
-	return &uint64ValueStruct( commonValue(Uint64Kind, typ, addr) )
+	return &uint64ValueStruct{ commonValue{Uint64Kind, typ, addr} }
 }
 
 func (v *uint64ValueStruct) Get() uint64 {
-	return *v.addr.(*uint64)
+	return *(*uint64)(v.addr)
 }
 
 func (v *uint64ValueStruct) Set(i uint64) {
-	*v.addr.(*uint64) = i
+	*(*uint64)(v.addr) = i
 }
 
 // -- Uintptr
@@ -330,15 +330,15 @@
 }
 
 func uintptrCreator(typ Type, addr Addr) Value {
-	return &uintptrValueStruct( commonValue(UintptrKind, typ, addr) )
+	return &uintptrValueStruct{ commonValue{UintptrKind, typ, addr} }
 }
 
 func (v *uintptrValueStruct) Get() uintptr {
-	return *v.addr.(*uintptr)
+	return *(*uintptr)(v.addr)
 }
 
 func (v *uintptrValueStruct) Set(i uintptr) {
-	*v.addr.(*uintptr) = i
+	*(*uintptr)(v.addr) = i
 }
 
 // -- Float
@@ -354,15 +354,15 @@
 }
 
 func floatCreator(typ Type, addr Addr) Value {
-	return &floatValueStruct( commonValue(FloatKind, typ, addr) )
+	return &floatValueStruct{ commonValue{FloatKind, typ, addr} }
 }
 
 func (v *floatValueStruct) Get() float {
-	return *v.addr.(*float)
+	return *(*float)(v.addr)
 }
 
 func (v *floatValueStruct) Set(f float) {
-	*v.addr.(*float) = f
+	*(*float)(v.addr) = f
 }
 
 // -- Float32
@@ -378,15 +378,15 @@
 }
 
 func float32Creator(typ Type, addr Addr) Value {
-	return &float32ValueStruct( commonValue(Float32Kind, typ, addr) )
+	return &float32ValueStruct{ commonValue{Float32Kind, typ, addr} }
 }
 
 func (v *float32ValueStruct) Get() float32 {
-	return *v.addr.(*float32)
+	return *(*float32)(v.addr)
 }
 
 func (v *float32ValueStruct) Set(f float32) {
-	*v.addr.(*float32) = f
+	*(*float32)(v.addr) = f
 }
 
 // -- Float64
@@ -402,15 +402,15 @@
 }
 
 func float64Creator(typ Type, addr Addr) Value {
-	return &float64ValueStruct( commonValue(Float64Kind, typ, addr) )
+	return &float64ValueStruct{ commonValue{Float64Kind, typ, addr} }
 }
 
 func (v *float64ValueStruct) Get() float64 {
-	return *v.addr.(*float64)
+	return *(*float64)(v.addr)
 }
 
 func (v *float64ValueStruct) Set(f float64) {
-	*v.addr.(*float64) = f
+	*(*float64)(v.addr) = f
 }
 
 // -- Float80
@@ -426,17 +426,17 @@
 }
 
 func float80Creator(typ Type, addr Addr) Value {
-	return &float80ValueStruct( commonValue(Float80Kind, typ, addr) )
+	return &float80ValueStruct{ commonValue{Float80Kind, typ, addr} }
 }
 
 /*
 BUG: can't gen code for float80s
 func (v *Float80ValueStruct) Get() float80 {
-	return *v.addr.(*float80)
+	return *(*float80)(v.addr)
 }
 
 func (v *Float80ValueStruct) Set(f float80) {
-	*v.addr.(*float80) = f
+	*(*float80)(v.addr) = f
 }
 */
 
@@ -453,15 +453,15 @@
 }
 
 func stringCreator(typ Type, addr Addr) Value {
-	return &stringValueStruct( commonValue(StringKind, typ, addr) )
+	return &stringValueStruct{ commonValue{StringKind, typ, addr} }
 }
 
 func (v *stringValueStruct) Get() string {
-	return *v.addr.(*string)
+	return *(*string)(v.addr)
 }
 
 func (v *stringValueStruct) Set(s string) {
-	*v.addr.(*string) = s
+	*(*string)(v.addr) = s
 }
 
 // -- Bool
@@ -477,15 +477,15 @@
 }
 
 func boolCreator(typ Type, addr Addr) Value {
-	return &boolValueStruct( commonValue(BoolKind, typ, addr) )
+	return &boolValueStruct{ commonValue{BoolKind, typ, addr} }
 }
 
 func (v *boolValueStruct) Get() bool {
-	return *v.addr.(*bool)
+	return *(*bool)(v.addr)
 }
 
 func (v *boolValueStruct) Set(b bool) {
-	*v.addr.(*bool) = b
+	*(*bool)(v.addr) = b
 }
 
 // -- Pointer
@@ -502,7 +502,7 @@
 }
 
 func (v *ptrValueStruct) Get() Addr {
-	return *v.addr.(*Addr)
+	return *(*Addr)(v.addr)
 }
 
 func (v *ptrValueStruct) Sub() Value {
@@ -516,11 +516,11 @@
 		panicln("reflect: incompatible types in PtrValue.SetSub:",
 			a.String(), b.String());
 	}
-	*v.addr.(*Addr) = subv.Addr();
+	*(*Addr)(v.addr) = subv.Addr();
 }
 
 func ptrCreator(typ Type, addr Addr) Value {
-	return &ptrValueStruct( commonValue(PtrKind, typ, addr) );
+	return &ptrValueStruct{ commonValue{PtrKind, typ, addr} };
 }
 
 // -- Array
@@ -644,7 +644,7 @@
 		v.typ = typ;
 		v.elemtype = arraytype.Elem();
 		v.elemsize = v.elemtype.Size();
-		v.slice = addr.(*runtimeSlice);
+		v.slice = (*runtimeSlice)(addr);
 		return v;
 	}
 	v := new(arrayValueStruct);
@@ -670,7 +670,7 @@
 }
 
 func mapCreator(typ Type, addr Addr) Value {
-	return &mapValueStruct( commonValue(MapKind, typ, addr) )
+	return &mapValueStruct{ commonValue{MapKind, typ, addr} }
 }
 
 func (v *mapValueStruct) Len() int {
@@ -693,7 +693,7 @@
 }
 
 func chanCreator(typ Type, addr Addr) Value {
-	return &chanValueStruct( commonValue(ChanKind, typ, addr) )
+	return &chanValueStruct{ commonValue{ChanKind, typ, addr} }
 }
 
 // -- Struct
@@ -720,7 +720,7 @@
 func structCreator(typ Type, addr Addr) Value {
 	t := typ.(StructType);
 	nfield := t.Len();
-	v := &structValueStruct( commonValue(StructKind, typ, addr), make([]Value, nfield) );
+	v := &structValueStruct{ commonValue{StructKind, typ, addr}, make([]Value, nfield) };
 	for i := 0; i < nfield; i++ {
 		name, ftype, str, offset := t.Field(i);
 		addr_uint := uintptr(addr) + uintptr(offset);
@@ -742,11 +742,11 @@
 }
 
 func (v *interfaceValueStruct) Get() interface{} {
-	return *v.addr.(*interface{})
+	return *(*interface{})(v.addr)
 }
 
 func interfaceCreator(typ Type, addr Addr) Value {
-	return &interfaceValueStruct( commonValue(InterfaceKind, typ, addr) )
+	return &interfaceValueStruct{ commonValue{InterfaceKind, typ, addr} }
 }
 
 // -- Func
@@ -760,10 +760,10 @@
 }
 
 func funcCreator(typ Type, addr Addr) Value {
-	return &funcValueStruct( commonValue(FuncKind, typ, addr) )
+	return &funcValueStruct{ commonValue{FuncKind, typ, addr} }
 }
 
-var creator = map[int] creatorFn (
+var creator = map[int] creatorFn {
 	MissingKind : missingCreator,
 	IntKind : intCreator,
 	Int8Kind : int8Creator,
@@ -789,7 +789,7 @@
 	StructKind : structCreator,
 	InterfaceKind : interfaceCreator,
 	FuncKind : funcCreator,
-)
+}
 
 var typecache = make(map[string] Type);
 
@@ -858,13 +858,13 @@
 		for i := uintptr(0); i < end; i += 8{
 			di := Addr(dstp + i);
 			si := Addr(srcp + i);
-			*di.(*uint64) = *si.(*uint64);
+			*(*uint64)(di) = *(*uint64)(si);
 		}
 	} else {
 		for i := uintptr(0); i < end; i++ {
 			di := Addr(dstp + i);
 			si := Addr(srcp + i);
-			*di.(*byte) = *si.(*byte);
+			*(*byte)(di) = *(*byte)(si);
 		}
 	}
 }
@@ -880,12 +880,12 @@
 
 	if indir {
 		// Content of interface is a pointer.
-		return newValueAddr(typ, value.(uintptr).(Addr));
+		return newValueAddr(typ, Addr(uintptr(value)));
 	}
 
 	// Content of interface is a value;
 	// need a permanent copy to take its address.
 	ap := new(uint64);
 	*ap = value;
-	return newValueAddr(typ, ap.(Addr));
+	return newValueAddr(typ, Addr(ap));
 }
diff --git a/src/lib/regexp/all_test.go b/src/lib/regexp/all_test.go
index 3c2e8ba..5e97549 100644
--- a/src/lib/regexp/all_test.go
+++ b/src/lib/regexp/all_test.go
@@ -10,7 +10,7 @@
 	"testing";
 )
 
-var good_re = []string(
+var good_re = []string{
 	``,
 	`.`,
 	`^.$`,
@@ -27,27 +27,27 @@
 	`[]`,
 	`[abc]`,
 	`[^1234]`,
-)
+}
 
 // TODO: nice to do this with a map
 type stringError struct {
 	re	string;
 	err	*os.Error;
 }
-var bad_re = []stringError(
-	stringError( `*`,	 	regexp.ErrBareClosure ),
-	stringError( `(abc`,	regexp.ErrUnmatchedLpar ),
-	stringError( `abc)`,	regexp.ErrUnmatchedRpar ),
-	stringError( `x[a-z`,	regexp.ErrUnmatchedLbkt ),
-	stringError( `abc]`,	regexp.ErrUnmatchedRbkt ),
-	stringError( `[z-a]`,	regexp.ErrBadRange ),
-	stringError( `abc\`,	regexp.ErrExtraneousBackslash ),
-	stringError( `a**`,	regexp.ErrBadClosure ),
-	stringError( `a*+`,	regexp.ErrBadClosure ),
-	stringError( `a??`,	regexp.ErrBadClosure ),
-	stringError( `*`,	 	regexp.ErrBareClosure ),
-	stringError( `\x`,	regexp.ErrBadBackslash ),
-)
+var bad_re = []stringError{
+	stringError{ `*`,	 	regexp.ErrBareClosure },
+	stringError{ `(abc`,	regexp.ErrUnmatchedLpar },
+	stringError{ `abc)`,	regexp.ErrUnmatchedRpar },
+	stringError{ `x[a-z`,	regexp.ErrUnmatchedLbkt },
+	stringError{ `abc]`,	regexp.ErrUnmatchedRbkt },
+	stringError{ `[z-a]`,	regexp.ErrBadRange },
+	stringError{ `abc\`,	regexp.ErrExtraneousBackslash },
+	stringError{ `a**`,	regexp.ErrBadClosure },
+	stringError{ `a*+`,	regexp.ErrBadClosure },
+	stringError{ `a??`,	regexp.ErrBadClosure },
+	stringError{ `*`,	 	regexp.ErrBareClosure },
+	stringError{ `\x`,	regexp.ErrBadBackslash },
+}
 
 type vec []int;
 
@@ -57,33 +57,33 @@
 	match	vec;
 }
 
-var matches = []tester (
-	tester( ``,	"",	vec(0,0) ),
-	tester( `a`,	"a",	vec(0,1) ),
-	tester( `x`,	"y",	vec() ),
-	tester( `b`,	"abc",	vec(1,2) ),
-	tester( `.`,	"a",	vec(0,1) ),
-	tester( `.*`,	"abcdef",	vec(0,6) ),
-	tester( `^abcd$`,	"abcd",	vec(0,4) ),
-	tester( `^bcd'`,	"abcdef",	vec() ),
-	tester( `^abcd$`,	"abcde",	vec() ),
-	tester( `a+`,	"baaab",	vec(1,4) ),
-	tester( `a*`,	"baaab",	vec(0,0) ),
-	tester( `[a-z]+`,	"abcd",	vec(0,4) ),
-	tester( `[^a-z]+`,	"ab1234cd",	vec(2,6) ),
-	tester( `[a\-\]z]+`,	"az]-bcz",	vec(0,4) ),
-	tester( `[日本語]+`,	"日本語日本語",	vec(0,18) ),
-	tester( `()`,	"",	vec(0,0, 0,0) ),
-	tester( `(a)`,	"a",	vec(0,1, 0,1) ),
-	tester( `(.)(.)`,	"日a",	vec(0,4, 0,3, 3,4) ),
-	tester( `(.*)`,	"",	vec(0,0, 0,0) ),
-	tester( `(.*)`,	"abcd",	vec(0,4, 0,4) ),
-	tester( `(..)(..)`,	"abcd",	vec(0,4, 0,2, 2,4) ),
-	tester( `(([^xyz]*)(d))`,	"abcd",	vec(0,4, 0,4, 0,3, 3,4) ),
-	tester( `((a|b|c)*(d))`,	"abcd",	vec(0,4, 0,4, 2,3, 3,4) ),
-	tester( `(((a|b|c)*)(d))`,	"abcd",	vec(0,4, 0,4, 0,3, 2,3, 3,4) ),
-	tester( `a*(|(b))c*`,	"aacc",	vec(0,4, 2,2, -1,-1) ),
-)
+var matches = []tester {
+	tester{ ``,	"",	vec{0,0} },
+	tester{ `a`,	"a",	vec{0,1} },
+	tester{ `x`,	"y",	vec{} },
+	tester{ `b`,	"abc",	vec{1,2} },
+	tester{ `.`,	"a",	vec{0,1} },
+	tester{ `.*`,	"abcdef",	vec{0,6} },
+	tester{ `^abcd$`,	"abcd",	vec{0,4} },
+	tester{ `^bcd'`,	"abcdef",	vec{} },
+	tester{ `^abcd$`,	"abcde",	vec{} },
+	tester{ `a+`,	"baaab",	vec{1,4} },
+	tester{ `a*`,	"baaab",	vec{0,0} },
+	tester{ `[a-z]+`,	"abcd",	vec{0,4} },
+	tester{ `[^a-z]+`,	"ab1234cd",	vec{2,6} },
+	tester{ `[a\-\]z]+`,	"az]-bcz",	vec{0,4} },
+	tester{ `[日本語]+`,	"日本語日本語",	vec{0,18} },
+	tester{ `()`,	"",	vec{0,0, 0,0} },
+	tester{ `(a)`,	"a",	vec{0,1, 0,1} },
+	tester{ `(.)(.)`,	"日a",	vec{0,4, 0,3, 3,4} },
+	tester{ `(.*)`,	"",	vec{0,0, 0,0} },
+	tester{ `(.*)`,	"abcd",	vec{0,4, 0,4} },
+	tester{ `(..)(..)`,	"abcd",	vec{0,4, 0,2, 2,4} },
+	tester{ `(([^xyz]*)(d))`,	"abcd",	vec{0,4, 0,4, 0,3, 3,4} },
+	tester{ `((a|b|c)*(d))`,	"abcd",	vec{0,4, 0,4, 2,3, 3,4} },
+	tester{ `(((a|b|c)*)(d))`,	"abcd",	vec{0,4, 0,4, 0,3, 2,3, 3,4} },
+	tester{ `a*(|(b))c*`,	"aacc",	vec{0,4, 2,2, -1,-1} },
+}
 
 func compileTest(t *testing.T, expr string, error *os.Error) regexp.Regexp {
 	re, err := regexp.Compile(expr);
diff --git a/src/lib/sort_test.go b/src/lib/sort_test.go
index f9d924c..aa80aa1 100644
--- a/src/lib/sort_test.go
+++ b/src/lib/sort_test.go
@@ -12,9 +12,9 @@
 )
 
 
-var ints = [...]int(74, 59, 238, -784, 9845, 959, 905, 0, 0, 42, 7586, -5467984, 7586)
-var floats = [...]float(74.3, 59.0, 238.2, -784.0, 2.3, 9845.768, -959.7485, 905, 7.8, 7.8)
-var strings = [...]string("", "Hello", "foo", "bar", "foo", "f00", "%*&^*&^&", "***")
+var ints = [...]int{74, 59, 238, -784, 9845, 959, 905, 0, 0, 42, 7586, -5467984, 7586}
+var floats = [...]float{74.3, 59.0, 238.2, -784.0, 2.3, 9845.768, -959.7485, 905, 7.8, 7.8}
+var strings = [...]string{"", "Hello", "foo", "bar", "foo", "f00", "%*&^*&^&", "***"}
 
 func TestSortIntArray(t *testing.T) {
 	data := ints;
@@ -134,9 +134,9 @@
 }
 
 func TestBentleyMcIlroy(t *testing.T) {
-	sizes := []int(100, 1023, 1024, 1025);
-	dists := []string("sawtooth", "rand", "stagger", "plateau", "shuffle");
-	modes := []string("copy", "reverse", "reverse1", "reverse2", "sort", "dither");
+	sizes := []int{100, 1023, 1024, 1025};
+	dists := []string{"sawtooth", "rand", "stagger", "plateau", "shuffle"};
+	modes := []string{"copy", "reverse", "reverse1", "reverse2", "sort", "dither"};
 	var tmp1, tmp2 [1025]int;
 	for ni := 0; ni < len(sizes); ni++ {
 		n := sizes[ni];
@@ -205,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);
+					d := &testingData{desc, t, mdata[0:n], n*lg(n)*12/10, 0};
 					sort.Sort(d);
 
 					// If we were testing C qsort, we'd have to make a copy
diff --git a/src/lib/strconv/atof.go b/src/lib/strconv/atof.go
index d1a0f4a..3585944 100644
--- a/src/lib/strconv/atof.go
+++ b/src/lib/strconv/atof.go
@@ -106,9 +106,9 @@
 }
 
 // decimal power of ten to binary power of two.
-var powtab = []int(
+var powtab = []int{
 	1, 3, 6, 9, 13, 16, 19, 23, 26
-)
+}
 
 func decimalToFloatBits(neg bool, d *decimal, trunc bool, flt *floatInfo) (b uint64, overflow bool) {
 	var exp int;
@@ -232,14 +232,14 @@
 }
 
 // Exact powers of 10.
-var float64pow10 = []float64 (
+var float64pow10 = []float64 {
 	1e0, 1e1, 1e2, 1e3, 1e4, 1e5, 1e6, 1e7, 1e8, 1e9,
 	1e10, 1e11, 1e12, 1e13, 1e14, 1e15, 1e16, 1e17, 1e18, 1e19,
 	1e20, 1e21, 1e22
-)
-var float32pow10 = []float32 (
+}
+var float32pow10 = []float32 {
 	1e0, 1e1, 1e2, 1e3, 1e4, 1e5, 1e6, 1e7, 1e8, 1e9, 1e10
-)
+}
 
 // If possible to convert decimal d to 64-bit float f exactly,
 // entirely in floating-point math, do so, avoiding the expense of decimalToFloatBits.
diff --git a/src/lib/strconv/atof_test.go b/src/lib/strconv/atof_test.go
index abc1998..7f1f0a1 100644
--- a/src/lib/strconv/atof_test.go
+++ b/src/lib/strconv/atof_test.go
@@ -16,80 +16,80 @@
 	err *os.Error;
 }
 
-var atoftests = []atofTest (
-	atofTest( "", "0", os.EINVAL ),
-	atofTest( "1", "1", nil ),
-	atofTest( "+1", "1", nil ),
-	atofTest( "1x", "0", os.EINVAL ),
-	atofTest( "1.1.", "0", os.EINVAL ),
-	atofTest( "1e23", "1e+23", nil ),
-	atofTest( "100000000000000000000000", "1e+23", nil ),
-	atofTest( "1e-100", "1e-100", nil ),
-	atofTest( "123456700", "1.234567e+08", nil ),
-	atofTest( "99999999999999974834176", "9.999999999999997e+22", nil ),
-	atofTest( "100000000000000000000001", "1.0000000000000001e+23", nil ),
-	atofTest( "100000000000000008388608", "1.0000000000000001e+23", nil ),
-	atofTest( "100000000000000016777215", "1.0000000000000001e+23", nil ),
-	atofTest( "100000000000000016777216", "1.0000000000000003e+23", nil ),
-	atofTest( "-1", "-1", nil ),
-	atofTest( "-0", "-0", nil ),
-	atofTest( "1e-20", "1e-20", nil ),
-	atofTest( "625e-3", "0.625", nil ),
+var atoftests = []atofTest {
+	atofTest{ "", "0", os.EINVAL },
+	atofTest{ "1", "1", nil },
+	atofTest{ "+1", "1", nil },
+	atofTest{ "1x", "0", os.EINVAL },
+	atofTest{ "1.1.", "0", os.EINVAL },
+	atofTest{ "1e23", "1e+23", nil },
+	atofTest{ "100000000000000000000000", "1e+23", nil },
+	atofTest{ "1e-100", "1e-100", nil },
+	atofTest{ "123456700", "1.234567e+08", nil },
+	atofTest{ "99999999999999974834176", "9.999999999999997e+22", nil },
+	atofTest{ "100000000000000000000001", "1.0000000000000001e+23", nil },
+	atofTest{ "100000000000000008388608", "1.0000000000000001e+23", nil },
+	atofTest{ "100000000000000016777215", "1.0000000000000001e+23", nil },
+	atofTest{ "100000000000000016777216", "1.0000000000000003e+23", nil },
+	atofTest{ "-1", "-1", nil },
+	atofTest{ "-0", "-0", nil },
+	atofTest{ "1e-20", "1e-20", nil },
+	atofTest{ "625e-3", "0.625", nil },
 
 	// largest float64
-	atofTest( "1.7976931348623157e308", "1.7976931348623157e+308", nil ),
-	atofTest( "-1.7976931348623157e308", "-1.7976931348623157e+308", nil ),
+	atofTest{ "1.7976931348623157e308", "1.7976931348623157e+308", nil },
+	atofTest{ "-1.7976931348623157e308", "-1.7976931348623157e+308", nil },
 	// next float64 - too large
-	atofTest( "1.7976931348623159e308", "+Inf", os.ERANGE ),
-	atofTest( "-1.7976931348623159e308", "-Inf", os.ERANGE ),
+	atofTest{ "1.7976931348623159e308", "+Inf", os.ERANGE },
+	atofTest{ "-1.7976931348623159e308", "-Inf", os.ERANGE },
 	// the border is ...158079
 	// borderline - okay
-	atofTest( "1.7976931348623158e308", "1.7976931348623157e+308", nil ),
-	atofTest( "-1.7976931348623158e308", "-1.7976931348623157e+308", nil ),
+	atofTest{ "1.7976931348623158e308", "1.7976931348623157e+308", nil },
+	atofTest{ "-1.7976931348623158e308", "-1.7976931348623157e+308", nil },
 	// borderline - too large
-	atofTest( "1.797693134862315808e308", "+Inf", os.ERANGE ),
-	atofTest( "-1.797693134862315808e308", "-Inf", os.ERANGE ),
+	atofTest{ "1.797693134862315808e308", "+Inf", os.ERANGE },
+	atofTest{ "-1.797693134862315808e308", "-Inf", os.ERANGE },
 
 	// a little too large
-	atofTest( "1e308", "1e+308", nil ),
-	atofTest( "2e308", "+Inf", os.ERANGE ),
-	atofTest( "1e309", "+Inf", os.ERANGE ),
+	atofTest{ "1e308", "1e+308", nil },
+	atofTest{ "2e308", "+Inf", os.ERANGE },
+	atofTest{ "1e309", "+Inf", os.ERANGE },
 
 	// way too large
-	atofTest( "1e310", "+Inf", os.ERANGE ),
-	atofTest( "-1e310", "-Inf", os.ERANGE ),
-	atofTest( "1e400", "+Inf", os.ERANGE ),
-	atofTest( "-1e400", "-Inf", os.ERANGE ),
-	atofTest( "1e400000", "+Inf", os.ERANGE ),
-	atofTest( "-1e400000", "-Inf", os.ERANGE ),
+	atofTest{ "1e310", "+Inf", os.ERANGE },
+	atofTest{ "-1e310", "-Inf", os.ERANGE },
+	atofTest{ "1e400", "+Inf", os.ERANGE },
+	atofTest{ "-1e400", "-Inf", os.ERANGE },
+	atofTest{ "1e400000", "+Inf", os.ERANGE },
+	atofTest{ "-1e400000", "-Inf", os.ERANGE },
 
 	// denormalized
-	atofTest( "1e-305", "1e-305", nil ),
-	atofTest( "1e-306", "1e-306", nil ),
-	atofTest( "1e-307", "1e-307", nil ),
-	atofTest( "1e-308", "1e-308", nil ),
-	atofTest( "1e-309", "1e-309", nil ),
-	atofTest( "1e-310", "1e-310", nil ),
-	atofTest( "1e-322", "1e-322", nil ),
+	atofTest{ "1e-305", "1e-305", nil },
+	atofTest{ "1e-306", "1e-306", nil },
+	atofTest{ "1e-307", "1e-307", nil },
+	atofTest{ "1e-308", "1e-308", nil },
+	atofTest{ "1e-309", "1e-309", nil },
+	atofTest{ "1e-310", "1e-310", nil },
+	atofTest{ "1e-322", "1e-322", nil },
 	// smallest denormal
-	atofTest( "5e-324", "5e-324", nil ),
+	atofTest{ "5e-324", "5e-324", nil },
 	// too small
-	atofTest( "4e-324", "0", nil ),
+	atofTest{ "4e-324", "0", nil },
 	// way too small
-	atofTest( "1e-350", "0", nil ),
-	atofTest( "1e-400000", "0", nil ),
+	atofTest{ "1e-350", "0", nil },
+	atofTest{ "1e-400000", "0", nil },
 
 	// try to overflow exponent
-	atofTest( "1e-4294967296", "0", nil ),
-	atofTest( "1e+4294967296", "+Inf", os.ERANGE ),
-	atofTest( "1e-18446744073709551616", "0", nil ),
-	atofTest( "1e+18446744073709551616", "+Inf", os.ERANGE ),
+	atofTest{ "1e-4294967296", "0", nil },
+	atofTest{ "1e+4294967296", "+Inf", os.ERANGE },
+	atofTest{ "1e-18446744073709551616", "0", nil },
+	atofTest{ "1e+18446744073709551616", "+Inf", os.ERANGE },
 
 	// Parse errors
-	atofTest( "1e", "0", os.EINVAL ),
-	atofTest( "1e-", "0", os.EINVAL ),
-	atofTest( ".e-1", "0", os.EINVAL ),
-)
+	atofTest{ "1e", "0", os.EINVAL },
+	atofTest{ "1e-", "0", os.EINVAL },
+	atofTest{ ".e-1", "0", os.EINVAL },
+}
 
 func testAtof(t *testing.T, opt bool) {
 	oldopt := strconv.optimize;
diff --git a/src/lib/strconv/atoi_test.go b/src/lib/strconv/atoi_test.go
index 0128eb7..3940ebc 100644
--- a/src/lib/strconv/atoi_test.go
+++ b/src/lib/strconv/atoi_test.go
@@ -17,26 +17,26 @@
 	err *os.Error;
 }
 
-var atoui64tests = []atoui64Test (
-	atoui64Test("", 0, os.EINVAL),
-	atoui64Test("0", 0, nil),
-	atoui64Test("1", 1, nil),
-	atoui64Test("12345", 12345, nil),
-	atoui64Test("012345", 012345, nil),
-	atoui64Test("0x12345", 0x12345, nil),
-	atoui64Test("0X12345", 0x12345, nil),
-	atoui64Test("12345x", 0, os.EINVAL),
-	atoui64Test("98765432100", 98765432100, nil),
-	atoui64Test("18446744073709551615", 1<<64-1, nil),
-	atoui64Test("18446744073709551616", 1<<64-1, os.ERANGE),
-	atoui64Test("18446744073709551620", 1<<64-1, os.ERANGE),
-	atoui64Test("0xFFFFFFFFFFFFFFFF", 1<<64-1, nil),
-	atoui64Test("0x10000000000000000", 1<<64-1, os.ERANGE),
-	atoui64Test("01777777777777777777777", 1<<64-1, nil),
-	atoui64Test("01777777777777777777778", 0, os.EINVAL),
-	atoui64Test("02000000000000000000000", 1<<64-1, os.ERANGE),
-	atoui64Test("0200000000000000000000", 1<<61, nil),
-)
+var atoui64tests = []atoui64Test {
+	atoui64Test{"", 0, os.EINVAL},
+	atoui64Test{"0", 0, nil},
+	atoui64Test{"1", 1, nil},
+	atoui64Test{"12345", 12345, nil},
+	atoui64Test{"012345", 012345, nil},
+	atoui64Test{"0x12345", 0x12345, nil},
+	atoui64Test{"0X12345", 0x12345, nil},
+	atoui64Test{"12345x", 0, os.EINVAL},
+	atoui64Test{"98765432100", 98765432100, nil},
+	atoui64Test{"18446744073709551615", 1<<64-1, nil},
+	atoui64Test{"18446744073709551616", 1<<64-1, os.ERANGE},
+	atoui64Test{"18446744073709551620", 1<<64-1, os.ERANGE},
+	atoui64Test{"0xFFFFFFFFFFFFFFFF", 1<<64-1, nil},
+	atoui64Test{"0x10000000000000000", 1<<64-1, os.ERANGE},
+	atoui64Test{"01777777777777777777777", 1<<64-1, nil},
+	atoui64Test{"01777777777777777777778", 0, os.EINVAL},
+	atoui64Test{"02000000000000000000000", 1<<64-1, os.ERANGE},
+	atoui64Test{"0200000000000000000000", 1<<61, nil},
+}
 
 type atoi64Test struct {
 	in string;
@@ -44,29 +44,29 @@
 	err *os.Error;
 }
 
-var atoi64test = []atoi64Test (
-	atoi64Test("", 0, os.EINVAL),
-	atoi64Test("0", 0, nil),
-	atoi64Test("-0", 0, nil),
-	atoi64Test("1", 1, nil),
-	atoi64Test("-1", -1, nil),
-	atoi64Test("12345", 12345, nil),
-	atoi64Test("-12345", -12345, nil),
-	atoi64Test("012345", 012345, nil),
-	atoi64Test("-012345", -012345, nil),
-	atoi64Test("0x12345", 0x12345, nil),
-	atoi64Test("-0X12345", -0x12345, nil),
-	atoi64Test("12345x", 0, os.EINVAL),
-	atoi64Test("-12345x", 0, os.EINVAL),
-	atoi64Test("98765432100", 98765432100, nil),
-	atoi64Test("-98765432100", -98765432100, nil),
-	atoi64Test("9223372036854775807", 1<<63-1, nil),
-	atoi64Test("-9223372036854775807", -(1<<63-1), nil),
-	atoi64Test("9223372036854775808", 1<<63-1, os.ERANGE),
-	atoi64Test("-9223372036854775808", -1<<63, nil),
-	atoi64Test("9223372036854775809", 1<<63-1, os.ERANGE),
-	atoi64Test("-9223372036854775809", -1<<63, os.ERANGE),
-)
+var atoi64test = []atoi64Test {
+	atoi64Test{"", 0, os.EINVAL},
+	atoi64Test{"0", 0, nil},
+	atoi64Test{"-0", 0, nil},
+	atoi64Test{"1", 1, nil},
+	atoi64Test{"-1", -1, nil},
+	atoi64Test{"12345", 12345, nil},
+	atoi64Test{"-12345", -12345, nil},
+	atoi64Test{"012345", 012345, nil},
+	atoi64Test{"-012345", -012345, nil},
+	atoi64Test{"0x12345", 0x12345, nil},
+	atoi64Test{"-0X12345", -0x12345, nil},
+	atoi64Test{"12345x", 0, os.EINVAL},
+	atoi64Test{"-12345x", 0, os.EINVAL},
+	atoi64Test{"98765432100", 98765432100, nil},
+	atoi64Test{"-98765432100", -98765432100, nil},
+	atoi64Test{"9223372036854775807", 1<<63-1, nil},
+	atoi64Test{"-9223372036854775807", -(1<<63-1), nil},
+	atoi64Test{"9223372036854775808", 1<<63-1, os.ERANGE},
+	atoi64Test{"-9223372036854775808", -1<<63, nil},
+	atoi64Test{"9223372036854775809", 1<<63-1, os.ERANGE},
+	atoi64Test{"-9223372036854775809", -1<<63, os.ERANGE},
+}
 
 type atoui32Test struct {
 	in string;
@@ -74,19 +74,19 @@
 	err *os.Error;
 }
 
-var atoui32tests = []atoui32Test (
-	atoui32Test("", 0, os.EINVAL),
-	atoui32Test("0", 0, nil),
-	atoui32Test("1", 1, nil),
-	atoui32Test("12345", 12345, nil),
-	atoui32Test("012345", 012345, nil),
-	atoui32Test("0x12345", 0x12345, nil),
-	atoui32Test("0X12345", 0x12345, nil),
-	atoui32Test("12345x", 0, os.EINVAL),
-	atoui32Test("987654321", 987654321, nil),
-	atoui32Test("4294967295", 1<<32-1, nil),
-	atoui32Test("4294967296", 1<<32-1, os.ERANGE),
-)
+var atoui32tests = []atoui32Test {
+	atoui32Test{"", 0, os.EINVAL},
+	atoui32Test{"0", 0, nil},
+	atoui32Test{"1", 1, nil},
+	atoui32Test{"12345", 12345, nil},
+	atoui32Test{"012345", 012345, nil},
+	atoui32Test{"0x12345", 0x12345, nil},
+	atoui32Test{"0X12345", 0x12345, nil},
+	atoui32Test{"12345x", 0, os.EINVAL},
+	atoui32Test{"987654321", 987654321, nil},
+	atoui32Test{"4294967295", 1<<32-1, nil},
+	atoui32Test{"4294967296", 1<<32-1, os.ERANGE},
+}
 
 type atoi32Test struct {
 	in string;
@@ -94,29 +94,29 @@
 	err *os.Error;
 }
 
-var atoi32tests = []atoi32Test (
-	atoi32Test("", 0, os.EINVAL),
-	atoi32Test("0", 0, nil),
-	atoi32Test("-0", 0, nil),
-	atoi32Test("1", 1, nil),
-	atoi32Test("-1", -1, nil),
-	atoi32Test("12345", 12345, nil),
-	atoi32Test("-12345", -12345, nil),
-	atoi32Test("012345", 012345, nil),
-	atoi32Test("-012345", -012345, nil),
-	atoi32Test("0x12345", 0x12345, nil),
-	atoi32Test("-0X12345", -0x12345, nil),
-	atoi32Test("12345x", 0, os.EINVAL),
-	atoi32Test("-12345x", 0, os.EINVAL),
-	atoi32Test("987654321", 987654321, nil),
-	atoi32Test("-987654321", -987654321, nil),
-	atoi32Test("2147483647", 1<<31-1, nil),
-	atoi32Test("-2147483647", -(1<<31-1), nil),
-	atoi32Test("2147483648", 1<<31-1, os.ERANGE),
-	atoi32Test("-2147483648", -1<<31, nil),
-	atoi32Test("2147483649", 1<<31-1, os.ERANGE),
-	atoi32Test("-2147483649", -1<<31, os.ERANGE),
-)
+var atoi32tests = []atoi32Test {
+	atoi32Test{"", 0, os.EINVAL},
+	atoi32Test{"0", 0, nil},
+	atoi32Test{"-0", 0, nil},
+	atoi32Test{"1", 1, nil},
+	atoi32Test{"-1", -1, nil},
+	atoi32Test{"12345", 12345, nil},
+	atoi32Test{"-12345", -12345, nil},
+	atoi32Test{"012345", 012345, nil},
+	atoi32Test{"-012345", -012345, nil},
+	atoi32Test{"0x12345", 0x12345, nil},
+	atoi32Test{"-0X12345", -0x12345, nil},
+	atoi32Test{"12345x", 0, os.EINVAL},
+	atoi32Test{"-12345x", 0, os.EINVAL},
+	atoi32Test{"987654321", 987654321, nil},
+	atoi32Test{"-987654321", -987654321, nil},
+	atoi32Test{"2147483647", 1<<31-1, nil},
+	atoi32Test{"-2147483647", -(1<<31-1), nil},
+	atoi32Test{"2147483648", 1<<31-1, os.ERANGE},
+	atoi32Test{"-2147483648", -1<<31, nil},
+	atoi32Test{"2147483649", 1<<31-1, os.ERANGE},
+	atoi32Test{"-2147483649", -1<<31, os.ERANGE},
+}
 
 func TestAtoui64(t *testing.T) {
 	for i := 0; i < len(atoui64tests); i++ {
diff --git a/src/lib/strconv/decimal.go b/src/lib/strconv/decimal.go
index 37a5ab9..4808e93 100644
--- a/src/lib/strconv/decimal.go
+++ b/src/lib/strconv/decimal.go
@@ -192,7 +192,7 @@
 	cutoff string;	//   minus one digit if original < a.
 }
 
-var leftcheats = []leftCheat (
+var leftcheats = []leftCheat {
 	// Leading digits of 1/2^i = 5^i.
 	// 5^23 is not an exact 64-bit floating point number,
 	// so have to use bc for the math.
@@ -205,35 +205,35 @@
 			int(log2*NR+1), $0, 2**NR)
 	}'
 	 */
-	leftCheat( 0, "" ),
-	leftCheat( 1, "5" ),	// * 2
-	leftCheat( 1, "25" ),	// * 4
-	leftCheat( 1, "125" ),	// * 8
-	leftCheat( 2, "625" ),	// * 16
-	leftCheat( 2, "3125" ),	// * 32
-	leftCheat( 2, "15625" ),	// * 64
-	leftCheat( 3, "78125" ),	// * 128
-	leftCheat( 3, "390625" ),	// * 256
-	leftCheat( 3, "1953125" ),	// * 512
-	leftCheat( 4, "9765625" ),	// * 1024
-	leftCheat( 4, "48828125" ),	// * 2048
-	leftCheat( 4, "244140625" ),	// * 4096
-	leftCheat( 4, "1220703125" ),	// * 8192
-	leftCheat( 5, "6103515625" ),	// * 16384
-	leftCheat( 5, "30517578125" ),	// * 32768
-	leftCheat( 5, "152587890625" ),	// * 65536
-	leftCheat( 6, "762939453125" ),	// * 131072
-	leftCheat( 6, "3814697265625" ),	// * 262144
-	leftCheat( 6, "19073486328125" ),	// * 524288
-	leftCheat( 7, "95367431640625" ),	// * 1048576
-	leftCheat( 7, "476837158203125" ),	// * 2097152
-	leftCheat( 7, "2384185791015625" ),	// * 4194304
-	leftCheat( 7, "11920928955078125" ),	// * 8388608
-	leftCheat( 8, "59604644775390625" ),	// * 16777216
-	leftCheat( 8, "298023223876953125" ),	// * 33554432
-	leftCheat( 8, "1490116119384765625" ),	// * 67108864
-	leftCheat( 9, "7450580596923828125" ),	// * 134217728
-)
+	leftCheat{ 0, "" },
+	leftCheat{ 1, "5" },	// * 2
+	leftCheat{ 1, "25" },	// * 4
+	leftCheat{ 1, "125" },	// * 8
+	leftCheat{ 2, "625" },	// * 16
+	leftCheat{ 2, "3125" },	// * 32
+	leftCheat{ 2, "15625" },	// * 64
+	leftCheat{ 3, "78125" },	// * 128
+	leftCheat{ 3, "390625" },	// * 256
+	leftCheat{ 3, "1953125" },	// * 512
+	leftCheat{ 4, "9765625" },	// * 1024
+	leftCheat{ 4, "48828125" },	// * 2048
+	leftCheat{ 4, "244140625" },	// * 4096
+	leftCheat{ 4, "1220703125" },	// * 8192
+	leftCheat{ 5, "6103515625" },	// * 16384
+	leftCheat{ 5, "30517578125" },	// * 32768
+	leftCheat{ 5, "152587890625" },	// * 65536
+	leftCheat{ 6, "762939453125" },	// * 131072
+	leftCheat{ 6, "3814697265625" },	// * 262144
+	leftCheat{ 6, "19073486328125" },	// * 524288
+	leftCheat{ 7, "95367431640625" },	// * 1048576
+	leftCheat{ 7, "476837158203125" },	// * 2097152
+	leftCheat{ 7, "2384185791015625" },	// * 4194304
+	leftCheat{ 7, "11920928955078125" },	// * 8388608
+	leftCheat{ 8, "59604644775390625" },	// * 16777216
+	leftCheat{ 8, "298023223876953125" },	// * 33554432
+	leftCheat{ 8, "1490116119384765625" },	// * 67108864
+	leftCheat{ 9, "7450580596923828125" },	// * 134217728
+}
 
 // Is the leading prefix of b lexicographically less than s?
 func prefixIsLessThan(b []byte, s string) bool {
diff --git a/src/lib/strconv/decimal_test.go b/src/lib/strconv/decimal_test.go
index 7af0d25..bc82861 100644
--- a/src/lib/strconv/decimal_test.go
+++ b/src/lib/strconv/decimal_test.go
@@ -16,18 +16,18 @@
 	out string;
 }
 
-var shifttests = []shiftTest (
-	shiftTest( 0, -100, "0" ),
-	shiftTest( 0, 100, "0" ),
-	shiftTest( 1, 100, "1267650600228229401496703205376" ),
-	shiftTest( 1, -100,
+var shifttests = []shiftTest {
+	shiftTest{ 0, -100, "0" },
+	shiftTest{ 0, 100, "0" },
+	shiftTest{ 1, 100, "1267650600228229401496703205376" },
+	shiftTest{ 1, -100,
 		"0.00000000000000000000000000000078886090522101180541"
-		"17285652827862296732064351090230047702789306640625" ),
-	shiftTest( 12345678, 8, "3160493568" ),
-	shiftTest( 12345678, -8, "48225.3046875" ),
-	shiftTest( 195312, 9, "99999744" ),
-	shiftTest( 1953125, 9, "1000000000" ),
-)
+		"17285652827862296732064351090230047702789306640625" },
+	shiftTest{ 12345678, 8, "3160493568" },
+	shiftTest{ 12345678, -8, "48225.3046875" },
+	shiftTest{ 195312, 9, "99999744" },
+	shiftTest{ 1953125, 9, "1000000000" },
+}
 
 func TestDecimalShift(t *testing.T) {
 	ok := true;
@@ -48,23 +48,23 @@
 	int uint64;
 }
 
-var roundtests = []roundTest (
-	roundTest( 0, 4, "0", "0", "0", 0 ),
-	roundTest( 12344999, 4, "12340000", "12340000", "12350000", 12340000 ),
-	roundTest( 12345000, 4, "12340000", "12340000", "12350000", 12340000 ),
-	roundTest( 12345001, 4, "12340000", "12350000", "12350000", 12350000 ),
-	roundTest( 23454999, 4, "23450000", "23450000", "23460000", 23450000 ),
-	roundTest( 23455000, 4, "23450000", "23460000", "23460000", 23460000 ),
-	roundTest( 23455001, 4, "23450000", "23460000", "23460000", 23460000 ),
+var roundtests = []roundTest {
+	roundTest{ 0, 4, "0", "0", "0", 0 },
+	roundTest{ 12344999, 4, "12340000", "12340000", "12350000", 12340000 },
+	roundTest{ 12345000, 4, "12340000", "12340000", "12350000", 12340000 },
+	roundTest{ 12345001, 4, "12340000", "12350000", "12350000", 12350000 },
+	roundTest{ 23454999, 4, "23450000", "23450000", "23460000", 23450000 },
+	roundTest{ 23455000, 4, "23450000", "23460000", "23460000", 23460000 },
+	roundTest{ 23455001, 4, "23450000", "23460000", "23460000", 23460000 },
 
-	roundTest( 99994999, 4, "99990000", "99990000", "100000000", 99990000 ),
-	roundTest( 99995000, 4, "99990000", "100000000", "100000000", 100000000 ),
-	roundTest( 99999999, 4, "99990000", "100000000", "100000000", 100000000 ),
+	roundTest{ 99994999, 4, "99990000", "99990000", "100000000", 99990000 },
+	roundTest{ 99995000, 4, "99990000", "100000000", "100000000", 100000000 },
+	roundTest{ 99999999, 4, "99990000", "100000000", "100000000", 100000000 },
 
-	roundTest( 12994999, 4, "12990000", "12990000", "13000000", 12990000 ),
-	roundTest( 12995000, 4, "12990000", "13000000", "13000000", 13000000 ),
-	roundTest( 12999999, 4, "12990000", "13000000", "13000000", 13000000 ),
-)
+	roundTest{ 12994999, 4, "12990000", "12990000", "13000000", 12990000 },
+	roundTest{ 12995000, 4, "12990000", "13000000", "13000000", 13000000 },
+	roundTest{ 12999999, 4, "12990000", "13000000", "13000000", 13000000 },
+}
 
 func TestDecimalRound(t *testing.T) {
 	for i := 0; i < len(roundtests); i++ {
@@ -93,18 +93,18 @@
 	int uint64;
 }
 
-var roundinttests = []roundIntTest (
-	roundIntTest( 0, 100, 0 ),
-	roundIntTest( 512, -8, 2 ),
-	roundIntTest( 513, -8, 2 ),
-	roundIntTest( 640, -8, 2 ),
-	roundIntTest( 641, -8, 3 ),
-	roundIntTest( 384, -8, 2 ),
-	roundIntTest( 385, -8, 2 ),
-	roundIntTest( 383, -8, 1 ),
-	roundIntTest( 1, 100, 1<<64-1 ),
-	roundIntTest( 1000, 0, 1000 ),
-)
+var roundinttests = []roundIntTest {
+	roundIntTest{ 0, 100, 0 },
+	roundIntTest{ 512, -8, 2 },
+	roundIntTest{ 513, -8, 2 },
+	roundIntTest{ 640, -8, 2 },
+	roundIntTest{ 641, -8, 3 },
+	roundIntTest{ 384, -8, 2 },
+	roundIntTest{ 385, -8, 2 },
+	roundIntTest{ 383, -8, 1 },
+	roundIntTest{ 1, 100, 1<<64-1 },
+	roundIntTest{ 1000, 0, 1000 },
+}
 
 func TestDecimalRoundedInteger(t *testing.T) {
 	for i := 0; i < len(roundinttests); i++ {
diff --git a/src/lib/strconv/ftoa.go b/src/lib/strconv/ftoa.go
index 75bb3a2..52835c8 100644
--- a/src/lib/strconv/ftoa.go
+++ b/src/lib/strconv/ftoa.go
@@ -21,8 +21,8 @@
 	expbits uint;
 	bias int;
 }
-var float32info = floatInfo( 23, 8, -127 )
-var float64info = floatInfo( 52, 11, -1023 )
+var float32info = floatInfo{ 23, 8, -127 }
+var float64info = floatInfo{ 52, 11, -1023 }
 
 func fmtB(neg bool, mant uint64, exp int, flt *floatInfo) string
 func fmtE(neg bool, d *decimal, prec int) string
diff --git a/src/lib/strconv/ftoa_test.go b/src/lib/strconv/ftoa_test.go
index 09fdeac..0f0baa5 100644
--- a/src/lib/strconv/ftoa_test.go
+++ b/src/lib/strconv/ftoa_test.go
@@ -24,80 +24,80 @@
 	above1e23 = 100000000000000008388608;
 )
 
-var ftoatests = []ftoaTest (
-	ftoaTest( 1, 'e', 5, "1.00000e+00" ),
-	ftoaTest( 1, 'f', 5, "1.00000" ),
-	ftoaTest( 1, 'g', 5, "1" ),
-	ftoaTest( 1, 'g', -1, "1" ),
-	ftoaTest( 20, 'g', -1, "20" ),
-	ftoaTest( 1234567.8, 'g', -1, "1.2345678e+06" ),
-	ftoaTest( 200000, 'g', -1, "200000" ),
-	ftoaTest( 2000000, 'g', -1, "2e+06" ),
+var ftoatests = []ftoaTest {
+	ftoaTest{ 1, 'e', 5, "1.00000e+00" },
+	ftoaTest{ 1, 'f', 5, "1.00000" },
+	ftoaTest{ 1, 'g', 5, "1" },
+	ftoaTest{ 1, 'g', -1, "1" },
+	ftoaTest{ 20, 'g', -1, "20" },
+	ftoaTest{ 1234567.8, 'g', -1, "1.2345678e+06" },
+	ftoaTest{ 200000, 'g', -1, "200000" },
+	ftoaTest{ 2000000, 'g', -1, "2e+06" },
 
-	ftoaTest( 0, 'e', 5, "0.00000e+00" ),
-	ftoaTest( 0, 'f', 5, "0.00000" ),
-	ftoaTest( 0, 'g', 5, "0" ),
-	ftoaTest( 0, 'g', -1, "0" ),
+	ftoaTest{ 0, 'e', 5, "0.00000e+00" },
+	ftoaTest{ 0, 'f', 5, "0.00000" },
+	ftoaTest{ 0, 'g', 5, "0" },
+	ftoaTest{ 0, 'g', -1, "0" },
 
-	ftoaTest( -1, 'e', 5, "-1.00000e+00" ),
-	ftoaTest( -1, 'f', 5, "-1.00000" ),
-	ftoaTest( -1, 'g', 5, "-1" ),
-	ftoaTest( -1, 'g', -1, "-1" ),
+	ftoaTest{ -1, 'e', 5, "-1.00000e+00" },
+	ftoaTest{ -1, 'f', 5, "-1.00000" },
+	ftoaTest{ -1, 'g', 5, "-1" },
+	ftoaTest{ -1, 'g', -1, "-1" },
 
-	ftoaTest( 12, 'e', 5, "1.20000e+01" ),
-	ftoaTest( 12, 'f', 5, "12.00000" ),
-	ftoaTest( 12, 'g', 5, "12" ),
-	ftoaTest( 12, 'g', -1, "12" ),
+	ftoaTest{ 12, 'e', 5, "1.20000e+01" },
+	ftoaTest{ 12, 'f', 5, "12.00000" },
+	ftoaTest{ 12, 'g', 5, "12" },
+	ftoaTest{ 12, 'g', -1, "12" },
 
-	ftoaTest( 123456700, 'e', 5, "1.23457e+08" ),
-	ftoaTest( 123456700, 'f', 5, "123456700.00000" ),
-	ftoaTest( 123456700, 'g', 5, "1.2346e+08" ),
-	ftoaTest( 123456700, 'g', -1, "1.234567e+08" ),
+	ftoaTest{ 123456700, 'e', 5, "1.23457e+08" },
+	ftoaTest{ 123456700, 'f', 5, "123456700.00000" },
+	ftoaTest{ 123456700, 'g', 5, "1.2346e+08" },
+	ftoaTest{ 123456700, 'g', -1, "1.234567e+08" },
 
-	ftoaTest( 1.2345e6, 'e', 5, "1.23450e+06" ),
-	ftoaTest( 1.2345e6, 'f', 5, "1234500.00000" ),
-	ftoaTest( 1.2345e6, 'g', 5, "1.2345e+06" ),
+	ftoaTest{ 1.2345e6, 'e', 5, "1.23450e+06" },
+	ftoaTest{ 1.2345e6, 'f', 5, "1234500.00000" },
+	ftoaTest{ 1.2345e6, 'g', 5, "1.2345e+06" },
 
-	ftoaTest( 1e23, 'e', 17, "9.99999999999999916e+22" ),
-	ftoaTest( 1e23, 'f', 17, "99999999999999991611392.00000000000000000" ),
-	ftoaTest( 1e23, 'g', 17, "9.9999999999999992e+22" ),
+	ftoaTest{ 1e23, 'e', 17, "9.99999999999999916e+22" },
+	ftoaTest{ 1e23, 'f', 17, "99999999999999991611392.00000000000000000" },
+	ftoaTest{ 1e23, 'g', 17, "9.9999999999999992e+22" },
 
-	ftoaTest( 1e23, 'e', -1, "1e+23" ),
-	ftoaTest( 1e23, 'f', -1, "100000000000000000000000" ),
-	ftoaTest( 1e23, 'g', -1, "1e+23" ),
+	ftoaTest{ 1e23, 'e', -1, "1e+23" },
+	ftoaTest{ 1e23, 'f', -1, "100000000000000000000000" },
+	ftoaTest{ 1e23, 'g', -1, "1e+23" },
 
-	ftoaTest( below1e23, 'e', 17, "9.99999999999999748e+22" ),
-	ftoaTest( below1e23, 'f', 17, "99999999999999974834176.00000000000000000" ),
-	ftoaTest( below1e23, 'g', 17, "9.9999999999999975e+22" ),
+	ftoaTest{ below1e23, 'e', 17, "9.99999999999999748e+22" },
+	ftoaTest{ below1e23, 'f', 17, "99999999999999974834176.00000000000000000" },
+	ftoaTest{ below1e23, 'g', 17, "9.9999999999999975e+22" },
 
-	ftoaTest( below1e23, 'e', -1, "9.999999999999997e+22" ),
-	ftoaTest( below1e23, 'f', -1, "99999999999999970000000" ),
-	ftoaTest( below1e23, 'g', -1, "9.999999999999997e+22" ),
+	ftoaTest{ below1e23, 'e', -1, "9.999999999999997e+22" },
+	ftoaTest{ below1e23, 'f', -1, "99999999999999970000000" },
+	ftoaTest{ below1e23, 'g', -1, "9.999999999999997e+22" },
 
-	ftoaTest( above1e23, 'e', 17, "1.00000000000000008e+23" ),
-	ftoaTest( above1e23, 'f', 17, "100000000000000008388608.00000000000000000" ),
-	ftoaTest( above1e23, 'g', 17, "1.0000000000000001e+23" ),
+	ftoaTest{ above1e23, 'e', 17, "1.00000000000000008e+23" },
+	ftoaTest{ above1e23, 'f', 17, "100000000000000008388608.00000000000000000" },
+	ftoaTest{ above1e23, 'g', 17, "1.0000000000000001e+23" },
 
-	ftoaTest( above1e23, 'e', -1, "1.0000000000000001e+23" ),
-	ftoaTest( above1e23, 'f', -1, "100000000000000010000000" ),
-	ftoaTest( above1e23, 'g', -1, "1.0000000000000001e+23" ),
+	ftoaTest{ above1e23, 'e', -1, "1.0000000000000001e+23" },
+	ftoaTest{ above1e23, 'f', -1, "100000000000000010000000" },
+	ftoaTest{ above1e23, 'g', -1, "1.0000000000000001e+23" },
 
-	ftoaTest( fdiv(5e-304, 1e20), 'g', -1, "5e-324" ),
-	ftoaTest( fdiv(-5e-304, 1e20), 'g', -1, "-5e-324" ),
+	ftoaTest{ fdiv(5e-304, 1e20), 'g', -1, "5e-324" },
+	ftoaTest{ fdiv(-5e-304, 1e20), 'g', -1, "-5e-324" },
 
-	ftoaTest( 32, 'g', -1, "32" ),
-	ftoaTest( 32, 'g', 0, "3e+01" ),
+	ftoaTest{ 32, 'g', -1, "32" },
+	ftoaTest{ 32, 'g', 0, "3e+01" },
 
-	ftoaTest( 100, 'x', -1, "%x" ),
+	ftoaTest{ 100, 'x', -1, "%x" },
 
-	ftoaTest( math.NaN(), 'g', -1, "NaN" ),
-	ftoaTest( -math.NaN(), 'g', -1, "NaN" ),
-	ftoaTest( math.Inf(0), 'g', -1, "+Inf" ),
-	ftoaTest( math.Inf(-1), 'g', -1,  "-Inf" ),
-	ftoaTest( -math.Inf(0), 'g', -1, "-Inf" ),
+	ftoaTest{ math.NaN(), 'g', -1, "NaN" },
+	ftoaTest{ -math.NaN(), 'g', -1, "NaN" },
+	ftoaTest{ math.Inf(0), 'g', -1, "+Inf" },
+	ftoaTest{ math.Inf(-1), 'g', -1,  "-Inf" },
+	ftoaTest{ -math.Inf(0), 'g', -1, "-Inf" },
 
-	ftoaTest( -1, 'b', -1, "-4503599627370496p-52" ),
-)
+	ftoaTest{ -1, 'b', -1, "-4503599627370496p-52" },
+}
 
 func TestFtoa(t *testing.T) {
 	if strconv.FloatSize != 32 {
diff --git a/src/lib/strconv/itoa_test.go b/src/lib/strconv/itoa_test.go
index f67f087..34caf9a 100644
--- a/src/lib/strconv/itoa_test.go
+++ b/src/lib/strconv/itoa_test.go
@@ -17,47 +17,47 @@
 	out string;
 }
 
-var itob64tests = []itob64Test (
-	itob64Test( 0, 10, "0" ),
-	itob64Test( 1, 10, "1" ),
-	itob64Test( -1, 10, "-1" ),
-	itob64Test( 12345678, 10, "12345678" ),
-	itob64Test( -987654321, 10, "-987654321" ),
-	itob64Test( 1<<31-1, 10, "2147483647" ),
-	itob64Test( -1<<31+1, 10, "-2147483647" ),
-	itob64Test( 1<<31, 10, "2147483648" ),
-	itob64Test( -1<<31, 10, "-2147483648" ),
-	itob64Test( 1<<31+1, 10, "2147483649" ),
-	itob64Test( -1<<31-1, 10, "-2147483649" ),
-	itob64Test( 1<<32-1, 10, "4294967295" ),
-	itob64Test( -1<<32+1, 10, "-4294967295" ),
-	itob64Test( 1<<32, 10, "4294967296" ),
-	itob64Test( -1<<32, 10, "-4294967296" ),
-	itob64Test( 1<<32+1, 10, "4294967297" ),
-	itob64Test( -1<<32-1, 10, "-4294967297" ),
-	itob64Test( 1<<50, 10, "1125899906842624" ),
-	itob64Test( 1<<63-1, 10, "9223372036854775807" ),
-	itob64Test( -1<<63+1, 10, "-9223372036854775807" ),
-	itob64Test( -1<<63, 10, "-9223372036854775808" ),
+var itob64tests = []itob64Test {
+	itob64Test{ 0, 10, "0" },
+	itob64Test{ 1, 10, "1" },
+	itob64Test{ -1, 10, "-1" },
+	itob64Test{ 12345678, 10, "12345678" },
+	itob64Test{ -987654321, 10, "-987654321" },
+	itob64Test{ 1<<31-1, 10, "2147483647" },
+	itob64Test{ -1<<31+1, 10, "-2147483647" },
+	itob64Test{ 1<<31, 10, "2147483648" },
+	itob64Test{ -1<<31, 10, "-2147483648" },
+	itob64Test{ 1<<31+1, 10, "2147483649" },
+	itob64Test{ -1<<31-1, 10, "-2147483649" },
+	itob64Test{ 1<<32-1, 10, "4294967295" },
+	itob64Test{ -1<<32+1, 10, "-4294967295" },
+	itob64Test{ 1<<32, 10, "4294967296" },
+	itob64Test{ -1<<32, 10, "-4294967296" },
+	itob64Test{ 1<<32+1, 10, "4294967297" },
+	itob64Test{ -1<<32-1, 10, "-4294967297" },
+	itob64Test{ 1<<50, 10, "1125899906842624" },
+	itob64Test{ 1<<63-1, 10, "9223372036854775807" },
+	itob64Test{ -1<<63+1, 10, "-9223372036854775807" },
+	itob64Test{ -1<<63, 10, "-9223372036854775808" },
 
-	itob64Test( 0, 2, "0" ),
-	itob64Test( 10, 2, "1010" ),
-	itob64Test( -1, 2, "-1" ),
-	itob64Test( 1<<15, 2, "1000000000000000" ),
+	itob64Test{ 0, 2, "0" },
+	itob64Test{ 10, 2, "1010" },
+	itob64Test{ -1, 2, "-1" },
+	itob64Test{ 1<<15, 2, "1000000000000000" },
 
-	itob64Test( -8, 8, "-10" ),
-	itob64Test( 057635436545, 8, "57635436545" ),
-	itob64Test( 1<<24, 8, "100000000" ),
+	itob64Test{ -8, 8, "-10" },
+	itob64Test{ 057635436545, 8, "57635436545" },
+	itob64Test{ 1<<24, 8, "100000000" },
 
-	itob64Test( 16, 16, "10" ),
-	itob64Test( -0x123456789abcdef, 16, "-123456789abcdef" ),
-	itob64Test( 1<<63-1, 16, "7fffffffffffffff" ),
+	itob64Test{ 16, 16, "10" },
+	itob64Test{ -0x123456789abcdef, 16, "-123456789abcdef" },
+	itob64Test{ 1<<63-1, 16, "7fffffffffffffff" },
 
-	itob64Test( 16, 17, "g" ),
-	itob64Test( 25, 25, "10" ),
-	itob64Test( (((((17*35+24)*35+21)*35+34)*35+12)*35+24)*35+32, 35, "holycow" ),
-	itob64Test( (((((17*36+24)*36+21)*36+34)*36+12)*36+24)*36+32, 36, "holycow" ),
-)
+	itob64Test{ 16, 17, "g" },
+	itob64Test{ 25, 25, "10" },
+	itob64Test{ (((((17*35+24)*35+21)*35+34)*35+12)*35+24)*35+32, 35, "holycow" },
+	itob64Test{ (((((17*36+24)*36+21)*36+34)*36+12)*36+24)*36+32, 36, "holycow" },
+}
 
 func TestItoa(t *testing.T) {
 	for i := 0; i < len(itob64tests); i++ {
@@ -102,11 +102,10 @@
 }
 
 // TODO: should be able to call this atoui64tests.
-var uitoa64tests = []uitoa64Test (
-	uitoa64Test( 1<<63-1, "9223372036854775807" ),
-	uitoa64Test( 1<<63, "9223372036854775808" ),
-	uitoa64Test( 1<<63+1, "9223372036854775809" ),
-	uitoa64Test( 1<<64-2, "18446744073709551614" ),
-	uitoa64Test( 1<<64-1, "18446744073709551615" ),
-)
-
+var uitoa64tests = []uitoa64Test {
+	uitoa64Test{ 1<<63-1, "9223372036854775807" },
+	uitoa64Test{ 1<<63, "9223372036854775808" },
+	uitoa64Test{ 1<<63+1, "9223372036854775809" },
+	uitoa64Test{ 1<<64-2, "18446744073709551614" },
+	uitoa64Test{ 1<<64-1, "18446744073709551615" },
+}
diff --git a/src/lib/strconv/quote_test.go b/src/lib/strconv/quote_test.go
index 06d72f7..8421fcd 100644
--- a/src/lib/strconv/quote_test.go
+++ b/src/lib/strconv/quote_test.go
@@ -14,14 +14,14 @@
 	out string;
 }
 
-var quotetests = []quoteTest (
-	quoteTest( "\a\b\f\r\n\t\v", `"\a\b\f\r\n\t\v"` ),
-	quoteTest( "\\", `"\\"` ),
-	quoteTest( "abc\xffdef", `"abc\xffdef"` ),
-	quoteTest( "\u263a", `"\u263a"` ),
-	quoteTest( "\U0010ffff", `"\U0010ffff"` ),
-	quoteTest( "\x04", `"\x04"` ),
-)
+var quotetests = []quoteTest {
+	quoteTest{ "\a\b\f\r\n\t\v", `"\a\b\f\r\n\t\v"` },
+	quoteTest{ "\\", `"\\"` },
+	quoteTest{ "abc\xffdef", `"abc\xffdef"` },
+	quoteTest{ "\u263a", `"\u263a"` },
+	quoteTest{ "\U0010ffff", `"\U0010ffff"` },
+	quoteTest{ "\x04", `"\x04"` },
+}
 
 func TestQuote(t *testing.T) {
 	for i := 0; i < len(quotetests); i++ {
@@ -37,46 +37,46 @@
 	out bool;
 }
 
-var canbackquotetests = []canBackquoteTest (
-	canBackquoteTest( "`", false ),
-	canBackquoteTest( string(0), false ),
-	canBackquoteTest( string(1), false ),
-	canBackquoteTest( string(2), false ),
-	canBackquoteTest( string(3), false ),
-	canBackquoteTest( string(4), false ),
-	canBackquoteTest( string(5), false ),
-	canBackquoteTest( string(6), false ),
-	canBackquoteTest( string(7), false ),
-	canBackquoteTest( string(8), false ),
-	canBackquoteTest( string(9), false ),
-	canBackquoteTest( string(10), false ),
-	canBackquoteTest( string(11), false ),
-	canBackquoteTest( string(12), false ),
-	canBackquoteTest( string(13), false ),
-	canBackquoteTest( string(14), false ),
-	canBackquoteTest( string(15), false ),
-	canBackquoteTest( string(16), false ),
-	canBackquoteTest( string(17), false ),
-	canBackquoteTest( string(18), false ),
-	canBackquoteTest( string(19), false ),
-	canBackquoteTest( string(20), false ),
-	canBackquoteTest( string(21), false ),
-	canBackquoteTest( string(22), false ),
-	canBackquoteTest( string(23), false ),
-	canBackquoteTest( string(24), false ),
-	canBackquoteTest( string(25), false ),
-	canBackquoteTest( string(26), false ),
-	canBackquoteTest( string(27), false ),
-	canBackquoteTest( string(28), false ),
-	canBackquoteTest( string(29), false ),
-	canBackquoteTest( string(30), false ),
-	canBackquoteTest( string(31), false ),
-	canBackquoteTest( `' !"#$%&'()*+,-./:;<=>?@[\]^_{|}~`, true ),
-	canBackquoteTest( `0123456789`, true ),
-	canBackquoteTest( `ABCDEFGHIJKLMNOPQRSTUVWXYZ`, true ),
-	canBackquoteTest( `abcdefghijklmnopqrstuvwxyz`, true ),
-	canBackquoteTest( `☺`, true ),
-)
+var canbackquotetests = []canBackquoteTest {
+	canBackquoteTest{ "`", false },
+	canBackquoteTest{ string(0), false },
+	canBackquoteTest{ string(1), false },
+	canBackquoteTest{ string(2), false },
+	canBackquoteTest{ string(3), false },
+	canBackquoteTest{ string(4), false },
+	canBackquoteTest{ string(5), false },
+	canBackquoteTest{ string(6), false },
+	canBackquoteTest{ string(7), false },
+	canBackquoteTest{ string(8), false },
+	canBackquoteTest{ string(9), false },
+	canBackquoteTest{ string(10), false },
+	canBackquoteTest{ string(11), false },
+	canBackquoteTest{ string(12), false },
+	canBackquoteTest{ string(13), false },
+	canBackquoteTest{ string(14), false },
+	canBackquoteTest{ string(15), false },
+	canBackquoteTest{ string(16), false },
+	canBackquoteTest{ string(17), false },
+	canBackquoteTest{ string(18), false },
+	canBackquoteTest{ string(19), false },
+	canBackquoteTest{ string(20), false },
+	canBackquoteTest{ string(21), false },
+	canBackquoteTest{ string(22), false },
+	canBackquoteTest{ string(23), false },
+	canBackquoteTest{ string(24), false },
+	canBackquoteTest{ string(25), false },
+	canBackquoteTest{ string(26), false },
+	canBackquoteTest{ string(27), false },
+	canBackquoteTest{ string(28), false },
+	canBackquoteTest{ string(29), false },
+	canBackquoteTest{ string(30), false },
+	canBackquoteTest{ string(31), false },
+	canBackquoteTest{ `' !"#$%&'()*+,-./:;<=>?@[\]^_{|}~`, true },
+	canBackquoteTest{ `0123456789`, true },
+	canBackquoteTest{ `ABCDEFGHIJKLMNOPQRSTUVWXYZ`, true },
+	canBackquoteTest{ `abcdefghijklmnopqrstuvwxyz`, true },
+	canBackquoteTest{ `☺`, true },
+}
 
 func TestCanBackquote(t *testing.T) {
 	for i := 0; i < len(canbackquotetests); i++ {
diff --git a/src/lib/strings_test.go b/src/lib/strings_test.go
index 0efe254..2cbf70b 100644
--- a/src/lib/strings_test.go
+++ b/src/lib/strings_test.go
@@ -30,10 +30,10 @@
 	s string;
 	a []string;
 }
-var explodetests = []ExplodeTest (
-	ExplodeTest( abcd,	[]string("a", "b", "c", "d") ),
-	ExplodeTest( faces,	[]string("☺", "☻", "☹" ) ),
-)
+var explodetests = []ExplodeTest {
+	ExplodeTest{ abcd,	[]string{"a", "b", "c", "d"} },
+	ExplodeTest{ faces,	[]string{"☺", "☻", "☹" } },
+}
 func TestExplode(t *testing.T) {
 	for i := 0; i < len(explodetests); i++ {
 		tt := explodetests[i];
@@ -54,16 +54,16 @@
 	sep string;
 	a []string;
 }
-var splittests = []SplitTest (
-	SplitTest( abcd,	"a",	[]string("", "bcd") ),
-	SplitTest( abcd,	"z",	[]string("abcd") ),
-	SplitTest( abcd,	"",	[]string("a", "b", "c", "d") ),
-	SplitTest( commas,	",",	[]string("1", "2", "3", "4") ),
-	SplitTest( dots,	"...",	[]string("1", ".2", ".3", ".4") ),
-	SplitTest( faces,	"☹",	[]string("☺☻", "") ),
-	SplitTest( faces,	"~",	[]string(faces) ),
-	SplitTest( faces,	"",	[]string("☺", "☻", "☹") ),
-)
+var splittests = []SplitTest {
+	SplitTest{ abcd,	"a",	[]string{"", "bcd"} },
+	SplitTest{ abcd,	"z",	[]string{"abcd"} },
+	SplitTest{ abcd,	"",	[]string{"a", "b", "c", "d"} },
+	SplitTest{ commas,	",",	[]string{"1", "2", "3", "4"} },
+	SplitTest{ dots,	"...",	[]string{"1", ".2", ".3", ".4"} },
+	SplitTest{ faces,	"☹",	[]string{"☺☻", ""} },
+	SplitTest{ faces,	"~",	[]string{faces} },
+	SplitTest{ faces,	"",	[]string{"☺", "☻", "☹"} },
+}
 func TestSplit(t *testing.T) {
 	for i := 0; i < len(splittests); i++ {
 		tt := splittests[i];
diff --git a/src/lib/tabwriter/tabwriter.go b/src/lib/tabwriter/tabwriter.go
index 5b02ff2..de37204 100644
--- a/src/lib/tabwriter/tabwriter.go
+++ b/src/lib/tabwriter/tabwriter.go
@@ -202,7 +202,7 @@
 }
 
 
-var newline = []byte('\n')
+var newline = []byte{'\n'}
 
 func (b *Writer) writePadding(textw, cellw int) (err *os.Error) {
 	if b.padbytes[0] == '\t' {
diff --git a/src/lib/time/time.go b/src/lib/time/time.go
index abc1b56..665b1c5 100644
--- a/src/lib/time/time.go
+++ b/src/lib/time/time.go
@@ -46,12 +46,12 @@
 	Zone string;
 }
 
-var nonleapyear = []int(
+var nonleapyear = []int{
 	31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31
-)
-var leapyear = []int(
+}
+var leapyear = []int{
 	31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31
-)
+}
 
 func months(year int64) []int {
 	if year%4 == 0 && (year%100 != 0 || year%400 == 0) {
@@ -220,7 +220,7 @@
 	return sec
 }
 
-var longDayNames = []string(
+var longDayNames = []string{
 	"Sunday",
 	"Monday",
 	"Tuesday",
@@ -228,9 +228,9 @@
 	"Thursday",
 	"Friday",
 	"Saturday"
-)
+}
 
-var shortDayNames = []string(
+var shortDayNames = []string{
 	"Sun",
 	"Mon",
 	"Tue",
@@ -238,9 +238,9 @@
 	"Thu",
 	"Fri",
 	"Sat"
-)
+}
 
-var shortMonthNames = []string(
+var shortMonthNames = []string{
 	"Jan",
 	"Feb",
 	"Mar",
@@ -253,7 +253,7 @@
 	"Oct",
 	"Nov",
 	"Dec"
-)
+}
 
 func copy(dst []byte, s string) {
 	for i := 0; i < len(s); i++ {
diff --git a/src/lib/time/time_test.go b/src/lib/time/time_test.go
index a816e1d..41e6736 100644
--- a/src/lib/time/time_test.go
+++ b/src/lib/time/time_test.go
@@ -22,20 +22,20 @@
 	golden Time;
 }
 
-var utctests = []TimeTest (
-	TimeTest(0, Time(1970, 1, 1, 0, 0, 0, Thursday, 0, "UTC")),
-	TimeTest(1221681866, Time(2008, 9, 17, 20, 4, 26, Wednesday, 0, "UTC")),
-	TimeTest(-1221681866, Time(1931, 4, 16, 3, 55, 34, Thursday, 0, "UTC")),
-	TimeTest(1e18, Time(31688740476, 10, 23, 1, 46, 40, Friday, 0, "UTC")),
-	TimeTest(-1e18, Time(-31688736537, 3, 10, 22, 13, 20, Tuesday, 0, "UTC")),
-	TimeTest(0x7fffffffffffffff, Time(292277026596, 12, 4, 15, 30, 7, Sunday, 0, "UTC")),
-	TimeTest(-0x8000000000000000, Time(-292277022657, 1, 27, 8, 29, 52, Sunday, 0, "UTC"))
-)
+var utctests = []TimeTest {
+	TimeTest{0, Time{1970, 1, 1, 0, 0, 0, Thursday, 0, "UTC"}},
+	TimeTest{1221681866, Time{2008, 9, 17, 20, 4, 26, Wednesday, 0, "UTC"}},
+	TimeTest{-1221681866, Time{1931, 4, 16, 3, 55, 34, Thursday, 0, "UTC"}},
+	TimeTest{1e18, Time{31688740476, 10, 23, 1, 46, 40, Friday, 0, "UTC"}},
+	TimeTest{-1e18, Time{-31688736537, 3, 10, 22, 13, 20, Tuesday, 0, "UTC"}},
+	TimeTest{0x7fffffffffffffff, Time{292277026596, 12, 4, 15, 30, 7, Sunday, 0, "UTC"}},
+	TimeTest{-0x8000000000000000, Time{-292277022657, 1, 27, 8, 29, 52, Sunday, 0, "UTC"}}
+}
 
-var localtests = []TimeTest (
-	TimeTest(0, Time(1969, 12, 31, 16, 0, 0, Wednesday, -8*60*60, "PST")),
-	TimeTest(1221681866, Time(2008, 9, 17, 13, 4, 26, Wednesday, -7*60*60, "PDT"))
-)
+var localtests = []TimeTest {
+	TimeTest{0, Time{1969, 12, 31, 16, 0, 0, Wednesday, -8*60*60, "PST"}},
+	TimeTest{1221681866, Time{2008, 9, 17, 13, 4, 26, Wednesday, -7*60*60, "PDT"}}
+}
 
 func same(t, u *Time) bool {
 	return t.Year == u.Year
diff --git a/src/lib/time/zoneinfo.go b/src/lib/time/zoneinfo.go
index ea75f8c..577434c 100644
--- a/src/lib/time/zoneinfo.go
+++ b/src/lib/time/zoneinfo.go
@@ -88,7 +88,7 @@
 }
 
 func parseinfo(bytes []byte) (zt []zonetime, err *os.Error) {
-	d := data(bytes, false);
+	d := data{bytes, false};
 
 	// 4-byte magic "TZif"
 	if magic := d.read(4); string(magic) != "TZif" {
@@ -127,19 +127,19 @@
 	}
 
 	// Transition times.
-	txtimes := data(d.read(n[NTime]*4), false);
+	txtimes := data{d.read(n[NTime]*4), false};
 
 	// Time zone indices for transition times.
 	txzones := d.read(n[NTime]);
 
 	// Zone info structures
-	zonedata := data(d.read(n[NZone]*6), false);
+	zonedata := data{d.read(n[NZone]*6), false};
 
 	// Time zone abbreviations.
 	abbrev := d.read(n[NChar]);
 
 	// Leap-second time pairs
-	leapdata := data(d.read(n[NLeap]*8), false);
+	leapdata := data{d.read(n[NLeap]*8), false};
 
 	// Whether tx times associated with local time types
 	// are specified as standard time or wall time.
diff --git a/src/lib/unicode/letter.go b/src/lib/unicode/letter.go
index 61310bc..3b1221b 100644
--- a/src/lib/unicode/letter.go
+++ b/src/lib/unicode/letter.go
@@ -18,512 +18,512 @@
 	stride int;
 }
 
-var Upper = []Range(
-	Range(0x0041, 0x005a, 1),
-	Range(0x00c0, 0x00d6, 1),
-	Range(0x00d8, 0x00de, 1),
-	Range(0x0100, 0x0136, 2),
-	Range(0x0139, 0x0147, 2),
-	Range(0x014a, 0x0176, 2),
-	Range(0x0178, 0x0179, 1),
-	Range(0x017b, 0x017d, 2),
-	Range(0x0181, 0x0182, 1),
-	Range(0x0184, 0x0184, 1),
-	Range(0x0186, 0x0187, 1),
-	Range(0x0189, 0x018b, 1),
-	Range(0x018e, 0x0191, 1),
-	Range(0x0193, 0x0194, 1),
-	Range(0x0196, 0x0198, 1),
-	Range(0x019c, 0x019d, 1),
-	Range(0x019f, 0x01a0, 1),
-	Range(0x01a2, 0x01a4, 2),
-	Range(0x01a6, 0x01a7, 1),
-	Range(0x01a9, 0x01ac, 3),
-	Range(0x01ae, 0x01af, 1),
-	Range(0x01b1, 0x01b3, 1),
-	Range(0x01b5, 0x01b5, 1),
-	Range(0x01b7, 0x01b8, 1),
-	Range(0x01bc, 0x01c4, 8),
-	Range(0x01c7, 0x01cd, 3),
-	Range(0x01cf, 0x01db, 2),
-	Range(0x01de, 0x01ee, 2),
-	Range(0x01f1, 0x01f4, 3),
-	Range(0x01f6, 0x01f8, 1),
-	Range(0x01fa, 0x0232, 2),
-	Range(0x023a, 0x023b, 1),
-	Range(0x023d, 0x023e, 1),
-	Range(0x0241, 0x0241, 1),
-	Range(0x0243, 0x0246, 1),
-	Range(0x0248, 0x024e, 2),
-	Range(0x0370, 0x0372, 2),
-	Range(0x0376, 0x0386, 16),
-	Range(0x0388, 0x038a, 1),
-	Range(0x038c, 0x038c, 1),
-	Range(0x038e, 0x038f, 1),
-	Range(0x0391, 0x03a1, 1),
-	Range(0x03a3, 0x03ab, 1),
-	Range(0x03cf, 0x03cf, 1),
-	Range(0x03d2, 0x03d4, 1),
-	Range(0x03d8, 0x03ee, 2),
-	Range(0x03f4, 0x03f7, 3),
-	Range(0x03f9, 0x03fa, 1),
-	Range(0x03fd, 0x042f, 1),
-	Range(0x0460, 0x0480, 2),
-	Range(0x048a, 0x04be, 2),
-	Range(0x04c0, 0x04c1, 1),
-	Range(0x04c3, 0x04cd, 2),
-	Range(0x04d0, 0x0522, 2),
-	Range(0x0531, 0x0556, 1),
-	Range(0x10a0, 0x10c5, 1),
-	Range(0x1e00, 0x1e94, 2),
-	Range(0x1e9e, 0x1efe, 2),
-	Range(0x1f08, 0x1f0f, 1),
-	Range(0x1f18, 0x1f1d, 1),
-	Range(0x1f28, 0x1f2f, 1),
-	Range(0x1f38, 0x1f3f, 1),
-	Range(0x1f48, 0x1f4d, 1),
-	Range(0x1f59, 0x1f5f, 2),
-	Range(0x1f68, 0x1f6f, 1),
-	Range(0x1fb8, 0x1fbb, 1),
-	Range(0x1fc8, 0x1fcb, 1),
-	Range(0x1fd8, 0x1fdb, 1),
-	Range(0x1fe8, 0x1fec, 1),
-	Range(0x1ff8, 0x1ffb, 1),
-	Range(0x2102, 0x2107, 5),
-	Range(0x210b, 0x210d, 1),
-	Range(0x2110, 0x2112, 1),
-	Range(0x2115, 0x2115, 1),
-	Range(0x2119, 0x211d, 1),
-	Range(0x2124, 0x2128, 2),
-	Range(0x212a, 0x212d, 1),
-	Range(0x2130, 0x2133, 1),
-	Range(0x213e, 0x213f, 1),
-	Range(0x2145, 0x2183, 62),
-	Range(0x2c00, 0x2c2e, 1),
-	Range(0x2c60, 0x2c60, 1),
-	Range(0x2c62, 0x2c64, 1),
-	Range(0x2c67, 0x2c6b, 2),
-	Range(0x2c6d, 0x2c6f, 1),
-	Range(0x2c72, 0x2c75, 3),
-	Range(0x2c80, 0x2ce2, 2),
-	Range(0xa640, 0xa65e, 2),
-	Range(0xa662, 0xa66c, 2),
-	Range(0xa680, 0xa696, 2),
-	Range(0xa722, 0xa72e, 2),
-	Range(0xa732, 0xa76e, 2),
-	Range(0xa779, 0xa77b, 2),
-	Range(0xa77d, 0xa77e, 1),
-	Range(0xa780, 0xa786, 2),
-	Range(0xa78b, 0xa78b, 1),
-	Range(0xff21, 0xff3a, 1),
-	Range(0x10400, 0x10427, 1),
-	Range(0x1d400, 0x1d419, 1),
-	Range(0x1d434, 0x1d44d, 1),
-	Range(0x1d468, 0x1d481, 1),
-	Range(0x1d49c, 0x1d49c, 1),
-	Range(0x1d49e, 0x1d49f, 1),
-	Range(0x1d4a2, 0x1d4a2, 1),
-	Range(0x1d4a5, 0x1d4a6, 1),
-	Range(0x1d4a9, 0x1d4ac, 1),
-	Range(0x1d4ae, 0x1d4b5, 1),
-	Range(0x1d4d0, 0x1d4e9, 1),
-	Range(0x1d504, 0x1d505, 1),
-	Range(0x1d507, 0x1d50a, 1),
-	Range(0x1d50d, 0x1d514, 1),
-	Range(0x1d516, 0x1d51c, 1),
-	Range(0x1d538, 0x1d539, 1),
-	Range(0x1d53b, 0x1d53e, 1),
-	Range(0x1d540, 0x1d544, 1),
-	Range(0x1d546, 0x1d546, 1),
-	Range(0x1d54a, 0x1d550, 1),
-	Range(0x1d56c, 0x1d585, 1),
-	Range(0x1d5a0, 0x1d5b9, 1),
-	Range(0x1d5d4, 0x1d5ed, 1),
-	Range(0x1d608, 0x1d621, 1),
-	Range(0x1d63c, 0x1d655, 1),
-	Range(0x1d670, 0x1d689, 1),
-	Range(0x1d6a8, 0x1d6c0, 1),
-	Range(0x1d6e2, 0x1d6fa, 1),
-	Range(0x1d71c, 0x1d734, 1),
-	Range(0x1d756, 0x1d76e, 1),
-	Range(0x1d790, 0x1d7a8, 1),
-	Range(0x1d7ca, 0x1d7ca, 1),
-)
+var Upper = []Range{
+	Range{0x0041, 0x005a, 1},
+	Range{0x00c0, 0x00d6, 1},
+	Range{0x00d8, 0x00de, 1},
+	Range{0x0100, 0x0136, 2},
+	Range{0x0139, 0x0147, 2},
+	Range{0x014a, 0x0176, 2},
+	Range{0x0178, 0x0179, 1},
+	Range{0x017b, 0x017d, 2},
+	Range{0x0181, 0x0182, 1},
+	Range{0x0184, 0x0184, 1},
+	Range{0x0186, 0x0187, 1},
+	Range{0x0189, 0x018b, 1},
+	Range{0x018e, 0x0191, 1},
+	Range{0x0193, 0x0194, 1},
+	Range{0x0196, 0x0198, 1},
+	Range{0x019c, 0x019d, 1},
+	Range{0x019f, 0x01a0, 1},
+	Range{0x01a2, 0x01a4, 2},
+	Range{0x01a6, 0x01a7, 1},
+	Range{0x01a9, 0x01ac, 3},
+	Range{0x01ae, 0x01af, 1},
+	Range{0x01b1, 0x01b3, 1},
+	Range{0x01b5, 0x01b5, 1},
+	Range{0x01b7, 0x01b8, 1},
+	Range{0x01bc, 0x01c4, 8},
+	Range{0x01c7, 0x01cd, 3},
+	Range{0x01cf, 0x01db, 2},
+	Range{0x01de, 0x01ee, 2},
+	Range{0x01f1, 0x01f4, 3},
+	Range{0x01f6, 0x01f8, 1},
+	Range{0x01fa, 0x0232, 2},
+	Range{0x023a, 0x023b, 1},
+	Range{0x023d, 0x023e, 1},
+	Range{0x0241, 0x0241, 1},
+	Range{0x0243, 0x0246, 1},
+	Range{0x0248, 0x024e, 2},
+	Range{0x0370, 0x0372, 2},
+	Range{0x0376, 0x0386, 16},
+	Range{0x0388, 0x038a, 1},
+	Range{0x038c, 0x038c, 1},
+	Range{0x038e, 0x038f, 1},
+	Range{0x0391, 0x03a1, 1},
+	Range{0x03a3, 0x03ab, 1},
+	Range{0x03cf, 0x03cf, 1},
+	Range{0x03d2, 0x03d4, 1},
+	Range{0x03d8, 0x03ee, 2},
+	Range{0x03f4, 0x03f7, 3},
+	Range{0x03f9, 0x03fa, 1},
+	Range{0x03fd, 0x042f, 1},
+	Range{0x0460, 0x0480, 2},
+	Range{0x048a, 0x04be, 2},
+	Range{0x04c0, 0x04c1, 1},
+	Range{0x04c3, 0x04cd, 2},
+	Range{0x04d0, 0x0522, 2},
+	Range{0x0531, 0x0556, 1},
+	Range{0x10a0, 0x10c5, 1},
+	Range{0x1e00, 0x1e94, 2},
+	Range{0x1e9e, 0x1efe, 2},
+	Range{0x1f08, 0x1f0f, 1},
+	Range{0x1f18, 0x1f1d, 1},
+	Range{0x1f28, 0x1f2f, 1},
+	Range{0x1f38, 0x1f3f, 1},
+	Range{0x1f48, 0x1f4d, 1},
+	Range{0x1f59, 0x1f5f, 2},
+	Range{0x1f68, 0x1f6f, 1},
+	Range{0x1fb8, 0x1fbb, 1},
+	Range{0x1fc8, 0x1fcb, 1},
+	Range{0x1fd8, 0x1fdb, 1},
+	Range{0x1fe8, 0x1fec, 1},
+	Range{0x1ff8, 0x1ffb, 1},
+	Range{0x2102, 0x2107, 5},
+	Range{0x210b, 0x210d, 1},
+	Range{0x2110, 0x2112, 1},
+	Range{0x2115, 0x2115, 1},
+	Range{0x2119, 0x211d, 1},
+	Range{0x2124, 0x2128, 2},
+	Range{0x212a, 0x212d, 1},
+	Range{0x2130, 0x2133, 1},
+	Range{0x213e, 0x213f, 1},
+	Range{0x2145, 0x2183, 62},
+	Range{0x2c00, 0x2c2e, 1},
+	Range{0x2c60, 0x2c60, 1},
+	Range{0x2c62, 0x2c64, 1},
+	Range{0x2c67, 0x2c6b, 2},
+	Range{0x2c6d, 0x2c6f, 1},
+	Range{0x2c72, 0x2c75, 3},
+	Range{0x2c80, 0x2ce2, 2},
+	Range{0xa640, 0xa65e, 2},
+	Range{0xa662, 0xa66c, 2},
+	Range{0xa680, 0xa696, 2},
+	Range{0xa722, 0xa72e, 2},
+	Range{0xa732, 0xa76e, 2},
+	Range{0xa779, 0xa77b, 2},
+	Range{0xa77d, 0xa77e, 1},
+	Range{0xa780, 0xa786, 2},
+	Range{0xa78b, 0xa78b, 1},
+	Range{0xff21, 0xff3a, 1},
+	Range{0x10400, 0x10427, 1},
+	Range{0x1d400, 0x1d419, 1},
+	Range{0x1d434, 0x1d44d, 1},
+	Range{0x1d468, 0x1d481, 1},
+	Range{0x1d49c, 0x1d49c, 1},
+	Range{0x1d49e, 0x1d49f, 1},
+	Range{0x1d4a2, 0x1d4a2, 1},
+	Range{0x1d4a5, 0x1d4a6, 1},
+	Range{0x1d4a9, 0x1d4ac, 1},
+	Range{0x1d4ae, 0x1d4b5, 1},
+	Range{0x1d4d0, 0x1d4e9, 1},
+	Range{0x1d504, 0x1d505, 1},
+	Range{0x1d507, 0x1d50a, 1},
+	Range{0x1d50d, 0x1d514, 1},
+	Range{0x1d516, 0x1d51c, 1},
+	Range{0x1d538, 0x1d539, 1},
+	Range{0x1d53b, 0x1d53e, 1},
+	Range{0x1d540, 0x1d544, 1},
+	Range{0x1d546, 0x1d546, 1},
+	Range{0x1d54a, 0x1d550, 1},
+	Range{0x1d56c, 0x1d585, 1},
+	Range{0x1d5a0, 0x1d5b9, 1},
+	Range{0x1d5d4, 0x1d5ed, 1},
+	Range{0x1d608, 0x1d621, 1},
+	Range{0x1d63c, 0x1d655, 1},
+	Range{0x1d670, 0x1d689, 1},
+	Range{0x1d6a8, 0x1d6c0, 1},
+	Range{0x1d6e2, 0x1d6fa, 1},
+	Range{0x1d71c, 0x1d734, 1},
+	Range{0x1d756, 0x1d76e, 1},
+	Range{0x1d790, 0x1d7a8, 1},
+	Range{0x1d7ca, 0x1d7ca, 1},
+}
 
-var Letter = []Range (
-	Range(0x0041, 0x005a, 1),
-	Range(0x0061, 0x007a, 1),
-	Range(0x00aa, 0x00b5, 11),
-	Range(0x00ba, 0x00ba, 1),
-	Range(0x00c0, 0x00d6, 1),
-	Range(0x00d8, 0x00f6, 1),
-	Range(0x00f8, 0x02c1, 1),
-	Range(0x02c6, 0x02d1, 1),
-	Range(0x02e0, 0x02e4, 1),
-	Range(0x02ec, 0x02ee, 2),
-	Range(0x0370, 0x0374, 1),
-	Range(0x0376, 0x0377, 1),
-	Range(0x037a, 0x037d, 1),
-	Range(0x0386, 0x0386, 1),
-	Range(0x0388, 0x038a, 1),
-	Range(0x038c, 0x038c, 1),
-	Range(0x038e, 0x03a1, 1),
-	Range(0x03a3, 0x03f5, 1),
-	Range(0x03f7, 0x0481, 1),
-	Range(0x048a, 0x0523, 1),
-	Range(0x0531, 0x0556, 1),
-	Range(0x0559, 0x0559, 1),
-	Range(0x0561, 0x0587, 1),
-	Range(0x05d0, 0x05ea, 1),
-	Range(0x05f0, 0x05f2, 1),
-	Range(0x0621, 0x064a, 1),
-	Range(0x066e, 0x066f, 1),
-	Range(0x0671, 0x06d3, 1),
-	Range(0x06d5, 0x06d5, 1),
-	Range(0x06e5, 0x06e6, 1),
-	Range(0x06ee, 0x06ef, 1),
-	Range(0x06fa, 0x06fc, 1),
-	Range(0x06ff, 0x0710, 17),
-	Range(0x0712, 0x072f, 1),
-	Range(0x074d, 0x07a5, 1),
-	Range(0x07b1, 0x07b1, 1),
-	Range(0x07ca, 0x07ea, 1),
-	Range(0x07f4, 0x07f5, 1),
-	Range(0x07fa, 0x07fa, 1),
-	Range(0x0904, 0x0939, 1),
-	Range(0x093d, 0x0950, 19),
-	Range(0x0958, 0x0961, 1),
-	Range(0x0971, 0x0972, 1),
-	Range(0x097b, 0x097f, 1),
-	Range(0x0985, 0x098c, 1),
-	Range(0x098f, 0x0990, 1),
-	Range(0x0993, 0x09a8, 1),
-	Range(0x09aa, 0x09b0, 1),
-	Range(0x09b2, 0x09b2, 1),
-	Range(0x09b6, 0x09b9, 1),
-	Range(0x09bd, 0x09ce, 17),
-	Range(0x09dc, 0x09dd, 1),
-	Range(0x09df, 0x09e1, 1),
-	Range(0x09f0, 0x09f1, 1),
-	Range(0x0a05, 0x0a0a, 1),
-	Range(0x0a0f, 0x0a10, 1),
-	Range(0x0a13, 0x0a28, 1),
-	Range(0x0a2a, 0x0a30, 1),
-	Range(0x0a32, 0x0a33, 1),
-	Range(0x0a35, 0x0a36, 1),
-	Range(0x0a38, 0x0a39, 1),
-	Range(0x0a59, 0x0a5c, 1),
-	Range(0x0a5e, 0x0a5e, 1),
-	Range(0x0a72, 0x0a74, 1),
-	Range(0x0a85, 0x0a8d, 1),
-	Range(0x0a8f, 0x0a91, 1),
-	Range(0x0a93, 0x0aa8, 1),
-	Range(0x0aaa, 0x0ab0, 1),
-	Range(0x0ab2, 0x0ab3, 1),
-	Range(0x0ab5, 0x0ab9, 1),
-	Range(0x0abd, 0x0ad0, 19),
-	Range(0x0ae0, 0x0ae1, 1),
-	Range(0x0b05, 0x0b0c, 1),
-	Range(0x0b0f, 0x0b10, 1),
-	Range(0x0b13, 0x0b28, 1),
-	Range(0x0b2a, 0x0b30, 1),
-	Range(0x0b32, 0x0b33, 1),
-	Range(0x0b35, 0x0b39, 1),
-	Range(0x0b3d, 0x0b3d, 1),
-	Range(0x0b5c, 0x0b5d, 1),
-	Range(0x0b5f, 0x0b61, 1),
-	Range(0x0b71, 0x0b83, 18),
-	Range(0x0b85, 0x0b8a, 1),
-	Range(0x0b8e, 0x0b90, 1),
-	Range(0x0b92, 0x0b95, 1),
-	Range(0x0b99, 0x0b9a, 1),
-	Range(0x0b9c, 0x0b9c, 1),
-	Range(0x0b9e, 0x0b9f, 1),
-	Range(0x0ba3, 0x0ba4, 1),
-	Range(0x0ba8, 0x0baa, 1),
-	Range(0x0bae, 0x0bb9, 1),
-	Range(0x0bd0, 0x0bd0, 1),
-	Range(0x0c05, 0x0c0c, 1),
-	Range(0x0c0e, 0x0c10, 1),
-	Range(0x0c12, 0x0c28, 1),
-	Range(0x0c2a, 0x0c33, 1),
-	Range(0x0c35, 0x0c39, 1),
-	Range(0x0c3d, 0x0c3d, 1),
-	Range(0x0c58, 0x0c59, 1),
-	Range(0x0c60, 0x0c61, 1),
-	Range(0x0c85, 0x0c8c, 1),
-	Range(0x0c8e, 0x0c90, 1),
-	Range(0x0c92, 0x0ca8, 1),
-	Range(0x0caa, 0x0cb3, 1),
-	Range(0x0cb5, 0x0cb9, 1),
-	Range(0x0cbd, 0x0cde, 33),
-	Range(0x0ce0, 0x0ce1, 1),
-	Range(0x0d05, 0x0d0c, 1),
-	Range(0x0d0e, 0x0d10, 1),
-	Range(0x0d12, 0x0d28, 1),
-	Range(0x0d2a, 0x0d39, 1),
-	Range(0x0d3d, 0x0d3d, 1),
-	Range(0x0d60, 0x0d61, 1),
-	Range(0x0d7a, 0x0d7f, 1),
-	Range(0x0d85, 0x0d96, 1),
-	Range(0x0d9a, 0x0db1, 1),
-	Range(0x0db3, 0x0dbb, 1),
-	Range(0x0dbd, 0x0dbd, 1),
-	Range(0x0dc0, 0x0dc6, 1),
-	Range(0x0e01, 0x0e30, 1),
-	Range(0x0e32, 0x0e33, 1),
-	Range(0x0e40, 0x0e46, 1),
-	Range(0x0e81, 0x0e82, 1),
-	Range(0x0e84, 0x0e84, 1),
-	Range(0x0e87, 0x0e88, 1),
-	Range(0x0e8a, 0x0e8d, 3),
-	Range(0x0e94, 0x0e97, 1),
-	Range(0x0e99, 0x0e9f, 1),
-	Range(0x0ea1, 0x0ea3, 1),
-	Range(0x0ea5, 0x0ea7, 2),
-	Range(0x0eaa, 0x0eab, 1),
-	Range(0x0ead, 0x0eb0, 1),
-	Range(0x0eb2, 0x0eb3, 1),
-	Range(0x0ebd, 0x0ebd, 1),
-	Range(0x0ec0, 0x0ec4, 1),
-	Range(0x0ec6, 0x0ec6, 1),
-	Range(0x0edc, 0x0edd, 1),
-	Range(0x0f00, 0x0f00, 1),
-	Range(0x0f40, 0x0f47, 1),
-	Range(0x0f49, 0x0f6c, 1),
-	Range(0x0f88, 0x0f8b, 1),
-	Range(0x1000, 0x102a, 1),
-	Range(0x103f, 0x103f, 1),
-	Range(0x1050, 0x1055, 1),
-	Range(0x105a, 0x105d, 1),
-	Range(0x1061, 0x1061, 1),
-	Range(0x1065, 0x1066, 1),
-	Range(0x106e, 0x1070, 1),
-	Range(0x1075, 0x1081, 1),
-	Range(0x108e, 0x108e, 1),
-	Range(0x10a0, 0x10c5, 1),
-	Range(0x10d0, 0x10fa, 1),
-	Range(0x10fc, 0x10fc, 1),
-	Range(0x1100, 0x1159, 1),
-	Range(0x115f, 0x11a2, 1),
-	Range(0x11a8, 0x11f9, 1),
-	Range(0x1200, 0x1248, 1),
-	Range(0x124a, 0x124d, 1),
-	Range(0x1250, 0x1256, 1),
-	Range(0x1258, 0x1258, 1),
-	Range(0x125a, 0x125d, 1),
-	Range(0x1260, 0x1288, 1),
-	Range(0x128a, 0x128d, 1),
-	Range(0x1290, 0x12b0, 1),
-	Range(0x12b2, 0x12b5, 1),
-	Range(0x12b8, 0x12be, 1),
-	Range(0x12c0, 0x12c0, 1),
-	Range(0x12c2, 0x12c5, 1),
-	Range(0x12c8, 0x12d6, 1),
-	Range(0x12d8, 0x1310, 1),
-	Range(0x1312, 0x1315, 1),
-	Range(0x1318, 0x135a, 1),
-	Range(0x1380, 0x138f, 1),
-	Range(0x13a0, 0x13f4, 1),
-	Range(0x1401, 0x166c, 1),
-	Range(0x166f, 0x1676, 1),
-	Range(0x1681, 0x169a, 1),
-	Range(0x16a0, 0x16ea, 1),
-	Range(0x1700, 0x170c, 1),
-	Range(0x170e, 0x1711, 1),
-	Range(0x1720, 0x1731, 1),
-	Range(0x1740, 0x1751, 1),
-	Range(0x1760, 0x176c, 1),
-	Range(0x176e, 0x1770, 1),
-	Range(0x1780, 0x17b3, 1),
-	Range(0x17d7, 0x17dc, 5),
-	Range(0x1820, 0x1877, 1),
-	Range(0x1880, 0x18a8, 1),
-	Range(0x18aa, 0x18aa, 1),
-	Range(0x1900, 0x191c, 1),
-	Range(0x1950, 0x196d, 1),
-	Range(0x1970, 0x1974, 1),
-	Range(0x1980, 0x19a9, 1),
-	Range(0x19c1, 0x19c7, 1),
-	Range(0x1a00, 0x1a16, 1),
-	Range(0x1b05, 0x1b33, 1),
-	Range(0x1b45, 0x1b4b, 1),
-	Range(0x1b83, 0x1ba0, 1),
-	Range(0x1bae, 0x1baf, 1),
-	Range(0x1c00, 0x1c23, 1),
-	Range(0x1c4d, 0x1c4f, 1),
-	Range(0x1c5a, 0x1c7d, 1),
-	Range(0x1d00, 0x1dbf, 1),
-	Range(0x1e00, 0x1f15, 1),
-	Range(0x1f18, 0x1f1d, 1),
-	Range(0x1f20, 0x1f45, 1),
-	Range(0x1f48, 0x1f4d, 1),
-	Range(0x1f50, 0x1f57, 1),
-	Range(0x1f59, 0x1f5d, 2),
-	Range(0x1f5f, 0x1f7d, 1),
-	Range(0x1f80, 0x1fb4, 1),
-	Range(0x1fb6, 0x1fbc, 1),
-	Range(0x1fbe, 0x1fbe, 1),
-	Range(0x1fc2, 0x1fc4, 1),
-	Range(0x1fc6, 0x1fcc, 1),
-	Range(0x1fd0, 0x1fd3, 1),
-	Range(0x1fd6, 0x1fdb, 1),
-	Range(0x1fe0, 0x1fec, 1),
-	Range(0x1ff2, 0x1ff4, 1),
-	Range(0x1ff6, 0x1ffc, 1),
-	Range(0x2071, 0x207f, 14),
-	Range(0x2090, 0x2094, 1),
-	Range(0x2102, 0x2107, 5),
-	Range(0x210a, 0x2113, 1),
-	Range(0x2115, 0x2115, 1),
-	Range(0x2119, 0x211d, 1),
-	Range(0x2124, 0x2128, 2),
-	Range(0x212a, 0x212d, 1),
-	Range(0x212f, 0x2139, 1),
-	Range(0x213c, 0x213f, 1),
-	Range(0x2145, 0x2149, 1),
-	Range(0x214e, 0x214e, 1),
-	Range(0x2183, 0x2184, 1),
-	Range(0x2c00, 0x2c2e, 1),
-	Range(0x2c30, 0x2c5e, 1),
-	Range(0x2c60, 0x2c6f, 1),
-	Range(0x2c71, 0x2c7d, 1),
-	Range(0x2c80, 0x2ce4, 1),
-	Range(0x2d00, 0x2d25, 1),
-	Range(0x2d30, 0x2d65, 1),
-	Range(0x2d6f, 0x2d6f, 1),
-	Range(0x2d80, 0x2d96, 1),
-	Range(0x2da0, 0x2da6, 1),
-	Range(0x2da8, 0x2dae, 1),
-	Range(0x2db0, 0x2db6, 1),
-	Range(0x2db8, 0x2dbe, 1),
-	Range(0x2dc0, 0x2dc6, 1),
-	Range(0x2dc8, 0x2dce, 1),
-	Range(0x2dd0, 0x2dd6, 1),
-	Range(0x2dd8, 0x2dde, 1),
-	Range(0x2e2f, 0x2e2f, 1),
-	Range(0x3005, 0x3006, 1),
-	Range(0x3031, 0x3035, 1),
-	Range(0x303b, 0x303c, 1),
-	Range(0x3041, 0x3096, 1),
-	Range(0x309d, 0x309f, 1),
-	Range(0x30a1, 0x30fa, 1),
-	Range(0x30fc, 0x30ff, 1),
-	Range(0x3105, 0x312d, 1),
-	Range(0x3131, 0x318e, 1),
-	Range(0x31a0, 0x31b7, 1),
-	Range(0x31f0, 0x31ff, 1),
-	Range(0x3400, 0x4db5, 1),
-	Range(0x4e00, 0x9fc3, 1),
-	Range(0xa000, 0xa48c, 1),
-	Range(0xa500, 0xa60c, 1),
-	Range(0xa610, 0xa61f, 1),
-	Range(0xa62a, 0xa62b, 1),
-	Range(0xa640, 0xa65f, 1),
-	Range(0xa662, 0xa66e, 1),
-	Range(0xa67f, 0xa697, 1),
-	Range(0xa717, 0xa71f, 1),
-	Range(0xa722, 0xa788, 1),
-	Range(0xa78b, 0xa78c, 1),
-	Range(0xa7fb, 0xa801, 1),
-	Range(0xa803, 0xa805, 1),
-	Range(0xa807, 0xa80a, 1),
-	Range(0xa80c, 0xa822, 1),
-	Range(0xa840, 0xa873, 1),
-	Range(0xa882, 0xa8b3, 1),
-	Range(0xa90a, 0xa925, 1),
-	Range(0xa930, 0xa946, 1),
-	Range(0xaa00, 0xaa28, 1),
-	Range(0xaa40, 0xaa42, 1),
-	Range(0xaa44, 0xaa4b, 1),
-	Range(0xac00, 0xd7a3, 1),
-	Range(0xf900, 0xfa2d, 1),
-	Range(0xfa30, 0xfa6a, 1),
-	Range(0xfa70, 0xfad9, 1),
-	Range(0xfb00, 0xfb06, 1),
-	Range(0xfb13, 0xfb17, 1),
-	Range(0xfb1d, 0xfb1d, 1),
-	Range(0xfb1f, 0xfb28, 1),
-	Range(0xfb2a, 0xfb36, 1),
-	Range(0xfb38, 0xfb3c, 1),
-	Range(0xfb3e, 0xfb3e, 1),
-	Range(0xfb40, 0xfb41, 1),
-	Range(0xfb43, 0xfb44, 1),
-	Range(0xfb46, 0xfbb1, 1),
-	Range(0xfbd3, 0xfd3d, 1),
-	Range(0xfd50, 0xfd8f, 1),
-	Range(0xfd92, 0xfdc7, 1),
-	Range(0xfdf0, 0xfdfb, 1),
-	Range(0xfe70, 0xfe74, 1),
-	Range(0xfe76, 0xfefc, 1),
-	Range(0xff21, 0xff3a, 1),
-	Range(0xff41, 0xff5a, 1),
-	Range(0xff66, 0xffbe, 1),
-	Range(0xffc2, 0xffc7, 1),
-	Range(0xffca, 0xffcf, 1),
-	Range(0xffd2, 0xffd7, 1),
-	Range(0xffda, 0xffdc, 1),
-	Range(0x10000, 0x1000b, 1),
-	Range(0x1000d, 0x10026, 1),
-	Range(0x10028, 0x1003a, 1),
-	Range(0x1003c, 0x1003d, 1),
-	Range(0x1003f, 0x1004d, 1),
-	Range(0x10050, 0x1005d, 1),
-	Range(0x10080, 0x100fa, 1),
-	Range(0x10280, 0x1029c, 1),
-	Range(0x102a0, 0x102d0, 1),
-	Range(0x10300, 0x1031e, 1),
-	Range(0x10330, 0x10340, 1),
-	Range(0x10342, 0x10349, 1),
-	Range(0x10380, 0x1039d, 1),
-	Range(0x103a0, 0x103c3, 1),
-	Range(0x103c8, 0x103cf, 1),
-	Range(0x10400, 0x1049d, 1),
-	Range(0x10800, 0x10805, 1),
-	Range(0x10808, 0x10808, 1),
-	Range(0x1080a, 0x10835, 1),
-	Range(0x10837, 0x10838, 1),
-	Range(0x1083c, 0x1083f, 3),
-	Range(0x10900, 0x10915, 1),
-	Range(0x10920, 0x10939, 1),
-	Range(0x10a00, 0x10a00, 1),
-	Range(0x10a10, 0x10a13, 1),
-	Range(0x10a15, 0x10a17, 1),
-	Range(0x10a19, 0x10a33, 1),
-	Range(0x12000, 0x1236e, 1),
-	Range(0x1d400, 0x1d454, 1),
-	Range(0x1d456, 0x1d49c, 1),
-	Range(0x1d49e, 0x1d49f, 1),
-	Range(0x1d4a2, 0x1d4a2, 1),
-	Range(0x1d4a5, 0x1d4a6, 1),
-	Range(0x1d4a9, 0x1d4ac, 1),
-	Range(0x1d4ae, 0x1d4b9, 1),
-	Range(0x1d4bb, 0x1d4bb, 1),
-	Range(0x1d4bd, 0x1d4c3, 1),
-	Range(0x1d4c5, 0x1d505, 1),
-	Range(0x1d507, 0x1d50a, 1),
-	Range(0x1d50d, 0x1d514, 1),
-	Range(0x1d516, 0x1d51c, 1),
-	Range(0x1d51e, 0x1d539, 1),
-	Range(0x1d53b, 0x1d53e, 1),
-	Range(0x1d540, 0x1d544, 1),
-	Range(0x1d546, 0x1d546, 1),
-	Range(0x1d54a, 0x1d550, 1),
-	Range(0x1d552, 0x1d6a5, 1),
-	Range(0x1d6a8, 0x1d6c0, 1),
-	Range(0x1d6c2, 0x1d6da, 1),
-	Range(0x1d6dc, 0x1d6fa, 1),
-	Range(0x1d6fc, 0x1d714, 1),
-	Range(0x1d716, 0x1d734, 1),
-	Range(0x1d736, 0x1d74e, 1),
-	Range(0x1d750, 0x1d76e, 1),
-	Range(0x1d770, 0x1d788, 1),
-	Range(0x1d78a, 0x1d7a8, 1),
-	Range(0x1d7aa, 0x1d7c2, 1),
-	Range(0x1d7c4, 0x1d7cb, 1),
-	Range(0x20000, 0x2a6d6, 1),
-	Range(0x2f800, 0x2fa1d, 1),
-)
+var Letter = []Range {
+	Range{0x0041, 0x005a, 1},
+	Range{0x0061, 0x007a, 1},
+	Range{0x00aa, 0x00b5, 11},
+	Range{0x00ba, 0x00ba, 1},
+	Range{0x00c0, 0x00d6, 1},
+	Range{0x00d8, 0x00f6, 1},
+	Range{0x00f8, 0x02c1, 1},
+	Range{0x02c6, 0x02d1, 1},
+	Range{0x02e0, 0x02e4, 1},
+	Range{0x02ec, 0x02ee, 2},
+	Range{0x0370, 0x0374, 1},
+	Range{0x0376, 0x0377, 1},
+	Range{0x037a, 0x037d, 1},
+	Range{0x0386, 0x0386, 1},
+	Range{0x0388, 0x038a, 1},
+	Range{0x038c, 0x038c, 1},
+	Range{0x038e, 0x03a1, 1},
+	Range{0x03a3, 0x03f5, 1},
+	Range{0x03f7, 0x0481, 1},
+	Range{0x048a, 0x0523, 1},
+	Range{0x0531, 0x0556, 1},
+	Range{0x0559, 0x0559, 1},
+	Range{0x0561, 0x0587, 1},
+	Range{0x05d0, 0x05ea, 1},
+	Range{0x05f0, 0x05f2, 1},
+	Range{0x0621, 0x064a, 1},
+	Range{0x066e, 0x066f, 1},
+	Range{0x0671, 0x06d3, 1},
+	Range{0x06d5, 0x06d5, 1},
+	Range{0x06e5, 0x06e6, 1},
+	Range{0x06ee, 0x06ef, 1},
+	Range{0x06fa, 0x06fc, 1},
+	Range{0x06ff, 0x0710, 17},
+	Range{0x0712, 0x072f, 1},
+	Range{0x074d, 0x07a5, 1},
+	Range{0x07b1, 0x07b1, 1},
+	Range{0x07ca, 0x07ea, 1},
+	Range{0x07f4, 0x07f5, 1},
+	Range{0x07fa, 0x07fa, 1},
+	Range{0x0904, 0x0939, 1},
+	Range{0x093d, 0x0950, 19},
+	Range{0x0958, 0x0961, 1},
+	Range{0x0971, 0x0972, 1},
+	Range{0x097b, 0x097f, 1},
+	Range{0x0985, 0x098c, 1},
+	Range{0x098f, 0x0990, 1},
+	Range{0x0993, 0x09a8, 1},
+	Range{0x09aa, 0x09b0, 1},
+	Range{0x09b2, 0x09b2, 1},
+	Range{0x09b6, 0x09b9, 1},
+	Range{0x09bd, 0x09ce, 17},
+	Range{0x09dc, 0x09dd, 1},
+	Range{0x09df, 0x09e1, 1},
+	Range{0x09f0, 0x09f1, 1},
+	Range{0x0a05, 0x0a0a, 1},
+	Range{0x0a0f, 0x0a10, 1},
+	Range{0x0a13, 0x0a28, 1},
+	Range{0x0a2a, 0x0a30, 1},
+	Range{0x0a32, 0x0a33, 1},
+	Range{0x0a35, 0x0a36, 1},
+	Range{0x0a38, 0x0a39, 1},
+	Range{0x0a59, 0x0a5c, 1},
+	Range{0x0a5e, 0x0a5e, 1},
+	Range{0x0a72, 0x0a74, 1},
+	Range{0x0a85, 0x0a8d, 1},
+	Range{0x0a8f, 0x0a91, 1},
+	Range{0x0a93, 0x0aa8, 1},
+	Range{0x0aaa, 0x0ab0, 1},
+	Range{0x0ab2, 0x0ab3, 1},
+	Range{0x0ab5, 0x0ab9, 1},
+	Range{0x0abd, 0x0ad0, 19},
+	Range{0x0ae0, 0x0ae1, 1},
+	Range{0x0b05, 0x0b0c, 1},
+	Range{0x0b0f, 0x0b10, 1},
+	Range{0x0b13, 0x0b28, 1},
+	Range{0x0b2a, 0x0b30, 1},
+	Range{0x0b32, 0x0b33, 1},
+	Range{0x0b35, 0x0b39, 1},
+	Range{0x0b3d, 0x0b3d, 1},
+	Range{0x0b5c, 0x0b5d, 1},
+	Range{0x0b5f, 0x0b61, 1},
+	Range{0x0b71, 0x0b83, 18},
+	Range{0x0b85, 0x0b8a, 1},
+	Range{0x0b8e, 0x0b90, 1},
+	Range{0x0b92, 0x0b95, 1},
+	Range{0x0b99, 0x0b9a, 1},
+	Range{0x0b9c, 0x0b9c, 1},
+	Range{0x0b9e, 0x0b9f, 1},
+	Range{0x0ba3, 0x0ba4, 1},
+	Range{0x0ba8, 0x0baa, 1},
+	Range{0x0bae, 0x0bb9, 1},
+	Range{0x0bd0, 0x0bd0, 1},
+	Range{0x0c05, 0x0c0c, 1},
+	Range{0x0c0e, 0x0c10, 1},
+	Range{0x0c12, 0x0c28, 1},
+	Range{0x0c2a, 0x0c33, 1},
+	Range{0x0c35, 0x0c39, 1},
+	Range{0x0c3d, 0x0c3d, 1},
+	Range{0x0c58, 0x0c59, 1},
+	Range{0x0c60, 0x0c61, 1},
+	Range{0x0c85, 0x0c8c, 1},
+	Range{0x0c8e, 0x0c90, 1},
+	Range{0x0c92, 0x0ca8, 1},
+	Range{0x0caa, 0x0cb3, 1},
+	Range{0x0cb5, 0x0cb9, 1},
+	Range{0x0cbd, 0x0cde, 33},
+	Range{0x0ce0, 0x0ce1, 1},
+	Range{0x0d05, 0x0d0c, 1},
+	Range{0x0d0e, 0x0d10, 1},
+	Range{0x0d12, 0x0d28, 1},
+	Range{0x0d2a, 0x0d39, 1},
+	Range{0x0d3d, 0x0d3d, 1},
+	Range{0x0d60, 0x0d61, 1},
+	Range{0x0d7a, 0x0d7f, 1},
+	Range{0x0d85, 0x0d96, 1},
+	Range{0x0d9a, 0x0db1, 1},
+	Range{0x0db3, 0x0dbb, 1},
+	Range{0x0dbd, 0x0dbd, 1},
+	Range{0x0dc0, 0x0dc6, 1},
+	Range{0x0e01, 0x0e30, 1},
+	Range{0x0e32, 0x0e33, 1},
+	Range{0x0e40, 0x0e46, 1},
+	Range{0x0e81, 0x0e82, 1},
+	Range{0x0e84, 0x0e84, 1},
+	Range{0x0e87, 0x0e88, 1},
+	Range{0x0e8a, 0x0e8d, 3},
+	Range{0x0e94, 0x0e97, 1},
+	Range{0x0e99, 0x0e9f, 1},
+	Range{0x0ea1, 0x0ea3, 1},
+	Range{0x0ea5, 0x0ea7, 2},
+	Range{0x0eaa, 0x0eab, 1},
+	Range{0x0ead, 0x0eb0, 1},
+	Range{0x0eb2, 0x0eb3, 1},
+	Range{0x0ebd, 0x0ebd, 1},
+	Range{0x0ec0, 0x0ec4, 1},
+	Range{0x0ec6, 0x0ec6, 1},
+	Range{0x0edc, 0x0edd, 1},
+	Range{0x0f00, 0x0f00, 1},
+	Range{0x0f40, 0x0f47, 1},
+	Range{0x0f49, 0x0f6c, 1},
+	Range{0x0f88, 0x0f8b, 1},
+	Range{0x1000, 0x102a, 1},
+	Range{0x103f, 0x103f, 1},
+	Range{0x1050, 0x1055, 1},
+	Range{0x105a, 0x105d, 1},
+	Range{0x1061, 0x1061, 1},
+	Range{0x1065, 0x1066, 1},
+	Range{0x106e, 0x1070, 1},
+	Range{0x1075, 0x1081, 1},
+	Range{0x108e, 0x108e, 1},
+	Range{0x10a0, 0x10c5, 1},
+	Range{0x10d0, 0x10fa, 1},
+	Range{0x10fc, 0x10fc, 1},
+	Range{0x1100, 0x1159, 1},
+	Range{0x115f, 0x11a2, 1},
+	Range{0x11a8, 0x11f9, 1},
+	Range{0x1200, 0x1248, 1},
+	Range{0x124a, 0x124d, 1},
+	Range{0x1250, 0x1256, 1},
+	Range{0x1258, 0x1258, 1},
+	Range{0x125a, 0x125d, 1},
+	Range{0x1260, 0x1288, 1},
+	Range{0x128a, 0x128d, 1},
+	Range{0x1290, 0x12b0, 1},
+	Range{0x12b2, 0x12b5, 1},
+	Range{0x12b8, 0x12be, 1},
+	Range{0x12c0, 0x12c0, 1},
+	Range{0x12c2, 0x12c5, 1},
+	Range{0x12c8, 0x12d6, 1},
+	Range{0x12d8, 0x1310, 1},
+	Range{0x1312, 0x1315, 1},
+	Range{0x1318, 0x135a, 1},
+	Range{0x1380, 0x138f, 1},
+	Range{0x13a0, 0x13f4, 1},
+	Range{0x1401, 0x166c, 1},
+	Range{0x166f, 0x1676, 1},
+	Range{0x1681, 0x169a, 1},
+	Range{0x16a0, 0x16ea, 1},
+	Range{0x1700, 0x170c, 1},
+	Range{0x170e, 0x1711, 1},
+	Range{0x1720, 0x1731, 1},
+	Range{0x1740, 0x1751, 1},
+	Range{0x1760, 0x176c, 1},
+	Range{0x176e, 0x1770, 1},
+	Range{0x1780, 0x17b3, 1},
+	Range{0x17d7, 0x17dc, 5},
+	Range{0x1820, 0x1877, 1},
+	Range{0x1880, 0x18a8, 1},
+	Range{0x18aa, 0x18aa, 1},
+	Range{0x1900, 0x191c, 1},
+	Range{0x1950, 0x196d, 1},
+	Range{0x1970, 0x1974, 1},
+	Range{0x1980, 0x19a9, 1},
+	Range{0x19c1, 0x19c7, 1},
+	Range{0x1a00, 0x1a16, 1},
+	Range{0x1b05, 0x1b33, 1},
+	Range{0x1b45, 0x1b4b, 1},
+	Range{0x1b83, 0x1ba0, 1},
+	Range{0x1bae, 0x1baf, 1},
+	Range{0x1c00, 0x1c23, 1},
+	Range{0x1c4d, 0x1c4f, 1},
+	Range{0x1c5a, 0x1c7d, 1},
+	Range{0x1d00, 0x1dbf, 1},
+	Range{0x1e00, 0x1f15, 1},
+	Range{0x1f18, 0x1f1d, 1},
+	Range{0x1f20, 0x1f45, 1},
+	Range{0x1f48, 0x1f4d, 1},
+	Range{0x1f50, 0x1f57, 1},
+	Range{0x1f59, 0x1f5d, 2},
+	Range{0x1f5f, 0x1f7d, 1},
+	Range{0x1f80, 0x1fb4, 1},
+	Range{0x1fb6, 0x1fbc, 1},
+	Range{0x1fbe, 0x1fbe, 1},
+	Range{0x1fc2, 0x1fc4, 1},
+	Range{0x1fc6, 0x1fcc, 1},
+	Range{0x1fd0, 0x1fd3, 1},
+	Range{0x1fd6, 0x1fdb, 1},
+	Range{0x1fe0, 0x1fec, 1},
+	Range{0x1ff2, 0x1ff4, 1},
+	Range{0x1ff6, 0x1ffc, 1},
+	Range{0x2071, 0x207f, 14},
+	Range{0x2090, 0x2094, 1},
+	Range{0x2102, 0x2107, 5},
+	Range{0x210a, 0x2113, 1},
+	Range{0x2115, 0x2115, 1},
+	Range{0x2119, 0x211d, 1},
+	Range{0x2124, 0x2128, 2},
+	Range{0x212a, 0x212d, 1},
+	Range{0x212f, 0x2139, 1},
+	Range{0x213c, 0x213f, 1},
+	Range{0x2145, 0x2149, 1},
+	Range{0x214e, 0x214e, 1},
+	Range{0x2183, 0x2184, 1},
+	Range{0x2c00, 0x2c2e, 1},
+	Range{0x2c30, 0x2c5e, 1},
+	Range{0x2c60, 0x2c6f, 1},
+	Range{0x2c71, 0x2c7d, 1},
+	Range{0x2c80, 0x2ce4, 1},
+	Range{0x2d00, 0x2d25, 1},
+	Range{0x2d30, 0x2d65, 1},
+	Range{0x2d6f, 0x2d6f, 1},
+	Range{0x2d80, 0x2d96, 1},
+	Range{0x2da0, 0x2da6, 1},
+	Range{0x2da8, 0x2dae, 1},
+	Range{0x2db0, 0x2db6, 1},
+	Range{0x2db8, 0x2dbe, 1},
+	Range{0x2dc0, 0x2dc6, 1},
+	Range{0x2dc8, 0x2dce, 1},
+	Range{0x2dd0, 0x2dd6, 1},
+	Range{0x2dd8, 0x2dde, 1},
+	Range{0x2e2f, 0x2e2f, 1},
+	Range{0x3005, 0x3006, 1},
+	Range{0x3031, 0x3035, 1},
+	Range{0x303b, 0x303c, 1},
+	Range{0x3041, 0x3096, 1},
+	Range{0x309d, 0x309f, 1},
+	Range{0x30a1, 0x30fa, 1},
+	Range{0x30fc, 0x30ff, 1},
+	Range{0x3105, 0x312d, 1},
+	Range{0x3131, 0x318e, 1},
+	Range{0x31a0, 0x31b7, 1},
+	Range{0x31f0, 0x31ff, 1},
+	Range{0x3400, 0x4db5, 1},
+	Range{0x4e00, 0x9fc3, 1},
+	Range{0xa000, 0xa48c, 1},
+	Range{0xa500, 0xa60c, 1},
+	Range{0xa610, 0xa61f, 1},
+	Range{0xa62a, 0xa62b, 1},
+	Range{0xa640, 0xa65f, 1},
+	Range{0xa662, 0xa66e, 1},
+	Range{0xa67f, 0xa697, 1},
+	Range{0xa717, 0xa71f, 1},
+	Range{0xa722, 0xa788, 1},
+	Range{0xa78b, 0xa78c, 1},
+	Range{0xa7fb, 0xa801, 1},
+	Range{0xa803, 0xa805, 1},
+	Range{0xa807, 0xa80a, 1},
+	Range{0xa80c, 0xa822, 1},
+	Range{0xa840, 0xa873, 1},
+	Range{0xa882, 0xa8b3, 1},
+	Range{0xa90a, 0xa925, 1},
+	Range{0xa930, 0xa946, 1},
+	Range{0xaa00, 0xaa28, 1},
+	Range{0xaa40, 0xaa42, 1},
+	Range{0xaa44, 0xaa4b, 1},
+	Range{0xac00, 0xd7a3, 1},
+	Range{0xf900, 0xfa2d, 1},
+	Range{0xfa30, 0xfa6a, 1},
+	Range{0xfa70, 0xfad9, 1},
+	Range{0xfb00, 0xfb06, 1},
+	Range{0xfb13, 0xfb17, 1},
+	Range{0xfb1d, 0xfb1d, 1},
+	Range{0xfb1f, 0xfb28, 1},
+	Range{0xfb2a, 0xfb36, 1},
+	Range{0xfb38, 0xfb3c, 1},
+	Range{0xfb3e, 0xfb3e, 1},
+	Range{0xfb40, 0xfb41, 1},
+	Range{0xfb43, 0xfb44, 1},
+	Range{0xfb46, 0xfbb1, 1},
+	Range{0xfbd3, 0xfd3d, 1},
+	Range{0xfd50, 0xfd8f, 1},
+	Range{0xfd92, 0xfdc7, 1},
+	Range{0xfdf0, 0xfdfb, 1},
+	Range{0xfe70, 0xfe74, 1},
+	Range{0xfe76, 0xfefc, 1},
+	Range{0xff21, 0xff3a, 1},
+	Range{0xff41, 0xff5a, 1},
+	Range{0xff66, 0xffbe, 1},
+	Range{0xffc2, 0xffc7, 1},
+	Range{0xffca, 0xffcf, 1},
+	Range{0xffd2, 0xffd7, 1},
+	Range{0xffda, 0xffdc, 1},
+	Range{0x10000, 0x1000b, 1},
+	Range{0x1000d, 0x10026, 1},
+	Range{0x10028, 0x1003a, 1},
+	Range{0x1003c, 0x1003d, 1},
+	Range{0x1003f, 0x1004d, 1},
+	Range{0x10050, 0x1005d, 1},
+	Range{0x10080, 0x100fa, 1},
+	Range{0x10280, 0x1029c, 1},
+	Range{0x102a0, 0x102d0, 1},
+	Range{0x10300, 0x1031e, 1},
+	Range{0x10330, 0x10340, 1},
+	Range{0x10342, 0x10349, 1},
+	Range{0x10380, 0x1039d, 1},
+	Range{0x103a0, 0x103c3, 1},
+	Range{0x103c8, 0x103cf, 1},
+	Range{0x10400, 0x1049d, 1},
+	Range{0x10800, 0x10805, 1},
+	Range{0x10808, 0x10808, 1},
+	Range{0x1080a, 0x10835, 1},
+	Range{0x10837, 0x10838, 1},
+	Range{0x1083c, 0x1083f, 3},
+	Range{0x10900, 0x10915, 1},
+	Range{0x10920, 0x10939, 1},
+	Range{0x10a00, 0x10a00, 1},
+	Range{0x10a10, 0x10a13, 1},
+	Range{0x10a15, 0x10a17, 1},
+	Range{0x10a19, 0x10a33, 1},
+	Range{0x12000, 0x1236e, 1},
+	Range{0x1d400, 0x1d454, 1},
+	Range{0x1d456, 0x1d49c, 1},
+	Range{0x1d49e, 0x1d49f, 1},
+	Range{0x1d4a2, 0x1d4a2, 1},
+	Range{0x1d4a5, 0x1d4a6, 1},
+	Range{0x1d4a9, 0x1d4ac, 1},
+	Range{0x1d4ae, 0x1d4b9, 1},
+	Range{0x1d4bb, 0x1d4bb, 1},
+	Range{0x1d4bd, 0x1d4c3, 1},
+	Range{0x1d4c5, 0x1d505, 1},
+	Range{0x1d507, 0x1d50a, 1},
+	Range{0x1d50d, 0x1d514, 1},
+	Range{0x1d516, 0x1d51c, 1},
+	Range{0x1d51e, 0x1d539, 1},
+	Range{0x1d53b, 0x1d53e, 1},
+	Range{0x1d540, 0x1d544, 1},
+	Range{0x1d546, 0x1d546, 1},
+	Range{0x1d54a, 0x1d550, 1},
+	Range{0x1d552, 0x1d6a5, 1},
+	Range{0x1d6a8, 0x1d6c0, 1},
+	Range{0x1d6c2, 0x1d6da, 1},
+	Range{0x1d6dc, 0x1d6fa, 1},
+	Range{0x1d6fc, 0x1d714, 1},
+	Range{0x1d716, 0x1d734, 1},
+	Range{0x1d736, 0x1d74e, 1},
+	Range{0x1d750, 0x1d76e, 1},
+	Range{0x1d770, 0x1d788, 1},
+	Range{0x1d78a, 0x1d7a8, 1},
+	Range{0x1d7aa, 0x1d7c2, 1},
+	Range{0x1d7c4, 0x1d7cb, 1},
+	Range{0x20000, 0x2a6d6, 1},
+	Range{0x2f800, 0x2fa1d, 1},
+}
 
 func Is(ranges []Range, rune int) bool {
 	// common case: rune is ASCII or Latin-1
diff --git a/src/lib/unicode/letter_test.go b/src/lib/unicode/letter_test.go
index 7ff5546..d39d74e 100644
--- a/src/lib/unicode/letter_test.go
+++ b/src/lib/unicode/letter_test.go
@@ -9,7 +9,7 @@
 	"unicode";
 )
 
-var upper = []int(
+var upper = []int{
 	0x41,
 	0xc0,
 	0xd8,
@@ -31,9 +31,9 @@
 	0x10400,
 	0x1d400,
 	0x1d7ca,
-)
+}
 
-var notupper = []int(
+var notupper = []int{
 	0x40,
 	0x5b,
 	0x61,
@@ -44,9 +44,9 @@
 	0x2150,
 	0xffff,
 	0x10000,
-)
+}
 
-var letter = []int(
+var letter = []int{
 	0x41,
 	0x61,
 	0xaa,
@@ -79,9 +79,9 @@
 	0x20000,
 	0x2f800,
 	0x2fa1d,
-)
+}
 
-var notletter = []int(
+var notletter = []int{
 	0x20,
 	0x35,
 	0x375,
@@ -90,7 +90,7 @@
 	0xfffe,
 	0x1ffff,
 	0x10ffff,
-)
+}
 
 func TestIsLetter(t *testing.T) {
 	for i, r := range(upper) {
diff --git a/src/lib/utf8_test.go b/src/lib/utf8_test.go
index 5499263..7999afd 100644
--- a/src/lib/utf8_test.go
+++ b/src/lib/utf8_test.go
@@ -17,33 +17,33 @@
 	str string;
 }
 
-var utf8map = []Utf8Map (
-	Utf8Map( 0x0000, "\x00" ),
-	Utf8Map( 0x0001, "\x01" ),
-	Utf8Map( 0x007e, "\x7e" ),
-	Utf8Map( 0x007f, "\x7f" ),
-	Utf8Map( 0x0080, "\xc2\x80" ),
-	Utf8Map( 0x0081, "\xc2\x81" ),
-	Utf8Map( 0x00bf, "\xc2\xbf" ),
-	Utf8Map( 0x00c0, "\xc3\x80" ),
-	Utf8Map( 0x00c1, "\xc3\x81" ),
-	Utf8Map( 0x00c8, "\xc3\x88" ),
-	Utf8Map( 0x00d0, "\xc3\x90" ),
-	Utf8Map( 0x00e0, "\xc3\xa0" ),
-	Utf8Map( 0x00f0, "\xc3\xb0" ),
-	Utf8Map( 0x00f8, "\xc3\xb8" ),
-	Utf8Map( 0x00ff, "\xc3\xbf" ),
-	Utf8Map( 0x0100, "\xc4\x80" ),
-	Utf8Map( 0x07ff, "\xdf\xbf" ),
-	Utf8Map( 0x0800, "\xe0\xa0\x80" ),
-	Utf8Map( 0x0801, "\xe0\xa0\x81" ),
-	Utf8Map( 0xfffe, "\xef\xbf\xbe" ),
-	Utf8Map( 0xffff, "\xef\xbf\xbf" ),
-	Utf8Map( 0x10000, "\xf0\x90\x80\x80" ),
-	Utf8Map( 0x10001, "\xf0\x90\x80\x81" ),
-	Utf8Map( 0x10fffe, "\xf4\x8f\xbf\xbe" ),
-	Utf8Map( 0x10ffff, "\xf4\x8f\xbf\xbf" ),
-)
+var utf8map = []Utf8Map {
+	Utf8Map{ 0x0000, "\x00" },
+	Utf8Map{ 0x0001, "\x01" },
+	Utf8Map{ 0x007e, "\x7e" },
+	Utf8Map{ 0x007f, "\x7f" },
+	Utf8Map{ 0x0080, "\xc2\x80" },
+	Utf8Map{ 0x0081, "\xc2\x81" },
+	Utf8Map{ 0x00bf, "\xc2\xbf" },
+	Utf8Map{ 0x00c0, "\xc3\x80" },
+	Utf8Map{ 0x00c1, "\xc3\x81" },
+	Utf8Map{ 0x00c8, "\xc3\x88" },
+	Utf8Map{ 0x00d0, "\xc3\x90" },
+	Utf8Map{ 0x00e0, "\xc3\xa0" },
+	Utf8Map{ 0x00f0, "\xc3\xb0" },
+	Utf8Map{ 0x00f8, "\xc3\xb8" },
+	Utf8Map{ 0x00ff, "\xc3\xbf" },
+	Utf8Map{ 0x0100, "\xc4\x80" },
+	Utf8Map{ 0x07ff, "\xdf\xbf" },
+	Utf8Map{ 0x0800, "\xe0\xa0\x80" },
+	Utf8Map{ 0x0801, "\xe0\xa0\x81" },
+	Utf8Map{ 0xfffe, "\xef\xbf\xbe" },
+	Utf8Map{ 0xffff, "\xef\xbf\xbf" },
+	Utf8Map{ 0x10000, "\xf0\x90\x80\x80" },
+	Utf8Map{ 0x10001, "\xf0\x90\x80\x81" },
+	Utf8Map{ 0x10fffe, "\xf4\x8f\xbf\xbe" },
+	Utf8Map{ 0x10ffff, "\xf4\x8f\xbf\xbf" },
+}
 
 // io.StringBytes with one extra byte at end
 func bytes(s string) []byte {
@@ -161,12 +161,12 @@
 	in string;
 	out int;
 }
-var runecounttests = []RuneCountTest (
-	RuneCountTest( "abcd", 4 ),
-	RuneCountTest( "☺☻☹", 3 ),
-	RuneCountTest( "1,2,3,4", 7 ),
-	RuneCountTest( "\xe2\x00", 2 ),
-)
+var runecounttests = []RuneCountTest {
+	RuneCountTest{ "abcd", 4 },
+	RuneCountTest{ "☺☻☹", 3 },
+	RuneCountTest{ "1,2,3,4", 7 },
+	RuneCountTest{ "\xe2\x00", 2 },
+}
 func TestRuneCount(t *testing.T) {
 	for i := 0; i < len(runecounttests); i++ {
 		tt := runecounttests[i];
diff --git a/src/run.bash b/src/run.bash
index 2c5636c..a7e57f1 100755
--- a/src/run.bash
+++ b/src/run.bash
@@ -48,11 +48,11 @@
 GOMAXPROCS=10 make test
 ) || exit $?
 
-(xcd ../usr/gri/pretty
-make clean
-time make
-make smoketest
-) || exit $?
+# (xcd ../usr/gri/pretty
+# make clean
+# time make
+# make smoketest
+# ) || exit $?
 
 (xcd ../doc/progs
 time ./run
