void SortList(List <SecondTest> unsortedList)
    {
        for (int i = 1; i < unsortedList.Count; i++)
        {
            for (int j = 1; j < i + 1; j++)
            {
                if (unsortedList [i - j].fitness > unsortedList [i - j + 1].fitness)
                {
                    SecondTest tempSecondTest = unsortedList [i - j + 1];
                    unsortedList [i - j + 1] = unsortedList [i - j];
                    unsortedList [i - j]     = tempSecondTest;
                }
                else
                {
                    break;
                }
            }
        }

        /*for (int i = 0; i < unsortedList.Count; i++){
         *      Debug.Log(unsortedList[i].fitness);
         * }*/
    }
    // Use this for initialization
    void Start()
    {
        for (int i = 0; i < populationSize; i++)
        {
            GivenShape = new List <int> ();
            int tempLength = Random.Range(3, 7);              //min inclusive max exclusive
            for (int j = 0; j < tempLength; j++)
            {
                GivenShape.Add(Random.Range(2, 8));             //min inclusive max exclusive
            }
            GivenFitness = Random.Range(1f, 100f);              //both inclusive
            GivenBuffer  = i;
            GameObject TempObject = Instantiate(Executer, new Vector3(0, 0, 0), Quaternion.identity);
            //GoodTest = new SecondTest(GivenShape, GivenFitness, GivenTarget, GivenBuffer, Cube);
            SecondTest GoodTest = TempObject.AddComponent <SecondTest> ();
            GoodTest.SecondTestSetup(GivenShape, GivenFitness, GivenTarget, GivenBuffer, Cube);
            PopulationList.Add(GoodTest);
        }
        //Debug.Log(PopulationList.Count);
        SortList(PopulationList);
        //Debug.Log(PopulationList[3].fitness);
        Destroy(PopulationList [3].gameObject);
        //Debug.Log(PopulationList[3].fitness);


        //get info about SecondTest

        /*List<int> InfoShape = PopulationList[3].GiveShape();
         * float InfoFitness = PopulationList[3].GiveFitness();
         * GameObject InfoTarget = PopulationList[3].GiveTarget();
         * int InfoBuffer = PopulationList[3].GiveBuffer();
         * GameObject InfoCube = PopulationList[3].GiveCube();*/

        FillInfo(3);
        GameObject ASDtest = Instantiate(Executer, new Vector3(0, 0, 0), Quaternion.identity);
        SecondTest DSAtest = ASDtest.AddComponent <SecondTest> ();

        //DSAtest = PopulationList[3]; //doesn't seem to work
        DSAtest.SecondTestSetup(InfoShape, InfoFitness, InfoTarget, InfoBuffer, InfoCube);
        PopulationList [3] = DSAtest;
        //PopulationList[3].NewNetwork();
        //PopulationList.RemoveAt(3);
        //Debug.Log(PopulationList.Count);

        cutPercent = Mathf.RoundToInt(cutPercent * PopulationList.Count);
        for (int i = 0; i < cutPercent; i++)
        {
            //PopulationList[i] = PopulationList[PopulationList.Count - i];
            Destroy(PopulationList [i].gameObject);
            FillInfo(PopulationList.Count - i);
            GameObject TempGameObject = Instantiate(Executer, new Vector3(0, 0, 0), Quaternion.identity);
            SecondTest TempSecondTest = TempGameObject.AddComponent <SecondTest> ();
            TempSecondTest.SecondTestSetup(InfoShape, InfoFitness, InfoTarget, InfoBuffer, InfoCube);
            PopulationList [i] = TempSecondTest;
        }
        //SortList(PopulationList);

        /*for (int i = 0; i < PopulationList.Count; i++){
         *      Destroy(PopulationList[i].gameObject);
         *      PopulationList[i].NewNetwork();
         * }*/
    }