Drawing an arrow for shot direction

so i have a script where it draws an arrow from a ball showing the power and direction in which the ball will go according to the mouse positions on the screen. everything works as intended but i have a small bug where when the arrow gets instantiated the arrow first flickers for about 1 frame where the arrow has no rotation, so it shows itself just being drawn horizontally across the screen then after that it changes its size and rotation properly according to the mouse positions.

	if (Input.GetKey (KeyCode.Mouse0)) {
		if (isMoving == false) {
			ShotDirection ();

void ShotDirection(){
	if (arrow == null) {
		arrow = Instantiate (Resources.Load ("Arrow 1")) as GameObject;
	Vector2 ballPos = Camera.main.ScreenToWorldPoint (transform.position);
	float angle = AngleBetweenTwoPoints (startPosition, mousePos);
	arrow.transform.rotation = Quaternion.Euler(new Vector3(0f,0f,angle));
	arrow.transform.localScale = new Vector3 (1, mouseDist, 1);
	arrow.transform.position = gameObject.transform.position;

Okay so i have figured out a fix and it was really simple actually, i saw the arrow that flickered was the same scale as the arrow from the previous shot so all i had to do was add a mouseDown event which set the scale back to 0 before drawing a new line.

	if (Input.GetKeyDown (KeyCode.Mouse0)) {
		if (isMoving == false) {
			startPosition = Camera.main.ScreenToWorldPoint (Input.mousePosition);
			arrow.transform.localScale = new Vector3 (0, 0, 0);

Why could not use the API: “Instantiate(Object original, Vector3 position, Quaternion rotation)”, to set rotation on initiating?