// instantiates an agent into the map
    public GameObject instantiate(GameObject prefab, Pos pos, GameAgentStats stats = null, string name = null)
    {
        if (!IsWalkable(pos))
        {
            return(null);
        }

        GameObject clone = Instantiate(prefab, grid_to_world(pos), Quaternion.identity);
        GameAgent  agent = clone.GetComponent <GameAgent>();

        //string[] names = new string[] { "Keawa", "Benjamin", "Diana", "Jerry", "Joe" };

        if (stats == null)
        {
            agent.init_agent(pos, new GameAgentStats(CharacterRaceOptions.Human, CharacterClassOptions.Knight, 1, CharacterClassOptions.Sword), name);
        }
        else
        {
            agent.init_agent(pos, stats, name);
        }

        nav_map.removeTraversableTile(pos);
        map[pos.x, pos.y].resident = agent;
        map[pos.x, pos.y].occupied = true;
        return(clone);
    }