onPhotonInstantiate not working

I am trying to rename network instantiated objects for all clients using on photon instantitae but its not working,and onphotoninstantitiate is not being called ,I have also implemented Interface IPunInstantiateMagicCallback.BUt its not working, Can anyone help me out.
Here is the code snippet:

public class PlacePlayers : MonoBehaviourPun,IPunInstantiateMagicCallback
{
public GameObject playerPieceBlue;
public GameObject playerPieceGreen;
public GameObject[] greenPieces = new GameObject[9];
public GameObject[] bluePieces = new GameObject[9];

void Start()
{
if (PhotonNetwork.IsMasterClient) {
FirstInitializeBluePeices();
}
if (!PhotonNetwork.IsMasterClient)
{
FirstInitializeGreenPeices();
}
}

public void OnPhotonInstantiate(PhotonMessageInfo info)
{
//not getting called !!!!!
}

public void FirstInitializeBluePeices() {

for (int i = 0; i < GreenPos.Length; i++)
{
object[] data = { i, "blue" };
bluePieces = PhotonNetwork.Instantiate(playerPieceBlue.name, BluePos, Quaternion.identity,0,data);
}
}


public void FirstInitializeGreenPeices()
{
for (int i = 0; i < GreenPos.Length; i++)
{

object[] data = { i, "green" };
greenPieces = PhotonNetwork.Instantiate(playerPieceGreen.name, GreenPos, Quaternion.identity,0,data);
}
}