diff --git a/polytope/api/Auth.py b/polytope/api/Auth.py
index 5a2a0f3..a94d910 100644
--- a/polytope/api/Auth.py
+++ b/polytope/api/Auth.py
@@ -148,17 +148,25 @@ def fetch_key(self, login=True):
                 email = self.read_email
                 self._logger.info("Polytope user key found in session cache for user " + config["username"])
             else:
-                key_file = Path(config["key_path"]) / config["username"]
+                key_file = Path(config["key_path"])
                 try:
                     with open(str(key_file), "r") as infile:
                         info = json.load(infile)
-                        key = info["key"]
-                        email = info["email"]
+                        key = info["user_key"]
+                        email = info["user_email"]
+
+                # TODO: this is messy
                 except FileNotFoundError:
-                    key = None
-                    email = None
-                    if login:
-                        key, email = self.login(persist=False)
+                    try:
+                        with open(str(Path.home() / ".ecmwfapirc"), "r") as infile:
+                            info = json.load(infile)
+                            key = info["key"]
+                            email = info["email"]
+                    except FileNotFoundError:
+                        key = None
+                        email = None
+                        if login:
+                            key, email = self.login(persist=False)
                 else:
                     self.read_key = key
                     self.read_email = email
@@ -188,7 +196,7 @@ def persist(self, key, email, username=None):
         if not username:
             username = config["username"]
         os.makedirs(config["key_path"], exist_ok=True)
-        key_file = Path(config["key_path"]) / username
+        key_file = Path(config["key_path"])
         with open(str(key_file), "w", encoding="utf8") as outfile:
             json.dump({"key": key, "email": email}, outfile)
         self.read_key = key
@@ -212,7 +220,7 @@ def erase(self, username=None):
         config = self.config.get()
         if not username:
             username = config["username"]
-        key_path = Path(config["key_path"]) / username
+        key_path = Path(config["key_path"])
         try:
             os.remove(str(key_path))
             self._logger.info("Credentials removed for " + username)
diff --git a/polytope/api/Config.py b/polytope/api/Config.py
index eb3eaa0..f4d1491 100644
--- a/polytope/api/Config.py
+++ b/polytope/api/Config.py
@@ -122,7 +122,7 @@ def __init__(
             self.config_path = config_path
         else:
             self.config_path = Path.home() / ".polytope-client"
-        self.default_config["key_path"] = str(self.config_path / "keys")
+        self.default_config["key_path"] = Path.home() / ".polytopeapirc"
         self.file_config = helpers.read_config(self.config_path)
 
         # Reading env var configuration
diff --git a/polytope/api/RequestManager.py b/polytope/api/RequestManager.py
index 17a6100..23f2118 100644
--- a/polytope/api/RequestManager.py
+++ b/polytope/api/RequestManager.py
@@ -320,6 +320,7 @@ def retrieve(
         situation = "trying to submit a retrieval request"
 
         # replaced_level = helpers.lower_stream_handler_level(self._logger)
+        # helpers.lower_stream_handler_level(self._logger)
         # colls = self.coll_visitor.list()
         # helpers.recover_stream_handler_level(self._logger, replaced_level)
         # if name not in colls:
diff --git a/polytope/version.py b/polytope/version.py
index bc8c296..4910b9e 100644
--- a/polytope/version.py
+++ b/polytope/version.py
@@ -1 +1 @@
-__version__ = "0.7.2"
+__version__ = "0.7.3"
diff --git a/tox.ini b/tox.ini
index 22b124b..546d042 100644
--- a/tox.ini
+++ b/tox.ini
@@ -6,3 +6,6 @@ extend-ignore = E203
 [isort]
 profile=black
 skip_glob=.*
+[tool.ruff]
+line-length = 120
+lint.extend-select = ["I"]
\ No newline at end of file