     /// - Parameter level: the severity level
     /// - Parameter logs: a list of associated logs
     /// - Parameter inherit: if `true`, all `Log`s of the parent are inherited
-    public func registerLogger(path : String, level : Level, logs: [Log] = [], inherit : Bool = true) -> LogManager {
+    /// - Returns: Self
+    public func registerLogger(path : String, level : Level, logs: [Log] = [], inherit : Bool = true) -> Self {
         mutex.synchronized {
             self.modifications += 1
 


    // MARK: init

    init() {
        LogManager.instance = self // simply override...good enough
    }


    /// Return a `Logger` given a specific class. This function will build the fully qualified class name and try to find an appropriate logger
    /// - Parameter forClass: the specific class
    /// - Returns: a Logger
    public func getLogger(forClass clazz : AnyClass) -> Logger {
        return getLogger(forName: Classes.className(clazz, qualified: true))
    }

    /// Return a `Logger` given a name. This will either return a direct matching logger or the next parent logger by stripping the last legs of the name
    /// - Parameter forName: the logger name
    /// - Returns: a Logger
    public func getLogger(forName path : String) -> Logger {
        var logger : Logger?

