diff --git a/King of Thieves/Actors/NPC/Enemies/ArmoredCrab/CArmoredCrab.cs b/King of Thieves/Actors/NPC/Enemies/ArmoredCrab/CArmoredCrab.cs
index 7bdb2ac..7dbb1b1 100644
--- a/King of Thieves/Actors/NPC/Enemies/ArmoredCrab/CArmoredCrab.cs	
+++ b/King of Thieves/Actors/NPC/Enemies/ArmoredCrab/CArmoredCrab.cs	
@@ -23,9 +23,9 @@ class CArmoredCrab : CBaseEnemy
         public CArmoredCrab() :
             base()
         {
-            if (_armoredCrabCount <= 0)
+            if (!Graphics.CTextures.rawTextures.ContainsKey(SPRITE_NAMESPACE))
             {
-                Graphics.CTextures.rawTextures.Add(SPRITE_NAMESPACE, CMasterControl.glblContent.Load<Texture2D>(@"sprites/npc/armoredCrabNew"));
+                Graphics.CTextures.addRawTexture(SPRITE_NAMESPACE, @"sprites/npc/armoredCrabNew");
 
                 Graphics.CTextures.addTexture(_IDLE, new Graphics.CTextureAtlas(SPRITE_NAMESPACE, 32, 32, 0, "0:0", "0:0", 0));
                 Graphics.CTextures.addTexture(_WALK, new Graphics.CTextureAtlas(SPRITE_NAMESPACE, 32, 32, 0, "0:0", "3:0", 10));
@@ -89,24 +89,11 @@ protected override void _addCollidables()
 
         public override void destroy(object sender)
         {
-            _armoredCrabCount--;
-
-            if (_armoredCrabCount <= 0)
-            {
-                cleanUp();
-                _armoredCrabCount = 0;
-            }
-
+            _armoredCrabCount -= 1;
+            _doNpcCountCheck(ref _armoredCrabCount);
             base.destroy(sender);
         }
 
-        protected override void cleanUp()
-        {
-            Graphics.CTextures.cleanUp(SPRITE_NAMESPACE);
-            _armoredCrabCount = 0;
-            base.cleanUp();
-        }
-
         private void _chooseNewPoint()
         {
             int chooseLeftOrRight = (int)Math.Round(_randNum.NextDouble()); //0 == left, 1 == right
diff --git a/King of Thieves/Actors/NPC/Enemies/Chuchus/CBaseChuChu.cs b/King of Thieves/Actors/NPC/Enemies/Chuchus/CBaseChuChu.cs
index 3a6d26b..1b5db67 100644
--- a/King of Thieves/Actors/NPC/Enemies/Chuchus/CBaseChuChu.cs	
+++ b/King of Thieves/Actors/NPC/Enemies/Chuchus/CBaseChuChu.cs	
@@ -143,8 +143,11 @@ public override void update(GameTime gameTime)
 
         public override void destroy(object sender)
         {
-            _chuChuCount -= 1;
+            _chuChuCount-= 1;
+            _doNpcCountCheck(ref _chuChuCount);
             base.destroy(sender);
+
+
         }
     }
 }
diff --git a/King of Thieves/Actors/NPC/Enemies/FloorTile/CFloorTile.cs b/King of Thieves/Actors/NPC/Enemies/FloorTile/CFloorTile.cs
index 8f161db..3bd63e7 100644
--- a/King of Thieves/Actors/NPC/Enemies/FloorTile/CFloorTile.cs	
+++ b/King of Thieves/Actors/NPC/Enemies/FloorTile/CFloorTile.cs	
@@ -21,7 +21,7 @@ class CFloorTile : CBaseEnemy
         public CFloorTile() :
             base()
         {
-            if (_floorTileCount == 0)
+            if (!Graphics.CTextures.rawTextures.ContainsKey(_SPRITE_NAMESPACE))
             {
                 Graphics.CTextures.addRawTexture(_SPRITE_NAMESPACE, "sprites/npc/floorTile");
 
diff --git a/King of Thieves/Actors/NPC/Enemies/Keese/CBaseKeese.cs b/King of Thieves/Actors/NPC/Enemies/Keese/CBaseKeese.cs
index 5318312..176b387 100644
--- a/King of Thieves/Actors/NPC/Enemies/Keese/CBaseKeese.cs	
+++ b/King of Thieves/Actors/NPC/Enemies/Keese/CBaseKeese.cs	
@@ -71,7 +71,7 @@ public CBaseKeese(int foh, params dropRate[] drops)
             _attackVector = new Vector2();
             _attacking = false;
 
-            if (_keeseCount <= 0)
+            if (!Graphics.CTextures.rawTextures.ContainsKey(_SPRITE_NAMESPACE))
                 Graphics.CTextures.addRawTexture(_SPRITE_NAMESPACE, "keese");
 
             _keeseCount += 1;
@@ -265,6 +265,7 @@ public override void update(Microsoft.Xna.Framework.GameTime gameTime)
         public override void destroy(object sender)
         {
             _keeseCount -= 1;
+            _doNpcCountCheck(ref _keeseCount);
             base.destroy(sender);
         }
     }
diff --git a/King of Thieves/Actors/NPC/Enemies/MoldormTail/CMoldormTailPiece.cs b/King of Thieves/Actors/NPC/Enemies/MoldormTail/CMoldormTailPiece.cs
index 2e57ed1..888c79b 100644
--- a/King of Thieves/Actors/NPC/Enemies/MoldormTail/CMoldormTailPiece.cs	
+++ b/King of Thieves/Actors/NPC/Enemies/MoldormTail/CMoldormTailPiece.cs	
@@ -59,9 +59,13 @@ public override void init(string name, Microsoft.Xna.Framework.Vector2 position,
             _next = additional[1];
         }
 
-        protected override void cleanUp()
+        public override void destroy(object sender)
         {
-            Graphics.CTextures.rawTextures.Remove(_NPC_MOLDORM);
+            _moldormAndTailCount -= 1;
+            _doNpcCountCheck(ref _moldormAndTailCount);
+            base.destroy(sender);
         }
+
+       
     }
 }
diff --git a/King of Thieves/Actors/NPC/Enemies/OvergrownKeese/COvergrownKeese.cs b/King of Thieves/Actors/NPC/Enemies/OvergrownKeese/COvergrownKeese.cs
index ec438e3..0dc1d2d 100644
--- a/King of Thieves/Actors/NPC/Enemies/OvergrownKeese/COvergrownKeese.cs	
+++ b/King of Thieves/Actors/NPC/Enemies/OvergrownKeese/COvergrownKeese.cs	
@@ -24,7 +24,7 @@ class COvergrownKeese : CBaseEnemy
         public COvergrownKeese() :
             base()
         {
-            if (_overgrownKeeseCount <= 0)
+            if (!Graphics.CTextures.rawTextures.ContainsKey(_SPRITE_NAMESPACE))
             {
                 Graphics.CTextures.addRawTexture(_SPRITE_NAMESPACE, "sprites/npc/overgownKeese");
 
@@ -135,22 +135,10 @@ public override void timer0(object sender)
 
         }
 
-        protected override void cleanUp()
-        {
-            Graphics.CTextures.cleanUp(_SPRITE_NAMESPACE);
-            base.cleanUp();
-        }
-
         public override void destroy(object sender)
         {
-            _overgrownKeeseCount--;
-
-            if (_overgrownKeeseCount <= 0)
-            {
-                cleanUp();
-                _overgrownKeeseCount = 0;
-            }
-
+            _overgrownKeeseCount -= 1;
+            _doNpcCountCheck(ref _overgrownKeeseCount);
             base.destroy(sender);
         }
 
diff --git a/King of Thieves/Actors/NPC/Enemies/Poe/CPoe.cs b/King of Thieves/Actors/NPC/Enemies/Poe/CPoe.cs
index eba20e2..74e07d9 100644
--- a/King of Thieves/Actors/NPC/Enemies/Poe/CPoe.cs	
+++ b/King of Thieves/Actors/NPC/Enemies/Poe/CPoe.cs	
@@ -16,7 +16,7 @@ class CPoe : CBaseEnemy
         public CPoe() :
             base()
         {
-            if (_poeCount <= 0)
+            if (!Graphics.CTextures.rawTextures.ContainsKey(_SPRITE_NAMESPACE))
             {
                 Graphics.CTextures.addRawTexture(_SPRITE_NAMESPACE, "sprites/npc/poe");
 
@@ -83,16 +83,9 @@ public override void timer1(object sender)
 
         public override void destroy(object sender)
         {
+            _poeCount -= 1;
+            _doNpcCountCheck(ref _poeCount);
             base.destroy(sender);
-            _poeCount--;
-
-            if (_poeCount == 0)
-                cleanUp();
-        }
-
-        protected override void cleanUp()
-        {
-            Graphics.CTextures.cleanUp(_SPRITE_NAMESPACE);
         }
 
         private void _selectVelocity()
diff --git a/King of Thieves/Actors/NPC/Enemies/Rope/CBaseRope.cs b/King of Thieves/Actors/NPC/Enemies/Rope/CBaseRope.cs
index 7b1731e..945954a 100644
--- a/King of Thieves/Actors/NPC/Enemies/Rope/CBaseRope.cs	
+++ b/King of Thieves/Actors/NPC/Enemies/Rope/CBaseRope.cs	
@@ -90,22 +90,10 @@ public override void init(string name, Microsoft.Xna.Framework.Vector2 position,
 
         }
 
-        protected override void cleanUp()
-        {
-            Graphics.CTextures.cleanUp(_SPRITE_NAMESPACE);
-            base.cleanUp();
-        }
-
         public override void destroy(object sender)
         {
-            _ropeCount--;
-
-            if (_ropeCount <= 0)
-            {
-                cleanUp();
-                _ropeCount = 0;
-            }
-
+            _ropeCount -= 1;
+            _doNpcCountCheck(ref _ropeCount);
             base.destroy(sender);
         }
 
diff --git a/King of Thieves/Actors/NPC/Enemies/Wizzrobe/CBaseWizzrobe.cs b/King of Thieves/Actors/NPC/Enemies/Wizzrobe/CBaseWizzrobe.cs
index b7ced2f..8a4fe79 100644
--- a/King of Thieves/Actors/NPC/Enemies/Wizzrobe/CBaseWizzrobe.cs	
+++ b/King of Thieves/Actors/NPC/Enemies/Wizzrobe/CBaseWizzrobe.cs	
@@ -93,22 +93,11 @@ public override void create(object sender)
 
         public override void destroy(object sender)
         {
-            _wizzrobeCount--;
-
-            if (_wizzrobeCount <= 0)
-            {
-                cleanUp();
-                _wizzrobeCount = 0;
-            }
-
+            _wizzrobeCount -= 1;
+            _doNpcCountCheck(ref _wizzrobeCount);
             base.destroy(sender);
         }
 
-        protected override void cleanUp()
-        {
-            Graphics.CTextures.rawTextures.Remove(_NPC_WIZZROBE);
-        }
-
         public override void timer0(object sender)
         {
             base.timer0(sender);
diff --git a/King of Thieves/Actors/NPC/Enemies/Zombie/CBaseZombie.cs b/King of Thieves/Actors/NPC/Enemies/Zombie/CBaseZombie.cs
index 1ce2c79..fa64b37 100644
--- a/King of Thieves/Actors/NPC/Enemies/Zombie/CBaseZombie.cs	
+++ b/King of Thieves/Actors/NPC/Enemies/Zombie/CBaseZombie.cs	
@@ -25,7 +25,7 @@ class CBaseZombie : CBaseEnemy
         public CBaseZombie()
             : base()
         {
-            if (_zombieCount <= 0)
+            if (!Graphics.CTextures.rawTextures.ContainsKey(_SPRITE_NAMESPACE))
                 Graphics.CTextures.addRawTexture(_SPRITE_NAMESPACE, "sprites/npc/zombie");
 
             _zombieCount += 1;
@@ -68,18 +68,11 @@ protected void _shootScreech()
             Map.CMapManager.addActorToComponent(screecher, this.componentAddress);
         }
 
-        protected override void cleanUp()
-        {
-            if (_zombieCount <= 0)
-                Graphics.CTextures.cleanUp(_SPRITE_NAMESPACE);
-        }
-
         public override void destroy(object sender)
         {
-            base.destroy(sender);
             _zombieCount -= 1;
-
-            cleanUp();
+            _doNpcCountCheck(ref _zombieCount);
+            base.destroy(sender);
         }
 
         protected override void _addCollidables()