                     // Go to object
                     i = 0;
                     do {
+                        while (isOtherVillagerGoingTo(home, home.objectFounds[i].pos))
+                        {
+                            i++;
+                        }
+                        if (i >= home.objectFounds.length - 1) break;
                         var path:Vector.<IntPoint> = mapModel.getPath(villager.position, home.objectFounds[i].pos);
                         i++;
                     } while (path == null && i < home.objectFounds.length)

                if (villager.destination)
                {
                    var destPoint:IntPoint = villager.destination.path[0];
                    var objectType:int = mapModel.map[destPoint.y][destPoint.x].objectType;
                    if (objectType == CMapNodeType.OBJECT_NULL || objectType == CMapNodeType.OBJECT_HOME)
                    {
                        villager.destination = null;
                    }
                    else
                    {
                        newPoint = villager.destination[villager.destination.currentEntry++];
                    }
                }
            }
            
            return newPoint;
        }
    }

}
                
                home.objectFounds = home.objectFounds.concat(objectFounds);
                
                if ( home.objectFounds.length == 0 || objectFoundsAlreadyTargetted(home) )
                {
                    // Move randomly
                    do {
