Issue with Vector 3 Array List (solved)

So, I’m making a very basic tile based generation system with what is probably an awful method to do so. I’ve just come from JS so this is supposed to be a pretty simple learning experience but I can’t get past line 37.

The error is:
“Cannot implicitly convert type ‘object’ to ‘UnityEngine.Vector3’. An explicit conversion exists (are you missing a cast?)”

using UnityEngine;
using System.Collections;

public class SceneGenerator : MonoBehaviour {
    public GameObject tCross;
    public GameObject straight;
    public GameObject corner;
    public ArrayList PossiblePositions = new ArrayList();
    public ArrayList PossibleRotations = new ArrayList();
    public string lastPlaced;
    private GameObject lastPlacedObject;
    private GameObject block;
    private int blockSelector;
    private Vector3 placeholder = new Vector3(0, 0, 0);
    // Use this for initialization
    void Start () {
        firstGen();
    }
   
    // Update is called once per frame
    void Update () {
   
    }

    void firstGen()
    {
       block = Instantiate(tCross, new Vector3(0, 0, 0), Quaternion.Euler(new Vector3(-90,0,0))) as GameObject;
       lastPlaced = "tCross";
       findAvailableLocations();
    }
   
    void addNewBlock()
    {
        blockSelector = Random.Range(1, 3);
        if (blockSelector != 0)
        {
            placeholder = PossiblePositions[Random.Range(0, PossiblePositions.Count)];
            Instantiate(tCross, placeholder, Quaternion.Euler(-90, 0, 0));
        }

    }
   
    void findAvailableLocations()
    {
        if (lastPlaced == "tCross")
        {
            PossiblePositions.Add(new Vector3(block.transform.position.x + 3.5f, 0f, block.transform.position.z));
            PossiblePositions.Add(new Vector3(block.transform.position.x - 3.5f, 0f, block.transform.position.z));
            PossiblePositions.Add(new Vector3(block.transform.position.x, 0f, block.transform.position.z + 3.5f));
            PossiblePositions.Add(new Vector3(block.transform.position.x, 0f, block.transform.position.z - 3.5f));
            Invoke("addNewBlock", 3);

        }
    }
   
    void printAvailablePositions()
    {
        for (int x=0; x < PossiblePositions.Count; x++)
        {

            print(PossiblePositions[x]);
        }
    }
}

You need to explicit what type of variable its when you in some kind of list ( like arraylist ).
You can do this

placeholder = PossiblePositions[Random.Range(0, PossiblePositions.Count)] as Vector3;

or

placeholder = (Vector3) PossiblePositions[Random.Range(0, PossiblePositions.Count)];

You really, really don’t want to use an array list. Consider a generic List instead.