diff --git a/source/App/DecoderApp/DecAppCfg.cpp b/source/App/DecoderApp/DecAppCfg.cpp
index 05989f0a71611574b6b8e7389eda5ea5680664c2..7910efd5810c63c7aa0c365d3ddd9e4a90040659 100644
--- a/source/App/DecoderApp/DecAppCfg.cpp
+++ b/source/App/DecoderApp/DecAppCfg.cpp
@@ -83,7 +83,7 @@ bool DecAppCfg::parseCfg( int argc, char* argv[] )
 #if NN_HOP_UNIFIED
   ("NnlfHopModelName",          m_nnlfHopModelName,                    string("models/nnlf_hop_model_int16.sadl"), "HOP loop filter model name\n")
 #if NN_HOP_UNIFIED_FORCE_USE
-  ( "NnlfHopDebugOption",       m_nnlfHopOption,  0, "Option used to debug stage 1 model. 0: default, 1: apply only on I slice, 2: apply on all slices using I type as input (not decodable)"  )
+  ( "NnlfHopDebugOption",       m_nnlfHopOption,  0, "Option used to debug stage 1 model. 0: default, 1: apply only on I slice, 2: apply on all slices using I type as input"  )
 #endif
 #endif
 
diff --git a/source/App/EncoderApp/EncAppCfg.cpp b/source/App/EncoderApp/EncAppCfg.cpp
index 071ae44fa8cd42f8182873a09936c76d30e5cc52..97d6c13c0a85fa918105dbf95548c7b2f9f3ce25 100644
--- a/source/App/EncoderApp/EncAppCfg.cpp
+++ b/source/App/EncoderApp/EncAppCfg.cpp
@@ -1168,7 +1168,7 @@ bool EncAppCfg::parseCfg( int argc, char* argv[] )
   ( "NnlfHopMaxNumPrms",                              m_nnlfHopMaxNumPrms,                                 2u, "Number of conditional parameters of HOP loop filter" )
   ( "NnlfHopModelName",                               m_nnlfHopModelName, string("models/nnlf_hop_model_int16.sadl"), "HOP loop filter model name"                   )
 #if NN_HOP_UNIFIED_FORCE_USE
-  ( "NnlfHopDebugOption",                                  m_nnlfHopOption,                                      0, "Option used to debug stage 1 model. 0: default, 1: apply only on I slice, 2: apply on all slices using I type as input (not decodable)"  )
+  ( "NnlfHopDebugOption",                             m_nnlfHopOption,                                      0, "Option used to debug stage 1 model. 0: default, 1: apply only on I slice, 2: apply on all slices using I type as input"  )
 #endif
 #endif
   ("SAO",                                             m_bUseSAO,                                         true, "Enable Sample Adaptive Offset")
diff --git a/source/Lib/DecoderLib/DecLib.cpp b/source/Lib/DecoderLib/DecLib.cpp
index e4f6140a6e1ecd64c4b5cbb39818a18dddc34c3a..70c6b560d4c750a59c80653333be62677aa81cf4 100644
--- a/source/Lib/DecoderLib/DecLib.cpp
+++ b/source/Lib/DecoderLib/DecLib.cpp
@@ -742,14 +742,7 @@ void DecLib::executeLoopFilters()
     m_nnfilterHOP.setPicprms(&m_pcPic->m_picprm);
     m_nnfilterHOP.setSliceprms(m_pcPic->cs->slice->getNnlfHopParameters());
 #if NN_HOP_UNIFIED_FORCE_USE
-    //if (getNnlfHopOption()==1&&(!m_pcPic->cs->slice->isIntra())) { // not necessary because encoding choice?
-    //  m_pcPic->m_picprm.sprm.mode = -1;
-    //}
-    if (getNnlfHopOption()==2) { // remove in the future?
-      m_nnfilterHOP.forceIntraType(true);
-    } else {
-      m_nnfilterHOP.forceIntraType(false);
-    }
+    m_nnfilterHOP.forceIntraType(getNnlfHopOption() == 2 ? true : false);
 #endif
     m_nnfilterHOP.filter(*m_pcPic);
   }
diff --git a/source/Lib/EncoderLib/EncGOP.cpp b/source/Lib/EncoderLib/EncGOP.cpp
index 19f9605a78853d5b87680fe70bf54836206f0497..0156ed69c298911e4c815ad6364afa00003d4136 100644
--- a/source/Lib/EncoderLib/EncGOP.cpp
+++ b/source/Lib/EncoderLib/EncGOP.cpp
@@ -246,7 +246,10 @@ void EncGOP::init ( EncLib* pcEncLib )
   m_AUWriterIf = pcEncLib->getAUWriterIf();
   
 #if NN_FILTERING_SET_1
-  m_pcNNFilterSet1.create(m_pcCfg->getSourceWidth(), m_pcCfg->getSourceHeight(), m_pcCfg->getChromaFormatIdc(), m_pcCfg->getNnlfSet1MaxNumParams());
+  if (m_pcCfg->getUseNnlfSet1())
+  {
+    m_pcNNFilterSet1.create(m_pcCfg->getSourceWidth(), m_pcCfg->getSourceHeight(), m_pcCfg->getChromaFormatIdc(), m_pcCfg->getNnlfSet1MaxNumParams());
+  }
 #endif
 
 #if NN_HOP_UNIFIED
@@ -3186,23 +3189,13 @@ void EncGOP::compressGOP( int iPOCLast, int iNumPicRcvd, PicList& rcListPic,
       if (pcSlice->getSPS()->getNnlfHopEnabledFlag())
       {
         m_nnfilterHOP.initCabac( m_pcEncLib->getCABACEncoder(), m_pcEncLib->getCtxCache(), *pcSlice);
-        int default_mode = pcPic->m_picprm.sprm.mode;
+        m_nnfilterHOP.setPicprms(&pcPic->m_picprm);
 #if NN_HOP_UNIFIED_FORCE_USE
-        if (m_pcCfg->getNnlfHopOption()==1&&(!pcSlice->isIntra())) {
-          pcPic->m_picprm.sprm.mode = -1;
-        }
-        if (m_pcCfg->getNnlfHopOption()==2) { // remove in the future?
-          m_nnfilterHOP.forceIntraType(true);
-        } else {
-          m_nnfilterHOP.forceIntraType(false);
-        }
+        m_nnfilterHOP.forceIntraType(m_pcCfg->getNnlfHopOption() == 2 ? true : false);
+        if (m_pcCfg->getNnlfHopOption() != 1 || pcSlice->isIntra()) // when m_nnlfHopOption == 1, skip NN filtering for inter slice (note m_picprm.sprm.mode = -1 by default)
 #endif
-        m_nnfilterHOP.setPicprms(&pcPic->m_picprm);
         m_nnfilterHOP.chooseParameters(*pcPic);
         pcSlice->setNnlfHopParameters(m_nnfilterHOP.getSliceprms());
-#if NN_HOP_UNIFIED_FORCE_USE
-        pcPic->m_picprm.sprm.mode = default_mode;
-#endif
       }
 #endif