private void revealArea(int position)
	{
        if (isFlagged(position)) {
            return;
        }
        
        changeState(position, BoxState.SAFE);
        
        for (int i : map.getNeighbors(position)) {
            int v = map.getValueAt(i);
            boolean recursivelyReveal = v == 0 && boxStates[i] == BoxState.UNEXPLORED;
            if (recursivelyReveal) {
                revealArea(i);
            }
            else {                
                if (isFlagged(i)) {
                    continue;
                }
                changeState(i, BoxState.SAFE);
            }
        }
	}