diff --git a/.vscode/snippets.code-snippets b/.vscode/snippets.code-snippets
index 17605439..e49f5bc7 100644
--- a/.vscode/snippets.code-snippets
+++ b/.vscode/snippets.code-snippets
@@ -101,7 +101,6 @@
 		  "  name: \"${1/([^-]+)(-)?/${1:/capitalize}${2:+ }/g}\",",
 		  "  parents: [$2]",
 		  "},",
-		  ""
 		],
 		"description": "Species"
 	  }
diff --git a/media/attribution.js b/media/attribution.js
index fa94c928..27e09797 100644
--- a/media/attribution.js
+++ b/media/attribution.js
@@ -11672,6 +11672,27 @@ const attributionData = {
                 "beepingbeepster"
             ]
         },
+        {
+            prefix: "./media/characters/theo-pangolin/",
+            files: [
+                { name: "back.svg", source: "https://www.furaffinity.net/view/35801752/", nsfw: false },
+                { name: "feral.svg", source: "https://www.furaffinity.net/view/35801752/", nsfw: false },
+                { name: "foot-five.svg", source: "https://www.furaffinity.net/view/35801752/", nsfw: false },
+                { name: "foot-four.svg", source: "https://www.furaffinity.net/view/35801752/", nsfw: false },
+                { name: "front.svg", source: "https://www.furaffinity.net/view/35801752/", nsfw: false },
+                { name: "hand-four.svg", source: "https://www.furaffinity.net/view/35801752/", nsfw: false },
+                { name: "hand-three.svg", source: "https://www.furaffinity.net/view/35801752/", nsfw: false },
+                { name: "head-front.svg", source: "https://www.furaffinity.net/view/35801752/", nsfw: false },
+                { name: "head-side.svg", source: "https://www.furaffinity.net/view/35801752/", nsfw: false },
+                { name: "tongue.svg", source: "https://www.furaffinity.net/view/35801752/", nsfw: false },
+            ],
+            authors: [
+                "faeseiren"
+            ],
+            owners: [
+                "rolledup"
+            ]
+        },
         //characters
         {
             prefix: "./media/dildos/chance/",
@@ -16075,6 +16096,10 @@ const attributionData = {
             "name": "BeepingBeepster",
             "url": "http://twitter.com/beepingbeepster"
         },
+        "rolledup": {
+            "name": "RolledUp",
+            "url": "https://www.furaffinity.net/user/exto/"
+        },
     }
 }
 
diff --git a/media/characters/theo-pangolin/back.svg b/media/characters/theo-pangolin/back.svg
new file mode 100644
index 00000000..5f055e41
--- /dev/null
+++ b/media/characters/theo-pangolin/back.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/media/characters/theo-pangolin/feral.svg b/media/characters/theo-pangolin/feral.svg
new file mode 100644
index 00000000..c5f7650f
--- /dev/null
+++ b/media/characters/theo-pangolin/feral.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/media/characters/theo-pangolin/foot-five.svg b/media/characters/theo-pangolin/foot-five.svg
new file mode 100644
index 00000000..8b350ca5
--- /dev/null
+++ b/media/characters/theo-pangolin/foot-five.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/media/characters/theo-pangolin/foot-four.svg b/media/characters/theo-pangolin/foot-four.svg
new file mode 100644
index 00000000..bd15883c
--- /dev/null
+++ b/media/characters/theo-pangolin/foot-four.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/media/characters/theo-pangolin/front.svg b/media/characters/theo-pangolin/front.svg
new file mode 100644
index 00000000..464c120c
--- /dev/null
+++ b/media/characters/theo-pangolin/front.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/media/characters/theo-pangolin/hand-four.svg b/media/characters/theo-pangolin/hand-four.svg
new file mode 100644
index 00000000..35d29b73
--- /dev/null
+++ b/media/characters/theo-pangolin/hand-four.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/media/characters/theo-pangolin/hand-three.svg b/media/characters/theo-pangolin/hand-three.svg
new file mode 100644
index 00000000..3eaf0440
--- /dev/null
+++ b/media/characters/theo-pangolin/hand-three.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/media/characters/theo-pangolin/head-front.svg b/media/characters/theo-pangolin/head-front.svg
new file mode 100644
index 00000000..e791cb62
--- /dev/null
+++ b/media/characters/theo-pangolin/head-front.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/media/characters/theo-pangolin/head-side.svg b/media/characters/theo-pangolin/head-side.svg
new file mode 100644
index 00000000..d03ca810
--- /dev/null
+++ b/media/characters/theo-pangolin/head-side.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/media/characters/theo-pangolin/tongue.svg b/media/characters/theo-pangolin/tongue.svg
new file mode 100644
index 00000000..0ac964b1
--- /dev/null
+++ b/media/characters/theo-pangolin/tongue.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/presets/characters.js b/presets/characters.js
index a051c6f7..810f8570 100644
--- a/presets/characters.js
+++ b/presets/characters.js
@@ -1394,7 +1394,10 @@ const speciesData = {
       name: "Amphibian",
       parents: ["animal"]
     },
-    
+    "pangolin": {
+      name: "Pangolin",
+      parents: ["mammal"]
+    },
 }
 
 //species
@@ -29649,6 +29652,102 @@ characterMakers.push(() => makeCharacter(
     ]
 ))
 
+characterMakers.push(() => makeCharacter(
+    { name: "Theo (Pangolin)", species: ["pangolin"], tags: ["anthro"] },
+    {
+        front: {
+              height: math.unit(6, "feet"),
+              weight: math.unit(235, "lb"),
+              name: "Front",
+              image: {
+                  source: "./media/characters/theo-pangolin/front.svg",
+                  extra: 1996/1969,
+                  bottom: 115/2111
+              }
+          },
+        back: {
+            height: math.unit(6, "feet"),
+            weight: math.unit(235, "lb"),
+            name: "Back",
+            image: {
+                source: "./media/characters/theo-pangolin/back.svg",
+                extra: 1979/1979,
+                bottom: 40/2019
+            }
+        },
+      feral: {
+            height: math.unit(2, "feet"),
+            weight: math.unit(30, "lb"),
+            name: "Feral",
+            image: {
+                source: "./media/characters/theo-pangolin/feral.svg",
+                extra: 803/791,
+                bottom: 181/984
+            }
+        },
+      footFive: {
+            height: math.unit(1.43, "feet"),
+            name: "Foot (Five Toes)",
+            image: {
+                source: "./media/characters/theo-pangolin/foot-five.svg"
+            }
+        },
+      footFour: {
+        height: math.unit(1.43, "feet"),
+            name: "Foot (Four Toes)",
+            image: {
+                source: "./media/characters/theo-pangolin/foot-four.svg"
+            }
+        },
+      handFour: {
+            height: math.unit(0.81, "feet"),
+            name: "Hand (Four Fingers)",
+            image: {
+                source: "./media/characters/theo-pangolin/hand-four.svg"
+            }
+        },
+      handThree: {
+            height: math.unit(0.81, "feet"),
+            name: "Hand (Three Fingers)",
+            image: {
+                source: "./media/characters/theo-pangolin/hand-three.svg"
+            }
+        },
+      headFront: {
+            height: math.unit(1.37, "feet"),
+            name: "Head (Front)",
+            image: {
+                source: "./media/characters/theo-pangolin/head-front.svg"
+            }
+        },
+      headSide: {
+            height: math.unit(1.43, "feet"),
+            name: "Head (Side)",
+            image: {
+                source: "./media/characters/theo-pangolin/head-side.svg"
+            }
+        },
+      tongue: {
+            height: math.unit(2.29, "feet"),
+            name: "Tongue",
+            image: {
+                source: "./media/characters/theo-pangolin/tongue.svg"
+            }
+        },
+    },
+    [
+        {
+            name: "Normal",
+            height: math.unit(6, "feet")
+        },
+        {
+            name: "Macro",
+            height: math.unit(400, "feet"),
+            default: true
+        },
+    ]
+))
+
 //characters
 
 function makeCharacters() {