diff --git a/common.py b/common.py
index a157bb16032c186afd2b22da370002a40fbb9255..8260a12fd4211d8217e133a739d3906c1e77ed56 100644
--- a/common.py
+++ b/common.py
@@ -84,6 +84,16 @@ class Score:
     def get(self):
         return self.points
 
+class Background:
+    def update(self, tick):
+        pass
+
+    def draw(self):
+        pass
+
+    def typed(self, key):
+        pass
+
 def explode(x, y, color, count, size):
     for i in range(0, count):
         a = 6.282 * random()
diff --git a/enemies.py b/enemies.py
index fea3cdb529c4b7443f4ba94f705955d6a47579ee..6a81001a387988b64044f528af5b11ff06666c6f 100644
--- a/enemies.py
+++ b/enemies.py
@@ -21,7 +21,7 @@ class Enemy:
             self.y += 1 / len(self.text)
         else:
             self.y += 1
-        
+
         if self.y > height:
             objects.remove(self)
 
@@ -77,13 +77,58 @@ class BigFighter(Enemy):
         score.inc(3)
         super().hit()
 
+class WordFighter(Enemy):
+    img = pygame.transform.smoothscale(pygame.image.load("fighter2.png"), (30, 30))
+
+    def __init__(self, text, x, y):
+        super().__init__(text, x, y)
+
+    def draw(self):
+        if self.y < 0:
+            return
+
+        super().draw()
+        screen.blit(self.img, (self.x - self.img.get_width() / 2, self.y - self.img.get_height()))
+
+    def hit(self):
+        score.inc(1)
+        super().hit()
+
+class CrossFighter(Enemy):
+    img = pygame.transform.rotate(pygame.transform.smoothscale(pygame.image.load("fighter2.png"), (30, 30)), -90)
+
+    def __init__(self, text, x, y):
+        super().__init__(text, x, y)
+
+    def update(self, tick):
+        self.x -= 1
+
+        if self.x < 0:
+            objects.remove(self)
+
+        if random() < 0.2:
+            objects.append(Spark(self.x + 15, self.y - 23, random(), -0.5 + random(), (255, 255, 255 * random()), 1))
+        if random() < 0.2:
+            objects.append(Spark(self.x + 15, self.y - 10, random(), -0.5 + random(), (255, 255, 255 * random()), 1))
+
+    def draw(self):
+        if self.x < 0:
+            return
+
+        super().draw()
+        screen.blit(self.img, (self.x - self.img.get_width() / 2, self.y - self.img.get_height()))
+
+    def hit(self):
+        score.inc(2)
+        super().hit()
+
 class Shot(Enemy):
     def __init__(self, text, x, y, dx, dy):
         super().__init__(text, x, y)
         self.dx = dx
         self.dy = dy
         self.v = sqrt(self.dx * self.dx + self.dy * self.dy)
-    
+
     def update(self, tick):
         self.x += self.dx
         self.y += self.dy
@@ -98,7 +143,7 @@ class Shot(Enemy):
 
         self.dx = 0.95 * self.dx + 0.05 * px / pv * self.v
         self.dy = 0.95 * self.dy + 0.05 * py / pv * self.v
-        
+
         if self.y > height:
             objects.remove(self)
 
diff --git a/fighter2.png b/fighter2.png
new file mode 100644
index 0000000000000000000000000000000000000000..ef408cb215aa3e481925a753c0947450027d4a05
Binary files /dev/null and b/fighter2.png differ
diff --git a/level1.py b/level1.py
index ec15984b3a152e1c8ce16ab0e529b8f376b96eac..0d7e9df6b0b8f2d0e281cfdaa52aebbff8977f99 100644
--- a/level1.py
+++ b/level1.py
@@ -1,8 +1,10 @@
+from common import Background
 from enemies import Fighter, Boss
 from objects import Text
 
 def level1(objects, tick):
     if tick == 1:
+        objects.append(Background())
         objects.append(Text("Level 1", 50))
         objects.append(Text("Zeigefinger auf f und j", 100))
     elif tick < 2000:
diff --git a/level11.py b/level11.py
new file mode 100644
index 0000000000000000000000000000000000000000..0b0f0b14dfd5c991813531b09acfd9a7424d2ffa
--- /dev/null
+++ b/level11.py
@@ -0,0 +1,64 @@
+from enemies import Fighter, WordFighter, Shooter, Boss
+from objects import Text
+from random import random, choice
+
+# Needs 20
+words = [
+        "wo",
+        "wer",
+        "was",
+        "wieso",
+        "wert",
+        "wort",
+        "wasser",
+        "ort",
+        "rot",
+        "tor",
+        "rotor",
+        "foto",
+        "hort",
+        "wohl",
+        "hol",
+        "löwe",
+        "weder",
+        "los",
+        "wie",
+        "weil",
+        "sowohl",
+        "doof",
+        "sofort",
+        "warte",
+]
+
+def word():
+    result = choice(words)
+    words.remove(result)
+    return result
+
+def level11(objects, tick):
+    if tick == 1:
+        objects.append(Text("Level 11", 50))
+        objects.append(Text("Ringfinger auch für w und o", 100))
+    elif tick < 2000:
+        if tick % 400 == 0:
+            objects.append(Fighter("w", 100, 0))
+            objects.append(Fighter("w", 150, 0))
+            objects.append(Fighter("o", 650, 0))
+            objects.append(Fighter("o", 700, 0))
+    elif tick < 4000:
+        if tick % 400 == 0:
+            objects.append(Shooter(word(), 200, 0, "asdfjklö"))
+            objects.append(Shooter(word(), 600, 0, "asdfjklö"))
+        if tick % 400 == 200:
+            objects.append(WordFighter(word(), 250, 0))
+            objects.append(WordFighter(word(), 550, 0))
+    elif tick == 4000:
+        if tick % 400 == 0:
+            objects.append(WordFighter("was", 200, 0))
+            objects.append(WordFighter("ist", 250, 0))
+            objects.append(WordFighter("hier", 550, 0))
+            objects.append(WordFighter("los", 600, 0))
+    elif tick == 5200:
+        objects.append(Boss("wieso das alles", 400, 0))
+    elif tick == 6000:
+        return True
diff --git a/level12.py b/level12.py
new file mode 100644
index 0000000000000000000000000000000000000000..a0b07732a0b915f69305f886ebc2c7b6007db2d8
--- /dev/null
+++ b/level12.py
@@ -0,0 +1,66 @@
+from enemies import Fighter, WordFighter, CrossFighter, Shooter, Boss
+from objects import Text
+from random import random, choice
+
+# Needs 20
+words = [
+        "quer",
+        "qualle",
+        "quo",
+        "qi",
+        "quant",
+        "po",
+        "papa",
+        "person",
+        "stop",
+        "pi",
+        "popel",
+        "top",
+        "pott",
+        "pass",
+        "pelle",
+        "puh",
+        "pille",
+        "app",
+        "depp",
+        "klippe",
+        "kopf",
+        "kuppel",
+        "loipe",
+        "quest",
+]
+
+def word():
+    result = choice(words)
+    words.remove(result)
+    return result
+
+def level12(objects, tick):
+    if tick == 1:
+        objects.append(Text("Level 12", 50))
+        objects.append(Text("Kleine Finger auch für q und p", 100))
+    elif tick < 2000:
+        if tick % 400 == 0:
+            objects.append(Fighter("q", 100, 0))
+            objects.append(Fighter("q", 150, 0))
+            objects.append(Fighter("p", 650, 0))
+            objects.append(Fighter("p", 700, 0))
+    elif tick < 4000:
+        if tick % 400 == 0:
+            objects.append(Shooter(word(), 200, 0, "asdfjklö"))
+            objects.append(Shooter(word(), 600, 0, "asdfjklö"))
+        if tick % 400 == 200:
+            objects.append(WordFighter(word(), 250, 0))
+            objects.append(WordFighter(word(), 550, 0))
+    elif tick == 4000:
+        objects.append(CrossFighter("quer", 800, 150))
+    elif tick == 4200:
+        objects.append(CrossFighter("fliegt", 800, 150))
+    elif tick == 4400:
+        objects.append(CrossFighter("wer", 800, 150))
+    elif tick == 4600:
+        objects.append(CrossFighter("siegt", 800, 150))
+    elif tick == 5200:
+        objects.append(Boss("papperlapapp", 400, 0))
+    elif tick == 6000:
+        return True
diff --git a/typespace.py b/typespace.py
index d721ccafc0a09ef9b9bd184c7f009f30c8cc3ef6..3534b0ed76d88c8f629917bc2519a33edac75f5d 100755
--- a/typespace.py
+++ b/typespace.py
@@ -36,10 +36,12 @@ from level7 import level7
 from level8 import level8
 from level9 import level9
 from level10 import level10
+from level11 import level11
+from level12 import level12
 from won import won
 
-levels = [level1, level2, level3, level4, level5, level6, level7, level8, level9, level10, won]
-# levels = [level10, won]
+levels = [level1, level2, level3, level4, level5, level6, level7, level8, level9, level10, level11, level12, won]
+# levels = [level12, won]
 level = levels.pop(0)
 clock = pygame.time.Clock()
 completed = False