     internal var request: RequestProtocol
     internal var signInPath: String
     internal var registerPath: String
+    internal var refreshPath: String
     
-    public init(key: String, request: RequestProtocol, signInPath: String, registerPath: String) {
+    public init(key: String, request: RequestProtocol, signInPath: String, registerPath: String, refreshPath: String) {
         self.key = key
         self.request = request
         self.signInPath = signInPath
         self.registerPath = registerPath
+        self.refreshPath = refreshPath
     }
     
-    public func register(email: String, password: String, completion: @escaping (PyroAuthResult) -> Void) {
+    public func register(email: String, password: String, completion: @escaping (PyroAuthResult<PyroAuthContent>) -> Void) {
         let data: [AnyHashable: Any] = ["email": email, "password": password, "returnSecureToken": true]
         let path = "\(registerPath)?key=\(key)"
         request.write(path: path, method: .post, data: data) { result in

        }
    }
    
    public func signIn(email: String, password: String, completion: @escaping (PyroAuthResult) -> Void) {
        let data: [AnyHashable: Any] = ["email": email, "password": password, "returnSecureToken": true]
        let path = "\(signInPath)?key=\(key)"
        request.write(path: path, method: .post, data: data) { result in

        
        var registerPath: String = ""
        var signInPath: String = ""
        var refreshPath: String = ""
        
        if let readerInfo = reader.data as? [AnyHashable: Any] {
            registerPath = (readerInfo["register_path"] as? String) ?? ""
            signInPath = (readerInfo["sign_in_path"] as? String) ?? ""
            refreshPath = (readerInfo["refresh_path"] as? String) ?? ""
        }
        
        let auth = PyroAuth(key: key, request: request, signInPath: signInPath, registerPath: registerPath, refreshPath: refreshPath)
        return auth
    }
}
