diff --git a/v2.5/toolkit/fastnlotoolkit/fastNLOCreate.cc b/v2.5/toolkit/fastnlotoolkit/fastNLOCreate.cc
index e5fb8aed8267db6f2e9144a9c284e47534bb205b..a1dbe806f1ecd70c2afe3b42ec049fcfd89c3e5e 100644
--- a/v2.5/toolkit/fastnlotoolkit/fastNLOCreate.cc
+++ b/v2.5/toolkit/fastnlotoolkit/fastNLOCreate.cc
@@ -1932,7 +1932,10 @@ void fastNLOCreate::GetWarmupValues() {
    //!
    logger.debug["GetWarmupValues"]<<endl;
 
-   if (!fWarmupConsts.Values.empty()) {
+   if (fScenConsts.X_NNodeCounting == "NodeDensity") {
+      logger.info["GetWarmupValues"]<<"Warmup not needed to determine bin edges."<<endl;
+      fIsWarmup=false;
+   } else if (!fWarmupConsts.Values.empty()) {
       //! Check if warmup values already set by user
       logger.info["GetWarmupValues"]<<"Found warmup values in fWarmupConsts without reading warmup-steering file."<<endl;
       fIsWarmup=false;
@@ -2055,6 +2058,9 @@ bool fastNLOCreate::CheckWarmupConsistency() {
 
    vector<vector<double> > warmup =  fWarmupConsts.Values;//DOUBLE_TAB_NS(Warmup.Values,fSteerfile);
    bool ret = true;
+   if (fScenConsts.X_NNodeCounting == "NodeDensity") {
+      return ret;
+   }
 
    const string wrmuphelp = "Please check your warmup-file for compatibility with your steering.\nTo calculate a new warmup-file compatible to your steering, remove the old one.\nAlternatively use 'IgnoreWarmupBinningCheck=true' to ignore precision-related binning differences or\nuse 'ReadBinningFromSteering=false' to read all binning-related information from the warmup file.\n";
 
@@ -4429,20 +4435,26 @@ void  fastNLOCreate::InitInterpolationKernels() {
    vector<double> wrmMu1Up, wrmMu1Dn;
    vector<double> wrmMu2Up, wrmMu2Dn;
    if (GetTheCoeffTable()->GetIRef() == 0) {
-      wrmX = GetColumnFromTable(fWarmupConsts.Values, 1) ;// DOUBLE_COL_NS(Warmup.Values,x_min,fSteerfile);
-      wrmMu1Dn = GetColumnFromTable(fWarmupConsts.Values, 3) ;//read_steer::getdoublecolumn("Warmup.Values",GetWarmupHeader(0,"min"),fSteerfile);
-      wrmMu1Up = GetColumnFromTable(fWarmupConsts.Values, 4) ;//read_steer::getdoublecolumn("Warmup.Values",GetWarmupHeader(0,"max"),fSteerfile);
-      if (wrmMu1Dn.size()!=GetNObsBin() || wrmMu1Up.size()!= GetNObsBin()) {
-         logger.error["InitInterpolationKernels"]<<"Insufficient no. of rows for warmup values of Mu1. Exiting."<<endl;
-         exit(1);
-      }
-      if (fIsFlexibleScale) {
-         wrmMu2Dn = GetColumnFromTable(fWarmupConsts.Values, 5) ;//read_steer::getdoublecolumn("Warmup.Values",GetWarmupHeader(1,"min"),fSteerfile);
-         wrmMu2Up = GetColumnFromTable(fWarmupConsts.Values, 6) ;//read_steer::getdoublecolumn("Warmup.Values",GetWarmupHeader(1,"max"),fSteerfile);
-         if (wrmMu2Dn.size()!=GetNObsBin() || wrmMu2Up.size()!= GetNObsBin()) {
-            logger.error["InitInterpolationKernels"]<<"Insufficient no. of rows for warmup values for Mu2. Exiting."<<endl;
+      if (fScenConsts.X_NNodeCounting == "NodeDensity") {
+         wrmMu1Dn = GetObsBinsLoBounds(1);
+         wrmMu1Up = GetObsBinsUpBounds(1);
+         std::cout << wrmMu1Dn.size() << " " << wrmMu1Up.size() << endl;
+      } else {
+         wrmX = GetColumnFromTable(fWarmupConsts.Values, 1) ;// DOUBLE_COL_NS(Warmup.Values,x_min,fSteerfile);
+         wrmMu1Dn = GetColumnFromTable(fWarmupConsts.Values, 3) ;//read_steer::getdoublecolumn("Warmup.Values",GetWarmupHeader(0,"min"),fSteerfile);
+         wrmMu1Up = GetColumnFromTable(fWarmupConsts.Values, 4) ;//read_steer::getdoublecolumn("Warmup.Values",GetWarmupHeader(0,"max"),fSteerfile);
+         if (wrmMu1Dn.size()!=GetNObsBin() || wrmMu1Up.size()!= GetNObsBin()) {
+            logger.error["InitInterpolationKernels"]<<"Insufficient no. of rows for warmup values of Mu1. Exiting."<<endl;
             exit(1);
          }
+         if (fIsFlexibleScale) {
+            wrmMu2Dn = GetColumnFromTable(fWarmupConsts.Values, 5) ;//read_steer::getdoublecolumn("Warmup.Values",GetWarmupHeader(1,"min"),fSteerfile);
+            wrmMu2Up = GetColumnFromTable(fWarmupConsts.Values, 6) ;//read_steer::getdoublecolumn("Warmup.Values",GetWarmupHeader(1,"max"),fSteerfile);
+            if (wrmMu2Dn.size()!=GetNObsBin() || wrmMu2Up.size()!= GetNObsBin()) {
+               logger.error["InitInterpolationKernels"]<<"Insufficient no. of rows for warmup values for Mu2. Exiting."<<endl;
+               exit(1);
+            }
+         }
       }
    } else {
       wrmX.resize(GetNObsBin(),0);