Simple question? Rotated Prefab's transform forward not working

I’m very tired so this might be an obvious one but…

This code moves the prefab forward globally, i.e. not taking it’s local rotation into account

var prefab : Transform;
private var ob : Transform;

function Start () {
    ob = Instantiate(prefab,this.transform.position, Quaternion.identity);
}

function Update ()
{
    var ranRot : Vector3 = Vector3(Random.Range(0.0,359.0),Random.Range(0.0,359.0),Random.Range(0.0,359.0));
    ob.Rotate(ranRot);
    ob.localPosition += transform.forward * 2;
}

whereas when not referencing a prefab the movement is as expected

var ranRot : Vector3 = Vector3(Random.Range(0.0,359.0),Random.Range(0.0,359.0),Random.Range(0.0,359.0));

this.transform.Rotate(ranRot);
this.transform.localPosition += transform.forward * 2;

using 5.2.0f3
I must be making a stupid mistake… Any ideas?

In your first code,

    ob.localPosition += transform.forward * 2;

If you want the prefab’s forward facing vector, use ob.forward.

thanks so much!