void docarry()
    {
        agentnav.stoppingDistance = 0.1f;
        if (!pickuptarget)
        {
            dropobject();
        }
        else
        {
            this.transform.parent.LookAt(pickuptarget.transform);

            PickupController targetController = pickuptarget.GetComponentInChildren <PickupController>();
            if (targetController)
            {
                // leader agent moves the pickup towards the destination, other agents maintain their carry position
                if (pickupCarryIndexAndPositionOffset.Key == targetController.leaderPikIndex)
                {
                    agentnav.avoidancePriority = 10;
                    agentnav.radius            = 1;
                    agentDestination           = targetController.getPickupDestination() - carrytargetoffset;

                    // update pickup's position
                    Transform pickuptargetparent = pickuptarget.transform.parent;
                    pickuptargetparent.transform.position = this.transform.position + carrytargetoffset; // todo: what if agent falls off? check real game

                    // when destination is reached, drop pickup
                    if (Vector3.Distance(transform.position, agentDestination) <= agentnav.stoppingDistance)
                    {
                        dropobject();
                    }
                }
                else
                {
                    agentnav.avoidancePriority = 1;
                    agentnav.radius            = 1;
                    agentDestination           = pickuptarget.transform.position - carrytargetoffset;
                }

                if (agentcontroller && startingcarry)
                {
                    agentcontroller.soundPlayer.loop = true;
                    agentcontroller.soundPlayer.clip = agentcontroller.carryClip;
                    agentcontroller.soundPlayer.Play();
                    startingcarry = false;
                }
            }
            else
            {
                Debug.LogError("Pickup controller not found for carrying");
            }
        }
    }