diff --git a/assets/levels/1.level.ron b/assets/levels/1.level.ron
index 119b15c..e94e161 100644
--- a/assets/levels/1.level.ron
+++ b/assets/levels/1.level.ron
@@ -1,39 +1,20 @@
 Level(
-    layers: 2,
+    name: "Connection",
+    layers: 1,
     terminuses: [
         // left
-        Terminus(
-            point:    Vec2(-240.0, 144.0),
-            emits:    [PixieFlavor(color: 0, net: 0)],
-            collects: [],
-        ),
         Terminus(
             point:    Vec2(-240.0, 48.0),
             emits:    [PixieFlavor(color: 1, net: 0)],
             collects: [],
         ),
-        Terminus(
-            point:    Vec2(-240.0, -48.0),
-            emits:    [PixieFlavor(color: 2, net: 0)],
-            collects: [],
-        ),
         // right
-        Terminus(
-            point:    Vec2(240.0, 144.0),
-            emits:    [],
-            collects: [PixieFlavor(color: 2, net: 0)],
-        ),
         Terminus(
             point:    Vec2(240.0, 48.0),
             emits:    [],
             collects: [PixieFlavor(color: 1, net: 0)],
         ),
-        Terminus(
-            point:    Vec2(240.0, -48.0),
-            emits:    [],
-            collects: [PixieFlavor(color: 0, net: 0)],
-        ),
     ],
     obstacles: [],
-    star_thresholds: [500, 600, 675],
+    star_thresholds: [1, 500, 900],
 )
\ No newline at end of file
diff --git a/assets/levels/10.level.ron b/assets/levels/10.level.ron
new file mode 100644
index 0000000..3b5cb1f
--- /dev/null
+++ b/assets/levels/10.level.ron
@@ -0,0 +1,96 @@
+Level(
+    name: "Jumper",
+    layers: 2,
+    terminuses: [
+        // left
+        Terminus(
+            point:    Vec2(-336.0, 240.0),
+            emits:    [PixieFlavor ( color: 0, net: 0)],
+            collects: [],
+        ),
+        Terminus(
+            point:    Vec2(-336.0, 48.0),
+            emits:    [PixieFlavor ( color: 3, net: 0)],
+            collects: [],
+        ),
+        Terminus(
+            point:    Vec2(-336.0, -144.0),
+            emits:    [PixieFlavor ( color: 4, net: 0)],
+            collects: [],
+        ),
+        Terminus(
+            point:    Vec2(-336.0, 144.0),
+            emits:    [PixieFlavor ( color: 1, net: 0)],
+            collects: [],
+        ),
+        Terminus(
+            point:    Vec2(-336.0, -48.0),
+            emits:    [PixieFlavor ( color: 2, net: 0)],
+            collects: [],
+        ),
+        // right
+        Terminus(
+            point:    Vec2(336.0, 240.0),
+            emits:    [],
+            collects: [PixieFlavor ( color: 3, net: 1)],
+        ),
+        Terminus(
+            point:    Vec2(336.0, 48.0),
+            emits:    [],
+            collects: [PixieFlavor ( color: 0, net: 1)],
+        ),
+        Terminus(
+            point:    Vec2(336.0, -144.0),
+            emits:    [],
+            collects: [PixieFlavor ( color: 4, net: 1)],
+        ),
+        Terminus(
+            point:    Vec2(336.0, 144.0),
+            emits:    [],
+            collects: [PixieFlavor ( color: 2, net: 0)],
+        ),
+        Terminus(
+            point:    Vec2(336.0, -48.0),
+            emits:    [],
+            collects: [PixieFlavor ( color: 1, net: 0)],
+        ),
+        // mid left
+        Terminus(
+            point:    Vec2(-96.0, 144.0),
+            emits:    [],
+            collects: [PixieFlavor ( color: 4, net: 0)]
+        ),
+        Terminus(
+            point:    Vec2(-96.0, 48.0),
+            emits:    [],
+            collects: [PixieFlavor ( color: 0, net: 0)]
+        ),
+        Terminus(
+            point:    Vec2(-96.0, -48.0),
+            emits:    [],
+            collects: [PixieFlavor ( color: 3, net: 0)]
+        ),
+        // mid right
+        Terminus(
+            point:    Vec2(96.0, 144.0),
+            emits:    [PixieFlavor ( color: 4, net: 1)],
+            collects: []
+        ),
+        Terminus(
+            point:    Vec2(96.0, 48.0),
+            emits:    [PixieFlavor ( color: 0, net: 1)],
+            collects: []
+        ),
+        Terminus(
+            point:    Vec2(96.0, -48.0),
+            emits:    [PixieFlavor ( color: 3, net: 1)],
+            collects: []
+        ),
+    ],
+    obstacles: [
+        Rect(Vec2(-48.0, 168.0), Vec2(48.0, 120.0)),
+        Rect(Vec2(-48.0, 72.0), Vec2(48.0, 24.0)),
+        Rect(Vec2(-48.0, -72.0), Vec2(48.0, -24.0)),
+    ],
+    star_thresholds: [500, 550, 600],
+)
\ No newline at end of file
diff --git a/assets/levels/11.level.ron b/assets/levels/11.level.ron
new file mode 100644
index 0000000..48c84b6
--- /dev/null
+++ b/assets/levels/11.level.ron
@@ -0,0 +1,100 @@
+Level(
+    name: "Scatter",
+    layers: 2,
+    terminuses: [
+        // tl
+        Terminus(
+            point:    Vec2(-480.0, 288.0),
+            emits:    [],
+            collects: [PixieFlavor ( color: 0, net: 0)]
+        ),
+        Terminus(
+            point:    Vec2(-480.0, 192.0),
+            emits:    [],
+            collects: [PixieFlavor ( color: 1, net: 0)]
+        ),
+        Terminus(
+            point:    Vec2(-576.0, 192.0),
+            emits:    [],
+            collects: [PixieFlavor ( color: 2, net: 0)]
+        ),
+        // br
+        Terminus(
+            point:    Vec2(576.0, -144.0),
+            emits:    [PixieFlavor ( color: 0, net: 0)],
+            collects: []
+        ),
+        Terminus(
+            point:    Vec2(480.0, -144.0),
+            emits:    [PixieFlavor ( color: 2, net: 0)],
+            collects: []
+        ),
+        Terminus(
+            point:    Vec2(480.0, -240.0),
+            emits:    [PixieFlavor ( color: 1, net: 0)],
+            collects: []
+        ),
+        // bl
+        Terminus(
+            point:    Vec2(-576.0, -144.0),
+            emits:    [PixieFlavor ( color: 4, net: 0)],
+            collects: [],
+        ),
+        Terminus(
+            point:    Vec2(-480.0, -144.0),
+            emits:    [PixieFlavor ( color: 3, net: 0)],
+            collects: [],
+        ),
+        Terminus(
+            point:    Vec2(-480.0, -240.0),
+            emits:    [PixieFlavor ( color: 5, net: 0)],
+            collects: [],
+        ),
+        // tr
+        Terminus(
+            point:    Vec2(480.0, 288.0),
+            emits:    [],
+            collects: [PixieFlavor ( color: 3, net: 0)]
+        ),
+        Terminus(
+            point:    Vec2(480.0, 192.0),
+            emits:    [],
+            collects: [PixieFlavor ( color: 4, net: 0)]
+        ),
+        Terminus(
+            point:    Vec2(576.0, 192.0),
+            emits:    [],
+            collects: [PixieFlavor ( color: 5, net: 0)]
+        ),
+    ],
+    obstacles: [
+        // corners
+        Rect(Vec2(-624, -192), Vec2(-528, -288)),
+        Rect(Vec2(-624, 336), Vec2(-528, 240)),
+        Rect(Vec2(528, 336), Vec2(624, 240)),
+        Rect(Vec2(528, -192), Vec2(624, -288)),
+        // random
+        Rect(Vec2(-384, -96), Vec2(-336, -48)),
+        Rect(Vec2(-336, -240), Vec2(-288, -192)),
+        Rect(Vec2(-336, 240), Vec2(-288, 288)),
+        Rect(Vec2(-240, -96), Vec2(-192, -48)),
+        Rect(Vec2(-240, 240), Vec2(-192, 288)),
+        Rect(Vec2(-192, -288), Vec2(-144, -240)),
+        Rect(Vec2(-192, -240), Vec2(-144, -192)),
+        Rect(Vec2(-144, 48), Vec2(-96, 96)),
+        Rect(Vec2(-96, -144), Vec2(-48, -96)),
+        Rect(Vec2(48, 144), Vec2(96, 192)),
+        Rect(Vec2(96, -48), Vec2(144, 0)),
+        Rect(Vec2(144, 240), Vec2(192, 288)),
+        Rect(Vec2(144, 288), Vec2(192, 336)),
+        Rect(Vec2(192, -240), Vec2(240, -192)),
+        Rect(Vec2(192, 96), Vec2(240, 144)),
+        Rect(Vec2(288, -240), Vec2(336, -192)),
+        Rect(Vec2(288, 240), Vec2(336, 288)),
+        Rect(Vec2(336, 96), Vec2(384, 144)),
+        // extra
+        Rect(Vec2(-624, 96), (-576, 48)),
+        Rect(Vec2(576, -0), (624, -48)),
+    ],
+    star_thresholds: [170, 190, 200],
+)
\ No newline at end of file
diff --git a/assets/levels/12.level.ron b/assets/levels/12.level.ron
new file mode 100644
index 0000000..5e64954
--- /dev/null
+++ b/assets/levels/12.level.ron
@@ -0,0 +1,143 @@
+Level(
+    name: "Layers 2",
+    layers: 3,
+    terminuses: [
+        // tl
+        Terminus(
+            point:    Vec2(-480.0, 288.0),
+            emits:    [],
+            collects: [PixieFlavor ( color: 0, net: 1)]
+        ),
+        Terminus(
+            point:    Vec2(-480.0, 192.0),
+            emits:    [],
+            collects: [PixieFlavor ( color: 1, net: 1)]
+        ),
+        Terminus(
+            point:    Vec2(-576.0, 192.0),
+            emits:    [],
+            collects: [PixieFlavor ( color: 2, net: 1)]
+        ),
+        // bl
+        Terminus(
+            point:    Vec2(-576.0, -144.0),
+            emits:    [],
+            collects: [PixieFlavor ( color: 4, net: 1)],
+        ),
+        Terminus(
+            point:    Vec2(-480.0, -144.0),
+            emits:    [],
+            collects: [PixieFlavor ( color: 3, net: 1)],
+        ),
+        Terminus(
+            point:    Vec2(-480.0, -240.0),
+            emits:    [],
+            collects: [PixieFlavor ( color: 5, net: 1)],
+        ),
+        // tr
+        Terminus(
+            point:    Vec2(480.0, 288.0),
+            emits:    [PixieFlavor ( color: 3, net: 0)],
+            collects: []
+        ),
+        Terminus(
+            point:    Vec2(480.0, 192.0),
+            emits:    [PixieFlavor ( color: 4, net: 0)],
+            collects: []
+        ),
+        Terminus(
+            point:    Vec2(576.0, 192.0),
+            emits:    [PixieFlavor ( color: 5, net: 0)],
+            collects: []
+        ),
+        // br
+        Terminus(
+            point:    Vec2(576.0, -144.0),
+            emits:    [PixieFlavor ( color: 0, net: 0)],
+            collects: []
+        ),
+        Terminus(
+            point:    Vec2(480.0, -144.0),
+            emits:    [PixieFlavor ( color: 2, net: 0)],
+            collects: []
+        ),
+        Terminus(
+            point:    Vec2(480.0, -240.0),
+            emits:    [PixieFlavor ( color: 1, net: 0)],
+            collects: []
+        ),
+        // rtl
+        Terminus(
+            point:    Vec2(384, -96),
+            emits:    [],
+            collects: [PixieFlavor ( color: 0, net: 0)]
+        ),
+        Terminus(
+            point:    Vec2(384, 96),
+            emits:    [PixieFlavor ( color: 0, net: 1)],
+            collects: []
+        ),
+        Terminus(
+            point:    Vec2(240, -96),
+            emits:    [PixieFlavor ( color: 2, net: 1)],
+            collects: []
+        ),
+        Terminus(
+            point:    Vec2(240, 96),
+            emits:    [],
+            collects: [PixieFlavor ( color: 2, net: 0)]
+        ),
+        Terminus(
+            point:    Vec2(96.0, -96.0),
+            emits:    [],
+            collects: [PixieFlavor ( color: 4, net: 0)]
+        ),
+        Terminus(
+            point:    Vec2(96, 96),
+            emits:    [PixieFlavor ( color: 4, net: 1)],
+            collects: []
+        ),
+        Terminus(
+            point:    Vec2(-96, -96),
+            emits:    [PixieFlavor ( color: 1, net: 1)],
+            collects: []
+        ),
+        Terminus(
+            point:    Vec2(-96.0, 96.0),
+            emits:    [],
+            collects: [PixieFlavor ( color: 1, net: 0)]
+        ),
+        Terminus(
+            point:    Vec2(-240, -96),
+            emits:    [],
+            collects: [PixieFlavor ( color: 3, net: 0)]
+        ),
+        Terminus(
+            point:    Vec2(-240, 96),
+            emits:    [PixieFlavor ( color: 3, net: 1)],
+            collects: []
+        ),
+        Terminus(
+            point:    Vec2(-384, -96),
+            emits:    [PixieFlavor ( color: 5, net: 1)],
+            collects: []
+        ),
+        Terminus(
+            point:    Vec2(-384, 96),
+            emits:    [],
+            collects: [PixieFlavor ( color: 5, net: 0)]
+        ),
+    ],
+    obstacles: [
+        // corners
+        Rect(Vec2(-624, -192), Vec2(-528, -288)),
+        Rect(Vec2(-624, 336), Vec2(-528, 240)),
+        Rect(Vec2(528, 336), Vec2(624, 240)),
+        Rect(Vec2(528, -192), Vec2(624, -288)),
+        //
+        Rect(Vec2(-432.0, 48.0), Vec2(-48.0, -48.0)),
+        Rect(Vec2(48.0, 48.0), Vec2(432.0, -48.0))
+
+    ],
+    star_thresholds: [200, 240, 280],
+)
\ No newline at end of file
diff --git a/assets/levels/2.level.ron b/assets/levels/2.level.ron
index 7e8cb8d..f542845 100644
--- a/assets/levels/2.level.ron
+++ b/assets/levels/2.level.ron
@@ -1,4 +1,5 @@
 Level(
+    name: "Layers",
     layers: 2,
     terminuses: [
         // left
@@ -9,22 +10,24 @@ Level(
         ),
         Terminus(
             point:    Vec2(-240.0, -48.0),
-            emits:    [PixieFlavor(color: 1, net: 0)],
+            emits:    [PixieFlavor(color: 2, net: 0)],
             collects: [],
         ),
         // right
         Terminus(
-            point:    Vec2(240.0, 48.0),
+            point:    Vec2(240.0, 144.0),
             emits:    [],
-            collects: [PixieFlavor(color: 0, net: 0),PixieFlavor(color: 1, net: 0)],
+            collects: [PixieFlavor(color: 2, net: 0)],
+        ),
+        Terminus(
+            point:    Vec2(240.0, -48.0),
+            emits:    [],
+            collects: [PixieFlavor(color: 0, net: 0)],
         ),
     ],
     obstacles: [
-        Rect(Vec2(96.0, 0.0), Vec2(144.0, -96.0)),
-        Rect(Vec2(144.0, -48.0), Vec2(336.0, -96.0)),
-        Rect(Vec2(336.0, 192.0), Vec2(384.0, -96.0)),
-        Rect(Vec2(144.0, 192.0), Vec2(336.0, 144.0)),
-        Rect(Vec2(96.0, 192.0), Vec2(144.0, 96.0))
+        Rect((288.0, 336.0), (624.0, -288.0)),
+        Rect((-624.0, 336.0), (-288.0, -288.0)),
     ],
-    star_thresholds: [1, 350, 520],
+    star_thresholds: [1, 500, 700],
 )
\ No newline at end of file
diff --git a/assets/levels/3.level.ron b/assets/levels/3.level.ron
index ce8b111..1aee20a 100644
--- a/assets/levels/3.level.ron
+++ b/assets/levels/3.level.ron
@@ -1,85 +1,41 @@
 Level(
-    layers: 2,
+    name: "Traffic",
+    layers: 1,
     terminuses: [
-        // inside
+        // left
         Terminus(
-            point:    Vec2(-96.0, 144.0),
-            emits:    [PixieFlavor(color: 0, net: 0)],
-            collects: [],
-        ),
-        Terminus(
-            point:    Vec2(-96.0, 48.0),
-            emits:    [PixieFlavor(color: 3, net: 0)],
-            collects: [],
-        ),
-        Terminus(
-            point:    Vec2(-96.0, -48.0),
-            emits:    [PixieFlavor(color: 2, net: 0)],
-            collects: [],
-        ),
-        Terminus(
-            point:    Vec2(-0.0, -48.0),
+            point:    Vec2(-96.0, -144.0),
             emits:    [PixieFlavor(color: 1, net: 0)],
             collects: [],
         ),
         Terminus(
-            point:    Vec2(96.0, -48.0),
-            emits:    [PixieFlavor(color: 4, net: 0)],
-            collects: [],
-        ),
-        Terminus(
-            point:    Vec2(96.0, 48.0),
-            emits:    [PixieFlavor(color: 1, net: 0)],
-            collects: [],
-        ),
-        Terminus(
-            point:    Vec2(96.0, 144.0),
-            emits:    [PixieFlavor(color: 5, net: 0)],
-            collects: [],
-        ),
-        Terminus(
-            point:    Vec2(-0.0, 144.0),
-            emits:    [PixieFlavor(color: 3, net: 0)],
-            collects: [],
-        ),
-        // outside left
-        Terminus(
-            point:    Vec2(-480.0, 144.0),
+            point:    Vec2(-192.0, 144.0),
+            collects: [PixieFlavor(color: 1, net: 0)],
             emits:    [],
-            collects: [PixieFlavor(color: 4, net: 0)],
         ),
         Terminus(
-            point:    Vec2(-480.0, 48.0),
-            emits:    [],
+            point:    Vec2(0.0, 144.0),
             collects: [PixieFlavor(color: 1, net: 0)],
-        ),
-        Terminus(
-            point:    Vec2(-480.0, -48.0),
             emits:    [],
-            collects: [PixieFlavor(color: 5, net: 0)],
         ),
-        // outside right
+        // right
         Terminus(
-            point:    Vec2(480.0, 144.0),
-            emits:    [],
-            collects: [PixieFlavor(color: 2, net: 0)],
+            point:    Vec2(192.0, -144.0),
+            emits:    [PixieFlavor(color: 0, net: 0)],
+            collects: [],
         ),
         Terminus(
-            point:    Vec2(480.0, 48.0),
-            emits:    [],
-            collects: [PixieFlavor(color: 3, net: 0)],
+            point:    Vec2(0.0, -144.0),
+            emits:    [PixieFlavor(color: 0, net: 0)],
+            collects: [],
         ),
         Terminus(
-            point:    Vec2(480.0, -48.0),
+            point:    Vec2(96.0, 144.0),
             emits:    [],
             collects: [PixieFlavor(color: 0, net: 0)],
         ),
-
     ],
     obstacles: [
-        Rect(Vec2(-48.0, 96.0), Vec2(48.0, 0.0)),
-        Rect(Vec2(-672.0, 192.0),Vec2(-528.0, -96.0)),
-        Rect(Vec2(528.0, 192.0), Vec2(672.0, -96.0))
     ],
-    star_thresholds: [350, 400, 450],
+    star_thresholds: [1, 1000, 1250],
 )
\ No newline at end of file
diff --git a/assets/levels/4.level.ron b/assets/levels/4.level.ron
index 91456b4..ca5acb2 100644
--- a/assets/levels/4.level.ron
+++ b/assets/levels/4.level.ron
@@ -1,105 +1,40 @@
 Level(
+    name: "Crossings",
     layers: 2,
     terminuses: [
+        // left
         Terminus(
-            point:    Vec2(-576.0, -192.0),
+            point:    Vec2(-240.0, 144.0),
             emits:    [PixieFlavor(color: 0, net: 0)],
             collects: [],
         ),
         Terminus(
-            point:    Vec2(-576.0, -96.0),
-            emits:    [PixieFlavor(color: 5, net: 0)],
-            collects: [],
-        ),
-        Terminus(
-            point:    Vec2(-576.0, 0.0),
-            emits:    [PixieFlavor(color: 2, net: 0)],
-            collects: [],
-        ),
-        Terminus(
-            point:    Vec2(-576.0, 96.0),
-            emits:    [PixieFlavor(color: 3, net: 0)],
-            collects: [],
-        ),
-        Terminus(
-            point:    Vec2(-576.0, 192.0),
-            emits:    [PixieFlavor(color: 5, net: 0)],
-            collects: [],
-        ),
-        Terminus(
-            point:    Vec2(-576.0, 288.0),
-            emits:    [PixieFlavor(color: 4, net: 0)],
-            collects: [],
-        ),
-        // top
-        Terminus(
-            point:    Vec2(-192.0, 336.0),
+            point:    Vec2(-240.0, 48.0),
             emits:    [PixieFlavor(color: 1, net: 0)],
             collects: [],
         ),
         Terminus(
-            point:    Vec2(0.0, 336.0),
+            point:    Vec2(-240.0, -48.0),
             emits:    [PixieFlavor(color: 2, net: 0)],
             collects: [],
         ),
+        // right
         Terminus(
-            point:    Vec2(192.0, 336.0),
-            emits:    [PixieFlavor(color: 1, net: 0)],
-            collects: [],
-        ),
-        // bottom
-        Terminus(
-            point:    Vec2(-192.0, -240.0),
+            point:    Vec2(240.0, 144.0),
             emits:    [],
             collects: [PixieFlavor(color: 2, net: 0)],
         ),
         Terminus(
-            point:    Vec2(0.0, -240.0),
-            emits:    [],
-            collects: [PixieFlavor(color: 0, net: 0)],
-        ),
-        Terminus(
-            point:    Vec2(192.0, -240.0),
+            point:    Vec2(240.0, 48.0),
             emits:    [],
             collects: [PixieFlavor(color: 1, net: 0)],
         ),
-        // right
-        Terminus(
-            point:    Vec2(576.0, -192.0),
-            emits:    [],
-            collects: [PixieFlavor(color: 3, net: 0)],
-        ),
-        Terminus(
-            point:    Vec2(576.0, -96.0),
-            emits:    [],
-            collects: [PixieFlavor(color: 4, net: 0)],
-        ),
         Terminus(
-            point:    Vec2(576.0, 0.0),
-            emits:    [],
-            collects: [PixieFlavor(color: 3, net: 0)],
-        ),
-        Terminus(
-            point:    Vec2(576.0, 96.0),
+            point:    Vec2(240.0, -48.0),
             emits:    [],
             collects: [PixieFlavor(color: 0, net: 0)],
         ),
-        Terminus(
-            point:    Vec2(576.0, 192.0),
-            emits:    [],
-            collects: [PixieFlavor(color: 4, net: 0)],
-        ),
-        Terminus(
-            point:    Vec2(576.0, 288.0),
-            emits:    [],
-            collects: [PixieFlavor(color: 5, net: 0)],
-        )
-    ],
-    obstacles: [
-        Rect(Vec2(-336.0, 240.0), Vec2(-288.0, 96.0)),
-        Rect(Vec2(-288.0, 240.0), Vec2(-192.0, 192.0)),
-        Rect(Vec2(288.0, 0.0), Vec2(336.0, -144.0)),
-        Rect(Vec2(192.0, -96.0), Vec2(288.0, -144.0))
     ],
-    star_thresholds: [130, 160, 190],
+    obstacles: [],
+    star_thresholds: [500, 600, 675],
 )
\ No newline at end of file
diff --git a/assets/levels/5.level.ron b/assets/levels/5.level.ron
index 8f65e89..c945d06 100644
--- a/assets/levels/5.level.ron
+++ b/assets/levels/5.level.ron
@@ -1,4 +1,5 @@
 Level(
+    name: "Delay Line",
     layers: 2,
     terminuses: [
         // left
@@ -7,21 +8,16 @@ Level(
             emits:    [PixieFlavor(color: 0, net: 0)],
             collects: [],
         ),
-        Terminus(
-            point:    Vec2(-240.0, 48.0),
-            emits:    [PixieFlavor(color: 1, net: 0)],
-            collects: [],
-        ),
         Terminus(
             point:    Vec2(-240.0, -48.0),
-            emits:    [PixieFlavor(color: 2, net: 0)],
+            emits:    [PixieFlavor(color: 1, net: 0)],
             collects: [],
         ),
         // right
         Terminus(
             point:    Vec2(240.0, 48.0),
             emits:    [],
-            collects: [PixieFlavor(color: 0, net: 0),PixieFlavor(color: 1, net: 0),PixieFlavor(color: 2, net: 0)],
+            collects: [PixieFlavor(color: 0, net: 0),PixieFlavor(color: 1, net: 0)],
         ),
     ],
     obstacles: [
@@ -31,5 +27,5 @@ Level(
         Rect(Vec2(144.0, 192.0), Vec2(336.0, 144.0)),
         Rect(Vec2(96.0, 192.0), Vec2(144.0, 96.0))
     ],
-    star_thresholds: [1, 250, 550],
+    star_thresholds: [1, 350, 520],
 )
\ No newline at end of file
diff --git a/assets/levels/6.level.ron b/assets/levels/6.level.ron
index 5219ab6..bc05887 100644
--- a/assets/levels/6.level.ron
+++ b/assets/levels/6.level.ron
@@ -1,71 +1,86 @@
 Level(
+    name: "Symmetry",
     layers: 2,
     terminuses: [
-        // left
+        // inside
         Terminus(
-            point:    Vec2(-576.0, 96.0),
-            emits:    [PixieFlavor(color: 3, net: 0)],
+            point:    Vec2(-96.0, 144.0),
+            emits:    [PixieFlavor(color: 0, net: 0)],
             collects: [],
         ),
         Terminus(
-            point:    Vec2(-480.0, 96.0),
-            emits:    [PixieFlavor(color: 4, net: 0)],
+            point:    Vec2(-96.0, 48.0),
+            emits:    [PixieFlavor(color: 3, net: 0)],
             collects: [],
         ),
         Terminus(
-            point:    Vec2(-384.0, 96.0),
+            point:    Vec2(-96.0, -48.0),
             emits:    [PixieFlavor(color: 2, net: 0)],
             collects: [],
         ),
         Terminus(
-            point:    Vec2(-288.0, 96.0),
-            emits:    [PixieFlavor(color: 0, net: 0)],
+            point:    Vec2(-0.0, -48.0),
+            emits:    [PixieFlavor(color: 1, net: 0)],
             collects: [],
         ),
         Terminus(
-            point:    Vec2(-192.0, 96.0),
+            point:    Vec2(96.0, -48.0),
+            emits:    [PixieFlavor(color: 4, net: 0)],
+            collects: [],
+        ),
+        Terminus(
+            point:    Vec2(96.0, 48.0),
             emits:    [PixieFlavor(color: 1, net: 0)],
             collects: [],
         ),
-        // right
         Terminus(
-            point:    Vec2(576.0, -0.0),
-            emits:    [],
-            collects: [PixieFlavor(color: 2, net: 0)],
+            point:    Vec2(96.0, 144.0),
+            emits:    [PixieFlavor(color: 5, net: 0)],
+            collects: [],
+        ),
+        Terminus(
+            point:    Vec2(-0.0, 144.0),
+            emits:    [PixieFlavor(color: 3, net: 0)],
+            collects: [],
         ),
+        // outside left
         Terminus(
-            point:    Vec2(480.0, 0.0),
+            point:    Vec2(-480.0, 144.0),
             emits:    [],
-            collects: [PixieFlavor(color: 3, net: 0)],
+            collects: [PixieFlavor(color: 4, net: 0)],
         ),
         Terminus(
-            point:    Vec2(384.0, -0.0),
+            point:    Vec2(-480.0, 48.0),
             emits:    [],
             collects: [PixieFlavor(color: 1, net: 0)],
         ),
         Terminus(
-            point:    Vec2(288.0, 0.0),
+            point:    Vec2(-480.0, -48.0),
             emits:    [],
-            collects: [PixieFlavor(color: 0, net: 0)],
+            collects: [PixieFlavor(color: 5, net: 0)],
         ),
+        // outside right
         Terminus(
-            point:    Vec2(192.0, -0.0),
+            point:    Vec2(480.0, 144.0),
             emits:    [],
-            collects: [PixieFlavor(color: 4, net: 0)],
+            collects: [PixieFlavor(color: 2, net: 0)],
+        ),
+        Terminus(
+            point:    Vec2(480.0, 48.0),
+            emits:    [],
+            collects: [PixieFlavor(color: 3, net: 0)],
+        ),
+        Terminus(
+            point:    Vec2(480.0, -48.0),
+            emits:    [],
+            collects: [PixieFlavor(color: 0, net: 0)],
         ),
+
     ],
     obstacles: [
-        Rect(Vec2(-624.0, 48.0), Vec2(-144.0, -288.0)),
-        Rect(Vec2(144.0, 48.0), Vec2(624.0, 336.0)),
-        // blockers
-        Rect(Vec2(-536, 48), Vec2(-520, 104)),
-        Rect(Vec2(-440, 48), Vec2(-426, 104)),
-        Rect(Vec2(-344, 48), Vec2(-328, 104)),
-        Rect(Vec2(-248, 48), Vec2(-232, 104)),
-        Rect(Vec2(536, 48),  Vec2(520, -8)),
-        Rect(Vec2(440, 48),  Vec2(424, -8)),
-        Rect(Vec2(344, 48),  Vec2(328, -8)),
-        Rect(Vec2(248, 48),  Vec2(232, -8)),
+        Rect(Vec2(-48.0, 96.0), Vec2(48.0, 0.0)),
+        Rect(Vec2(-672.0, 192.0),Vec2(-528.0, -96.0)),
+        Rect(Vec2(528.0, 192.0), Vec2(672.0, -96.0))
     ],
-    star_thresholds: [190, 220, 250],
+    star_thresholds: [350, 400, 450],
 )
\ No newline at end of file
diff --git a/assets/levels/7.level.ron b/assets/levels/7.level.ron
index 8db8be6..6ac0f54 100644
--- a/assets/levels/7.level.ron
+++ b/assets/levels/7.level.ron
@@ -1,95 +1,106 @@
 Level(
+    name: "Converge/Diverge",
     layers: 2,
     terminuses: [
-        // left
         Terminus(
-            point:    Vec2(-336.0, 240.0),
-            emits:    [PixieFlavor ( color: 0, net: 0)],
+            point:    Vec2(-576.0, -192.0),
+            emits:    [PixieFlavor(color: 0, net: 0)],
             collects: [],
         ),
         Terminus(
-            point:    Vec2(-336.0, 48.0),
-            emits:    [PixieFlavor ( color: 3, net: 0)],
+            point:    Vec2(-576.0, -96.0),
+            emits:    [PixieFlavor(color: 5, net: 0)],
             collects: [],
         ),
         Terminus(
-            point:    Vec2(-336.0, -144.0),
-            emits:    [PixieFlavor ( color: 4, net: 0)],
+            point:    Vec2(-576.0, 0.0),
+            emits:    [PixieFlavor(color: 2, net: 0)],
             collects: [],
         ),
         Terminus(
-            point:    Vec2(-336.0, 144.0),
-            emits:    [PixieFlavor ( color: 1, net: 0)],
+            point:    Vec2(-576.0, 96.0),
+            emits:    [PixieFlavor(color: 3, net: 0)],
             collects: [],
         ),
         Terminus(
-            point:    Vec2(-336.0, -48.0),
-            emits:    [PixieFlavor ( color: 2, net: 0)],
+            point:    Vec2(-576.0, 192.0),
+            emits:    [PixieFlavor(color: 5, net: 0)],
             collects: [],
         ),
-        // right
         Terminus(
-            point:    Vec2(336.0, 240.0),
-            emits:    [],
-            collects: [PixieFlavor ( color: 3, net: 1)],
+            point:    Vec2(-576.0, 288.0),
+            emits:    [PixieFlavor(color: 4, net: 0)],
+            collects: [],
         ),
+        // top
         Terminus(
-            point:    Vec2(336.0, 48.0),
-            emits:    [],
-            collects: [PixieFlavor ( color: 0, net: 1)],
+            point:    Vec2(-192.0, 336.0),
+            emits:    [PixieFlavor(color: 1, net: 0)],
+            collects: [],
         ),
         Terminus(
-            point:    Vec2(336.0, -144.0),
-            emits:    [],
-            collects: [PixieFlavor ( color: 4, net: 1)],
+            point:    Vec2(0.0, 336.0),
+            emits:    [PixieFlavor(color: 2, net: 0)],
+            collects: [],
+        ),
+        Terminus(
+            point:    Vec2(192.0, 336.0),
+            emits:    [PixieFlavor(color: 1, net: 0)],
+            collects: [],
         ),
+        // bottom
         Terminus(
-            point:    Vec2(336.0, 144.0),
+            point:    Vec2(-192.0, -240.0),
             emits:    [],
-            collects: [PixieFlavor ( color: 2, net: 0)],
+            collects: [PixieFlavor(color: 2, net: 0)],
         ),
         Terminus(
-            point:    Vec2(336.0, -48.0),
+            point:    Vec2(0.0, -240.0),
             emits:    [],
-            collects: [PixieFlavor ( color: 1, net: 0)],
+            collects: [PixieFlavor(color: 0, net: 0)],
         ),
-        // mid left
         Terminus(
-            point:    Vec2(-96.0, 144.0),
+            point:    Vec2(192.0, -240.0),
             emits:    [],
-            collects: [PixieFlavor ( color: 4, net: 0)]
+            collects: [PixieFlavor(color: 1, net: 0)],
         ),
+        // right
         Terminus(
-            point:    Vec2(-96.0, 48.0),
+            point:    Vec2(576.0, -192.0),
             emits:    [],
-            collects: [PixieFlavor ( color: 0, net: 0)]
+            collects: [PixieFlavor(color: 3, net: 0)],
         ),
         Terminus(
-            point:    Vec2(-96.0, -48.0),
+            point:    Vec2(576.0, -96.0),
             emits:    [],
-            collects: [PixieFlavor ( color: 3, net: 0)]
+            collects: [PixieFlavor(color: 4, net: 0)],
         ),
-        // mid right
         Terminus(
-            point:    Vec2(96.0, 144.0),
-            emits:    [PixieFlavor ( color: 4, net: 1)],
-            collects: []
+            point:    Vec2(576.0, 0.0),
+            emits:    [],
+            collects: [PixieFlavor(color: 3, net: 0)],
         ),
         Terminus(
-            point:    Vec2(96.0, 48.0),
-            emits:    [PixieFlavor ( color: 0, net: 1)],
-            collects: []
+            point:    Vec2(576.0, 96.0),
+            emits:    [],
+            collects: [PixieFlavor(color: 0, net: 0)],
         ),
         Terminus(
-            point:    Vec2(96.0, -48.0),
-            emits:    [PixieFlavor ( color: 3, net: 1)],
-            collects: []
+            point:    Vec2(576.0, 192.0),
+            emits:    [],
+            collects: [PixieFlavor(color: 4, net: 0)],
         ),
+        Terminus(
+            point:    Vec2(576.0, 288.0),
+            emits:    [],
+            collects: [PixieFlavor(color: 5, net: 0)],
+        )
     ],
     obstacles: [
-        Rect(Vec2(-48.0, 168.0), Vec2(48.0, 120.0)),
-        Rect(Vec2(-48.0, 72.0), Vec2(48.0, 24.0)),
-        Rect(Vec2(-48.0, -72.0), Vec2(48.0, -24.0)),
+        Rect(Vec2(-336.0, 240.0), Vec2(-288.0, 96.0)),
+        Rect(Vec2(-288.0, 240.0), Vec2(-192.0, 192.0)),
+        Rect(Vec2(288.0, 0.0), Vec2(336.0, -144.0)),
+        Rect(Vec2(192.0, -96.0), Vec2(288.0, -144.0))
     ],
-    star_thresholds: [500, 550, 600],
+    star_thresholds: [130, 160, 190],
 )
\ No newline at end of file
diff --git a/assets/levels/8.level.ron b/assets/levels/8.level.ron
index 2884b4f..7916111 100644
--- a/assets/levels/8.level.ron
+++ b/assets/levels/8.level.ron
@@ -1,99 +1,36 @@
 Level(
+    name: "Delay Line 2",
     layers: 2,
     terminuses: [
-        // tl
+        // left
         Terminus(
-            point:    Vec2(-480.0, 288.0),
-            emits:    [],
-            collects: [PixieFlavor ( color: 0, net: 0)]
-        ),
-        Terminus(
-            point:    Vec2(-480.0, 192.0),
-            emits:    [],
-            collects: [PixieFlavor ( color: 1, net: 0)]
-        ),
-        Terminus(
-            point:    Vec2(-576.0, 192.0),
-            emits:    [],
-            collects: [PixieFlavor ( color: 2, net: 0)]
-        ),
-        // br
-        Terminus(
-            point:    Vec2(576.0, -144.0),
-            emits:    [PixieFlavor ( color: 0, net: 0)],
-            collects: []
-        ),
-        Terminus(
-            point:    Vec2(480.0, -144.0),
-            emits:    [PixieFlavor ( color: 2, net: 0)],
-            collects: []
-        ),
-        Terminus(
-            point:    Vec2(480.0, -240.0),
-            emits:    [PixieFlavor ( color: 1, net: 0)],
-            collects: []
-        ),
-        // bl
-        Terminus(
-            point:    Vec2(-576.0, -144.0),
-            emits:    [PixieFlavor ( color: 4, net: 0)],
+            point:    Vec2(-240.0, 144.0),
+            emits:    [PixieFlavor(color: 0, net: 0)],
             collects: [],
         ),
         Terminus(
-            point:    Vec2(-480.0, -144.0),
-            emits:    [PixieFlavor ( color: 3, net: 0)],
+            point:    Vec2(-240.0, 48.0),
+            emits:    [PixieFlavor(color: 1, net: 0)],
             collects: [],
         ),
         Terminus(
-            point:    Vec2(-480.0, -240.0),
-            emits:    [PixieFlavor ( color: 5, net: 0)],
+            point:    Vec2(-240.0, -48.0),
+            emits:    [PixieFlavor(color: 2, net: 0)],
             collects: [],
         ),
-        // tr
-        Terminus(
-            point:    Vec2(480.0, 288.0),
-            emits:    [],
-            collects: [PixieFlavor ( color: 3, net: 0)]
-        ),
-        Terminus(
-            point:    Vec2(480.0, 192.0),
-            emits:    [],
-            collects: [PixieFlavor ( color: 4, net: 0)]
-        ),
+        // right
         Terminus(
-            point:    Vec2(576.0, 192.0),
+            point:    Vec2(240.0, 48.0),
             emits:    [],
-            collects: [PixieFlavor ( color: 5, net: 0)]
+            collects: [PixieFlavor(color: 0, net: 0),PixieFlavor(color: 1, net: 0),PixieFlavor(color: 2, net: 0)],
         ),
     ],
     obstacles: [
-        // corners
-        Rect(Vec2(-624, -192), Vec2(-528, -288)),
-        Rect(Vec2(-624, 336), Vec2(-528, 240)),
-        Rect(Vec2(528, 336), Vec2(624, 240)),
-        Rect(Vec2(528, -192), Vec2(624, -288)),
-        // random
-        Rect(Vec2(-384, -96), Vec2(-336, -48)),
-        Rect(Vec2(-336, -240), Vec2(-288, -192)),
-        Rect(Vec2(-336, 240), Vec2(-288, 288)),
-        Rect(Vec2(-240, -96), Vec2(-192, -48)),
-        Rect(Vec2(-240, 240), Vec2(-192, 288)),
-        Rect(Vec2(-192, -288), Vec2(-144, -240)),
-        Rect(Vec2(-192, -240), Vec2(-144, -192)),
-        Rect(Vec2(-144, 48), Vec2(-96, 96)),
-        Rect(Vec2(-96, -144), Vec2(-48, -96)),
-        Rect(Vec2(48, 144), Vec2(96, 192)),
-        Rect(Vec2(96, -48), Vec2(144, 0)),
-        Rect(Vec2(144, 240), Vec2(192, 288)),
-        Rect(Vec2(144, 288), Vec2(192, 336)),
-        Rect(Vec2(192, -240), Vec2(240, -192)),
-        Rect(Vec2(192, 96), Vec2(240, 144)),
-        Rect(Vec2(288, -240), Vec2(336, -192)),
-        Rect(Vec2(288, 240), Vec2(336, 288)),
-        Rect(Vec2(336, 96), Vec2(384, 144)),
-        // extra
-        Rect(Vec2(-624, 96), (-576, 48)),
-        Rect(Vec2(576, -0), (624, -48)),
+        Rect(Vec2(96.0, 0.0), Vec2(144.0, -96.0)),
+        Rect(Vec2(144.0, -48.0), Vec2(336.0, -96.0)),
+        Rect(Vec2(336.0, 192.0), Vec2(384.0, -96.0)),
+        Rect(Vec2(144.0, 192.0), Vec2(336.0, 144.0)),
+        Rect(Vec2(96.0, 192.0), Vec2(144.0, 96.0))
     ],
-    star_thresholds: [170, 190, 200],
+    star_thresholds: [1, 250, 550],
 )
\ No newline at end of file
diff --git a/assets/levels/9.level.ron b/assets/levels/9.level.ron
index 70e842f..32e500a 100644
--- a/assets/levels/9.level.ron
+++ b/assets/levels/9.level.ron
@@ -1,142 +1,72 @@
 Level(
-    layers: 3,
+    name: "Wave-like",
+    layers: 2,
     terminuses: [
-        // tl
+        // left
         Terminus(
-            point:    Vec2(-480.0, 288.0),
-            emits:    [],
-            collects: [PixieFlavor ( color: 0, net: 1)]
+            point:    Vec2(-576.0, 96.0),
+            emits:    [PixieFlavor(color: 3, net: 0)],
+            collects: [],
         ),
         Terminus(
-            point:    Vec2(-480.0, 192.0),
-            emits:    [],
-            collects: [PixieFlavor ( color: 1, net: 1)]
+            point:    Vec2(-480.0, 96.0),
+            emits:    [PixieFlavor(color: 4, net: 0)],
+            collects: [],
         ),
         Terminus(
-            point:    Vec2(-576.0, 192.0),
-            emits:    [],
-            collects: [PixieFlavor ( color: 2, net: 1)]
+            point:    Vec2(-384.0, 96.0),
+            emits:    [PixieFlavor(color: 2, net: 0)],
+            collects: [],
         ),
-        // bl
         Terminus(
-            point:    Vec2(-576.0, -144.0),
-            emits:    [],
-            collects: [PixieFlavor ( color: 4, net: 1)],
+            point:    Vec2(-288.0, 96.0),
+            emits:    [PixieFlavor(color: 0, net: 0)],
+            collects: [],
         ),
         Terminus(
-            point:    Vec2(-480.0, -144.0),
-            emits:    [],
-            collects: [PixieFlavor ( color: 3, net: 1)],
+            point:    Vec2(-192.0, 96.0),
+            emits:    [PixieFlavor(color: 1, net: 0)],
+            collects: [],
         ),
+        // right
         Terminus(
-            point:    Vec2(-480.0, -240.0),
+            point:    Vec2(576.0, -0.0),
             emits:    [],
-            collects: [PixieFlavor ( color: 5, net: 1)],
-        ),
-        // tr
-        Terminus(
-            point:    Vec2(480.0, 288.0),
-            emits:    [PixieFlavor ( color: 3, net: 0)],
-            collects: []
-        ),
-        Terminus(
-            point:    Vec2(480.0, 192.0),
-            emits:    [PixieFlavor ( color: 4, net: 0)],
-            collects: []
+            collects: [PixieFlavor(color: 2, net: 0)],
         ),
         Terminus(
-            point:    Vec2(576.0, 192.0),
-            emits:    [PixieFlavor ( color: 5, net: 0)],
-            collects: []
-        ),
-        // br
-        Terminus(
-            point:    Vec2(576.0, -144.0),
-            emits:    [PixieFlavor ( color: 0, net: 0)],
-            collects: []
-        ),
-        Terminus(
-            point:    Vec2(480.0, -144.0),
-            emits:    [PixieFlavor ( color: 2, net: 0)],
-            collects: []
-        ),
-        Terminus(
-            point:    Vec2(480.0, -240.0),
-            emits:    [PixieFlavor ( color: 1, net: 0)],
-            collects: []
-        ),
-        // rtl
-        Terminus(
-            point:    Vec2(384, -96),
+            point:    Vec2(480.0, 0.0),
             emits:    [],
-            collects: [PixieFlavor ( color: 0, net: 0)]
+            collects: [PixieFlavor(color: 3, net: 0)],
         ),
         Terminus(
-            point:    Vec2(384, 96),
-            emits:    [PixieFlavor ( color: 0, net: 1)],
-            collects: []
-        ),
-        Terminus(
-            point:    Vec2(240, -96),
-            emits:    [PixieFlavor ( color: 2, net: 1)],
-            collects: []
-        ),
-        Terminus(
-            point:    Vec2(240, 96),
+            point:    Vec2(384.0, -0.0),
             emits:    [],
-            collects: [PixieFlavor ( color: 2, net: 0)]
+            collects: [PixieFlavor(color: 1, net: 0)],
         ),
         Terminus(
-            point:    Vec2(96.0, -96.0),
+            point:    Vec2(288.0, 0.0),
             emits:    [],
-            collects: [PixieFlavor ( color: 4, net: 0)]
-        ),
-        Terminus(
-            point:    Vec2(96, 96),
-            emits:    [PixieFlavor ( color: 4, net: 1)],
-            collects: []
-        ),
-        Terminus(
-            point:    Vec2(-96, -96),
-            emits:    [PixieFlavor ( color: 1, net: 1)],
-            collects: []
-        ),
-        Terminus(
-            point:    Vec2(-96.0, 96.0),
-            emits:    [],
-            collects: [PixieFlavor ( color: 1, net: 0)]
-        ),
-        Terminus(
-            point:    Vec2(-240, -96),
-            emits:    [],
-            collects: [PixieFlavor ( color: 3, net: 0)]
-        ),
-        Terminus(
-            point:    Vec2(-240, 96),
-            emits:    [PixieFlavor ( color: 3, net: 1)],
-            collects: []
-        ),
-        Terminus(
-            point:    Vec2(-384, -96),
-            emits:    [PixieFlavor ( color: 5, net: 1)],
-            collects: []
+            collects: [PixieFlavor(color: 0, net: 0)],
         ),
         Terminus(
-            point:    Vec2(-384, 96),
+            point:    Vec2(192.0, -0.0),
             emits:    [],
-            collects: [PixieFlavor ( color: 5, net: 0)]
+            collects: [PixieFlavor(color: 4, net: 0)],
         ),
     ],
     obstacles: [
-        // corners
-        Rect(Vec2(-624, -192), Vec2(-528, -288)),
-        Rect(Vec2(-624, 336), Vec2(-528, 240)),
-        Rect(Vec2(528, 336), Vec2(624, 240)),
-        Rect(Vec2(528, -192), Vec2(624, -288)),
-        //
-        Rect(Vec2(-432.0, 48.0), Vec2(-48.0, -48.0)),
-        Rect(Vec2(48.0, 48.0), Vec2(432.0, -48.0))
-
+        Rect(Vec2(-624.0, 48.0), Vec2(-144.0, -288.0)),
+        Rect(Vec2(144.0, 48.0), Vec2(624.0, 336.0)),
+        // blockers
+        Rect(Vec2(-536, 48), Vec2(-520, 104)),
+        Rect(Vec2(-440, 48), Vec2(-426, 104)),
+        Rect(Vec2(-344, 48), Vec2(-328, 104)),
+        Rect(Vec2(-248, 48), Vec2(-232, 104)),
+        Rect(Vec2(536, 48),  Vec2(520, -8)),
+        Rect(Vec2(440, 48),  Vec2(424, -8)),
+        Rect(Vec2(344, 48),  Vec2(328, -8)),
+        Rect(Vec2(248, 48),  Vec2(232, -8)),
     ],
-    star_thresholds: [200, 240, 280],
+    star_thresholds: [190, 220, 250],
 )
\ No newline at end of file
diff --git a/src/level.rs b/src/level.rs
index 2c972af..75eb164 100644
--- a/src/level.rs
+++ b/src/level.rs
@@ -4,6 +4,8 @@ use serde::Deserialize;
 
 #[derive(Deserialize, Debug, Asset, TypePath)]
 pub struct Level {
+    #[allow(unused)]
+    pub name: String,
     pub layers: u32,
     pub terminuses: Vec<Terminus>,
     pub obstacles: Vec<Obstacle>,
diff --git a/src/loading.rs b/src/loading.rs
index 72d4a75..7a71003 100644
--- a/src/loading.rs
+++ b/src/loading.rs
@@ -4,7 +4,7 @@ use bevy_simple_prefs::PrefsStatus;
 
 pub struct LoadingPlugin;
 
-pub const NUM_LEVELS: u32 = 9;
+pub const NUM_LEVELS: u32 = 12;
 
 impl Plugin for LoadingPlugin {
     fn build(&self, app: &mut App) {