Instantiating an object at random spawn points

Hi, I am trying to create a monster spawner for my game.

I have created a prefab for the monsters and a gameobject for the spawner. The gameobject has 4 empty child objects as the spawn points.

Basically, it works with 1 monster, until I kill it and I get the following error:
MissingReferenceException: The object of type ‘GameObject’ has been destroyed but you are still trying to access it.
Your script should either check if it is null or you should not destroy the object.

I am not really sure where to place my monster !=null reference as I am not sure I fully understand how that works yet.

But the main problem is when I allow it to create 5 monsters for example. The first ones get created ok then I get things spawning huge, or outside the level or my player gets bounced around like he has just collided with something.

Have I written code that is possibly skewing the size of the prefab monster being created?

I am most confused by this to be honest!!

using UnityEngine;
using System.Collections;

public class ScriptObjectMonsterSpawner : MonoBehaviour {

    public GameObject monster;
    public GameObject[] spawnPoints;
    private GameObject currentPoint;
    private int index;
    public int spawnAmount = 5;
    public float spawnRate = 5.0f;
    public int health;
    private bool spawning;

	// Use this for initialization
	void Start () {
	
	}
	
	// Update is called once per frame
	void Update () {

        if (transform.childCount < spawnAmount && spawning == false)
        {
            StartCoroutine(SpawnMonster());
            SpawnMonster();
        }
	
	}

    public IEnumerator SpawnMonster()
    {
            spawning = true;
            spawnPoints = GameObject.FindGameObjectsWithTag("SpawnPoint");
            index = Random.Range(0, spawnPoints.Length);
            currentPoint = spawnPoints[index];
            monster = Instantiate(monster, currentPoint.transform.position, currentPoint.transform.rotation) as GameObject;
            monster.transform.parent = gameObject.transform;
            yield return new WaitForSeconds(spawnRate);
            spawning = false;
    }
}

Problem solved, I needed to declare a var for the instantiate object and I forgot to set the spawn points in the inspector!