diff --git a/src/parser_factory.py b/src/parser_factory.py
index 7fd42d7b661c9cffe010a119594f147dae925760..770f17c944ff07f7c15257791a9c92bf8d40fc1a 100644
--- a/src/parser_factory.py
+++ b/src/parser_factory.py
@@ -18,7 +18,10 @@ for module_loader, name, ispkg in pkgutil.walk_packages('.src'):
 
 def get_parser(filename: str) -> (T, str):
     mtype, _ = mimetypes.guess_type(filename)
-    for c in abstract.AbstractParser.__subclasses__():
+    def get_subclasses(cls):
+        return cls.__subclasses__() + \
+               [g for s in cls.__subclasses__() for g in get_subclasses(s)]
+    for c in get_subclasses(abstract.AbstractParser):
         if mtype in c.mimetypes:
             return c(filename), mtype
     return None, mtype