Handling complex cases where input matches expected output
diff --git a/caste.go b/caste.go
index 80be149..e58d1ae 100644
--- a/caste.go
+++ b/caste.go
@@ -139,6 +139,8 @@
 		for k, val := range v {
 			m[ToString(k)] = ToString(val)
 		}
+	case map[string]string:
+		return v, true
 	default:
 		return m, false
 	}
@@ -154,6 +156,8 @@
 		for k, val := range v {
 			m[ToString(k)] = val
 		}
+	case map[string]interface{}:
+		return v, true
 	default:
 		return m, false
 	}
@@ -169,6 +173,8 @@
 		for _, u := range v {
 			a = append(a, ToString(u))
 		}
+	case []string:
+		return v, true
 	default:
 		return a, false
 	}