Prefab takes over wrong position

I’m experiencing a strange issue with prefabs. This is what is happening:

I have a gameobject Player. The hierarchy is like this:
-Player
→ head
→ body
----> legs
-------> upper leg
etc. so every part of the body is a separate gameobject. (every part moves separately)
The entire player object is a prefab. with one instance in the scene.
I made a PlayerBehaviour script. like this:

using UnityEngine;
using System.Collections;

public class PlayerBehaviour : MonoBehaviour {
    public GameObject player;
  
    public void Respawn() {
        GameObject temp = Instantiate (player, Vector3.zero, Quaternion.identity) as GameObject;
    }
  
    // Update is called once per frame
    void Update () {
        if (Input.GetKeyDown(KeyCode.Space)) {
            Respawn ();
        }
    }
}

the public gameobject player has the prefab assigned NOT the instance in the scene.
My problem is (when pressing space). The instantiated prefab should have been positioned at 0.0.0. (including child gameobjects should be at their prefab position) The Player gameobject spawns indeed at 0.0.0 but the moving body parts from the old instance of the object are copied at the exact same position as the newly spawned instance from the prefab. What did i do wrong?

Nobody?