         super.init()
     }
 
+    /// Lists all known classes in the project
     lazy var classes: [Type] = {
-        return self.types.filter { type in
-            let isNotClass = type is Struct || type is Enum || type is Protocol
-            return !isNotClass && !type.isExtension
-        }
+        return self.types.filter { $0.isClass }
     }()
 
+    /// lists all known types, excluding protocols
     lazy var all: [Type] = {
         return self.types.filter { !($0 is Protocol) }
     }()
 
+    /// Lists all known protocols
     lazy var protocols: [Type] = {
         return self.types.filter { $0 is Protocol }
     }()
 
+    /// Lists all known structs
     lazy var structs: [Type] = {
         return self.types.filter { $0 is Struct }
     }()
 
+    /// Lists all known enums
     lazy var enums: [Type] = {
         return self.types.filter { $0 is Enum }
     }()
 
+    /// Lists all encountered types, even if they are not known e.g. Apple or 3rd party frameworks
     lazy var based: [String: [Type]] = {
         var content = [String: [Type]]()
         self.all.forEach { type in

        return content
    }()

    lazy var inheriting: [String: [Type]] = {
        var content = [String: [Type]]()
        self.classes.forEach { type in

        return content
    }()

    /// Contains reference to types implementing any known protocol
    lazy var implementing: [String: [Type]] = {
        var content = [String: [Type]]()
        self.all.forEach { type in
