diff --git a/LeBoulbiNet/boulbi.py b/LeBoulbiNet/boulbi.py
index 7468558..da66a16 100644
--- a/LeBoulbiNet/boulbi.py
+++ b/LeBoulbiNet/boulbi.py
@@ -9,7 +9,7 @@ from glossolalia.lstm import LisSansTaMaman
 def train():
     # should_train = True
     nb_words = 20
-    nb_epoch = 50
+    nb_epoch = 100
     nb_layers = 64
     dropout = .2  # TODO finetune layers/dropout
     validation_split = 0.2
diff --git a/LeBoulbiNet/tweet.py b/LeBoulbiNet/tweet.py
new file mode 100755
index 0000000..6703dd6
--- /dev/null
+++ b/LeBoulbiNet/tweet.py
@@ -0,0 +1,41 @@
+#! /usr/bin/env python
+from glossolalia.tweeper import Tweeper
+
+
+def tweet():
+    candidates = [
+        "On m'a dit \"oh ! regarde la police ici c'est pas de klawi juice",
+        "La vie est de la chatte de la chatte à la hausse",
+        "Le rap français est noir sous terre et c'est trop de classe",
+        "boulbi de la queue",
+        "La vie est de platine, sans l'époque des fois",
+        "la chatte de la chatte",
+        "Bienvenue dans le corps, shit sur un linceul",
+        "La vie est la paix de la paix",
+        "tu es la bite au volant",
+        "La vie est une chienne on est de la bite sur le dos",
+
+        "La vie est la paix de la paix",
+        "La life est une mauvaise salope",
+        "On dirait l'afrique en bas du galion à pépin sombre",
+        "comme l'œil du rap",
+        "Je suis de la misère et la voisine de la paix",
+        "Les négros sont les animals, et les groupies en premiers",
+        "Un jour dans le boule à la chatte à la té-san",
+        "la té-san de la peinture #willydenzey",
+        "Les négros sont les caddies de Cortez",
+        "Nous nous nous tu veux pas la folie",
+        "je suis au charbon avec un million et la police ici",
+        "J'suis cocaïne, on fait la vie au ritz",
+
+        "Les négros sont les tass",
+        "Le monde est de compétition",
+        "viens bien, tu vas pas ouloulou ! ! !",
+        "je suis de la chatte de la famille",
+        "On m'a dit \"oh ! regarde la haine\"",
+    ]
+    Tweeper("LeBoulbiNet").next_tweet(candidates)
+
+
+if __name__ == '__main__':
+    tweet()
diff --git a/ZuKurzt/data.txt b/ZuKurzt/data.txt
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/ZuKurzt/data.txt
diff --git a/ZuKurzt/zukurzt.py b/ZuKurzt/zukurzt.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/ZuKurzt/zukurzt.py
diff --git a/glossolalia/tweeper.py b/glossolalia/tweeper.py
index c6c9014..ccd52ce 100755
--- a/glossolalia/tweeper.py
+++ b/glossolalia/tweeper.py
@@ -7,14 +7,23 @@ from didyoumean3.didyoumean import did_you_mean
 from tweepy import Cursor
 
 
+def get_cred(name: str, kind: str):
+    codenames = {
+        "LeBoulbiNet": "BOULBI",
+        "KoozDawa": "DAWA"
+    }
+    return f"ZOO_{codenames[name]}_{kind.upper()}"
+
+
 class Tweeper(object):
     def __init__(self, name: str):
         auth = tweepy.OAuthHandler(
-            os.environ["ZOO_DAWA_KEY"],
-            os.environ["ZOO_DAWA_KEY_SECRET"])
+            os.environ[get_cred(name, "key")],
+            os.environ[get_cred(name, "key_secret")])
         auth.set_access_token(
-            os.environ["ZOO_DAWA_TOKEN"],
-            os.environ["ZOO_DAWA_TOKEN_SECRET"])
+            os.environ[get_cred(name, "token")],
+            os.environ[get_cred(name, "token_secret")])
+
         self.api = tweepy.API(auth)
         self.name = name
 
@@ -30,4 +39,11 @@ class Tweeper(object):
             message = did_you_mean(message)
             print("About to tweet:", message)
             time.sleep(wait_delay)
-            self.api.update_status(message)
\ No newline at end of file
+            self.api.update_status(message)
+
+    def next_tweet(self, candidates):
+        for txt in candidates:
+            if txt not in self.all_tweets:
+                self.tweet(txt)
+                return
+        print(f"None of these {len(candidates)} candidates has not been tweeted.")