Index: binary-improvements/7dtd-server-fixes/src/LiveData/Animals.cs
===================================================================
--- binary-improvements/7dtd-server-fixes/src/LiveData/Animals.cs	(revision 252)
+++ binary-improvements/7dtd-server-fixes/src/LiveData/Animals.cs	(revision 306)
@@ -6,34 +6,47 @@
     public class Animals
     {
-        public static List<EntityAnimal> List {
-            get {
-                List<EntityAnimal> lst = new List<EntityAnimal> ();
+		public static void Get (List<EntityAnimal> _list) {
+			_list.Clear ();
+			try {
+				List<Entity> entities = GameManager.Instance.World.Entities.list;
+				for (int i = 0; i < entities.Count; i++) {
+					Entity entity = entities [i];
 
-                try {
-                    foreach (object base_entity in GameManager.Instance.World.Entities.list) {
-                        try {
-                            Entity entity = (Entity)base_entity;
+					// Kind of hack-ish, but the game is legitimately setting the base type of animals ('entityType') to enum 0 ('EntityType.Unknown').
+					if ((entity.entityType == EntityType.Animal) || (entity is EntityAnimal)) {
+						EntityAnimal ea = (EntityAnimal)entity;
 
-                            // Kind of hack-ish, but the game is legitimately setting the base type of animals ('entityType') to enum 0 ('EntityType.Unknown').
-                            if ((entity.entityType == EntityType.Animal) || (base_entity.GetType ().ToString ().ToLower ().Contains ("animal"))) {
-                                EntityAnimal ea = (EntityAnimal)entity;
+						if (ea.IsAlive ())
+							_list.Add (ea);
+					}
+				}
+			}
+			catch (Exception e) {
+				Log.Exception (e);
+			}
+		}
 
-                                if (ea.IsAlive ())
-                                    lst.Add (ea);
-                            }
-                        }
-                        catch { }
-                    }
-                }
-                catch { }
+		public static int GetCount () {
+			int count = 0;
+			try {
+				List<Entity> entities = GameManager.Instance.World.Entities.list;
+				for (int i = 0; i < entities.Count; i++) {
+					Entity entity = entities [i];
 
-                return lst;
-            }
-        }
+					// Kind of hack-ish, but the game is legitimately setting the base type of animals ('entityType') to enum 0 ('EntityType.Unknown').
+					if ((entity.entityType == EntityType.Animal) || (entity is EntityAnimal)) {
+						EntityAnimal ea = (EntityAnimal)entity;
 
+						if (ea.IsAlive ())
+							count++;
+					}
+				}
+			}
+			catch (Exception e) {
+				Log.Exception (e);
+			}
+			return count;
+		}
 
-        public static int Count {
-            get { return List.Count; }
-        }
     }
 }
Index: binary-improvements/7dtd-server-fixes/src/LiveData/Hostiles.cs
===================================================================
--- binary-improvements/7dtd-server-fixes/src/LiveData/Hostiles.cs	(revision 252)
+++ binary-improvements/7dtd-server-fixes/src/LiveData/Hostiles.cs	(revision 306)
@@ -4,35 +4,45 @@
 namespace AllocsFixes.LiveData
 {
-    public class Hostiles
-    {
-        public static List<EntityEnemy> List {
-            get {
-                List<EntityEnemy> lst = new List<EntityEnemy> ();
+	public class Hostiles
+	{
+		public static void Get (List<EntityEnemy> _list) {
+			_list.Clear ();
+			try {
+				List<Entity> entities = GameManager.Instance.World.Entities.list;
+				for (int i = 0; i < entities.Count; i++) {
+					Entity entity = entities [i];
 
-                try {
-                    foreach (int ent_id in GameManager.Instance.World.Entities.dict.Keys) {
-                        try {
-                            Entity entity = GameManager.Instance.World.Entities.dict [ent_id];
+					if (entity is EntityEnemy) {
+						if (entity.IsAlive ())
+							_list.Add (entity as EntityEnemy);
+					}
+				}
+			}
+			catch (Exception e) {
+				Log.Exception (e);
+			}
+		}
 
-                            if (entity.entityType == EntityType.Zombie) {
-                                EntityEnemy ee = (EntityEnemy)entity;
+		public static int GetCount () {
+			int count = 0;
+			try {
+				List<Entity> entities = GameManager.Instance.World.Entities.list;
+				for (int i = 0; i < entities.Count; i++) {
+					Entity entity = entities [i];
 
-                                if (ee.IsAlive ())
-                                    lst.Add (ee);
-                            }
-                        }
-                        catch { }
-                    }
-                }
-                catch { }
+					if (entity.entityType == EntityType.Zombie) {
+						EntityEnemy ee = (EntityEnemy)entity;
 
-                return lst;
-            }
-        }
-
-        public static int Count {
-            get { return List.Count; }
-        }
-    }
+						if (ee.IsAlive ())
+							count++;
+					}
+				}
+			}
+			catch (Exception e) {
+				Log.Exception (e);
+			}
+			return count;
+		}
+	}
 }
 
