diff --git a/src/USER-INTEL/README b/src/USER-INTEL/README
index 929bd0087171ea64ac3dec21ca8b527bcb203a46..346510107401c1006948c3f1492718380d90e818 100644
--- a/src/USER-INTEL/README
+++ b/src/USER-INTEL/README
@@ -21,11 +21,12 @@ This package is based on the USER-OMP package and provides LAMMPS styles that:
 -----------------------------------------------------------------------------
 
 When using the suffix command with "intel", intel styles will be used if they
-exist; if they do not, and the USER-OMP package is installed and an omp version
-exists, that style will be used. For example, in the case the USER-OMP package
-is installed,
+exist. If the suffix command is used with "hybrid intel omp" and the USER-OMP 
+USER-OMP styles will be used whenever USER-INTEL styles are not available. This
+allow for running most styles in LAMMPS with threading. For example, in the
+latter case with the USER-OMP package installed,
 
-      kspace_style     pppm/intel 1e-4
+      kspace_style     pppm 1e-4
 
 is equivalent to:
 
diff --git a/src/input.cpp b/src/input.cpp
index 12e30e47f983321727f11b180a6d0fb10233de68..b820607261680b70db83fb69e75671de811f05c4 100644
--- a/src/input.cpp
+++ b/src/input.cpp
@@ -1699,7 +1699,7 @@ void Input::special_bonds()
 
 void Input::suffix()
 {
-  if (narg != 1) error->all(FLERR,"Illegal suffix command");
+  if (narg < 1) error->all(FLERR,"Illegal suffix command");
 
   if (strcmp(arg[0],"off") == 0) lmp->suffix_enable = 0;
   else if (strcmp(arg[0],"on") == 0) lmp->suffix_enable = 1;
@@ -1707,17 +1707,21 @@ void Input::suffix()
     lmp->suffix_enable = 1;
 
     delete [] lmp->suffix;
-    int n = strlen(arg[0]) + 1;
-    lmp->suffix = new char[n];
-    strcpy(lmp->suffix,arg[0]);
-
-    // set 2nd suffix = "omp" when suffix = "intel"
-    // but only if USER-OMP package is installed
-
-    if (strcmp(lmp->suffix,"intel") == 0 && modify->check_package("OMP")) {
-      delete [] lmp->suffix2;
-      lmp->suffix2 = new char[4];
-      strcpy(lmp->suffix2,"omp");
+    delete [] lmp->suffix2;
+
+    if (strcmp(arg[0],"hybrid") == 0) {
+      if (narg != 3) error->all(FLERR,"Illegal suffix command");
+      int n = strlen(arg[1]) + 1;
+      lmp->suffix = new char[n];
+      strcpy(lmp->suffix,arg[1]);
+      n = strlen(arg[2]) + 1;
+      lmp->suffix2 = new char[n];
+      strcpy(lmp->suffix2,arg[2]);
+    } else {
+      if (narg != 1) error->all(FLERR,"Illegal suffix command");
+      int n = strlen(arg[0]) + 1;
+      lmp->suffix = new char[n];
+      strcpy(lmp->suffix,arg[0]);
     }
   }
 }
diff --git a/src/lammps.cpp b/src/lammps.cpp
index d6f46cc3297436c420c79c8cd7fabf7e9f25e460..49e13117570fb88c5da60e1896988ebe06b4ad77 100644
--- a/src/lammps.cpp
+++ b/src/lammps.cpp
@@ -192,16 +192,25 @@ LAMMPS::LAMMPS(int narg, char **arg, MPI_Comm communicator)
       if (iarg+2 > narg)
         error->universe_all(FLERR,"Invalid command-line argument");
       delete [] suffix;
-      int n = strlen(arg[iarg+1]) + 1;
-      suffix = new char[n];
-      strcpy(suffix,arg[iarg+1]);
-      // set 2nd suffix = "omp" when suffix = "intel"
-      if (strcmp(suffix,"intel") == 0) {
-        suffix2 = new char[4];
-        strcpy(suffix2,"omp");
-      }
+      delete [] suffix2;
       suffix_enable = 1;
-      iarg += 2;
+      // hybrid option to set fall-back for suffix2
+      if (strcmp(arg[iarg+1],"hybrid") == 0) {
+        if (iarg+4 > narg)
+          error->universe_all(FLERR,"Invalid command-line argument");
+	int n = strlen(arg[iarg+2]) + 1;
+	suffix = new char[n];
+	strcpy(suffix,arg[iarg+2]);
+	n = strlen(arg[iarg+3]) + 1;
+	suffix2 = new char[n];
+	strcpy(suffix2,arg[iarg+3]);
+	iarg += 4;
+      } else {
+	int n = strlen(arg[iarg+1]) + 1;
+	suffix = new char[n];
+	strcpy(suffix,arg[iarg+1]);
+	iarg += 2;
+      }
     } else if (strcmp(arg[iarg],"-reorder") == 0 ||
                strcmp(arg[iarg],"-ro") == 0) {
       if (iarg+3 > narg)
@@ -634,7 +643,6 @@ void LAMMPS::create()
 
 /* ----------------------------------------------------------------------
    check suffix consistency with installed packages
-   turn off suffix2 = omp if USER-OMP is not installed
    invoke package-specific deafult package commands
      only invoke if suffix is set and enabled
      also check if suffix2 is set
@@ -667,19 +675,13 @@ void LAMMPS::post_create(int npack, int *pfirst, int *plast, char **arg)
   if (strcmp(suffix,"omp") == 0 && !modify->check_package("OMP"))
     error->all(FLERR,"Using suffix omp without USER-OMP package installed");
 
-  // suffix2 only currently set by -sf intel
-  // unset if LAMMPS was not built with USER-OMP package
-
-  if (suffix2 && strcmp(suffix2,"omp") == 0 && !modify->check_package("OMP")) {
-    delete [] suffix2;
-    suffix2 = NULL;
-  }
-
   if (strcmp(suffix,"gpu") == 0) input->one("package gpu 1");
   if (strcmp(suffix,"intel") == 0) input->one("package intel 1");
   if (strcmp(suffix,"omp") == 0) input->one("package omp 0");
 
   if (suffix2) {
+    if (strcmp(suffix2,"gpu") == 0) input->one("package gpu 1");
+    if (strcmp(suffix2,"intel") == 0) input->one("package intel 1");
     if (strcmp(suffix2,"omp") == 0) input->one("package omp 0");
   }