private void CreateAndSavePrefab()
    {
        GameObject objectPrefab = new GameObject(PrefabName);

        ProgramList scriptRef = objectPrefab.AddComponent <ProgramList>() as ProgramList;

        //int length = WayPointManager.Instance.mWayPointEditList.GetLength (0);
        int length = NumEntriesUsed;

        scriptRef.InitList(length);
        for (int i = 0; i < length; i++)
        {
            ProgramList.WaveEntry we = AlienProgramManager.Instance.mWaves [i];
            scriptRef.AddProgramData(we, i);
        }
        scriptRef.PrefabName     = PrefabName;
        scriptRef.NumEntriesUsed = NumEntriesUsed;

        UnityEngine.Object prefab = PrefabUtility.CreateEmptyPrefab("Assets/Resources/Prefabs/Programs/" + objectPrefab.name + ".prefab");
        PrefabUtility.ReplacePrefab(objectPrefab, prefab, ReplacePrefabOptions.ConnectToPrefab);
    }