OOKNET                             [ /  search the index  ]  
──────────────────────────────────────────────────────────────────────────────────────
══════════════════════════════════════════════════════════════════════════════════════
OOKNET   [ /  search  ]  
────────────────────────────────────────────────
════════════════════════════════════════════════
 
HASH      87849460022d
DATE      2025-07-20
SUBJECT   nix: fix broken classes
FILES     23 CHANGED
HASH      87849460022d
DATE      2025-07-20
SUBJECT   nix: fix broken classes
FILES     23 CHANGED
 

diff --git a/nix/classes/death_knight/frost.nix b/nix/classes/death_knight/frost.n
ix
index 72b4b3a..0b44118 100644
--- a/nix/classes/death_knight/frost.nix
+++ b/nix/classes/death_knight/frost.nix
@@ -49,18 +49,48 @@
       };
     };
 
-    p1 = {
-      singleTarget = mkFrost {
-        race = "troll";
-        talents = frost.talents.obliterate;
-        glyphs = frost.glyphs.obliterate;
-        apl = "obliterate";
-      };
-      aoe = mkFrost {
-        race = "troll";
-        talents = frost.talents.obliterate;
-        glyphs = frost.glyphs.obliterate;
-        apl = "obliterate";
+    template = {
+      p1 = {
+        raid = {
+          singleTarget = mkFrost {
+            race = "troll";
+            talents = frost.talents.obliterate;
+            glyphs = frost.glyphs.obliterate;
+            apl = "obliterate";
+          };
+          multiTarget = mkFrost {
+            race = "troll";
+            talents = frost.talents.obliterate;
+            glyphs = frost.glyphs.obliterate;
+            apl = "obliterate";
+          };
+          cleave = mkFrost {
+            race = "troll";
+            talents = frost.talents.obliterate;
+            glyphs = frost.glyphs.obliterate;
+            apl = "obliterate";
+          };
+        };
+        dungeon = {
+          singleTarget = mkFrost {
+            race = "troll";
+            talents = frost.talents.obliterate;
+            glyphs = frost.glyphs.obliterate;
+            apl = "obliterate";
+          };
+          multiTarget = mkFrost {
+            race = "troll";
+            talents = frost.talents.obliterate;
+            glyphs = frost.glyphs.obliterate;
+            apl = "obliterate";
+          };
+          cleave = mkFrost {
+            race = "troll";
+            talents = frost.talents.obliterate;
+            glyphs = frost.glyphs.obliterate;
+            apl = "obliterate";
+          };
+        };
       };
     };
   };

diff --git a/nix/classes/death_knight/frost.
nix b/nix/classes/death_knight/frost.nix
index 72b4b3a..0b44118 100644
--- a/nix/classes/death_knight/frost.nix
+++ b/nix/classes/death_knight/frost.nix
@@ -49,18 +49,48 @@
       };
     };
 
-    p1 = {
-      singleTarget = mkFrost {
-        race = "troll";
-        talents = frost.talents.obliterate;
-        glyphs = frost.glyphs.obliterate;
-        apl = "obliterate";
-      };
-      aoe = mkFrost {
-        race = "troll";
-        talents = frost.talents.obliterate;
-        glyphs = frost.glyphs.obliterate;
-        apl = "obliterate";
+    template = {
+      p1 = {
+        raid = {
+          singleTarget = mkFrost {
+            race = "troll";
+            talents = frost.talents.obliter
ate;
+            glyphs = frost.glyphs.obliterat
e;
+            apl = "obliterate";
+          };
+          multiTarget = mkFrost {
+            race = "troll";
+            talents = frost.talents.obliter
ate;
+            glyphs = frost.glyphs.obliterat
e;
+            apl = "obliterate";
+          };
+          cleave = mkFrost {
+            race = "troll";
+            talents = frost.talents.obliter
ate;
+            glyphs = frost.glyphs.obliterat
e;
+            apl = "obliterate";
+          };
+        };
+        dungeon = {
+          singleTarget = mkFrost {
+            race = "troll";
+            talents = frost.talents.obliter
ate;
+            glyphs = frost.glyphs.obliterat
e;
+            apl = "obliterate";
+          };
+          multiTarget = mkFrost {
+            race = "troll";
+            talents = frost.talents.obliter
ate;
+            glyphs = frost.glyphs.obliterat
e;
+            apl = "obliterate";
+          };
+          cleave = mkFrost {
+            race = "troll";
+            talents = frost.talents.obliter
ate;
+            glyphs = frost.glyphs.obliterat
e;
+            apl = "obliterate";
+          };
+        };
       };
     };
   };
 

diff --git a/nix/classes/death_knight/unholy.nix b/nix/classes/death_knight/unholy
.nix
index 827f17a..33d0492 100644
--- a/nix/classes/death_knight/unholy.nix
+++ b/nix/classes/death_knight/unholy.nix
@@ -37,14 +37,36 @@
       gorfiendsGrasp = "221111";
     };
 
-    p1 = {
-      singleTarget = mkUnholy {
-        race = "orc";
-        talents = unholy.talents.gorfiendsGrasp;
-      };
-      aoe = mkUnholy {
-        race = "orc";
-        talents = unholy.talents.gorfiendsGrasp;
+    template = {
+      p1 = {
+        raid = {
+          singleTarget = mkUnholy {
+            race = "orc";
+            talents = unholy.talents.gorfiendsGrasp;
+          };
+          multiTarget = mkUnholy {
+            race = "orc";
+            talents = unholy.talents.gorfiendsGrasp;
+          };
+          cleave = mkUnholy {
+            race = "orc";
+            talents = unholy.talents.gorfiendsGrasp;
+          };
+        };
+        dungeon = {
+          singleTarget = mkUnholy {
+            race = "orc";
+            talents = unholy.talents.gorfiendsGrasp;
+          };
+          multiTarget = mkUnholy {
+            race = "orc";
+            talents = unholy.talents.gorfiendsGrasp;
+          };
+          cleave = mkUnholy {
+            race = "orc";
+            talents = unholy.talents.gorfiendsGrasp;
+          };
+        };
       };
     };
   };

diff --git a/nix/classes/death_knight/unholy
.nix b/nix/classes/death_knight/unholy.nix
index 827f17a..33d0492 100644
--- a/nix/classes/death_knight/unholy.nix
+++ b/nix/classes/death_knight/unholy.nix
@@ -37,14 +37,36 @@
       gorfiendsGrasp = "221111";
     };
 
-    p1 = {
-      singleTarget = mkUnholy {
-        race = "orc";
-        talents = unholy.talents.gorfiendsG
rasp;
-      };
-      aoe = mkUnholy {
-        race = "orc";
-        talents = unholy.talents.gorfiendsG
rasp;
+    template = {
+      p1 = {
+        raid = {
+          singleTarget = mkUnholy {
+            race = "orc";
+            talents = unholy.talents.gorfie
ndsGrasp;
+          };
+          multiTarget = mkUnholy {
+            race = "orc";
+            talents = unholy.talents.gorfie
ndsGrasp;
+          };
+          cleave = mkUnholy {
+            race = "orc";
+            talents = unholy.talents.gorfie
ndsGrasp;
+          };
+        };
+        dungeon = {
+          singleTarget = mkUnholy {
+            race = "orc";
+            talents = unholy.talents.gorfie
ndsGrasp;
+          };
+          multiTarget = mkUnholy {
+            race = "orc";
+            talents = unholy.talents.gorfie
ndsGrasp;
+          };
+          cleave = mkUnholy {
+            race = "orc";
+            talents = unholy.talents.gorfie
ndsGrasp;
+          };
+        };
       };
     };
   };
 

diff --git a/nix/classes/druid/balance.nix b/nix/classes/druid/balance.nix
index 6d563a6..6184162 100644
--- a/nix/classes/druid/balance.nix
+++ b/nix/classes/druid/balance.nix
@@ -38,14 +38,36 @@
       dreamOfCenarius = "113222";
     };
 
-    p1 = {
-      singleTarget = mkBalance {
-        race = "troll";
-        talents = balance.talents.dreamOfCenarius;
-      };
-      aoe = mkBalance {
-        race = "troll";
-        talents = balance.talents.dreamOfCenarius;
+    template = {
+      p1 = {
+        raid = {
+          singleTarget = mkBalance {
+            race = "troll";
+            talents = balance.talents.dreamOfCenarius;
+          };
+          multiTarget = mkBalance {
+            race = "troll";
+            talents = balance.talents.dreamOfCenarius;
+          };
+          cleave = mkBalance {
+            race = "troll";
+            talents = balance.talents.dreamOfCenarius;
+          };
+        };
+        dungeon = {
+          singleTarget = mkBalance {
+            race = "troll";
+            talents = balance.talents.dreamOfCenarius;
+          };
+          multiTarget = mkBalance {
+            race = "troll";
+            talents = balance.talents.dreamOfCenarius;
+          };
+          cleave = mkBalance {
+            race = "troll";
+            talents = balance.talents.dreamOfCenarius;
+          };
+        };
       };
     };
   };

diff --git a/nix/classes/druid/balance.nix b
/nix/classes/druid/balance.nix
index 6d563a6..6184162 100644
--- a/nix/classes/druid/balance.nix
+++ b/nix/classes/druid/balance.nix
@@ -38,14 +38,36 @@
       dreamOfCenarius = "113222";
     };
 
-    p1 = {
-      singleTarget = mkBalance {
-        race = "troll";
-        talents = balance.talents.dreamOfCe
narius;
-      };
-      aoe = mkBalance {
-        race = "troll";
-        talents = balance.talents.dreamOfCe
narius;
+    template = {
+      p1 = {
+        raid = {
+          singleTarget = mkBalance {
+            race = "troll";
+            talents = balance.talents.dream
OfCenarius;
+          };
+          multiTarget = mkBalance {
+            race = "troll";
+            talents = balance.talents.dream
OfCenarius;
+          };
+          cleave = mkBalance {
+            race = "troll";
+            talents = balance.talents.dream
OfCenarius;
+          };
+        };
+        dungeon = {
+          singleTarget = mkBalance {
+            race = "troll";
+            talents = balance.talents.dream
OfCenarius;
+          };
+          multiTarget = mkBalance {
+            race = "troll";
+            talents = balance.talents.dream
OfCenarius;
+          };
+          cleave = mkBalance {
+            race = "troll";
+            talents = balance.talents.dream
OfCenarius;
+          };
+        };
       };
     };
   };
 

diff --git a/nix/classes/druid/feral.nix b/nix/classes/druid/feral.nix
index 1304135..055e05e 100644
--- a/nix/classes/druid/feral.nix
+++ b/nix/classes/druid/feral.nix
@@ -32,14 +32,36 @@
       primal = "321232";
     };
 
-    p1 = {
-      singleTarget = mkFeral {
-        race = "troll";
-        talents = feral.talents.primal;
-      };
-      aoe = mkFeral {
-        race = "troll";
-        talents = feral.talents.primal;
+    template = {
+      p1 = {
+        raid = {
+          singleTarget = mkFeral {
+            race = "troll";
+            talents = feral.talents.primal;
+          };
+          multiTarget = mkFeral {
+            race = "troll";
+            talents = feral.talents.primal;
+          };
+          cleave = mkFeral {
+            race = "troll";
+            talents = feral.talents.primal;
+          };
+        };
+        dungeon = {
+          singleTarget = mkFeral {
+            race = "troll";
+            talents = feral.talents.primal;
+          };
+          multiTarget = mkFeral {
+            race = "troll";
+            talents = feral.talents.primal;
+          };
+          cleave = mkFeral {
+            race = "troll";
+            talents = feral.talents.primal;
+          };
+        };
       };
     };
   };

diff --git a/nix/classes/druid/feral.nix b/n
ix/classes/druid/feral.nix
index 1304135..055e05e 100644
--- a/nix/classes/druid/feral.nix
+++ b/nix/classes/druid/feral.nix
@@ -32,14 +32,36 @@
       primal = "321232";
     };
 
-    p1 = {
-      singleTarget = mkFeral {
-        race = "troll";
-        talents = feral.talents.primal;
-      };
-      aoe = mkFeral {
-        race = "troll";
-        talents = feral.talents.primal;
+    template = {
+      p1 = {
+        raid = {
+          singleTarget = mkFeral {
+            race = "troll";
+            talents = feral.talents.primal;
+          };
+          multiTarget = mkFeral {
+            race = "troll";
+            talents = feral.talents.primal;
+          };
+          cleave = mkFeral {
+            race = "troll";
+            talents = feral.talents.primal;
+          };
+        };
+        dungeon = {
+          singleTarget = mkFeral {
+            race = "troll";
+            talents = feral.talents.primal;
+          };
+          multiTarget = mkFeral {
+            race = "troll";
+            talents = feral.talents.primal;
+          };
+          cleave = mkFeral {
+            race = "troll";
+            talents = feral.talents.primal;
+          };
+        };
       };
     };
   };
 

diff --git a/nix/classes/hunter/beast_mastery.nix b/nix/classes/hunter/beast_maste
ry.nix
index 5829c3f..09fdf36 100644
--- a/nix/classes/hunter/beast_mastery.nix
+++ b/nix/classes/hunter/beast_mastery.nix
@@ -40,14 +40,36 @@
       glaiveToss = "312211";
     };
 
-    p1 = {
-      singleTarget = mkBeastmastery {
-        race = "worgen";
-        talents = beastmastery.talents.glaiveToss;
-      };
-      aoe = mkBeastmastery {
-        race = "worgen";
-        talents = beastmastery.talents.glaiveToss;
+    template = {
+      p1 = {
+        raid = {
+          singleTarget = mkBeastmastery {
+            race = "worgen";
+            talents = beastmastery.talents.glaiveToss;
+          };
+          multiTarget = mkBeastmastery {
+            race = "worgen";
+            talents = beastmastery.talents.glaiveToss;
+          };
+          cleave = mkBeastmastery {
+            race = "worgen";
+            talents = beastmastery.talents.glaiveToss;
+          };
+        };
+        dungeon = {
+          singleTarget = mkBeastmastery {
+            race = "worgen";
+            talents = beastmastery.talents.glaiveToss;
+          };
+          multiTarget = mkBeastmastery {
+            race = "worgen";
+            talents = beastmastery.talents.glaiveToss;
+          };
+          cleave = mkBeastmastery {
+            race = "worgen";
+            talents = beastmastery.talents.glaiveToss;
+          };
+        };
       };
     };
   };

diff --git a/nix/classes/hunter/beast_master
y.nix b/nix/classes/hunter/beast_mastery.nix
index 5829c3f..09fdf36 100644
--- a/nix/classes/hunter/beast_mastery.nix
+++ b/nix/classes/hunter/beast_mastery.nix
@@ -40,14 +40,36 @@
       glaiveToss = "312211";
     };
 
-    p1 = {
-      singleTarget = mkBeastmastery {
-        race = "worgen";
-        talents = beastmastery.talents.glai
veToss;
-      };
-      aoe = mkBeastmastery {
-        race = "worgen";
-        talents = beastmastery.talents.glai
veToss;
+    template = {
+      p1 = {
+        raid = {
+          singleTarget = mkBeastmastery {
+            race = "worgen";
+            talents = beastmastery.talents.
glaiveToss;
+          };
+          multiTarget = mkBeastmastery {
+            race = "worgen";
+            talents = beastmastery.talents.
glaiveToss;
+          };
+          cleave = mkBeastmastery {
+            race = "worgen";
+            talents = beastmastery.talents.
glaiveToss;
+          };
+        };
+        dungeon = {
+          singleTarget = mkBeastmastery {
+            race = "worgen";
+            talents = beastmastery.talents.
glaiveToss;
+          };
+          multiTarget = mkBeastmastery {
+            race = "worgen";
+            talents = beastmastery.talents.
glaiveToss;
+          };
+          cleave = mkBeastmastery {
+            race = "worgen";
+            talents = beastmastery.talents.
glaiveToss;
+          };
+        };
       };
     };
   };
 

diff --git a/nix/classes/hunter/marksmanship.nix b/nix/classes/hunter/marksmanship
.nix
index a72b19b..198ae6a 100644
--- a/nix/classes/hunter/marksmanship.nix
+++ b/nix/classes/hunter/marksmanship.nix
@@ -40,14 +40,36 @@
       glaiveToss = "312111";
     };
 
-    p1 = {
-      singleTarget = mkMarksmanship {
-        race = "worgen";
-        talents = marksmanship.talents.glaiveToss;
-      };
-      aoe = mkMarksmanship {
-        race = "worgen";
-        talents = marksmanship.talents.glaiveToss;
+    template = {
+      p1 = {
+        raid = {
+          singleTarget = mkMarksmanship {
+            race = "worgen";
+            talents = marksmanship.talents.glaiveToss;
+          };
+          multiTarget = mkMarksmanship {
+            race = "worgen";
+            talents = marksmanship.talents.glaiveToss;
+          };
+          cleave = mkMarksmanship {
+            race = "worgen";
+            talents = marksmanship.talents.glaiveToss;
+          };
+        };
+        dungeon = {
+          singleTarget = mkMarksmanship {
+            race = "worgen";
+            talents = marksmanship.talents.glaiveToss;
+          };
+          multiTarget = mkMarksmanship {
+            race = "worgen";
+            talents = marksmanship.talents.glaiveToss;
+          };
+          cleave = mkMarksmanship {
+            race = "worgen";
+            talents = marksmanship.talents.glaiveToss;
+          };
+        };
       };
     };
   };

diff --git a/nix/classes/hunter/marksmanship
.nix b/nix/classes/hunter/marksmanship.nix
index a72b19b..198ae6a 100644
--- a/nix/classes/hunter/marksmanship.nix
+++ b/nix/classes/hunter/marksmanship.nix
@@ -40,14 +40,36 @@
       glaiveToss = "312111";
     };
 
-    p1 = {
-      singleTarget = mkMarksmanship {
-        race = "worgen";
-        talents = marksmanship.talents.glai
veToss;
-      };
-      aoe = mkMarksmanship {
-        race = "worgen";
-        talents = marksmanship.talents.glai
veToss;
+    template = {
+      p1 = {
+        raid = {
+          singleTarget = mkMarksmanship {
+            race = "worgen";
+            talents = marksmanship.talents.
glaiveToss;
+          };
+          multiTarget = mkMarksmanship {
+            race = "worgen";
+            talents = marksmanship.talents.
glaiveToss;
+          };
+          cleave = mkMarksmanship {
+            race = "worgen";
+            talents = marksmanship.talents.
glaiveToss;
+          };
+        };
+        dungeon = {
+          singleTarget = mkMarksmanship {
+            race = "worgen";
+            talents = marksmanship.talents.
glaiveToss;
+          };
+          multiTarget = mkMarksmanship {
+            race = "worgen";
+            talents = marksmanship.talents.
glaiveToss;
+          };
+          cleave = mkMarksmanship {
+            race = "worgen";
+            talents = marksmanship.talents.
glaiveToss;
+          };
+        };
       };
     };
   };
 

diff --git a/nix/classes/hunter/survival.nix b/nix/classes/hunter/survival.nix
index 841e44b..b60015d 100644
--- a/nix/classes/hunter/survival.nix
+++ b/nix/classes/hunter/survival.nix
@@ -40,14 +40,36 @@
       serpent = "321232";
     };
 
-    p1 = {
-      singleTarget = mkSurvival {
-        race = "worgen";
-        talents = survival.talents.serpent;
-      };
-      aoe = mkSurvival {
-        race = "worgen";
-        talents = survival.talents.serpent;
+    template = {
+      p1 = {
+        raid = {
+          singleTarget = mkSurvival {
+            race = "worgen";
+            talents = survival.talents.serpent;
+          };
+          multiTarget = mkSurvival {
+            race = "worgen";
+            talents = survival.talents.serpent;
+          };
+          cleave = mkSurvival {
+            race = "worgen";
+            talents = survival.talents.serpent;
+          };
+        };
+        dungeon = {
+          singleTarget = mkSurvival {
+            race = "worgen";
+            talents = survival.talents.serpent;
+          };
+          multiTarget = mkSurvival {
+            race = "worgen";
+            talents = survival.talents.serpent;
+          };
+          cleave = mkSurvival {
+            race = "worgen";
+            talents = survival.talents.serpent;
+          };
+        };
       };
     };
   };

diff --git a/nix/classes/hunter/survival.nix
 b/nix/classes/hunter/survival.nix
index 841e44b..b60015d 100644
--- a/nix/classes/hunter/survival.nix
+++ b/nix/classes/hunter/survival.nix
@@ -40,14 +40,36 @@
       serpent = "321232";
     };
 
-    p1 = {
-      singleTarget = mkSurvival {
-        race = "worgen";
-        talents = survival.talents.serpent;
-      };
-      aoe = mkSurvival {
-        race = "worgen";
-        talents = survival.talents.serpent;
+    template = {
+      p1 = {
+        raid = {
+          singleTarget = mkSurvival {
+            race = "worgen";
+            talents = survival.talents.serp
ent;
+          };
+          multiTarget = mkSurvival {
+            race = "worgen";
+            talents = survival.talents.serp
ent;
+          };
+          cleave = mkSurvival {
+            race = "worgen";
+            talents = survival.talents.serp
ent;
+          };
+        };
+        dungeon = {
+          singleTarget = mkSurvival {
+            race = "worgen";
+            talents = survival.talents.serp
ent;
+          };
+          multiTarget = mkSurvival {
+            race = "worgen";
+            talents = survival.talents.serp
ent;
+          };
+          cleave = mkSurvival {
+            race = "worgen";
+            talents = survival.talents.serp
ent;
+          };
+        };
       };
     };
   };
 

diff --git a/nix/classes/mage/arcane.nix b/nix/classes/mage/arcane.nix
index f959f1a..790eb25 100644
--- a/nix/classes/mage/arcane.nix
+++ b/nix/classes/mage/arcane.nix
@@ -38,15 +38,40 @@
       netherTempest = "311112";
     };
 
-    p1 = {
-      singleTarget = mkArcane {
-        race = "troll";
-        talents = arcane.talents.livingBomb;
-      };
-      aoe = mkArcane {
-        race = "troll";
-        apl = "arcane_cleave";
-        talents = arcane.talents.netherTempest;
+    template = {
+      p1 = {
+        raid = {
+          singleTarget = mkArcane {
+            race = "troll";
+            talents = arcane.talents.livingBomb;
+          };
+          multiTarget = mkArcane {
+            race = "troll";
+            apl = "arcane_cleave";
+            talents = arcane.talents.netherTempest;
+          };
+          cleave = mkArcane {
+            race = "troll";
+            apl = "arcane_cleave";
+            talents = arcane.talents.netherTempest;
+          };
+        };
+        dungeon = {
+          singleTarget = mkArcane {
+            race = "troll";
+            talents = arcane.talents.livingBomb;
+          };
+          multiTarget = mkArcane {
+            race = "troll";
+            apl = "arcane_cleave";
+            talents = arcane.talents.netherTempest;
+          };
+          cleave = mkArcane {
+            race = "troll";
+            apl = "arcane_cleave";
+            talents = arcane.talents.netherTempest;
+          };
+        };
       };
     };
   };

diff --git a/nix/classes/mage/arcane.nix b/n
ix/classes/mage/arcane.nix
index f959f1a..790eb25 100644
--- a/nix/classes/mage/arcane.nix
+++ b/nix/classes/mage/arcane.nix
@@ -38,15 +38,40 @@
       netherTempest = "311112";
     };
 
-    p1 = {
-      singleTarget = mkArcane {
-        race = "troll";
-        talents = arcane.talents.livingBomb
;
-      };
-      aoe = mkArcane {
-        race = "troll";
-        apl = "arcane_cleave";
-        talents = arcane.talents.netherTemp
est;
+    template = {
+      p1 = {
+        raid = {
+          singleTarget = mkArcane {
+            race = "troll";
+            talents = arcane.talents.living
Bomb;
+          };
+          multiTarget = mkArcane {
+            race = "troll";
+            apl = "arcane_cleave";
+            talents = arcane.talents.nether
Tempest;
+          };
+          cleave = mkArcane {
+            race = "troll";
+            apl = "arcane_cleave";
+            talents = arcane.talents.nether
Tempest;
+          };
+        };
+        dungeon = {
+          singleTarget = mkArcane {
+            race = "troll";
+            talents = arcane.talents.living
Bomb;
+          };
+          multiTarget = mkArcane {
+            race = "troll";
+            apl = "arcane_cleave";
+            talents = arcane.talents.nether
Tempest;
+          };
+          cleave = mkArcane {
+            race = "troll";
+            apl = "arcane_cleave";
+            talents = arcane.talents.nether
Tempest;
+          };
+        };
       };
     };
   };
 

diff --git a/nix/classes/mage/fire.nix b/nix/classes/mage/fire.nix
index b0ec018..633b04e 100644
--- a/nix/classes/mage/fire.nix
+++ b/nix/classes/mage/fire.nix
@@ -37,15 +37,40 @@
       netherTempest = "111112";
     };
 
-    p1 = {
-      singleTarget = mkFire {
-        race = "troll";
-        talents = fire.talents.livingBomb;
-      };
-      aoe = mkFire {
-        race = "troll";
-        talents = fire.talents.netherTempest;
-        apl = "fire_cleave";
+    template = {
+      p1 = {
+        raid = {
+          singleTarget = mkFire {
+            race = "troll";
+            talents = fire.talents.livingBomb;
+          };
+          multiTarget = mkFire {
+            race = "troll";
+            talents = fire.talents.netherTempest;
+            apl = "fire_cleave";
+          };
+          cleave = mkFire {
+            race = "troll";
+            talents = fire.talents.netherTempest;
+            apl = "fire_cleave";
+          };
+        };
+        dungeon = {
+          singleTarget = mkFire {
+            race = "troll";
+            talents = fire.talents.livingBomb;
+          };
+          multiTarget = mkFire {
+            race = "troll";
+            talents = fire.talents.netherTempest;
+            apl = "fire_cleave";
+          };
+          cleave = mkFire {
+            race = "troll";
+            talents = fire.talents.netherTempest;
+            apl = "fire_cleave";
+          };
+        };
       };
     };
   };

diff --git a/nix/classes/mage/fire.nix b/nix
/classes/mage/fire.nix
index b0ec018..633b04e 100644
--- a/nix/classes/mage/fire.nix
+++ b/nix/classes/mage/fire.nix
@@ -37,15 +37,40 @@
       netherTempest = "111112";
     };
 
-    p1 = {
-      singleTarget = mkFire {
-        race = "troll";
-        talents = fire.talents.livingBomb;
-      };
-      aoe = mkFire {
-        race = "troll";
-        talents = fire.talents.netherTempes
t;
-        apl = "fire_cleave";
+    template = {
+      p1 = {
+        raid = {
+          singleTarget = mkFire {
+            race = "troll";
+            talents = fire.talents.livingBo
mb;
+          };
+          multiTarget = mkFire {
+            race = "troll";
+            talents = fire.talents.netherTe
mpest;
+            apl = "fire_cleave";
+          };
+          cleave = mkFire {
+            race = "troll";
+            talents = fire.talents.netherTe
mpest;
+            apl = "fire_cleave";
+          };
+        };
+        dungeon = {
+          singleTarget = mkFire {
+            race = "troll";
+            talents = fire.talents.livingBo
mb;
+          };
+          multiTarget = mkFire {
+            race = "troll";
+            talents = fire.talents.netherTe
mpest;
+            apl = "fire_cleave";
+          };
+          cleave = mkFire {
+            race = "troll";
+            talents = fire.talents.netherTe
mpest;
+            apl = "fire_cleave";
+          };
+        };
       };
     };
   };
 

diff --git a/nix/classes/mage/frost.nix b/nix/classes/mage/frost.nix
index d0df6e5..69aa728 100644
--- a/nix/classes/mage/frost.nix
+++ b/nix/classes/mage/frost.nix
@@ -38,20 +38,40 @@
       netherTempest = "311112";
     };
 
-    p1 = {
-      singleTarget = mkFrost {
-        race = "troll";
-        talents = frost.talents.livingBomb;
-      };
-      aoe = mkFrost {
-        race = "troll";
-        apl = "frost_aoe";
-        talents = frost.talents.netherTempest;
-      };
-      cleave = mkFrost {
-        apl = "frost_cleave";
-        race = "troll";
-        talents = frost.talents.netherTempest;
+    template = {
+      p1 = {
+        raid = {
+          singleTarget = mkFrost {
+            race = "troll";
+            talents = frost.talents.livingBomb;
+          };
+          multiTarget = mkFrost {
+            race = "troll";
+            apl = "frost_aoe";
+            talents = frost.talents.netherTempest;
+          };
+          cleave = mkFrost {
+            apl = "frost_cleave";
+            race = "troll";
+            talents = frost.talents.netherTempest;
+          };
+        };
+        dungeon = {
+          singleTarget = mkFrost {
+            race = "troll";
+            talents = frost.talents.livingBomb;
+          };
+          multiTarget = mkFrost {
+            race = "troll";
+            apl = "frost_aoe";
+            talents = frost.talents.netherTempest;
+          };
+          cleave = mkFrost {
+            apl = "frost_cleave";
+            race = "troll";
+            talents = frost.talents.netherTempest;
+          };
+        };
       };
     };
   };

diff --git a/nix/classes/mage/frost.nix b/ni
x/classes/mage/frost.nix
index d0df6e5..69aa728 100644
--- a/nix/classes/mage/frost.nix
+++ b/nix/classes/mage/frost.nix
@@ -38,20 +38,40 @@
       netherTempest = "311112";
     };
 
-    p1 = {
-      singleTarget = mkFrost {
-        race = "troll";
-        talents = frost.talents.livingBomb;
-      };
-      aoe = mkFrost {
-        race = "troll";
-        apl = "frost_aoe";
-        talents = frost.talents.netherTempe
st;
-      };
-      cleave = mkFrost {
-        apl = "frost_cleave";
-        race = "troll";
-        talents = frost.talents.netherTempe
st;
+    template = {
+      p1 = {
+        raid = {
+          singleTarget = mkFrost {
+            race = "troll";
+            talents = frost.talents.livingB
omb;
+          };
+          multiTarget = mkFrost {
+            race = "troll";
+            apl = "frost_aoe";
+            talents = frost.talents.netherT
empest;
+          };
+          cleave = mkFrost {
+            apl = "frost_cleave";
+            race = "troll";
+            talents = frost.talents.netherT
empest;
+          };
+        };
+        dungeon = {
+          singleTarget = mkFrost {
+            race = "troll";
+            talents = frost.talents.livingB
omb;
+          };
+          multiTarget = mkFrost {
+            race = "troll";
+            apl = "frost_aoe";
+            talents = frost.talents.netherT
empest;
+          };
+          cleave = mkFrost {
+            apl = "frost_cleave";
+            race = "troll";
+            talents = frost.talents.netherT
empest;
+          };
+        };
       };
     };
   };
 

diff --git a/nix/classes/monk/windwalker.nix b/nix/classes/monk/windwalker.nix
index 9e2b5e6..6a91d98 100644
--- a/nix/classes/monk/windwalker.nix
+++ b/nix/classes/monk/windwalker.nix
@@ -39,15 +39,36 @@
       };
     };
 
-    # Phase 1 configurations
-    p1 = {
-      singleTarget = mkWindwalker {
-        race = "orc";
-        talents = windwalker.talents.xuen;
-      };
-      aoe = mkWindwalker {
-        race = "orc";
-        talents = windwalker.talents.rjw;
+    template = {
+      p1 = {
+        raid = {
+          singleTarget = mkWindwalker {
+            race = "orc";
+            talents = windwalker.talents.xuen;
+          };
+          multiTarget = mkWindwalker {
+            race = "orc";
+            talents = windwalker.talents.rjw;
+          };
+          cleave = mkWindwalker {
+            race = "orc";
+            talents = windwalker.talents.rjw;
+          };
+        };
+        dungeon = {
+          singleTarget = mkWindwalker {
+            race = "orc";
+            talents = windwalker.talents.xuen;
+          };
+          multiTarget = mkWindwalker {
+            race = "orc";
+            talents = windwalker.talents.rjw;
+          };
+          cleave = mkWindwalker {
+            race = "orc";
+            talents = windwalker.talents.rjw;
+          };
+        };
       };
     };
   };

diff --git a/nix/classes/monk/windwalker.nix
 b/nix/classes/monk/windwalker.nix
index 9e2b5e6..6a91d98 100644
--- a/nix/classes/monk/windwalker.nix
+++ b/nix/classes/monk/windwalker.nix
@@ -39,15 +39,36 @@
       };
     };
 
-    # Phase 1 configurations
-    p1 = {
-      singleTarget = mkWindwalker {
-        race = "orc";
-        talents = windwalker.talents.xuen;
-      };
-      aoe = mkWindwalker {
-        race = "orc";
-        talents = windwalker.talents.rjw;
+    template = {
+      p1 = {
+        raid = {
+          singleTarget = mkWindwalker {
+            race = "orc";
+            talents = windwalker.talents.xu
en;
+          };
+          multiTarget = mkWindwalker {
+            race = "orc";
+            talents = windwalker.talents.rj
w;
+          };
+          cleave = mkWindwalker {
+            race = "orc";
+            talents = windwalker.talents.rj
w;
+          };
+        };
+        dungeon = {
+          singleTarget = mkWindwalker {
+            race = "orc";
+            talents = windwalker.talents.xu
en;
+          };
+          multiTarget = mkWindwalker {
+            race = "orc";
+            talents = windwalker.talents.rj
w;
+          };
+          cleave = mkWindwalker {
+            race = "orc";
+            talents = windwalker.talents.rj
w;
+          };
+        };
       };
     };
   };
 

diff --git a/nix/classes/paladin/retribution.nix b/nix/classes/paladin/retribution
.nix
index 694ccc8..10ffadc 100644
--- a/nix/classes/paladin/retribution.nix
+++ b/nix/classes/paladin/retribution.nix
@@ -34,14 +34,36 @@
       executionSentence = "221223";
     };
 
-    p1 = {
-      singleTarget = mkRetribution {
-        race = "human";
-        talents = retribution.talents.executionSentence;
-      };
-      aoe = mkRetribution {
-        race = "human";
-        talents = retribution.talents.executionSentence;
+    template = {
+      p1 = {
+        raid = {
+          singleTarget = mkRetribution {
+            race = "human";
+            talents = retribution.talents.executionSentence;
+          };
+          multiTarget = mkRetribution {
+            race = "human";
+            talents = retribution.talents.executionSentence;
+          };
+          cleave = mkRetribution {
+            race = "human";
+            talents = retribution.talents.executionSentence;
+          };
+        };
+        dungeon = {
+          singleTarget = mkRetribution {
+            race = "human";
+            talents = retribution.talents.executionSentence;
+          };
+          multiTarget = mkRetribution {
+            race = "human";
+            talents = retribution.talents.executionSentence;
+          };
+          cleave = mkRetribution {
+            race = "human";
+            talents = retribution.talents.executionSentence;
+          };
+        };
       };
     };
   };

diff --git a/nix/classes/paladin/retribution
.nix b/nix/classes/paladin/retribution.nix
index 694ccc8..10ffadc 100644
--- a/nix/classes/paladin/retribution.nix
+++ b/nix/classes/paladin/retribution.nix
@@ -34,14 +34,36 @@
       executionSentence = "221223";
     };
 
-    p1 = {
-      singleTarget = mkRetribution {
-        race = "human";
-        talents = retribution.talents.execu
tionSentence;
-      };
-      aoe = mkRetribution {
-        race = "human";
-        talents = retribution.talents.execu
tionSentence;
+    template = {
+      p1 = {
+        raid = {
+          singleTarget = mkRetribution {
+            race = "human";
+            talents = retribution.talents.e
xecutionSentence;
+          };
+          multiTarget = mkRetribution {
+            race = "human";
+            talents = retribution.talents.e
xecutionSentence;
+          };
+          cleave = mkRetribution {
+            race = "human";
+            talents = retribution.talents.e
xecutionSentence;
+          };
+        };
+        dungeon = {
+          singleTarget = mkRetribution {
+            race = "human";
+            talents = retribution.talents.e
xecutionSentence;
+          };
+          multiTarget = mkRetribution {
+            race = "human";
+            talents = retribution.talents.e
xecutionSentence;
+          };
+          cleave = mkRetribution {
+            race = "human";
+            talents = retribution.talents.e
xecutionSentence;
+          };
+        };
       };
     };
   };
 

diff --git a/nix/classes/priest/shadow.nix b/nix/classes/priest/shadow.nix
index 0fca4f7..1b2405b 100644
--- a/nix/classes/priest/shadow.nix
+++ b/nix/classes/priest/shadow.nix
@@ -34,14 +34,36 @@
       halo = "223113";
     };
 
-    p1 = {
-      singleTarget = mkShadow {
-        race = "troll";
-        talents = shadow.talents.halo;
-      };
-      aoe = mkShadow {
-        race = "troll";
-        talents = shadow.talents.halo;
+    template = {
+      p1 = {
+        raid = {
+          singleTarget = mkShadow {
+            race = "troll";
+            talents = shadow.talents.halo;
+          };
+          multiTarget = mkShadow {
+            race = "troll";
+            talents = shadow.talents.halo;
+          };
+          cleave = mkShadow {
+            race = "troll";
+            talents = shadow.talents.halo;
+          };
+        };
+        dungeon = {
+          singleTarget = mkShadow {
+            race = "troll";
+            talents = shadow.talents.halo;
+          };
+          multiTarget = mkShadow {
+            race = "troll";
+            talents = shadow.talents.halo;
+          };
+          cleave = mkShadow {
+            race = "troll";
+            talents = shadow.talents.halo;
+          };
+        };
       };
     };
   };

diff --git a/nix/classes/priest/shadow.nix b
/nix/classes/priest/shadow.nix
index 0fca4f7..1b2405b 100644
--- a/nix/classes/priest/shadow.nix
+++ b/nix/classes/priest/shadow.nix
@@ -34,14 +34,36 @@
       halo = "223113";
     };
 
-    p1 = {
-      singleTarget = mkShadow {
-        race = "troll";
-        talents = shadow.talents.halo;
-      };
-      aoe = mkShadow {
-        race = "troll";
-        talents = shadow.talents.halo;
+    template = {
+      p1 = {
+        raid = {
+          singleTarget = mkShadow {
+            race = "troll";
+            talents = shadow.talents.halo;
+          };
+          multiTarget = mkShadow {
+            race = "troll";
+            talents = shadow.talents.halo;
+          };
+          cleave = mkShadow {
+            race = "troll";
+            talents = shadow.talents.halo;
+          };
+        };
+        dungeon = {
+          singleTarget = mkShadow {
+            race = "troll";
+            talents = shadow.talents.halo;
+          };
+          multiTarget = mkShadow {
+            race = "troll";
+            talents = shadow.talents.halo;
+          };
+          cleave = mkShadow {
+            race = "troll";
+            talents = shadow.talents.halo;
+          };
+        };
       };
     };
   };
 

diff --git a/nix/classes/rogue/assassination.nix b/nix/classes/rogue/assassination
.nix
index 39e3766..7880f4e 100644
--- a/nix/classes/rogue/assassination.nix
+++ b/nix/classes/rogue/assassination.nix
@@ -36,14 +36,36 @@
       mfd = "321232";
     };
 
-    p1 = {
-      singleTarget = mkAssassination {
-        race = "human";
-        talents = assassination.talents.mfd;
-      };
-      aoe = mkAssassination {
-        race = "human";
-        talents = assassination.talents.mfd;
+    template = {
+      p1 = {
+        raid = {
+          singleTarget = mkAssassination {
+            race = "human";
+            talents = assassination.talents.mfd;
+          };
+          multiTarget = mkAssassination {
+            race = "human";
+            talents = assassination.talents.mfd;
+          };
+          cleave = mkAssassination {
+            race = "human";
+            talents = assassination.talents.mfd;
+          };
+        };
+        dungeon = {
+          singleTarget = mkAssassination {
+            race = "human";
+            talents = assassination.talents.mfd;
+          };
+          multiTarget = mkAssassination {
+            race = "human";
+            talents = assassination.talents.mfd;
+          };
+          cleave = mkAssassination {
+            race = "human";
+            talents = assassination.talents.mfd;
+          };
+        };
       };
     };
   };

diff --git a/nix/classes/rogue/assassination
.nix b/nix/classes/rogue/assassination.nix
index 39e3766..7880f4e 100644
--- a/nix/classes/rogue/assassination.nix
+++ b/nix/classes/rogue/assassination.nix
@@ -36,14 +36,36 @@
       mfd = "321232";
     };
 
-    p1 = {
-      singleTarget = mkAssassination {
-        race = "human";
-        talents = assassination.talents.mfd
;
-      };
-      aoe = mkAssassination {
-        race = "human";
-        talents = assassination.talents.mfd
;
+    template = {
+      p1 = {
+        raid = {
+          singleTarget = mkAssassination {
+            race = "human";
+            talents = assassination.talents
.mfd;
+          };
+          multiTarget = mkAssassination {
+            race = "human";
+            talents = assassination.talents
.mfd;
+          };
+          cleave = mkAssassination {
+            race = "human";
+            talents = assassination.talents
.mfd;
+          };
+        };
+        dungeon = {
+          singleTarget = mkAssassination {
+            race = "human";
+            talents = assassination.talents
.mfd;
+          };
+          multiTarget = mkAssassination {
+            race = "human";
+            talents = assassination.talents
.mfd;
+          };
+          cleave = mkAssassination {
+            race = "human";
+            talents = assassination.talents
.mfd;
+          };
+        };
       };
     };
   };
 

diff --git a/nix/classes/rogue/combat.nix b/nix/classes/rogue/combat.nix
index bf707c7..e73851a 100644
--- a/nix/classes/rogue/combat.nix
+++ b/nix/classes/rogue/combat.nix
@@ -36,14 +36,36 @@
       anticipation = "321213";
     };
 
-    p1 = {
-      singleTarget = mkCombat {
-        race = "human";
-        talents = combat.talents.anticipation;
-      };
-      aoe = mkCombat {
-        race = "human";
-        talents = combat.talents.anticipation;
+    template = {
+      p1 = {
+        raid = {
+          singleTarget = mkCombat {
+            race = "human";
+            talents = combat.talents.anticipation;
+          };
+          multiTarget = mkCombat {
+            race = "human";
+            talents = combat.talents.anticipation;
+          };
+          cleave = mkCombat {
+            race = "human";
+            talents = combat.talents.anticipation;
+          };
+        };
+        dungeon = {
+          singleTarget = mkCombat {
+            race = "human";
+            talents = combat.talents.anticipation;
+          };
+          multiTarget = mkCombat {
+            race = "human";
+            talents = combat.talents.anticipation;
+          };
+          cleave = mkCombat {
+            race = "human";
+            talents = combat.talents.anticipation;
+          };
+        };
       };
     };
   };

diff --git a/nix/classes/rogue/combat.nix b/
nix/classes/rogue/combat.nix
index bf707c7..e73851a 100644
--- a/nix/classes/rogue/combat.nix
+++ b/nix/classes/rogue/combat.nix
@@ -36,14 +36,36 @@
       anticipation = "321213";
     };
 
-    p1 = {
-      singleTarget = mkCombat {
-        race = "human";
-        talents = combat.talents.anticipati
on;
-      };
-      aoe = mkCombat {
-        race = "human";
-        talents = combat.talents.anticipati
on;
+    template = {
+      p1 = {
+        raid = {
+          singleTarget = mkCombat {
+            race = "human";
+            talents = combat.talents.antici
pation;
+          };
+          multiTarget = mkCombat {
+            race = "human";
+            talents = combat.talents.antici
pation;
+          };
+          cleave = mkCombat {
+            race = "human";
+            talents = combat.talents.antici
pation;
+          };
+        };
+        dungeon = {
+          singleTarget = mkCombat {
+            race = "human";
+            talents = combat.talents.antici
pation;
+          };
+          multiTarget = mkCombat {
+            race = "human";
+            talents = combat.talents.antici
pation;
+          };
+          cleave = mkCombat {
+            race = "human";
+            talents = combat.talents.antici
pation;
+          };
+        };
       };
     };
   };
 

diff --git a/nix/classes/rogue/subtlety.nix b/nix/classes/rogue/subtlety.nix
index 84b27bb..10e7830 100644
--- a/nix/classes/rogue/subtlety.nix
+++ b/nix/classes/rogue/subtlety.nix
@@ -38,14 +38,36 @@
       mfd = "321232";
     };
 
-    p1 = {
-      singleTarget = mkSubtlety {
-        race = "human";
-        talents = subtlety.talents.mfd;
-      };
-      aoe = mkSubtlety {
-        race = "human";
-        talents = subtlety.talents.mfd;
+    template = {
+      p1 = {
+        raid = {
+          singleTarget = mkSubtlety {
+            race = "human";
+            talents = subtlety.talents.mfd;
+          };
+          multiTarget = mkSubtlety {
+            race = "human";
+            talents = subtlety.talents.mfd;
+          };
+          cleave = mkSubtlety {
+            race = "human";
+            talents = subtlety.talents.mfd;
+          };
+        };
+        dungeon = {
+          singleTarget = mkSubtlety {
+            race = "human";
+            talents = subtlety.talents.mfd;
+          };
+          multiTarget = mkSubtlety {
+            race = "human";
+            talents = subtlety.talents.mfd;
+          };
+          cleave = mkSubtlety {
+            race = "human";
+            talents = subtlety.talents.mfd;
+          };
+        };
       };
     };
   };

diff --git a/nix/classes/rogue/subtlety.nix 
b/nix/classes/rogue/subtlety.nix
index 84b27bb..10e7830 100644
--- a/nix/classes/rogue/subtlety.nix
+++ b/nix/classes/rogue/subtlety.nix
@@ -38,14 +38,36 @@
       mfd = "321232";
     };
 
-    p1 = {
-      singleTarget = mkSubtlety {
-        race = "human";
-        talents = subtlety.talents.mfd;
-      };
-      aoe = mkSubtlety {
-        race = "human";
-        talents = subtlety.talents.mfd;
+    template = {
+      p1 = {
+        raid = {
+          singleTarget = mkSubtlety {
+            race = "human";
+            talents = subtlety.talents.mfd;
+          };
+          multiTarget = mkSubtlety {
+            race = "human";
+            talents = subtlety.talents.mfd;
+          };
+          cleave = mkSubtlety {
+            race = "human";
+            talents = subtlety.talents.mfd;
+          };
+        };
+        dungeon = {
+          singleTarget = mkSubtlety {
+            race = "human";
+            talents = subtlety.talents.mfd;
+          };
+          multiTarget = mkSubtlety {
+            race = "human";
+            talents = subtlety.talents.mfd;
+          };
+          cleave = mkSubtlety {
+            race = "human";
+            talents = subtlety.talents.mfd;
+          };
+        };
       };
     };
   };
 

diff --git a/nix/classes/shaman/elemental.nix b/nix/classes/shaman/elemental.nix
index 7eb2c00..d34bbc0 100644
--- a/nix/classes/shaman/elemental.nix
+++ b/nix/classes/shaman/elemental.nix
@@ -38,21 +38,42 @@
       primalElementalist = "333322";
     };
 
-    p1 = {
-      singleTarget = mkElemental {
-        race = "troll";
-        talents = elemental.talents.unleashedFury;
-        apl = "default";
-      };
-      cleave = mkElemental {
-        race = "troll";
-        talents = elemental.talents.primalElementalist;
-        apl = "cleave";
-      };
-      aoe = mkElemental {
-        race = "troll";
-        talents = elemental.talents.primalElementalist;
-        apl = "aoe";
+    template = {
+      p1 = {
+        raid = {
+          singleTarget = mkElemental {
+            race = "troll";
+            talents = elemental.talents.unleashedFury;
+            apl = "default";
+          };
+          multiTarget = mkElemental {
+            race = "troll";
+            talents = elemental.talents.primalElementalist;
+            apl = "aoe";
+          };
+          cleave = mkElemental {
+            race = "troll";
+            talents = elemental.talents.primalElementalist;
+            apl = "cleave";
+          };
+        };
+        dungeon = {
+          singleTarget = mkElemental {
+            race = "troll";
+            talents = elemental.talents.unleashedFury;
+            apl = "default";
+          };
+          multiTarget = mkElemental {
+            race = "troll";
+            talents = elemental.talents.primalElementalist;
+            apl = "aoe";
+          };
+          cleave = mkElemental {
+            race = "troll";
+            talents = elemental.talents.primalElementalist;
+            apl = "cleave";
+          };
+        };
       };
     };
   };

diff --git a/nix/classes/shaman/elemental.ni
x b/nix/classes/shaman/elemental.nix
index 7eb2c00..d34bbc0 100644
--- a/nix/classes/shaman/elemental.nix
+++ b/nix/classes/shaman/elemental.nix
@@ -38,21 +38,42 @@
       primalElementalist = "333322";
     };
 
-    p1 = {
-      singleTarget = mkElemental {
-        race = "troll";
-        talents = elemental.talents.unleash
edFury;
-        apl = "default";
-      };
-      cleave = mkElemental {
-        race = "troll";
-        talents = elemental.talents.primalE
lementalist;
-        apl = "cleave";
-      };
-      aoe = mkElemental {
-        race = "troll";
-        talents = elemental.talents.primalE
lementalist;
-        apl = "aoe";
+    template = {
+      p1 = {
+        raid = {
+          singleTarget = mkElemental {
+            race = "troll";
+            talents = elemental.talents.unl
eashedFury;
+            apl = "default";
+          };
+          multiTarget = mkElemental {
+            race = "troll";
+            talents = elemental.talents.pri
malElementalist;
+            apl = "aoe";
+          };
+          cleave = mkElemental {
+            race = "troll";
+            talents = elemental.talents.pri
malElementalist;
+            apl = "cleave";
+          };
+        };
+        dungeon = {
+          singleTarget = mkElemental {
+            race = "troll";
+            talents = elemental.talents.unl
eashedFury;
+            apl = "default";
+          };
+          multiTarget = mkElemental {
+            race = "troll";
+            talents = elemental.talents.pri
malElementalist;
+            apl = "aoe";
+          };
+          cleave = mkElemental {
+            race = "troll";
+            talents = elemental.talents.pri
malElementalist;
+            apl = "cleave";
+          };
+        };
       };
     };
   };
 

diff --git a/nix/classes/shaman/enhancement.nix b/nix/classes/shaman/enhancement.n
ix
index 1284bad..23e8ff0 100644
--- a/nix/classes/shaman/enhancement.nix
+++ b/nix/classes/shaman/enhancement.nix
@@ -40,14 +40,36 @@
       elementalBlast = "313133";
     };
 
-    p1 = {
-      singleTarget = mkEnhancement {
-        race = "troll";
-        talents = enhancement.talents.elementalBlast;
-      };
-      aoe = mkEnhancement {
-        race = "troll";
-        talents = enhancement.talents.elementalBlast;
+    template = {
+      p1 = {
+        raid = {
+          singleTarget = mkEnhancement {
+            race = "troll";
+            talents = enhancement.talents.elementalBlast;
+          };
+          multiTarget = mkEnhancement {
+            race = "troll";
+            talents = enhancement.talents.elementalBlast;
+          };
+          cleave = mkEnhancement {
+            race = "troll";
+            talents = enhancement.talents.elementalBlast;
+          };
+        };
+        dungeon = {
+          singleTarget = mkEnhancement {
+            race = "troll";
+            talents = enhancement.talents.elementalBlast;
+          };
+          multiTarget = mkEnhancement {
+            race = "troll";
+            talents = enhancement.talents.elementalBlast;
+          };
+          cleave = mkEnhancement {
+            race = "troll";
+            talents = enhancement.talents.elementalBlast;
+          };
+        };
       };
     };
   };

diff --git a/nix/classes/shaman/enhancement.
nix b/nix/classes/shaman/enhancement.nix
index 1284bad..23e8ff0 100644
--- a/nix/classes/shaman/enhancement.nix
+++ b/nix/classes/shaman/enhancement.nix
@@ -40,14 +40,36 @@
       elementalBlast = "313133";
     };
 
-    p1 = {
-      singleTarget = mkEnhancement {
-        race = "troll";
-        talents = enhancement.talents.eleme
ntalBlast;
-      };
-      aoe = mkEnhancement {
-        race = "troll";
-        talents = enhancement.talents.eleme
ntalBlast;
+    template = {
+      p1 = {
+        raid = {
+          singleTarget = mkEnhancement {
+            race = "troll";
+            talents = enhancement.talents.e
lementalBlast;
+          };
+          multiTarget = mkEnhancement {
+            race = "troll";
+            talents = enhancement.talents.e
lementalBlast;
+          };
+          cleave = mkEnhancement {
+            race = "troll";
+            talents = enhancement.talents.e
lementalBlast;
+          };
+        };
+        dungeon = {
+          singleTarget = mkEnhancement {
+            race = "troll";
+            talents = enhancement.talents.e
lementalBlast;
+          };
+          multiTarget = mkEnhancement {
+            race = "troll";
+            talents = enhancement.talents.e
lementalBlast;
+          };
+          cleave = mkEnhancement {
+            race = "troll";
+            talents = enhancement.talents.e
lementalBlast;
+          };
+        };
       };
     };
   };
 

diff --git a/nix/classes/warlock/affliction.nix b/nix/classes/warlock/affliction.n
ix
index 8e6937f..074e8b3 100644
--- a/nix/classes/warlock/affliction.nix
+++ b/nix/classes/warlock/affliction.nix
@@ -37,14 +37,36 @@
       archimondesDarkness = "231211";
     };
 
-    p1 = {
-      singleTarget = mkAffliction {
-        race = "orc";
-        talents = affliction.talents.archimondesDarkness;
-      };
-      aoe = mkAffliction {
-        race = "orc";
-        talents = affliction.talents.archimondesDarkness;
+    template = {
+      p1 = {
+        raid = {
+          singleTarget = mkAffliction {
+            race = "orc";
+            talents = affliction.talents.archimondesDarkness;
+          };
+          multiTarget = mkAffliction {
+            race = "orc";
+            talents = affliction.talents.archimondesDarkness;
+          };
+          cleave = mkAffliction {
+            race = "orc";
+            talents = affliction.talents.archimondesDarkness;
+          };
+        };
+        dungeon = {
+          singleTarget = mkAffliction {
+            race = "orc";
+            talents = affliction.talents.archimondesDarkness;
+          };
+          multiTarget = mkAffliction {
+            race = "orc";
+            talents = affliction.talents.archimondesDarkness;
+          };
+          cleave = mkAffliction {
+            race = "orc";
+            talents = affliction.talents.archimondesDarkness;
+          };
+        };
       };
     };
   };

diff --git a/nix/classes/warlock/affliction.
nix b/nix/classes/warlock/affliction.nix
index 8e6937f..074e8b3 100644
--- a/nix/classes/warlock/affliction.nix
+++ b/nix/classes/warlock/affliction.nix
@@ -37,14 +37,36 @@
       archimondesDarkness = "231211";
     };
 
-    p1 = {
-      singleTarget = mkAffliction {
-        race = "orc";
-        talents = affliction.talents.archim
ondesDarkness;
-      };
-      aoe = mkAffliction {
-        race = "orc";
-        talents = affliction.talents.archim
ondesDarkness;
+    template = {
+      p1 = {
+        raid = {
+          singleTarget = mkAffliction {
+            race = "orc";
+            talents = affliction.talents.ar
chimondesDarkness;
+          };
+          multiTarget = mkAffliction {
+            race = "orc";
+            talents = affliction.talents.ar
chimondesDarkness;
+          };
+          cleave = mkAffliction {
+            race = "orc";
+            talents = affliction.talents.ar
chimondesDarkness;
+          };
+        };
+        dungeon = {
+          singleTarget = mkAffliction {
+            race = "orc";
+            talents = affliction.talents.ar
chimondesDarkness;
+          };
+          multiTarget = mkAffliction {
+            race = "orc";
+            talents = affliction.talents.ar
chimondesDarkness;
+          };
+          cleave = mkAffliction {
+            race = "orc";
+            talents = affliction.talents.ar
chimondesDarkness;
+          };
+        };
       };
     };
   };
 

diff --git a/nix/classes/warlock/demonology.nix b/nix/classes/warlock/demonology.n
ix
index 94a5ef9..326f1bb 100644
--- a/nix/classes/warlock/demonology.nix
+++ b/nix/classes/warlock/demonology.nix
@@ -39,14 +39,36 @@
       archimondesDarkness = "231211";
     };
 
-    p1 = {
-      singleTarget = mkDemonology {
-        race = "orc";
-        talents = demonology.talents.archimondesDarkness;
-      };
-      aoe = mkDemonology {
-        race = "orc";
-        talents = demonology.talents.archimondesDarkness;
+    template = {
+      p1 = {
+        raid = {
+          singleTarget = mkDemonology {
+            race = "orc";
+            talents = demonology.talents.archimondesDarkness;
+          };
+          multiTarget = mkDemonology {
+            race = "orc";
+            talents = demonology.talents.archimondesDarkness;
+          };
+          cleave = mkDemonology {
+            race = "orc";
+            talents = demonology.talents.archimondesDarkness;
+          };
+        };
+        dungeon = {
+          singleTarget = mkDemonology {
+            race = "orc";
+            talents = demonology.talents.archimondesDarkness;
+          };
+          multiTarget = mkDemonology {
+            race = "orc";
+            talents = demonology.talents.archimondesDarkness;
+          };
+          cleave = mkDemonology {
+            race = "orc";
+            talents = demonology.talents.archimondesDarkness;
+          };
+        };
       };
     };
   };

diff --git a/nix/classes/warlock/demonology.
nix b/nix/classes/warlock/demonology.nix
index 94a5ef9..326f1bb 100644
--- a/nix/classes/warlock/demonology.nix
+++ b/nix/classes/warlock/demonology.nix
@@ -39,14 +39,36 @@
       archimondesDarkness = "231211";
     };
 
-    p1 = {
-      singleTarget = mkDemonology {
-        race = "orc";
-        talents = demonology.talents.archim
ondesDarkness;
-      };
-      aoe = mkDemonology {
-        race = "orc";
-        talents = demonology.talents.archim
ondesDarkness;
+    template = {
+      p1 = {
+        raid = {
+          singleTarget = mkDemonology {
+            race = "orc";
+            talents = demonology.talents.ar
chimondesDarkness;
+          };
+          multiTarget = mkDemonology {
+            race = "orc";
+            talents = demonology.talents.ar
chimondesDarkness;
+          };
+          cleave = mkDemonology {
+            race = "orc";
+            talents = demonology.talents.ar
chimondesDarkness;
+          };
+        };
+        dungeon = {
+          singleTarget = mkDemonology {
+            race = "orc";
+            talents = demonology.talents.ar
chimondesDarkness;
+          };
+          multiTarget = mkDemonology {
+            race = "orc";
+            talents = demonology.talents.ar
chimondesDarkness;
+          };
+          cleave = mkDemonology {
+            race = "orc";
+            talents = demonology.talents.ar
chimondesDarkness;
+          };
+        };
       };
     };
   };
 

diff --git a/nix/classes/warlock/destruction.nix b/nix/classes/warlock/destruction
.nix
index 0745aa6..9527044 100644
--- a/nix/classes/warlock/destruction.nix
+++ b/nix/classes/warlock/destruction.nix
@@ -34,14 +34,36 @@
       archimondesDarkness = "221211";
     };
 
-    p1 = {
-      singleTarget = mkDestruction {
-        race = "orc";
-        talents = destruction.talents.archimondesDarkness;
-      };
-      aoe = mkDestruction {
-        race = "orc";
-        talents = destruction.talents.archimondesDarkness;
+    template = {
+      p1 = {
+        raid = {
+          singleTarget = mkDestruction {
+            race = "orc";
+            talents = destruction.talents.archimondesDarkness;
+          };
+          multiTarget = mkDestruction {
+            race = "orc";
+            talents = destruction.talents.archimondesDarkness;
+          };
+          cleave = mkDestruction {
+            race = "orc";
+            talents = destruction.talents.archimondesDarkness;
+          };
+        };
+        dungeon = {
+          singleTarget = mkDestruction {
+            race = "orc";
+            talents = destruction.talents.archimondesDarkness;
+          };
+          multiTarget = mkDestruction {
+            race = "orc";
+            talents = destruction.talents.archimondesDarkness;
+          };
+          cleave = mkDestruction {
+            race = "orc";
+            talents = destruction.talents.archimondesDarkness;
+          };
+        };
       };
     };
   };

diff --git a/nix/classes/warlock/destruction
.nix b/nix/classes/warlock/destruction.nix
index 0745aa6..9527044 100644
--- a/nix/classes/warlock/destruction.nix
+++ b/nix/classes/warlock/destruction.nix
@@ -34,14 +34,36 @@
       archimondesDarkness = "221211";
     };
 
-    p1 = {
-      singleTarget = mkDestruction {
-        race = "orc";
-        talents = destruction.talents.archi
mondesDarkness;
-      };
-      aoe = mkDestruction {
-        race = "orc";
-        talents = destruction.talents.archi
mondesDarkness;
+    template = {
+      p1 = {
+        raid = {
+          singleTarget = mkDestruction {
+            race = "orc";
+            talents = destruction.talents.a
rchimondesDarkness;
+          };
+          multiTarget = mkDestruction {
+            race = "orc";
+            talents = destruction.talents.a
rchimondesDarkness;
+          };
+          cleave = mkDestruction {
+            race = "orc";
+            talents = destruction.talents.a
rchimondesDarkness;
+          };
+        };
+        dungeon = {
+          singleTarget = mkDestruction {
+            race = "orc";
+            talents = destruction.talents.a
rchimondesDarkness;
+          };
+          multiTarget = mkDestruction {
+            race = "orc";
+            talents = destruction.talents.a
rchimondesDarkness;
+          };
+          cleave = mkDestruction {
+            race = "orc";
+            talents = destruction.talents.a
rchimondesDarkness;
+          };
+        };
       };
     };
   };
 

diff --git a/nix/classes/warrior/arms.nix b/nix/classes/warrior/arms.nix
index 2707425..2176529 100644
--- a/nix/classes/warrior/arms.nix
+++ b/nix/classes/warrior/arms.nix
@@ -34,14 +34,36 @@
       bloodbath = "113332";
     };
 
-    p1 = {
-      singleTarget = mkArms {
-        race = "human";
-        talents = arms.talents.bloodbath;
-      };
-      aoe = mkArms {
-        race = "human";
-        talents = arms.talents.bloodbath;
+    template = {
+      p1 = {
+        raid = {
+          singleTarget = mkArms {
+            race = "human";
+            talents = arms.talents.bloodbath;
+          };
+          multiTarget = mkArms {
+            race = "human";
+            talents = arms.talents.bloodbath;
+          };
+          cleave = mkArms {
+            race = "human";
+            talents = arms.talents.bloodbath;
+          };
+        };
+        dungeon = {
+          singleTarget = mkArms {
+            race = "human";
+            talents = arms.talents.bloodbath;
+          };
+          multiTarget = mkArms {
+            race = "human";
+            talents = arms.talents.bloodbath;
+          };
+          cleave = mkArms {
+            race = "human";
+            talents = arms.talents.bloodbath;
+          };
+        };
       };
     };
   };

diff --git a/nix/classes/warrior/arms.nix b/
nix/classes/warrior/arms.nix
index 2707425..2176529 100644
--- a/nix/classes/warrior/arms.nix
+++ b/nix/classes/warrior/arms.nix
@@ -34,14 +34,36 @@
       bloodbath = "113332";
     };
 
-    p1 = {
-      singleTarget = mkArms {
-        race = "human";
-        talents = arms.talents.bloodbath;
-      };
-      aoe = mkArms {
-        race = "human";
-        talents = arms.talents.bloodbath;
+    template = {
+      p1 = {
+        raid = {
+          singleTarget = mkArms {
+            race = "human";
+            talents = arms.talents.bloodbat
h;
+          };
+          multiTarget = mkArms {
+            race = "human";
+            talents = arms.talents.bloodbat
h;
+          };
+          cleave = mkArms {
+            race = "human";
+            talents = arms.talents.bloodbat
h;
+          };
+        };
+        dungeon = {
+          singleTarget = mkArms {
+            race = "human";
+            talents = arms.talents.bloodbat
h;
+          };
+          multiTarget = mkArms {
+            race = "human";
+            talents = arms.talents.bloodbat
h;
+          };
+          cleave = mkArms {
+            race = "human";
+            talents = arms.talents.bloodbat
h;
+          };
+        };
       };
     };
   };
 

diff --git a/nix/classes/warrior/fury.nix b/nix/classes/warrior/fury.nix
index d977154..f41d7dd 100644
--- a/nix/classes/warrior/fury.nix
+++ b/nix/classes/warrior/fury.nix
@@ -35,14 +35,36 @@
       avatar = "113131";
     };
 
-    p1 = {
-      singleTarget = mkFury {
-        race = "orc";
-        talents = fury.talents.stormBolt;
-      };
-      aoe = mkFury {
-        race = "orc";
-        talents = fury.talents.stormBolt;
+    template = {
+      p1 = {
+        raid = {
+          singleTarget = mkFury {
+            race = "orc";
+            talents = fury.talents.stormBolt;
+          };
+          multiTarget = mkFury {
+            race = "orc";
+            talents = fury.talents.stormBolt;
+          };
+          cleave = mkFury {
+            race = "orc";
+            talents = fury.talents.stormBolt;
+          };
+        };
+        dungeon = {
+          singleTarget = mkFury {
+            race = "orc";
+            talents = fury.talents.stormBolt;
+          };
+          multiTarget = mkFury {
+            race = "orc";
+            talents = fury.talents.stormBolt;
+          };
+          cleave = mkFury {
+            race = "orc";
+            talents = fury.talents.stormBolt;
+          };
+        };
       };
     };
   };

diff --git a/nix/classes/warrior/fury.nix b/
nix/classes/warrior/fury.nix
index d977154..f41d7dd 100644
--- a/nix/classes/warrior/fury.nix
+++ b/nix/classes/warrior/fury.nix
@@ -35,14 +35,36 @@
       avatar = "113131";
     };
 
-    p1 = {
-      singleTarget = mkFury {
-        race = "orc";
-        talents = fury.talents.stormBolt;
-      };
-      aoe = mkFury {
-        race = "orc";
-        talents = fury.talents.stormBolt;
+    template = {
+      p1 = {
+        raid = {
+          singleTarget = mkFury {
+            race = "orc";
+            talents = fury.talents.stormBol
t;
+          };
+          multiTarget = mkFury {
+            race = "orc";
+            talents = fury.talents.stormBol
t;
+          };
+          cleave = mkFury {
+            race = "orc";
+            talents = fury.talents.stormBol
t;
+          };
+        };
+        dungeon = {
+          singleTarget = mkFury {
+            race = "orc";
+            talents = fury.talents.stormBol
t;
+          };
+          multiTarget = mkFury {
+            race = "orc";
+            talents = fury.talents.stormBol
t;
+          };
+          cleave = mkFury {
+            race = "orc";
+            talents = fury.talents.stormBol
t;
+          };
+        };
       };
     };
   };
 
[ BACK TO LOG ]
──────────────────────────────────────────────────────────────────────────────────────
OOKNET
────────────────────────────────────────────────
OOKNET