diff --git a/parser_test.go b/parser_test.go
index fd271ce..1531a1f 100644
--- a/parser_test.go
+++ b/parser_test.go
@@ -25,12 +25,12 @@
 }
 
 func TestSimpleKV(t *testing.T) {
-	tree := Load("a = 42")
+	tree, _ := Load("a = 42")
 	assertTree(t, tree, map[string]interface{}{
 		"a": int64(42),
 	})
 
-	tree = Load("a = 42\nb = 21")
+	tree, _ = Load("a = 42\nb = 21")
 	assertTree(t, tree, map[string]interface{}{
 		"a": int64(42),
 		"b": int64(21),
@@ -38,7 +38,7 @@
 }
 
 func TestSimpleNumbers(t *testing.T) {
-	tree := Load("a = +42\nb = -21\nc = +4.2\nd = -2.1")
+	tree, _ := Load("a = +42\nb = -21\nc = +4.2\nd = -2.1")
 	assertTree(t, tree, map[string]interface{}{
 		"a": int64(42),
 		"b": int64(-21),
@@ -48,21 +48,21 @@
 }
 
 func TestSimpleDate(t *testing.T) {
-	tree := Load("a = 1979-05-27T07:32:00Z")
+	tree, _ := Load("a = 1979-05-27T07:32:00Z")
 	assertTree(t, tree, map[string]interface{}{
 		"a": time.Date(1979, time.May, 27, 7, 32, 0, 0, time.UTC),
 	})
 }
 
 func TestSimpleString(t *testing.T) {
-	tree := Load("a = \"hello world\"")
+	tree, _ := Load("a = \"hello world\"")
 	assertTree(t, tree, map[string]interface{}{
 		"a": "hello world",
 	})
 }
 
 func TestBools(t *testing.T) {
-	tree := Load("a = true\nb = false")
+	tree, _ := Load("a = true\nb = false")
 	assertTree(t, tree, map[string]interface{}{
 		"a": true,
 		"b": false,
@@ -70,33 +70,33 @@
 }
 
 func TestNestedKeys(t *testing.T) {
-	tree := Load("[a.b.c]\nd = 42")
+	tree, _ := Load("[a.b.c]\nd = 42")
 	assertTree(t, tree, map[string]interface{}{
 		"a.b.c.d": int64(42),
 	})
 }
 
 func TestArraySimple(t *testing.T) {
-	tree := Load("a = [42, 21, 10]")
+	tree, _ := Load("a = [42, 21, 10]")
 	assertTree(t, tree, map[string]interface{}{
 		"a": []int64{int64(42), int64(21), int64(10)},
 	})
 
-	tree = Load("a = [42, 21, 10,]")
+	tree, _ = Load("a = [42, 21, 10,]")
 	assertTree(t, tree, map[string]interface{}{
 		"a": []int64{int64(42), int64(21), int64(10)},
 	})
 }
 
 func TestArrayMultiline(t *testing.T) {
-	tree := Load("a = [42,\n21, 10,]")
+	tree, _ := Load("a = [42,\n21, 10,]")
 	assertTree(t, tree, map[string]interface{}{
 		"a": []int64{int64(42), int64(21), int64(10)},
 	})
 }
 
 func TestArrayNested(t *testing.T) {
-	tree := Load("a = [[42, 21], [10]]")
+	tree, _ := Load("a = [[42, 21], [10]]")
 	assertTree(t, tree, map[string]interface{}{
 		"a": [][]int64{[]int64{int64(42), int64(21)}, []int64{int64(10)}},
 	})
diff --git a/toml.go b/toml.go
index e8f5556..f27548a 100644
--- a/toml.go
+++ b/toml.go
@@ -5,6 +5,7 @@
 package toml
 
 import (
+	"runtime"
 	"strings"
 )
 
@@ -56,7 +57,7 @@
 	(*subtree)[keys[len(keys)-1]] = value
 }
 
-// createSubTree takes a tree and a key andcreate the necessary intermediate
+// createSubTree takes a tree and a key and create the necessary intermediate
 // subtrees to create a subtree at that point. In-place.
 //
 // e.g. passing a.b.c will create (assuming tree is empty) tree[a], tree[a][b]
@@ -74,7 +75,16 @@
 }
 
 // Create a TomlTree from a string.
-func Load(content string) *TomlTree {
+func Load(content string) (tree *TomlTree, err error) {
+	defer func() {
+		if r := recover(); r != nil {
+			if _, ok := r.(runtime.Error); ok {
+				panic(r)
+			}
+			err = r.(error)
+		}
+	}()
 	_, flow := lex(content)
-	return parse(flow)
+	tree = parse(flow)
+	return
 }
