diff --git a/mat2 b/mat2
index 6ffa86725e0e158c79e74a6b4d91c75570842bb4..295afd507c598c207aed1dfc23ab0db5a662b4f9 100755
--- a/mat2
+++ b/mat2
@@ -63,34 +63,30 @@ def show_meta(filename: str):
         return
 
     p, mtype = parser_factory.get_parser(filename)  # type: ignore
+    print("[+] Metadata for %s:" % filename)
+    metadata = p.get_meta().items()
     if p is None:
         print("[-] %s's format (%s) is not supported" % (filename, mtype))
         return
+    print_meta(metadata)
 
-    print("[+] Metadata for %s:" % filename)
-    metadata = p.get_meta().items()
+
+def print_meta(metadata: dict):
     if not metadata:
         print("  No metadata found")
         return
 
     for k, v in metadata:
         zipmeta = v
-        zipmeta_name = v
+        zipmeta_name = k
         try:  # FIXME this is ugly.
             if not isinstance(zipmeta, dict):
                 print("  %s: %s" % (k, v))
+            else:
+                print_meta(v)
         except UnicodeEncodeError:
             print("  %s: harmful content" % k)
-    if mtype in recursive_mtype:
-        print("[+] Metadata for files inside the archive :")
-        if isinstance(zipmeta, dict):
-            for name, metas in zipmeta.items():
-                try:  # FIXME this is ugly.
-                    print("  %s" % name)
-                    for meta_name, meta in metas.items():
-                        print("    %s: %s" % (meta_name, meta))
-                except UnicodeEncodeError:
-                    print("  %s: harmful content" % zipmeta_name)
+
 
 def clean_meta(filename: str, is_lightweight: bool, policy: UnknownMemberPolicy) -> bool:
     if not __check_file(filename, os.R_OK|os.W_OK):