diff --git a/src/it/reyboz/bustorino/backend/GTTStopsFetcher.java b/src/it/reyboz/bustorino/backend/GTTStopsFetcher.java
--- a/src/it/reyboz/bustorino/backend/GTTStopsFetcher.java
+++ b/src/it/reyboz/bustorino/backend/GTTStopsFetcher.java
@@ -53,7 +53,7 @@
         }
 
         try {
-            url = new URL("http://www.gtt.to.it/cms/components/com_gtt/views/palinejson/view.html.php?term=" + URLEncoder.encode(name, "utf-8"));
+            url = new URL("https://www.gtt.to.it/cms/index.php?option=com_gtt&view=palinejson&term=" + URLEncoder.encode(name, "utf-8"));
         } catch (Exception e) {
             res.set(Result.PARSER_ERROR);
             return s;
diff --git a/src/it/reyboz/bustorino/fragments/FragmentHelper.java b/src/it/reyboz/bustorino/fragments/FragmentHelper.java
--- a/src/it/reyboz/bustorino/fragments/FragmentHelper.java
+++ b/src/it/reyboz/bustorino/fragments/FragmentHelper.java
@@ -152,6 +152,7 @@
         attachFragmentToContainer(managerWeakRef.get(),listfragment,
                 new AttachParameters("search_"+query, false,addToBackStack));
         listfragment.setStopList(resultList);
+        listenerMain.readyGUIfor(FragmentKind.STOPS);
         toggleSpinner(false);
 
     }
diff --git a/src/it/reyboz/bustorino/fragments/MainScreenFragment.java b/src/it/reyboz/bustorino/fragments/MainScreenFragment.java
--- a/src/it/reyboz/bustorino/fragments/MainScreenFragment.java
+++ b/src/it/reyboz/bustorino/fragments/MainScreenFragment.java
@@ -450,9 +450,16 @@
             requestArrivalsForStopID(busStopID);
         } else { // searchMode == SEARCH_BY_NAME
             String query = busStopSearchByNameEditText.getText().toString();
-            //new asyncWgetBusStopSuggestions(query, stopsDB, StopsFindersByNameRecursionHelper);
-            if(getContext()!=null)
-                new AsyncDataDownload(fragmentHelper, stopsFinderByNames, getContext()).execute(query);
+            query = query.trim();
+            if(getContext()!=null) {
+                if (query.length() < 1) {
+                    Toast.makeText(getContext(), R.string.insert_bus_stop_name_error, Toast.LENGTH_SHORT).show();
+                } else if(query.length()< 3){
+                    Toast.makeText(getContext(), R.string.query_too_short, Toast.LENGTH_SHORT).show();
+                }
+                else
+                    new AsyncDataDownload(fragmentHelper, stopsFinderByNames, getContext()).execute(query);
+            }
         }
     }
 
diff --git a/src/it/reyboz/bustorino/middleware/AsyncDataDownload.java b/src/it/reyboz/bustorino/middleware/AsyncDataDownload.java
--- a/src/it/reyboz/bustorino/middleware/AsyncDataDownload.java
+++ b/src/it/reyboz/bustorino/middleware/AsyncDataDownload.java
@@ -25,8 +25,12 @@
 import android.os.AsyncTask;
 
 import androidx.annotation.NonNull;
+import androidx.core.content.ContextCompat;
+
 import android.util.Log;
+import android.widget.Toast;
 
+import it.reyboz.bustorino.R;
 import it.reyboz.bustorino.backend.*;
 import it.reyboz.bustorino.data.AppDataProvider;
 import it.reyboz.bustorino.data.NextGenDB;
@@ -88,6 +92,7 @@
         boolean success=false;
         Object result;
         FragmentHelper fh = helperRef.get();
+        ArrayList<Fetcher.Result> results = new ArrayList<>(theFetchers.length);
         //If the FragmentHelper is null, that means the activity doesn't exist anymore
         if (fh == null){
             return null;
@@ -167,11 +172,13 @@
                     Log.d(TAG,"Using the StopFinderByName: "+finder.getClass());
                     query =params[0];
                     result = resultList; //dummy result
+                    Log.d(DEBUG_TAG, "Result: "+res.get()+", "+resultList.size()+" stops");
                     break;
                 default:
                     result = null;
             }
             //find if it went well
+            results.add(res.get());
             if(res.get()== Fetcher.Result.OK) {
                 //wait for other threads to finish
                 for(Thread t: otherActivities){
@@ -185,6 +192,17 @@
             }
 
         }
+        boolean emptyResults = true;
+        for (Fetcher.Result re: results){
+            if (!re.equals(Fetcher.Result.EMPTY_RESULT_SET)) {
+                emptyResults = false;
+                break;
+            }
+        }
+        if(emptyResults){
+            if(t==RequestType.STOPS)
+                publishProgress(Fetcher.Result.EMPTY_RESULT_SET);
+        }
         //at this point, we are sure that the result has been negative
         failedAll=true;
 
@@ -235,6 +253,7 @@
                 ArrayList<Stop> stops = new ArrayList<>();
                 for(Object x: list){
                     if(x instanceof Stop) stops.add((Stop) x);
+                    //Log.d(DEBUG_TAG, "Parsing Stop: "+x);
                 }
                 if(list.size() != stops.size()){
                     Log.w(DEBUG_TAG, "Wrong stop list size:\n incoming: "+