diff --git a/mapstructure.go b/mapstructure.go
index 49362eb..eda04fd 100644
--- a/mapstructure.go
+++ b/mapstructure.go
@@ -7,9 +7,9 @@
 	"strings"
 )
 
-// MapToStruct takes a map and uses reflection to convert it into the
+// Decode takes a map and uses reflection to convert it into the
 // given Go native structure. val must be a pointer to a struct.
-func MapToStruct(m map[string]interface{}, rawVal interface{}) error {
+func Decode(m map[string]interface{}, rawVal interface{}) error {
 	val := reflect.ValueOf(rawVal)
 	if val.Kind() != reflect.Ptr {
 		return errors.New("val must be a pointer")
@@ -90,7 +90,9 @@
 	}
 
 	// At this point we know that data is a map with string keys, so
-	// we can properly cast it here.
+	// we can properly cast it here. We use the "Interface()" value because
+	// this gets us the proper interface whether or not data is a pointer
+	// or not.
 	m, ok := dataVal.Interface().(map[string]interface{})
 	if !ok {
 		panic("data could not be cast as map[string]interface{}")
diff --git a/mapstructure_test.go b/mapstructure_test.go
index 82ee210..f420fc5 100644
--- a/mapstructure_test.go
+++ b/mapstructure_test.go
@@ -24,7 +24,7 @@
 	}
 
 	var result Basic
-	err := MapToStruct(input, &result)
+	err := Decode(input, &result)
 	if err != nil {
 		t.Errorf("got an err: %s", err.Error())
 		t.FailNow()
@@ -60,7 +60,7 @@
 	}
 
 	var result Nested
-	err := MapToStruct(input, &result)
+	err := Decode(input, &result)
 	if err != nil {
 		t.Errorf("got an err: %s", err.Error())
 		t.FailNow()
@@ -100,7 +100,7 @@
 	}
 
 	var result Nested
-	err := MapToStruct(input, &result)
+	err := Decode(input, &result)
 	if err != nil {
 		t.Errorf("got an err: %s", err.Error())
 		t.FailNow()
@@ -135,7 +135,7 @@
 	}
 
 	var result Basic
-	err := MapToStruct(input, &result)
+	err := Decode(input, &result)
 	if err == nil {
 		t.Error("error should exist")
 		t.FailNow()
@@ -149,7 +149,7 @@
 func TestNonPtrValue(t *testing.T) {
 	t.Parallel()
 
-	err := MapToStruct(map[string]interface{}{}, Basic{})
+	err := Decode(map[string]interface{}{}, Basic{})
 	if err == nil {
 		t.Error("error should exist")
 		t.FailNow()
@@ -164,7 +164,7 @@
 	t.Parallel()
 
 	result := 42
-	err := MapToStruct(map[string]interface{}{}, &result)
+	err := Decode(map[string]interface{}{}, &result)
 	if err == nil {
 		t.Error("error should exist")
 		t.FailNow()
