Don't allow duplicate keys
diff --git a/parser.go b/parser.go
index ee5758a..ba78f3d 100644
--- a/parser.go
+++ b/parser.go
@@ -104,6 +104,9 @@
 	if p.currentGroup != "" {
 		final_key = p.currentGroup + "." + key.val
 	}
+	if p.tree.Get(final_key) != nil {
+		panic(fmt.Sprintf("the following key was defined twice: %s", final_key))
+	}
 	p.tree.Set(final_key, value)
 	return parseStart(p)
 }
diff --git a/parser_test.go b/parser_test.go
index 9108bab..66e7eaa 100644
--- a/parser_test.go
+++ b/parser_test.go
@@ -149,6 +149,7 @@
 	})
 }
 
+
 func TestArrayMixedTypes(t *testing.T) {
 	_, err := Load("a = [42, 16.0]")
 	if err.Error() != "mixed types in array" {
@@ -210,6 +211,13 @@
 	}
 }
 
+func TestDuplicateKeys(t *testing.T) {
+	_, err := Load("foo = 2\nfoo = 3")
+	if err.Error() != "the following key was defined twice: foo" {
+		t.Error("Bad error message:", err.Error())
+	}
+}
+
 func TestEmptyIntermediateTable(t *testing.T) {
 	_, err := Load("[foo..bar]")
 	if err.Error() != "empty intermediate table" {