diff --git a/species/blobcat/templates/body-basic.mustache b/species/blobcat/templates/body-basic.mustache
new file mode 100644
index 0000000..92ec3e2
--- /dev/null
+++ b/species/blobcat/templates/body-basic.mustache
@@ -0,0 +1,14 @@
+{{! Left ear }}
+{{#base}}#left-ear{{/base}}
+
+{{#base}}#body{{/base}}
+{{#base}}#hair{{/base}}
+
+{{! Right ear }}
+{{#base}}#right-ear{{/base}}
+{{#base}}#right-ear-fluff{{/base}}
+
+{{! Whiskers }}
+{{^tags.hands-reach}}
+ {{>whiskers}}
+{{/tags.hands-reach}}
diff --git a/species/blobcat/templates/base-snug.mustache b/species/blobcat/templates/body-snug.mustache
similarity index 83%
rename from species/blobcat/templates/base-snug.mustache
rename to species/blobcat/templates/body-snug.mustache
index 568f677..6d06a08 100644
--- a/species/blobcat/templates/base-snug.mustache
+++ b/species/blobcat/templates/body-snug.mustache
@@ -1,6 +1,6 @@
-
+
- {{#base}}#left-ear{{/base}}
+ {{#base}}#left-ear{{/base}}
{{#set-fill}}#fcc21b|{{#snug}}#body{{/snug}}{{/set-fill}}
@@ -9,4 +9,6 @@
{{#base}}#right-ear{{/base}}
{{#base}}#right-ear-fluff{{/base}}
+
+ {{>tail}}
diff --git a/species/blobcat/templates/extra-3c.mustache b/species/blobcat/templates/extra-3c.mustache
deleted file mode 100644
index 2d480d9..0000000
--- a/species/blobcat/templates/extra-3c.mustache
+++ /dev/null
@@ -1,3 +0,0 @@
-
diff --git a/species/blobcat/templates/extra-base.mustache b/species/blobcat/templates/extra-base.mustache
deleted file mode 100644
index ba90093..0000000
--- a/species/blobcat/templates/extra-base.mustache
+++ /dev/null
@@ -1 +0,0 @@
-{{>whiskers}}
diff --git a/species/blobcat/templates/extra-snug.mustache b/species/blobcat/templates/extra-snug.mustache
deleted file mode 100644
index a469742..0000000
--- a/species/blobcat/templates/extra-snug.mustache
+++ /dev/null
@@ -1 +0,0 @@
-{{>whiskers-snug}}
diff --git a/species/blobcat/templates/hand-3c.mustache b/species/blobcat/templates/hand-3c.mustache
deleted file mode 100644
index 1eb3eee..0000000
--- a/species/blobcat/templates/hand-3c.mustache
+++ /dev/null
@@ -1,3 +0,0 @@
-
- {{#set-fill}}#fcc21b|{{#3c_evil}}#left-hand{{/3c_evil}}{{/set-fill}}
-
diff --git a/species/blobcat/templates/hand-boop.mustache b/species/blobcat/templates/hand-boop.mustache
new file mode 100644
index 0000000..7ac88f4
--- /dev/null
+++ b/species/blobcat/templates/hand-boop.mustache
@@ -0,0 +1,3 @@
+
+ {{#boop_owo}}#hand-boop{{/boop_owo}}
+
diff --git a/species/blobcat/templates/hand-knife.mustache b/species/blobcat/templates/hand-knife.mustache
deleted file mode 100644
index e6cd97d..0000000
--- a/species/blobcat/templates/hand-knife.mustache
+++ /dev/null
@@ -1,9 +0,0 @@
-
-
- {{#knife}}#blade-back{{/knife}}
- {{#knife}}#blade-front{{/knife}}
- {{#knife}}#handle{{/knife}}
- {{#knife}}#handle-screw{{/knife}}
-
- {{#set-fill}}#fcc21b|{{#knife}}#left-hand{{/knife}}{{/set-fill}}
-
diff --git a/species/blobcat/templates/hands-reach.mustache b/species/blobcat/templates/hands-reach.mustache
deleted file mode 100644
index 58d4100..0000000
--- a/species/blobcat/templates/hands-reach.mustache
+++ /dev/null
@@ -1,4 +0,0 @@
-
- {{#set-fill}}#fcc21b|{{#reach_aww}}#left-hand{{/reach_aww}}{{/set-fill}}
- {{#set-fill}}#fcc21b|{{#reach_aww}}#right-hand{{/reach_aww}}{{/set-fill}}
-
diff --git a/species/blobcat/templates/hands.mustache b/species/blobcat/templates/hands.mustache
new file mode 100644
index 0000000..62c1b4e
--- /dev/null
+++ b/species/blobcat/templates/hands.mustache
@@ -0,0 +1,16 @@
+{{! TODO: use parent }}
+
+ {{#tags.hands-reach}}
+ {{#set-fill}}#fcc21b|{{#reach_aww}}#left-hand{{/reach_aww}}{{/set-fill}}
+ {{#set-fill}}#fcc21b|{{#reach_aww}}#right-hand{{/reach_aww}}{{/set-fill}}
+ {{/tags.hands-reach}}
+ {{#tags.hand-3c}}
+ {{#tags.holding}}
+ {{#set-fill}}#fcc21b|{{#knife}}#left-hand{{/knife}}{{/set-fill}}
+ {{/tags.holding}}
+ {{^tags.holding}}
+ {{! :3c hand }}
+ {{#set-fill}}#fcc21b|{{#3c_evil}}#left-hand{{/3c_evil}}{{/set-fill}}
+ {{/tags.holding}}
+ {{/tags.hand-3c}}
+
diff --git a/species/blobcat/templates/mouth-reach.mustache b/species/blobcat/templates/mouth-reach.mustache
deleted file mode 100644
index 8e1d73a..0000000
--- a/species/blobcat/templates/mouth-reach.mustache
+++ /dev/null
@@ -1 +0,0 @@
-{{#base}}#mouth{{/base}}
diff --git a/species/blobcat/templates/mouth-w.mustache b/species/blobcat/templates/mouth-w.mustache
deleted file mode 100644
index 8e1d73a..0000000
--- a/species/blobcat/templates/mouth-w.mustache
+++ /dev/null
@@ -1 +0,0 @@
-{{#base}}#mouth{{/base}}
diff --git a/species/blobcat/templates/mouth.mustache b/species/blobcat/templates/mouth.mustache
new file mode 100644
index 0000000..b7fc2fa
--- /dev/null
+++ b/species/blobcat/templates/mouth.mustache
@@ -0,0 +1,9 @@
+{{#tags.boop}}
+
+{{/tags.boop}}
+ {{#tags.mouth-w}}
+ {{#base}}#mouth{{/base}}
+ {{/tags.mouth-w}}
+{{#tags.boop}}
+
+{{/tags.boop}}
diff --git a/species/blobcat/templates/nose-aww.mustache b/species/blobcat/templates/nose-aww.mustache
deleted file mode 100644
index b7d321d..0000000
--- a/species/blobcat/templates/nose-aww.mustache
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/species/blobcat/templates/nose-evil.mustache b/species/blobcat/templates/nose-evil.mustache
deleted file mode 100644
index 561b9bc..0000000
--- a/species/blobcat/templates/nose-evil.mustache
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/species/blobcat/templates/nose-snug.mustache b/species/blobcat/templates/nose-snug.mustache
deleted file mode 100644
index 05fbe68..0000000
--- a/species/blobcat/templates/nose-snug.mustache
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/species/blobcat/templates/nose.mustache b/species/blobcat/templates/nose.mustache
index 1b4b8bc..0e08567 100644
--- a/species/blobcat/templates/nose.mustache
+++ b/species/blobcat/templates/nose.mustache
@@ -1 +1,13 @@
-
+{{#tags.body-snug}}
+
+ {{#snug}}#nose{{/snug}}
+
+{{/tags.body-snug}}
+
+{{^tags.body-snug}}
+{{#tags.boop}}
+
+ {{#snug}}#nose{{/snug}}
+
+{{/tags.boop}}
+{{/tags.body-snug}}
diff --git a/species/blobcat/templates/tail-snug.mustache b/species/blobcat/templates/tail-snug.mustache
deleted file mode 100644
index e6049e7..0000000
--- a/species/blobcat/templates/tail-snug.mustache
+++ /dev/null
@@ -1,4 +0,0 @@
-
- {{#set-fill}}#fcc21b|{{#snug}}#tail{{/snug}}{{/set-fill}}
- {{#snug}}#tail-outline{{/snug}}
-
diff --git a/species/blobcat/templates/tail.mustache b/species/blobcat/templates/tail.mustache
new file mode 100644
index 0000000..28c29d7
--- /dev/null
+++ b/species/blobcat/templates/tail.mustache
@@ -0,0 +1 @@
+{{#set-fill}}#fcc21b|{{#snug}}#tail{{/snug}}{{/set-fill}}
diff --git a/species/blobcat/templates/whiskers-snug.mustache b/species/blobcat/templates/whiskers-snug.mustache
deleted file mode 100644
index d35e0e5..0000000
--- a/species/blobcat/templates/whiskers-snug.mustache
+++ /dev/null
@@ -1,12 +0,0 @@
-
- {{#base}}#left-whisker{{/base}}
- {{#base}}#left-whisker-2{{/base}}
-
-
- {{#base}}#right-whisker{{/base}}
-
-
- {{#base}}#right-whisker-2{{/base}}
-
-
-
diff --git a/species/blobcat/variants/snug.mustache b/species/blobcat/variants/snug.mustache
deleted file mode 100644
index 0fd30ea..0000000
--- a/species/blobcat/variants/snug.mustache
+++ /dev/null
@@ -1,14 +0,0 @@
-
-{{>header}}
-
- {{>base-snug}}
- {{>tail-snug}}
-
-
- {{>eyes-snug}}
-
- {{#snug}}#nose{{/snug}}
-
- {{>whiskers-snug}}
-
-{{>footer}}
diff --git a/species/blobcat/variants/snug_aww.mustache b/species/blobcat/variants/snug_aww.mustache
deleted file mode 100644
index 5e78669..0000000
--- a/species/blobcat/variants/snug_aww.mustache
+++ /dev/null
@@ -1,13 +0,0 @@
-{{>header}}
-
- {{>base-snug}}
- {{>tail-snug}}
- {{>extra-snug}}
-
-
- {{>eyes-aww}}
-
- {{#snug}}#nose{{/snug}}
-
-
-{{>footer}}
diff --git a/species/blobfox/templates/tail.mustache b/species/blobfox/templates/tail.mustache
index e69de29..5466a72 100644
--- a/species/blobfox/templates/tail.mustache
+++ b/species/blobfox/templates/tail.mustache
@@ -0,0 +1 @@
+{{#snug}}#tail{{/snug}}
diff --git a/src/parse.rs b/src/parse.rs
index be125db..1cfe013 100644
--- a/src/parse.rs
+++ b/src/parse.rs
@@ -69,6 +69,7 @@ pub fn load_species(path: impl AsRef) -> Result {
res.template_paths = base.template_paths;
res.variant_paths = base.variant_paths;
res.asset_paths = base.asset_paths;
+ res.variants = base.variants;
}
// Read the `templates` directory and populate the `template_paths` field;