diff --git a/macrovision.html b/macrovision.html
index a9adc91e..12a4ad70 100644
--- a/macrovision.html
+++ b/macrovision.html
@@ -11,6 +11,7 @@
   
   
   
+  
   
   
   
diff --git a/macrovision.js b/macrovision.js
index 1b3428b4..af38b5ba 100644
--- a/macrovision.js
+++ b/macrovision.js
@@ -1389,6 +1389,7 @@ function prepareEntities() {
     availableEntities["landmarks"] = makeLandmarks();
     availableEntities["characters"] = makeCharacters();
     availableEntities["objects"] = makeObjects();
+    availableEntities["fiction"] = makeFiction();
     availableEntities["food"] = makeFood();
     availableEntities["naturals"] = makeNaturals();
     availableEntities["vehicles"] = makeVehicles();
diff --git a/media/attribution.js b/media/attribution.js
index 21ddfdfa..487dd391 100644
--- a/media/attribution.js
+++ b/media/attribution.js
@@ -7782,6 +7782,20 @@ const attributionData = {
             ]
         },
         //characters
+        {
+            prefix: "./media/fiction/halo/halo/",
+            files: [
+                { name: "side.svg", source: null },
+                { name: "edge.svg", source: null },
+                { name: "angled.svg", source: null },
+            ],
+            authors: [
+                "chemicalcrux"
+            ],
+            owners: [
+                "halo"
+            ]
+        },
         {
             prefix: "./media/food/animals/",
             files: [
@@ -7863,20 +7877,6 @@ const attributionData = {
                 "anonymous"
             ]
         },
-        {
-            prefix: "./media/games/halo/halo/",
-            files: [
-                { name: "side.svg", source: null },
-                { name: "edge.svg", source: null },
-                { name: "angled.svg", source: null },
-            ],
-            authors: [
-                "chemicalcrux"
-            ],
-            owners: [
-                "halo"
-            ]
-        },
         {
             prefix: "./media/landmarks/",
             files: [
diff --git a/media/fiction/halo/halo/angled.svg b/media/fiction/halo/halo/angled.svg
new file mode 100644
index 00000000..c246aa07
--- /dev/null
+++ b/media/fiction/halo/halo/angled.svg
@@ -0,0 +1,35 @@
+
+
+
diff --git a/media/fiction/halo/halo/edge.svg b/media/fiction/halo/halo/edge.svg
new file mode 100644
index 00000000..6aab08f8
--- /dev/null
+++ b/media/fiction/halo/halo/edge.svg
@@ -0,0 +1,9 @@
+
+
+
diff --git a/media/fiction/halo/halo/side.svg b/media/fiction/halo/halo/side.svg
new file mode 100644
index 00000000..0dcb8f49
--- /dev/null
+++ b/media/fiction/halo/halo/side.svg
@@ -0,0 +1,10 @@
+
+
+
diff --git a/presets/fiction.js b/presets/fiction.js
new file mode 100644
index 00000000..c57deccb
--- /dev/null
+++ b/presets/fiction.js
@@ -0,0 +1,39 @@
+function makeFiction() {
+    const results = [];
+
+    results.push({
+        name: "Halo",
+        constructor: () => makeObject(
+            "Halo",
+            {
+                side: {
+                    height: math.unit(10000, "km"),
+                    mass: math.unit(1e17, "kg"),
+                    image: { source: "./media/fiction/halo/halo/side.svg" },
+                    name: "Side"
+                },
+                edge: {
+                    height: math.unit(318, "km"),
+                    mass: math.unit(1e17, "kg"),
+                    image: { source: "./media/fiction/halo/halo/edge.svg" },
+                    name: "Edge"
+                },
+                angled: {
+                    height: math.unit(8819.1, "km"),
+                    mass: math.unit(1e17, "kg"),
+                    image: { source: "./media/fiction/halo/halo/angled.svg" },
+                    name: "Angled"
+                },
+            }
+        )
+    });
+
+    
+    results.sort((b1, b2) => {
+        e1 = b1.constructor();
+        e2 = b2.constructor();
+        return -math.subtract(e1.views[e1.defaultView].height, e2.views[e2.defaultView].height).value;
+    });
+
+    return results;
+}
\ No newline at end of file