private void Update()
    {
        // Update the timers for the enemy spawning template
        foreach (SpawningTemplate spawn in listOfEnemies)
        {
            // have we spawned all enemies?
            if (!spawn.SpawnedAllEnemies())
            {
                // is it time to spawn
                if (spawn.UpdateTimer())
                {
                    // Fetch enemy
                    GameObject newEnemy = ObjectPooler.Instance.FetchGO(spawn.enemyToSpawn.name);
                    // Attach SpawnZone and Reset the Enemy before anything
                    //newEnemy.GetComponent<EnemyBaseClass>().ResetEnemy(spawn.spawningZone, spawn.GetRandomPositionFromZone());

                    EnemyBaseClass baseClass = newEnemy.GetComponent <EnemyBaseClass>();
                    if (baseClass == null)
                    {
                        baseClass = newEnemy.GetComponentInChildren <EnemyBaseClass>();
                    }

                    baseClass.ResetEnemy(spawn.spawningZone, spawn.GetRandomPositionFromZone());
                }
            }
        }
    }