mapstructure can decode non-maps
diff --git a/mapstructure.go b/mapstructure.go
index 83676f2..5c9c196 100644
--- a/mapstructure.go
+++ b/mapstructure.go
@@ -44,10 +44,6 @@
 		return errors.New("val must be addressable (a pointer)")
 	}
 
-	if val.Kind() != reflect.Struct {
-		return errors.New("val must be an addressable struct")
-	}
-
 	return decode("", m, val)
 }
 
diff --git a/mapstructure_test.go b/mapstructure_test.go
index f55e829..d419e7d 100644
--- a/mapstructure_test.go
+++ b/mapstructure_test.go
@@ -101,6 +101,25 @@
 	}
 }
 
+func TestDecode_NonStruct(t *testing.T) {
+	t.Parallel()
+
+	input := map[string]interface{}{
+		"foo": "bar",
+		"bar": "baz",
+	}
+
+	var result map[string]string
+	err := Decode(input, &result)
+	if err != nil {
+		t.Fatalf("err: %s", err)
+	}
+
+	if result["foo"] != "bar" {
+		t.Fatal("foo is not bar")
+	}
+}
+
 func TestMap(t *testing.T) {
 	t.Parallel()
 
@@ -337,20 +356,6 @@
 	}
 }
 
-func TestNonStructValue(t *testing.T) {
-	t.Parallel()
-
-	result := 42
-	err := Decode(map[string]interface{}{}, &result)
-	if err == nil {
-		t.Fatal("error should exist")
-	}
-
-	if err.Error() != "val must be an addressable struct" {
-		t.Errorf("got unexpected error: %s", err)
-	}
-}
-
 func TestTagged(t *testing.T) {
 	t.Parallel()