// populate the environment
    private void PopulateEnvironment(List <Vector2> pathPoints)
    {
        proceduralGenerator.FindPlaneSize(pathPoints);

        proceduralGenerator.GeneratePlane();

        // instantiate the environment objects
        // params: numObjects	instPrefab	minD	maxD	perlinScale		perlinClump
        Transform container = new GameObject("Environment Container").transform;

        proceduralGenerator.RandomInstantiation(container, "Rocks", 100, rockPrefab, 0.15f, 0.4f, 0.0f, 0.0f);
        proceduralGenerator.RandomInstantiation(container, "Round Trees", 20, roundTreePrefab, 0.3f, 0.5f, 0.0f, 0.0f);
        proceduralGenerator.RandomInstantiation(container, "Pine Fall Trees", 50, pineFallPrefab, 0.3f, 0.6f, 0.0f, 0.0f);
        proceduralGenerator.RandomInstantiation(container, "Pine Trees", 350, pineTreePrefab, 0.45f, 0.9f, 3.0f, 0.55f);
        proceduralGenerator.RandomInstantiation(container, "Mountain A", 5, mtnAPrefab, 0.9f, 1.0f, 0.0f, 0.0f);
        proceduralGenerator.RandomInstantiation(container, "Mountain B", 5, mtnBPrefab, 0.9f, 1.0f, 0.0f, 0.0f);
        proceduralGenerator.RandomInstantiation(container, "Mountain C", 5, mtnCPrefab, 1.1f, 1.3f, 0.0f, 0.0f);
        proceduralGenerator.RandomInstantiation(container, "Mountain D", 2, mtnDPrefab, 1.2f, 1.4f, 0.0f, 0.0f);
        proceduralGenerator.RandomInstantiation(container, "Clouds", 20, cloudPrefab, 0.1f, 1.5f, 0.8f, 0.7f);

        GameObject balloon = Instantiate(balloonPrefab, new Vector3(0.0f, pathPoints [0].y + 1.0f, 0.0f), Quaternion.identity);

        balloon.GetComponent <MoveBalloon> ().SetOffsetAndRange(proceduralGenerator.planeCenter, proceduralGenerator.range);

        PlaceMooseInteraction(pathPoints);
        PlaceGroundhogInteraction(pathPoints);
    }