public CachedLocations(){
			List<EndPoint> north = new ArrayList<>();
			List<EndPoint> south = new ArrayList<>();
			List<EndPoint> east = new ArrayList<>();
			List<EndPoint> west = new ArrayList<>();
			
			for( EndPoint endPoint : endPoints ){
				switch( calcPosition( endPoint )){
					case WEST:
						west.add( endPoint );
						break;
					case EAST:
						east.add( endPoint );
						break;
					case NORTH:
						north.add( endPoint );
						break;
					case SOUTH:
						south.add( endPoint );
						break;
				}
			}
			
			createAttachements( west, Side.WEST );
			createAttachements( east, Side.EAST );
			createAttachements( south, Side.SOUTH );
			createAttachements( north, Side.NORTH );
		}