@Override
    public Point getNearestTownHallXY(Point p) {
        int closestX = 0;
        Point townHall = new Point(0, 0);

        Placeable placeable = null;

        try {
            for (String key : placeables.keySet()) {
                placeable = (Placeable) placeables.get(key);
                if (placeable.getType().equals("TownHall") || placeable.getType().equals("Cabin")) {
                    int distance = (int) placeable.getCenterPoint().distance(p);
                    if (distance < closestX || closestX == 0) {
                        closestX = distance;
                        townHall.x = placeable.getMapX() + (placeable.getWidth() / 2);
                        townHall.y = placeable.getMapY();
                    }
                }
            }
        } catch (ConcurrentModificationException concEx) {
            //another thread was trying to modify placeables while iterating
            //we'll continue and the new item can be grabbed on the next update
        }

        return townHall;
    }