diff --git a/maloja/apis/_apikeys.py b/maloja/apis/_apikeys.py
index 3cd42ca..cc49c92 100644
--- a/maloja/apis/_apikeys.py
+++ b/maloja/apis/_apikeys.py
@@ -7,6 +7,8 @@ from doreah.logging import log
 from ..globalconf import data_dir
 
 apikeystore = KeyStore(file=data_dir['clients']("apikeys.yml"),save_endpoint="/apis/mlj_1/apikeys")
+
+
 from .. import upgrade
 upgrade.upgrade_apikeys()
 
diff --git a/maloja/database/__init__.py b/maloja/database/__init__.py
index 6b924b8..b1bad3d 100644
--- a/maloja/database/__init__.py
+++ b/maloja/database/__init__.py
@@ -16,7 +16,6 @@ from . import dbcache
 
 # doreah toolkit
 from doreah.logging import log
-from doreah import tsv
 from doreah.auth import authenticated_api, authenticated_api_with_alternate
 import doreah
 
diff --git a/maloja/database/associated.py b/maloja/database/associated.py
index b930056..00f6a5f 100644
--- a/maloja/database/associated.py
+++ b/maloja/database/associated.py
@@ -4,8 +4,8 @@
 ## directly in sql
 
 
-from doreah import tsv
-
+import csv
+import os
 
 from . import sqldb
 from ..globalconf import data_dir
@@ -18,8 +18,14 @@ def load_associated_rules():
 		conn.execute(op)
 
 	# load from file
-	raw = tsv.parse_all(data_dir["rules"](),"string","string","string")
-	rules = [{'source_artist':b,'target_artist':c} for [a,b,c] in raw if a=="countas"]
+	rawrules = []
+	for f in os.listdir(data_dir["rules"]()):
+		if f.split('.')[-1].lower() != 'tsv': continue
+		filepath = data_dir["rules"](f)
+		with open(filepath,'r') as filed:
+			reader = csv.reader(filed,delimiter="\t")
+			rawrules += [[col for col in entry if col] for entry in reader if len(entry)>0 and not entry[0].startswith('#')]
+	rules = [{'source_artist':r[1],'target_artist':r[2]} for r in rawrules if r[0]=="countas"]
 
 	#for rule in rules:
 	#	print(f"Rule to replace {rule['source_artist']} with {rule['target_artist']}:")
diff --git a/maloja/upgrade.py b/maloja/upgrade.py
index 991f5c6..de85c00 100644
--- a/maloja/upgrade.py
+++ b/maloja/upgrade.py
@@ -2,12 +2,13 @@
 
 import os
 import re
+import csv
 
 from doreah.logging import log
 from doreah.io import col
 
 from .globalconf import data_dir, dir_settings
-from . import apis
+from .apis import _apikeys
 
 
 def upgrade_apikeys():
@@ -15,12 +16,14 @@ def upgrade_apikeys():
 	oldfile = os.path.join(dir_settings['config'],"clients","authenticated_machines.tsv")
 	if os.path.exists(oldfile):
 		try:
-			from doreah import tsv
-			clients = tsv.parse(oldfile,"string","string")
-			for key,identifier in clients:
-				apis.apikeystore[identifier] = key
-			os.remove(oldfile)
+				with open(oldfile,'r') as filed:
+					reader = csv.reader(filed,delimiter="\t")
+					entries = [[col for col in entry if col] for entry in reader if len(entry)>0 and not entry[0].startswith('#')]
+				for key,identifier in entries:
+					_apikeys.apikeystore[identifier] = key
+				os.remove(oldfile)
 		except:
+			raise
 			pass