comment
diff --git a/mapstructure.go b/mapstructure.go
index 070495d..8886d34 100644
--- a/mapstructure.go
+++ b/mapstructure.go
@@ -21,6 +21,14 @@
 // struct.
 //
 // The type should be DecodeHookFuncType or DecodeHookFuncKind.
+// Either is accepted. Types are a superset of Kinds (Types can return
+// Kinds) and are generally a richer thing to use, but Kinds are simpler
+// if you only need those.
+//
+// The reason DecodeHookFunc is multi-typed is for backwards compatibility:
+// we started with Kinds and then realized Types were the better solution,
+// but have a promise to not break backwards compat so we now support
+// both.
 type DecodeHookFunc interface{}
 
 type DecodeHookFuncType func(reflect.Type, reflect.Type, interface{}) (interface{}, error)