private void filterAndSort()
		{
			// First for each coordinate, get the most probable circle			
			Map<Coordinate2D, Map.Entry<Integer, MutableFloat>> topRadiusPerCoord = new HashMap<Coordinate2D, Map.Entry<Integer, MutableFloat>>();
			{
				for(Map.Entry<Coordinate2D, Map<Integer, MutableFloat>> entry : data.entrySet())
				{
					List<Map.Entry<Integer, MutableFloat>> sortedEntry = new ArrayList<Map.Entry<Integer, MutableFloat>>(entry.getValue().entrySet());
					
					Collections.sort(sortedEntry, new Comparator<Map.Entry<Integer, MutableFloat>>() {
						@Override
						public int compare(Entry<Integer, MutableFloat> o1,
								Entry<Integer, MutableFloat> o2) {
							float sign = (o1.getValue().get() - o2.getValue().get());
							if(sign > 0 )
								return 1;
							else if(sign == .0f)
								return 0;
							else
								return -1;
						}
					});
					Collections.reverse(sortedEntry);				
					topRadiusPerCoord.put(entry.getKey(), sortedEntry.get(0));
				}
			}
			
			// Now sort the coordinates
			List<Map.Entry<Coordinate2D, Map.Entry<Integer, MutableFloat>>> sortedCoord = new ArrayList<Map.Entry<Coordinate2D, Map.Entry<Integer, MutableFloat>>>(topRadiusPerCoord.entrySet());
			{
				Collections.sort(sortedCoord, new Comparator<Map.Entry<Coordinate2D, Map.Entry<Integer, MutableFloat>>>() {

					@Override
					public int compare(
							Entry<Coordinate2D, Entry<Integer, MutableFloat>> o1,
							Entry<Coordinate2D, Entry<Integer, MutableFloat>> o2) {
						float sign =  (o1.getValue().getValue().get() - o2.getValue().getValue().get());
						if(sign > 0 )
							return 1;
						else if(sign == .0f)
							return 0;
						else
							return -1;
					}
				});
				Collections.reverse(sortedCoord);		
			}

			
			CircleCounterList formattedSorted = new CircleCounterList();		
			for(Map.Entry<Coordinate2D, Map.Entry<Integer, MutableFloat>> e : sortedCoord)
			{
				Coordinate2D origin = e.getKey();
				int radius = e.getValue().getKey();
				float count = e.getValue().getValue().get();
				
				formattedSorted.add(new CircleCounter(new Circle(origin, radius), count));
			}

			
			sortedData = formattedSorted;
			
			sortRequired = false;
		}