diff --git a/example_symmetrical_2states/follower_sound.ogg b/example_symmetrical_2states/follower_sound.ogg
new file mode 100644
index 0000000000000000000000000000000000000000..ad6c52e55e8d2fe8a6f46d42bb7df05803266f92
Binary files /dev/null and b/example_symmetrical_2states/follower_sound.ogg differ
diff --git a/example_symmetrical_2states/properties.txt b/example_symmetrical_2states/properties.txt
new file mode 100644
index 0000000000000000000000000000000000000000..f4bb2536f5e8809bde2c8ad871cda718bfbccae3
--- /dev/null
+++ b/example_symmetrical_2states/properties.txt
@@ -0,0 +1,140 @@
+{
+	"transparent_colors": [
+		115, 115, 255,
+		82, 82, 255
+	],
+	"transparent_colors_description": "The above colors will be made transparent upon processing the template image for sprite conversion. You can add up to 4 colors to be set to transparent.",
+
+	"name": "example",
+	"name_description": "The name of your follower. The names of followers appear on the main menu, upon toggling \"extrainfo mode\" with the drift button.",
+	"prefix": "EXMP",
+	"prefix_description": "A set of 4 characters used to internally identify your follower, mainly used for its files.",
+	"category": "Fanworks",
+	"category_description": "The category your follower will appear under. Followermaker doesn't allow for the creation of custom categories, though you can still enter one.",
+
+	"prefcolor": "red",
+	"prefcolor_description": "Default follower color. Must use the name of a spray can, as seen on the main menu in extrainfo mode.",
+	"mode": 0,
+	"mode_description": "If floating (0) or on the ground (1).",
+	"scale": 1,
+	"scale_description": "(in Fracunits) Scale relative to the player's.",
+	"bubblescale": 0,
+	"bubblescale_description": "(in Fracunits) Bubble scale relative to the player scale. If not set, no bubble will spawn.",
+	"atangle": 230,
+	"atangle_description": "Angle the follower will be at around the player. The follower will always face the same direction as the player.",
+	"distance": 40,
+	"distance_description": "(in Fracunits) Distance relative to the player (in a circle).",
+	"height": 32,
+	"height_description": "(in Fracunits) Height of the follower, this is mostly important for Z-flipping.",
+	"zoffs": 32,
+	"zoffs_description": "(in Fracunits) Z-offset relative to the player's height. Cannot be negative.",
+	"horzlag": 3,
+	"horzlag_description": "(in Fracunits) Lag for X/Y displacement. Must be > 0 because we divide by this number.",
+	"vertlag": 6,
+	"verlag_description": "(in Fracunits) Lag for Z displacement. Must be > 0 because we divide by this number.",
+	"anglelag": 8,
+	"anglelag_description": "(in Fracunits) Angle rotation lag. Must be > 0 because we divide by this number.",
+	"bobamp": 4,
+	"bobamp_description": "(in Fracunits) Bob amplitude.",
+	"bobspeed": 70,
+	"bobspeed_description": "(in Tics) Arbitrary modifier for bobbing speed. Default is TICRATE*2 (70 Fracunits)",
+	"hitconfirmtime": 1,
+	"hitconfirmtime_description": "(in Tics) Time to keep the hit confirm state playing for.",
+	
+	"sprite_size": [128, 128],
+	"layer_step_size": [128, 128],
+	"sprites": {
+		"idle": {
+			"A1": {
+				"offset": [64, 112],
+				"layers": [[0, 0]]
+			},
+			"A2A8": {
+				"offset": [64, 112],
+				"layers": [[1, 0]]
+			},
+			"A3A7": {
+				"offset": [64, 112],
+				"layers": [[2, 0]]
+			},
+			"A4A6": {
+				"offset": [64, 112],
+				"layers": [[3, 0]]
+			},
+			"A5": {
+				"offset": [64, 112],
+				"layers": [[4, 0]]
+			},
+			"B1": {
+				"offset": [64, 112],
+				"layers": [[0, 1]]
+			},
+			"B2B8": {
+				"offset": [64, 112],
+				"layers": [[1, 1]]
+			},
+			"B3B7": {
+				"offset": [64, 112],
+				"layers": [[2, 1]]
+			},
+			"B4B6": {
+				"offset": [64, 112],
+				"layers": [[3, 1]]
+			},
+			"B5": {
+				"offset": [64, 112],
+				"layers": [[4, 1]]
+			}
+		},
+		"following": {
+			"A1": {
+				"offset": [64, 112],
+				"layers": [[0, 2]]
+			},
+			"A2A8": {
+				"offset": [64, 112],
+				"layers": [[1, 2]]
+			},
+			"A3A7": {
+				"offset": [64, 112],
+				"layers": [[2, 2]]
+			},
+			"A4A6": {
+				"offset": [64, 112],
+				"layers": [[3, 2]]
+			},
+			"A5": {
+				"offset": [64, 112],
+				"layers": [[4, 2]]
+			},
+			"B1": {
+				"offset": [64, 112],
+				"layers": [[0, 2]]
+			},
+			"B2B8": {
+				"offset": [64, 112],
+				"layers": [[1, 2]]
+			},
+			"B3B7": {
+				"offset": [64, 112],
+				"layers": [[2, 2]]
+			},
+			"B4B6": {
+				"offset": [64, 112],
+				"layers": [[3, 2]]
+			},
+			"B5": {
+				"offset": [64, 112],
+				"layers": [[4, 2]]
+			}
+		},
+
+		"graphics": {
+			"icon": {
+				"overwrite_sprite_size": [16, 16],
+				"overwrite_layer_step_size": [1, 1],
+				"layers": [[10, 778]]
+			}
+		}
+	}
+}
\ No newline at end of file
diff --git a/example_symmetrical_2states/sprites.png b/example_symmetrical_2states/sprites.png
new file mode 100644
index 0000000000000000000000000000000000000000..a5d45e13f4ae6122fe4f81cd712bd3a83b31363d
Binary files /dev/null and b/example_symmetrical_2states/sprites.png differ