diff --git a/api_c.go b/api_c.go
index 9cdb1aa..6d75786 100644
--- a/api_c.go
+++ b/api_c.go
@@ -26,16 +26,15 @@
 
 // Create a new parser object.
 func yaml_parser_initialize(parser *yaml_parser_t) bool {
-	// [Go] These should be initialized lazily instead.
 	*parser = yaml_parser_t{
 		raw_buffer:     make([]byte, 0, input_raw_buffer_size),
 		buffer:         make([]byte, 0, input_buffer_size),
-		tokens:         make([]yaml_token_t, 0, initial_queue_size),
-		indents:        make([]int, 0, initial_stack_size),
-		simple_keys:    make([]yaml_simple_key_t, 0, initial_stack_size),
-		states:         make([]yaml_parser_state_t, 0, initial_stack_size),
-		marks:          make([]yaml_mark_t, 0, initial_stack_size),
-		tag_directives: make([]yaml_tag_directive_t, 0, initial_stack_size),
+		//tokens:         make([]yaml_token_t, 0, initial_queue_size),
+		//indents:        make([]int, 0, initial_stack_size),
+		//simple_keys:    make([]yaml_simple_key_t, 0, initial_stack_size),
+		//states:         make([]yaml_parser_state_t, 0, initial_stack_size),
+		//marks:          make([]yaml_mark_t, 0, initial_stack_size),
+		//tag_directives: make([]yaml_tag_directive_t, 0, initial_stack_size),
 	}
 	return true
 }
diff --git a/decode_test.go b/decode_test.go
index b341848..182eed0 100644
--- a/decode_test.go
+++ b/decode_test.go
@@ -1,6 +1,7 @@
 package goyaml_test
 
 import (
+	"io/ioutil"
 	. "launchpad.net/gocheck"
 	"launchpad.net/goyaml"
 	"math"
@@ -266,3 +267,33 @@
 	c.Assert(m["abc"].value, Equals, 1)
 	c.Assert(m["ghi"].value, Equals, 3)
 }
+
+
+//var data []byte
+//func init() {
+//	var err error
+//	data, err = ioutil.ReadFile("/tmp/file.yaml")
+//	if err != nil {
+//		panic(err)
+//	}
+//}
+//
+//func (s *S) BenchmarkUnmarshal(c *C) {
+//	var err error
+//	for i := 0; i < c.N; i++ {
+//		var v map[string]interface{}
+//		err = goyaml.Unmarshal(data, &v)
+//	}
+//	if err != nil {
+//		panic(err)
+//	}
+//}
+//
+//func (s *S) BenchmarkMarshal(c *C) {
+//	var v map[string]interface{}
+//	goyaml.Unmarshal(data, &v)
+//	c.ResetTimer()
+//	for i := 0; i < c.N; i++ {
+//		goyaml.Marshal(&v)
+//	}
+//}
diff --git a/encode_test.go b/encode_test.go
index 1d63c02..78e3112 100644
--- a/encode_test.go
+++ b/encode_test.go
@@ -12,105 +12,191 @@
 var marshalIntTest = 123
 
 var marshalTests = []struct {
-	data  string
 	value interface{}
+	data  string
 }{
-	{"{}\n", &struct{}{}},
-	{"v: hi\n", map[string]string{"v": "hi"}},
-	{"v: hi\n", map[string]interface{}{"v": "hi"}},
-	{"v: \"true\"\n", map[string]string{"v": "true"}},
-	{"v: \"false\"\n", map[string]string{"v": "false"}},
-	{"v: true\n", map[string]interface{}{"v": true}},
-	{"v: false\n", map[string]interface{}{"v": false}},
-	{"v: 10\n", map[string]interface{}{"v": 10}},
-	{"v: -10\n", map[string]interface{}{"v": -10}},
-	{"v: 42\n", map[string]uint{"v": 42}},
-	{"v: 4294967296\n", map[string]interface{}{"v": int64(4294967296)}},
-	{"v: 4294967296\n", map[string]int64{"v": int64(4294967296)}},
-	{"v: 4294967296\n", map[string]uint64{"v": 4294967296}},
-	{"v: \"10\"\n", map[string]interface{}{"v": "10"}},
-	{"v: 0.1\n", map[string]interface{}{"v": 0.1}},
-	{"v: 0.1\n", map[string]interface{}{"v": float64(0.1)}},
-	{"v: -0.1\n", map[string]interface{}{"v": -0.1}},
-	{"v: .inf\n", map[string]interface{}{"v": math.Inf(+1)}},
-	{"v: -.inf\n", map[string]interface{}{"v": math.Inf(-1)}},
-	{"v: .nan\n", map[string]interface{}{"v": math.NaN()}},
-	{"v: null\n", map[string]interface{}{"v": nil}},
-	{"v: \"\"\n", map[string]interface{}{"v": ""}},
-	{"v:\n- A\n- B\n", map[string][]string{"v": []string{"A", "B"}}},
-	{"v:\n- A\n- 1\n", map[string][]interface{}{"v": []interface{}{"A", 1}}},
-	{"a:\n  b: c\n",
-		map[string]interface{}{"a": map[interface{}]interface{}{"b": "c"}}},
+	{
+		&struct{}{},
+		"{}\n",
+	}, {
+		map[string]string{"v": "hi"},
+		"v: hi\n",
+	}, {
+		map[string]interface{}{"v": "hi"},
+		"v: hi\n",
+	}, {
+		map[string]string{"v": "true"},
+		"v: \"true\"\n",
+	}, {
+		map[string]string{"v": "false"},
+		"v: \"false\"\n",
+	}, {
+		map[string]interface{}{"v": true},
+		"v: true\n",
+	}, {
+		map[string]interface{}{"v": false},
+		"v: false\n",
+	}, {
+		map[string]interface{}{"v": 10},
+		"v: 10\n",
+	}, {
+		map[string]interface{}{"v": -10},
+		"v: -10\n",
+	}, {
+		map[string]uint{"v": 42},
+		"v: 42\n",
+	}, {
+		map[string]interface{}{"v": int64(4294967296)},
+		"v: 4294967296\n",
+	}, {
+		map[string]int64{"v": int64(4294967296)},
+		"v: 4294967296\n",
+	}, {
+		map[string]uint64{"v": 4294967296},
+		"v: 4294967296\n",
+	}, {
+		map[string]interface{}{"v": "10"},
+		"v: \"10\"\n",
+	}, {
+		map[string]interface{}{"v": 0.1},
+		"v: 0.1\n",
+	}, {
+		map[string]interface{}{"v": float64(0.1)},
+		"v: 0.1\n",
+	}, {
+		map[string]interface{}{"v": -0.1},
+		"v: -0.1\n",
+	}, {
+		map[string]interface{}{"v": math.Inf(+1)},
+		"v: .inf\n",
+	}, {
+		map[string]interface{}{"v": math.Inf(-1)},
+		"v: -.inf\n",
+	}, {
+		map[string]interface{}{"v": math.NaN()},
+		"v: .nan\n",
+	}, {
+		map[string]interface{}{"v": nil},
+		"v: null\n",
+	}, {
+		map[string]interface{}{"v": ""},
+		"v: \"\"\n",
+	}, {
+		map[string][]string{"v": []string{"A", "B"}},
+		"v:\n- A\n- B\n",
+	}, {
+		map[string][]interface{}{"v": []interface{}{"A", 1, map[string][]int{"B": []int{2, 3}}}},
+		"v:\n- A\n- 1\n- B:\n  - 2\n  - 3\n",
+	}, {
+		map[string]interface{}{"a": map[interface{}]interface{}{"b": "c"}},
+		"a:\n  b: c\n",
+	},
 
 	// Simple values.
-	{"123\n", &marshalIntTest},
+	{
+		&marshalIntTest,
+		"123\n",
+	},
 
 	// Structures
-	{"hello: world\n", &struct{ Hello string }{"world"}},
-	{"a:\n  b: c\n", &struct {
-		A struct {
-			B string
-		}
-	}{struct{ B string }{"c"}}},
-	{"a:\n  b: c\n", &struct {
-		A *struct {
-			B string
-		}
-	}{&struct{ B string }{"c"}}},
-	{"a: null\n", &struct {
-		A *struct {
-			B string
-		}
-	}{}},
-	{"a: 1\n", &struct{ A int }{1}},
-	{"a:\n- 1\n- 2\n", &struct{ A []int }{[]int{1, 2}}},
-	{"a: 1\n", &struct {
-		B int "a"
-	}{1}},
-	{"a: true\n", &struct{ A bool }{true}},
-
-	// Conditional flag
-	{"a: 1\n", &struct {
-		A int "a,omitempty"
-		B int "b,omitempty"
-	}{1, 0}},
-	{"{}\n", &struct {
-		A int "a,omitempty"
-		B int "b,omitempty"
-	}{0, 0}},
-	{"{}\n", &struct {
-		A *struct{ X int } "a,omitempty"
-		B int              "b,omitempty"
-	}{nil, 0}},
-
-	// Flow flag
-	{"a: [1, 2]\n", &struct {
-		A []int "a,flow"
-	}{[]int{1, 2}}},
-	{"a: {b: c}\n",
-		&struct {
-			A map[string]string "a,flow"
-		}{map[string]string{"b": "c"}}},
-	{"a: {b: c}\n",
+	{
+		&struct{ Hello string }{"world"},
+		"hello: world\n",
+	}, {
 		&struct {
 			A struct {
 				B string
+			}
+		}{struct{ B string }{"c"}},
+		"a:\n  b: c\n",
+	}, {
+		&struct {
+			A *struct {
+				B string
+			}
+		}{&struct{ B string }{"c"}},
+		"a:\n  b: c\n",
+	}, {
+		&struct {
+			A *struct {
+				B string
+			}
+		}{},
+		"a: null\n",
+	}, {
+		&struct{ A int }{1},
+		"a: 1\n",
+	}, {
+		&struct{ A []int }{[]int{1, 2}},
+		"a:\n- 1\n- 2\n",
+	}, {
+		&struct {
+			B int "a"
+		}{1},
+		"a: 1\n",
+	}, {
+		&struct{ A bool }{true},
+		"a: true\n",
+	},
+
+	// Conditional flag
+	{
+		&struct {
+			A int "a,omitempty"
+			B int "b,omitempty"
+		}{1, 0},
+		"a: 1\n",
+	}, {
+		&struct {
+			A int "a,omitempty"
+			B int "b,omitempty"
+		}{0, 0},
+		"{}\n",
+	}, {
+		&struct {
+			A *struct{ X int } "a,omitempty"
+			B int              "b,omitempty"
+		}{nil, 0},
+		"{}\n",
+	},
+
+	// Flow flag
+	{
+		&struct {
+			A []int "a,flow"
+		}{[]int{1, 2}},
+		"a: [1, 2]\n",
+	}, {
+		&struct {
+			A map[string]string "a,flow"
+		}{map[string]string{"b": "c", "d": "e"}},
+		"a: {b: c, d: e}\n",
+	}, {
+		&struct {
+			A struct {
+				B, D string
 			} "a,flow"
-		}{struct{ B string }{"c"}}},
+		}{struct{ B, D string }{"c", "e"}},
+		"a: {b: c, d: e}\n",
+	},
 
 	// Unexported field
-	{"a: 1\n",
+	{
 		&struct {
 			u int
 			A int
-		}{0, 1}},
+		}{0, 1},
+		"a: 1\n",
+	},
 
 	// Ignored field
-	{"a: 1\n",
+	{
 		&struct {
 			A int
 			B int "-"
-		}{1, 2}},
+		}{1, 2},
+		"a: 1\n",
+	},
 }
 
 func (s *S) TestMarshal(c *C) {
