public Vector<Site> findFreeSites() {
        Vector<Site> freeSites = new Vector<Site>();

        for (int m = -vision; m <= vision; m++) {
            for (int n = -vision; n <= vision; n++) {
                Site site;
                int x = xPosition + m;
                int y = yPosition + n;
                if (x >= 0 && x < sim.xSize && y >= 0 && y < sim.ySize) {
                    site = sim.grid[x][y];
                    Agent occ = site.getAgent();
                    if (occ == null || this.equals(occ)) {
                        freeSites.addElement(site);
                    }
                }
            }
        }
        Collections.shuffle(freeSites);
        return freeSites;
    }