protected new void Awake()
    {
        base.Awake();
        transform.position = Vector3.zero;

        if (waypoints == null)  {
            name = "WaypointPlayer";
            var go = new GameObject();
            go.transform.parent = transform;
            go.AddComponent("WaypointManager");
            waypoints = go.GetComponent<WaypointManager>();
            waypoints.SetListener(this);
        } else {
            waypoints.SetListener(this);
        }

        name = "WaypointGuard " + guardID;
    }