diff --git a/tools/README.installation b/tools/README.installation
index 1ec0eb2b31f1e2d9e8928edfeefb69714b1c2373..b367ee6102250d59872dfd95e0b75994e7b3f380 100644
--- a/tools/README.installation
+++ b/tools/README.installation
@@ -1,4 +1,4 @@
-05.05.2024, K. Rabbertz
+13.06.2024, K. Rabbertz
 
 The script fnlosrc_install.csh allows the user to install all packages
 required to produce interpolation grids with NLOJet++ or NNLOJET and
@@ -52,13 +52,13 @@ The following installation flavours are recommended:
 This requires the following archives to be installed and to be present
 in the same directory as the install script fnlosrc_install.csh:
 
-fastjet-3.4.0.tar.gz
+fastjet-3.4.2.tar.gz
 LHAPDF-6.5.4.tar.gz
-fastnlo_toolkit-2.5.1-3022.tar.gz
+fastnlo_toolkit-2.5.1-3034.tar.gz
+fastnlo_interface_nlojet-2.5.1-3030.tar.gz
 nlojet++-4.1.3-patched2.tar.gz
-fastnlo_interface_nlojet-2.5.0-2888.tar.gz
 
-They are available in the package fastNLO_archives_minimal_202405.tar.gz.
+They are available in the package fastNLO_archives_minimal_202406.tar.gz.
 
 The command line to be used is:
 ./fnlosrc_install.csh /prefix-path/where/to/install _ _ 0 1 0 0 0 1 0 8 0
@@ -69,14 +69,14 @@ The command line to be used is:
 
 In addition to the packages listed above this requires the packages:
 
-HepMC3-3.2.2.tar.gz
-fjcontrib-1.045.tar.gz
-YODA-1.9.7.tar.gz
-Rivet-3.1.7.tar.gz
+HepMC3-3.2.7.tar.gz
+fjcontrib-1.054.tar.gz
+YODA-1.9.10.tar.gz
+Rivet-3.1.10.tar.gz
 # hoppet-1.2.0.tar.gz, excluded for now
-# qcdnum-17-01-14.tar.gz, excluded for now
+# qcdnum-18-00-00.tar.gz, excluded for now
 
-They are available in the package fastNLO_archives_additional_202405.tar.gz.
+They are available in the package fastNLO_archives_additional_202406.tar.gz.
 
 The command line to be used is:
 ./fnlosrc_install.csh /prefix-path/where/to/install _ _ 0 1 0 0 1 1 0 8 0
@@ -89,10 +89,10 @@ RESTRICTED UNTIL NNLOJET becomes publically available. Please contact me.
 This requires the following archives to be installed and to be present
 in the same directory as the install script fnlosrc_install.csh:
 
-fastjet-3.4.0.tar.gz
+fastjet-3.4.2.tar.gz
 LHAPDF-6.5.4.tar.gz
-fastnlo_toolkit-2.5.1-3022.tar.gz
-nnlo-bridge-1.0.0.tar.gz
+fastnlo_toolkit-2.5.1-3034.tar.gz
+nnlo-bridge-1.0.1.tar.gz
 NNLOJET_modules2_rev6591_newcombine.tar.gz
 
 The command line to be used is:
@@ -105,12 +105,14 @@ RESTRICTED UNTIL NNLOJET becomes publically available. Please contact me.
 
 In addition to the packages listed above this requires the packages:
 
-fastnlo_interface_nlojet-2.5.1-2888.tar.gz
+fastnlo_interface_nlojet-2.5.1-3030.tar.gz
 nlojet++-4.1.3-patched2.tar.gz
-HepMC3-3.2.2.tar.gz
-Rivet-3.1.7.tar.gz
-YODA-1.9.7.tar.gz
-fjcontrib-1.045.tar.gz
+HepMC3-3.2.7.tar.gz
+fjcontrib-1.054.tar.gz
+YODA-1.9.10.tar.gz
+Rivet-3.1.10.tar.gz
+# hoppet-1.2.0.tar.gz, excluded for now
+# qcdnum-18-00-00.tar.gz, excluded for now
 
 The command line to be used is:
 ./fnlosrc_install.csh /prefix-path/where/to/install _ _ 0 1 1 0 1 1 0 8 0
@@ -129,9 +131,10 @@ Remarks
 =======
 
 It is also possible to use "views" of the LCG software stack, e.g.
-lcg102_centos7-gcc11-opt_source has been tested successfully. In that
-case these views, of course, have to be "source"d beforehand.
+lcg102_centos7-gcc11-opt_source or lcg105_centos7-gcc11-opt_source have
+been tested successfully. In that case these views, of course,
+have to be "source"d beforehand.
 
 Some of the packages might also work with ROOT. Because of the large variety of
 ROOT versions and installation problems this is not described here.
-However, the given LCG view seems to be a good choice.
+However, the given LCG views seem to be working.
diff --git a/tools/fnlosrc_install.csh b/tools/fnlosrc_install.csh
index 84f51fc7deb5248d73a18d15b84836c4d17c3b1d..d9ba66dd2933029e854ebb3471c8d851d07e9be7 100755
--- a/tools/fnlosrc_install.csh
+++ b/tools/fnlosrc_install.csh
@@ -537,7 +537,8 @@ endif
 if ( ($withnlojetpp || $withsherpa) && ! $mpnnlo ) then
 #   set arc="fastjet-3.3.0" # Last one ok; test 3.3.4
 #   set arc="fastjet-3.3.4"
-   set arc="fastjet-3.4.0" # Required for Rivet 3.1.7
+#   set arc="fastjet-3.4.0" # Required for Rivet 3.1.7
+   set arc="fastjet-3.4.2"
    if ( ! -e ${arc}_installed  ) then
       tar xzf ${arc}.tar.gz
       cd ${arc}
@@ -685,7 +686,8 @@ if ( $withoptional ) then
 # HepMC3 (needed by Rivet-3.x.x):
 # Python is enabled by default. Requires cmake version 3.
 #------------------------------------------------------------------------------
-   set arc="HepMC3-3.2.2"
+#   set arc="HepMC3-3.2.2"
+   set arc="HepMC3-3.2.7"
    if ( ! -e ${arc}_installed  ) then
       tar xzf ${arc}.tar.gz
       cd ${arc}
@@ -703,7 +705,8 @@ if ( $withoptional ) then
 # fastjet contrib (fjcontrib; needed by Rivet-3.x.x):
 #
 #------------------------------------------------------------------------------
-   set arc="fjcontrib-1.045"
+#   set arc="fjcontrib-1.045"
+   set arc="fjcontrib-1.054"
    if ( ! -e ${arc}_installed  ) then
       tar xzf ${arc}.tar.gz
       cd ${arc}
@@ -720,7 +723,9 @@ if ( $withoptional ) then
 #   set arc="YODA-1.6.7"
 #   set arc="YODA-1.8.3"
 #   set arc="YODA-1.9.6"
-   set arc="YODA-1.9.7"
+#   set arc="YODA-1.9.7"
+   set arc="YODA-1.9.10"
+#   set arc="YODA-2.0.0" # Required by Rivet 4.0.0
    if ( ! -e ${arc}_installed  ) then
       tar xzf ${arc}.tar.gz
       cd ${arc}
@@ -736,13 +741,22 @@ if ( $withoptional ) then
 #   set arc="Rivet-2.5.4"
 #   set arc="Rivet-3.1.4" # Needs HepMC3 and fastjet contrib
 #   set arc="Rivet-3.1.6" # Needs HepMC3 and fastjet contrib
-   set arc="Rivet-3.1.7" # Needs HepMC3 and fastjet contrib and fastjet >= 3.4.0
+#   set arc="Rivet-3.1.7" # Needs HepMC3 and fastjet contrib and fastjet >= 3.4.0
+   set arc="Rivet-3.1.10" # Needs HepMC3 and fastjet contrib and fastjet >= 3.4.0
+#
+# Rivet 4.0.0 configuration failing even when using --without-hdf5
+# configure: HDF5 include flags:  ::: -I/usr/include -I/usr/include/hdf5/serial
+# configure: HDF5 lib flags:  -L/usr/lib/x86_64-linux-gnu/hdf5/serial ::: -lhdf5_hl -lhdf5  -lcrypto -lcurl -lpthread -lsz -lz -ldl -lm
+# configure: WARNING: highfive header directory was not found
+# configure: error: highfive (HDF5 for C++) is required
+# Do not use yet!
+#   set arc="Rivet-4.0.0"
    if ( ! -e ${arc}_installed  ) then
       tar xzf ${arc}.tar.gz
       cd ${arc}
 #      ./configure --prefix=${base} ${pyextopt} CPPFLAGS="${MYCPPFLAGS}"
-# ATTENTION: Remove analysis giving compile errors with gcc5
-#      rm -f analyses/pluginATLAS/*1790439*
+# ATTENTION: Remove analysis giving compile errors
+      rm -f analyses/pluginATLAS/*2663725*
 #      rehash
       ./configure --prefix=${base} ${pyextopt} --with-hepmc3=`${base}/bin/HepMC3-config --prefix` CPPFLAGS="${MYCPPFLAGS}"
       make -j${cores} install
@@ -752,19 +766,18 @@ if ( $withoptional ) then
    endif
 #
 #
-# HOPPET (the latest, v1.1.5, needs to be patched for a perl issue on newer systems):
-# (Problem with perl script in systems with gcc >= 5! Patch needed: hoppet-1.1.5-patched.)
-# (Fortran link problem with gcc11 --> Do not install for now.)
+# HOPPET (use latest, v1.2.0):
+# Works with just the fastNLO Toolkit when -lgfortran is added to LDFLAGS.
+# Leads to unresolved references with fastNLO interface to NLOJet++.
+# Do not install for now.
 #------------------------------------------------------------------------------
 # ==> This enables the option --with-hoppet of the fastNLO_toolkit to use
 #     the alpha_s evolutions within HOPPET
 #     fastNLO comes already with alpha_s evolutions from GRV or CRunDec, or
 #     uses the one from the PDFs in LHAPDF
 #
-#   set arc="hoppet-1.1.5"
 #   set arc="hoppet-1.2.0"
 #   if ( ! -e ${arc}_installed  ) then
-#      tar xzf ${arc}-patched.tar.gz # Need patched version on newer systems like Ubuntu 16.04
 #      tar xzf ${arc}.tar.gz
 #      cd ${arc}
 #      ./configure --prefix=${base}
@@ -795,7 +808,7 @@ if ( $withoptional ) then
 #      cd ..
 #      touch ${arc}_installed
 #   endif
-endif
+#endif
 #
 #
 #==============================================================================
@@ -813,7 +826,8 @@ if ( ! $mpnnlo ) then
 #   set arc="fastnlo_toolkit-2.5.0-2848"
 #   set arc="fastnlo_toolkit-2.5.0-2856"
 #   set arc="fastnlo_toolkit-2.5.1-2890"
-   set arc="fastnlo_toolkit-2.5.1-3022"
+#   set arc="fastnlo_toolkit-2.5.1-3022"
+   set arc="fastnlo_toolkit-2.5.1-3034"
    set rev=""
    if ( ! -e ${arc}_installed  ) then
       tar xzf ${arc}${rev}.tar.gz
@@ -824,10 +838,11 @@ if ( ! $mpnnlo ) then
 #     ./configure --prefix=${base} --enable-pyext
       if ( $withoptional ) then
 # QCDNUM-17-xx-xx does not compile with gfortran 11.1.0; QCDNUM-18-xx-xx exits with error on execution in fastNLO Toolkit;
+# HOPPET-1.2.0 leads to unresolved references with fastNLO interface to NLOJet++.
+#         ./configure --prefix=${base} --enable-fortranext --with-yoda --with-hoppet --with-qcdnum ${rootoptpath} ${pyextopt}
          ./configure --prefix=${base} --with-yoda ${rootoptpath} ${pyextopt}
-#         ./configure --prefix=${base} --with-yoda --with-hoppet --with-qcdnum ${rootoptpath} ${pyextopt}
 # Doxygen does not work giving TeX compile error and not producing refman.tex
-#         ./configure --prefix=${base} --with-yoda --with-hoppet ${rootoptpath} ${pyextopt} --disable-doxygen-doc
+#         ./configure --prefix=${base} --enable-fortranext --with-yoda --with-hoppet --with-qcdnum ${rootoptpath} ${pyextopt} --disable-doxygen-doc
       else
         ./configure --prefix=${base} ${rootoptpath} ${pyextopt}
       endif
@@ -861,7 +876,8 @@ if ( ! $mpnnlo ) then
 #      set arc="fastnlo_interface_nlojet-2.3.1pre-2771"
 #      set arc="fastnlo_interface_nlojet-2.5.0-2819"
 #      set arc="fastnlo_interface_nlojet-2.5.0-2858"
-      set arc="fastnlo_interface_nlojet-2.5.1-2888"
+#      set arc="fastnlo_interface_nlojet-2.5.1-2888"
+      set arc="fastnlo_interface_nlojet-2.5.1-3030"
       if ( ! -e ${arc}_installed  ) then
          tar xzf ${arc}.tar.gz
          cd ${arc}
@@ -904,7 +920,7 @@ if ( $withnnlojet ) then
 # NNLOJET modules1 production version
 #      set arc="nnlo-bridge-0.0.46"
 # NNLOJET modules2 production candidate
-      set arc="nnlo-bridge-1.0.0"
+      set arc="nnlo-bridge-1.0.1"
       if ( ! -e ${arc}_installed  ) then
          tar xzf ${arc}.tar.gz
          cd ${arc}
diff --git a/tools/plotting/fastnnlo_pdfunc.py b/tools/plotting/fastnnlo_pdfunc.py
index 363465d94b73fe0f4846ed6dd192ff02f1ff8180..526ed73debaaa041b3a98693f40e418bcc235cef 100755
--- a/tools/plotting/fastnnlo_pdfunc.py
+++ b/tools/plotting/fastnnlo_pdfunc.py
@@ -179,8 +179,10 @@ def plotting(x_axis, xmin, xmax, xs_all, rel_pdf_unc, abs_pdf_unc, dxsr_cn, nost
         #                        else: ax1.set_xscale('linear')
         #                        if logy: ax1.set_yscale('log', nonposy='clip')
         #                        else: ax1.set_yscale('linear')
-        ax1.set_xscale('log', nonposx='clip') # Will become nonpositive= in matplotlib 3.3.x
-        ax1.set_yscale('log', nonposy='clip') # Will become nonpositive= in matplotlib 3.3.x
+        #        ax1.set_xscale('log', nonposx='clip') # Will become nonpositive= in matplotlib 3.3.x
+        #        ax1.set_yscale('log', nonposy='clip') # Will become nonpositive= in matplotlib 3.3.x
+        ax1.set_xscale('log', nonpositive='clip')
+        ax1.set_yscale('log', nonpositive='clip')
         # Set label on x axis on coupled axis from lower plot
         #        ax1.set_xlabel(r'%s' %xlabel, horizontalalignment='right', x=1.0, verticalalignment='top', y=1.0)
         ax1.set_ylabel(r'%s' % ylabel, horizontalalignment='right', x=1.0,
@@ -620,8 +622,7 @@ def main():
                 xs_list_tmp.append(fnlo.GetCrossSection())
 
                 ### Get PDF uncertainties ###
-                rel_pdf_unc_item = np.array(fnlo.GetPDFUncertaintyVec(
-                    fastnlo.kLHAPDF6))  # Now calculated for order n
+                rel_pdf_unc_item = np.array(fnlo.GetPDFUncertaintyVec(fastnlo.kLHAPDF6)) # Now calculated for order n
                 rel_unc_list_tmp.append(rel_pdf_unc_item)
                 if verb:
                     print('[fastnnlo_pdfunc]: \n')
diff --git a/tools/plotting/fastnnlo_scaleclosure.py b/tools/plotting/fastnnlo_scaleclosure.py
index 82e80903c7c9330760327d662659095aff1725fe..deddd1711b870d1f9d4c0770c2d7b8ee7c6f81b9 100755
--- a/tools/plotting/fastnnlo_scaleclosure.py
+++ b/tools/plotting/fastnnlo_scaleclosure.py
@@ -394,8 +394,9 @@ a_fl2nn = np.divide(xs_fnll-xs_nnlo, xs_fnll+xs_nnlo,
 
 # Rel. stat. uncertainty from NNLOJET
 dst_nnlo = np.divide(dxs_nnlo, xs_nnlo, out=np.ones_like(dxs_nnlo), where=xs_nnlo != 0)
-dr_fl2nn = dstat*np.multiply(r_fl2nn, dst_nnlo)
-da_fl2nn = dstat*np.multiply(a_fl2nn, dst_nnlo)
+# errorbar yerr needs to be always positive in the new matplotlib versions
+dr_fl2nn = np.abs(dstat*np.multiply(r_fl2nn, dst_nnlo))
+da_fl2nn = np.abs(dstat*np.multiply(a_fl2nn, dst_nnlo))
 
 # Prepare plotting
 titwgt = 'bold'
diff --git a/tools/plotting/fastnnlo_scaleunc.py b/tools/plotting/fastnnlo_scaleunc.py
index 693158e4bab6d49c87c4eb9f13d0ce75e01eed22..1f531276b88d5ea49b1d418ab074c8a15a2a689a 100755
--- a/tools/plotting/fastnnlo_scaleunc.py
+++ b/tools/plotting/fastnnlo_scaleunc.py
@@ -150,10 +150,10 @@ def plotting(x_axis, xmin, xmax, xs_all, rel_scale_unc, abs_scale_unc, dxsr_cn,
     #    axfmt = LogFormatter(labelOnlyBase=False, minor_thresholds=(2, 0.4))
     #    ax1.get_xaxis().set_minor_formatter(axfmt)
     #        ax1.get_xaxis().set_minor_formatter(NullFormatter())
-    #    ax1.set_xscale('log', nonposx='clip')
-    #    ax1.set_yscale('log', nonposy='clip')
-    ax1.set_xscale('log', nonpositive='clip') # Will become nonpositive= in matplotlib 3.3.x
-    ax1.set_yscale('log', nonpositive='clip') # Will become nonpositive= in matplotlib 3.3.x
+    #    ax1.set_xscale('log', nonposx='clip') # Will become nonpositive= in matplotlib 3.3.x
+    #    ax1.set_yscale('log', nonposy='clip') # Will become nonpositive= in matplotlib 3.3.x
+    ax1.set_xscale('log', nonpositive='clip')
+    ax1.set_yscale('log', nonpositive='clip')
     # Set label on x axis on coupled axis from lower plot
     #        ax1.set_xlabel(r'%s' %xlabel, horizontalalignment='right', x=1.0, verticalalignment='top', y=1.0)
     ax1.set_ylabel(r'%s' % ylabel, horizontalalignment='right', x=1.0,
@@ -588,8 +588,7 @@ def main():
             # Up to NLO, it is possible to use HOPPET with fixed-scale tables
             #                fnlo.UseHoppetScaleVariations(True)
             # Calculate this already for all accessible orders in any case
-            rel_scale_unc_item = np.array(
-                fnlo.GetScaleUncertaintyVec(scale_var_type))
+            rel_scale_unc_item = np.array(fnlo.GetScaleUncertaintyVec(scale_var_type))
             rel_unc_list.append(rel_scale_unc_item)
             if verb:
                 print('[fastnnlo_scaleunc]: \n')
diff --git a/tools/plotting/fastnnlo_statunc.py b/tools/plotting/fastnnlo_statunc.py
index 2b94f5dd8daa1979369f6e4fa7e88715a47de5a6..4b4bf3fa60d49f145a68db710f9aa4a33e771242 100755
--- a/tools/plotting/fastnnlo_statunc.py
+++ b/tools/plotting/fastnnlo_statunc.py
@@ -132,8 +132,10 @@ def plotting(x_axis, xmin, xmax, dxsr_ch, dxsr_or, xlabel, ylabel, title, tablen
     ax1 = plt.subplot(gs[0, :])
     ax1.set_autoscalex_on(True)
     plt.setp(ax1.get_xticklabels(), visible=True)
-    ax1.set_xscale('log', nonposx='clip')
-    ax1.set_yscale('log', nonposy='clip')
+    #    ax1.set_xscale('log', nonposx='clip') # Will become nonpositive= in matplotlib 3.3.x
+    #    ax1.set_yscale('log', nonposy='clip') # Will become nonpositive= in matplotlib 3.3.x
+    ax1.set_xscale('log', nonpositive='clip')
+    ax1.set_yscale('log', nonpositive='clip')
     ax1.set_ylim(0.00001, 0.1)
     ax1.set_xlabel(r'%s' %xlabel, horizontalalignment='right', x=1.0, verticalalignment='top', y=1.0)
     ax1.set_ylabel(r'%s(%s)' % (ylabel, order), horizontalalignment='right', x=1.0,
@@ -178,7 +180,8 @@ def plotting(x_axis, xmin, xmax, dxsr_ch, dxsr_or, xlabel, ylabel, title, tablen
         ax2 = plt.subplot(gs2[0, :])
         ax2.set_autoscalex_on(True)
         plt.setp(ax2.get_xticklabels(), visible=True)
-        ax2.set_xscale('log', nonposx='clip')
+        #    ax2.set_xscale('log', nonposx='clip') # Will become nonpositive= in matplotlib 3.3.x
+        ax2.set_xscale('log', nonpositive='clip')
         ax2.set_ylim(-1.0, 1.5)
         ax2.set_xlabel(r'%s' %xlabel, horizontalalignment='right', x=1.0, verticalalignment='top', y=1.0)
         ax2.set_ylabel(r'%s(%s)' % (ylabel2, order), horizontalalignment='right', x=1.0,
diff --git a/v2.5/generators/nlojet++/ChangeLog b/v2.5/generators/nlojet++/ChangeLog
index 36be2e03fac71975160e5c407e33a20289ea50a8..629b6a9af3a8bc7b6be9fafd3a6dccf309ed5192 100644
--- a/v2.5/generators/nlojet++/ChangeLog
+++ b/v2.5/generators/nlojet++/ChangeLog
@@ -1,6 +1,26 @@
+2024-06-12  Public release of fastNLO interface to NLOJet++ package version 2.5.1, tag 3030
+            ===============================================================================
+
+2024-06-12  Klaus Rabbertz <klaus.rabbertz@cern.ch>
+
+        Update NEWS, ChangeLog
+
+        2024-06-12  Klaus Rabbertz <klaus.rabbertz@cern.ch>
+
+        * v2.5/generators/nlojet++/configure.ac: Require full C++17
+        functionality also for nlojet++ interface
+
+
 2023-07-12  Release of fastNLO interface to NLOJet++ package version 2.5.1, tag 2888
             ========================================================================
 
+2023-07-12  Klaus Rabbertz <klaus.rabbertz@cern.ch>
+
+        * v2.5/generators/nlojet++/ChangeLog,
+        v2.5/generators/nlojet++/NEWS,
+        v2.5/generators/nlojet++/configure.ac: Nlojet++ interface version
+        2.5.1; update NEWS and CL
+
 2023-07-12  Klaus Rabbertz <klaus.rabbertz@cern.ch>
 
         * v2.5/generators/nlojet++/configure.ac,
diff --git a/v2.5/generators/nlojet++/NEWS b/v2.5/generators/nlojet++/NEWS
index 9d3391e2a25ef83a5a14d36e1527950b66cb75e9..4c41b451fb7cbc667e4ab56e19a694bd11975518 100644
--- a/v2.5/generators/nlojet++/NEWS
+++ b/v2.5/generators/nlojet++/NEWS
@@ -1,3 +1,8 @@
+Release Notes for fastnlo_interface_nlojet version 2.5.1 revision 3030
+=======================================================================
+- Require full C++17 functionality also for nlojet++ interface
+
+
 Release Notes for fastnlo_interface_nlojet version 2.5.1 revision 2888
 =======================================================================
 Major improvement (Johannes Gäßler):
diff --git a/v2.5/generators/nlojet++/configure.ac b/v2.5/generators/nlojet++/configure.ac
index 67582390207e375633bc3576eb1359695bb713f1..6c6819506c0dc8fc77fe79bd8fbaef6b1b02416a 100644
--- a/v2.5/generators/nlojet++/configure.ac
+++ b/v2.5/generators/nlojet++/configure.ac
@@ -58,10 +58,10 @@ AM_CONDITIONAL([HAVE_LIBZ],[test "x$HAVE_LIBZ" == "xtrue"])
 AC_HEADER_STDBOOL
 AC_C_INLINE
 
-# Require full C++11 functionality, which has been supported by gcc since version 4.8.1
+# Require full C++17 functionality, which has been supported by gcc since version 11
 # If the following macro is not found, you might want to install the autoconf-archive
 # package and repeat the 'autoreconf -i' step.
-AX_CXX_COMPILE_STDCXX_11
+AX_CXX_COMPILE_STDCXX_17
 
 # Checks for library functions.
 AC_FUNC_ERROR_AT_LINE
diff --git a/v2.5/generators/nlojet++/m4/ax_cxx_compile_stdcxx_17.m4 b/v2.5/generators/nlojet++/m4/ax_cxx_compile_stdcxx_17.m4
new file mode 100644
index 0000000000000000000000000000000000000000..a6834171739bed1a8974fe48999a9c91104cab34
--- /dev/null
+++ b/v2.5/generators/nlojet++/m4/ax_cxx_compile_stdcxx_17.m4
@@ -0,0 +1,35 @@
+# =============================================================================
+#  https://www.gnu.org/software/autoconf-archive/ax_cxx_compile_stdcxx_17.html
+# =============================================================================
+#
+# SYNOPSIS
+#
+#   AX_CXX_COMPILE_STDCXX_17([ext|noext], [mandatory|optional])
+#
+# DESCRIPTION
+#
+#   Check for baseline language coverage in the compiler for the C++17
+#   standard; if necessary, add switches to CXX and CXXCPP to enable
+#   support.
+#
+#   This macro is a convenience alias for calling the AX_CXX_COMPILE_STDCXX
+#   macro with the version set to C++17.  The two optional arguments are
+#   forwarded literally as the second and third argument respectively.
+#   Please see the documentation for the AX_CXX_COMPILE_STDCXX macro for
+#   more information.  If you want to use this macro, you also need to
+#   download the ax_cxx_compile_stdcxx.m4 file.
+#
+# LICENSE
+#
+#   Copyright (c) 2015 Moritz Klammler <moritz@klammler.eu>
+#   Copyright (c) 2016 Krzesimir Nowak <qdlacz@gmail.com>
+#
+#   Copying and distribution of this file, with or without modification, are
+#   permitted in any medium without royalty provided the copyright notice
+#   and this notice are preserved. This file is offered as-is, without any
+#   warranty.
+
+#serial 2
+
+AX_REQUIRE_DEFINED([AX_CXX_COMPILE_STDCXX])
+AC_DEFUN([AX_CXX_COMPILE_STDCXX_17], [AX_CXX_COMPILE_STDCXX([17], [$1], [$2])])
diff --git a/v2.5/toolkit/ChangeLog b/v2.5/toolkit/ChangeLog
index 3fdaf3ac856af5a498265e04e4f8fc5a48ab7b58..3f5c18c77452bc99c065845e1259a0f17643418e 100644
--- a/v2.5/toolkit/ChangeLog
+++ b/v2.5/toolkit/ChangeLog
@@ -1,11 +1,82 @@
+2024-06-13  Public release of the fastNLO_toolkit package version 2.5.1, tag 3034
+            =====================================================================
+
+2024-06-13  Klaus Rabbertz <klaus.rabbertz@cern.ch>
+
+        Fix a missing LDFLAGS setting in case of HOPPET use
+        Fix a few warnings for unused variables in conditional compiling of fnlo-tk-rootout
+
+2024-06-12  Klaus Rabbertz <klaus.rabbertz@cern.ch>
+
+        Adapt hoppet test to new default a_s = 0.1180 instead of 0.1181
+
+2024-06-12  Klaus Rabbertz <klaus.rabbertz@cern.ch>
+
+        Update NEWS, ChangeLog
+
+2024-06-12  Klaus Rabbertz <klaus.rabbertz@cern.ch>
+
+        * v2.5/toolkit/configure.ac: Require full C++17 functionality also
+        for nlojet++ interface
+
+2024-06-12  Public release of the fastNLO_toolkit package version 2.5.1, tag 3028
+            =====================================================================
+
+2024-06-12  Klaus Rabbertz <klaus.rabbertz@cern.ch>
+
+        * v2.5/toolkit/ChangeLog, v2.5/toolkit/NEWS: Update NEWS, ChangeLog
+
+2024-05-31  Klaus Rabbertz <klaus.rabbertz@cern.ch>
+
+        * v2.5/toolkit/fastnlotoolkit/fastNLOReader.cc,
+        v2.5/toolkit/fastnlotoolkit/include/fastnlotk/fastNLOConstants.h.in
+        , v2.5/toolkit/fastnlotoolkit/include/fastnlotk/fastNLOReader.h,
+        v2.5/toolkit/src/fnlo-tk-yodaout.cc: Implement 30 scale variations
+        for ratio
+
+2024-05-22  Johannes Gäßler <johannesg@5d6.de>
+
+        * v2.5/toolkit/fastnlotoolkit/fastNLOInterpolBase.cc: Fix sqrtlog10
+        being hardcoded for NodeDensity
+
+2024-05-10  Klaus Rabbertz <klaus.rabbertz@cern.ch>
+
+        * v2.5/toolkit/src/fnlo-py-print.py: Remove requirement of recent
+        env executable to ensure C++/Python unbuffered output; add env. var.
+        to environment instead
+
+2024-05-10  Klaus Rabbertz <klaus.rabbertz@cern.ch>
+
+        * v2.5/toolkit/data/check/fnl1014_I902309_2-2_cpptest1.log,
+        v2.5/toolkit/data/check/fnl1014_I902309_2-2_rundecastest1.log,
+        v2.5/toolkit/src/fnlo-tk-cppread.cc,
+        v2.5/toolkit/src/fnlo-tk-rootout.cc: Change default PDF evaluation
+        in cppread to LHAPDF; update to PDF2023 alpha_s(mz)
+
 2024-05-05  Public release of the fastNLO_toolkit package version 2.5.1, tag 3022
             =====================================================================
 
-2024-05-05  Klaus Rabbertz <klaus.rabbertz@kit.edu>
+2024-05-05  Klaus Rabbertz <klaus.rabbertz@cern.ch>
 
-        * : commit cd40a771ad9276b48480ea17a4e38a52796f6220 Author: Klaus
-        Rabbertz <klaus.rabbertz@cern.ch> Date:   Sun May 5 21:47:12 2024
-        +0200
+        * v2.5/toolkit/ChangeLog, v2.5/toolkit/NEWS: Fix build Makefile and
+        adapt revision
+
+2024-05-05  Klaus Rabbertz <klaus.rabbertz@cern.ch>
+
+        * v2.5/toolkit/src/Makefile.am: Fix build Makefile
+
+2024-05-05  Klaus Rabbertz <klaus.rabbertz@cern.ch>
+
+        * v2.5/toolkit/ChangeLog, v2.5/toolkit/NEWS, v2.5/toolkit/TODO:
+        Update ChangeLog, NEWS, TODO
+
+2024-05-05  Klaus Rabbertz <klaus.rabbertz@cern.ch>
+
+        * v2.5/toolkit/src/Makefile.am, v2.5/toolkit/src/fnlo-py-print.py,
+        v2.5/toolkit/src/fnlo-tk-cppread.cc,
+        v2.5/toolkit/src/fnlo-tk-rootout.cc,
+        v2.5/toolkit/src/fnlo-tk-yodaout.cc: Improve print-out verbosity;
+        add python script
 
 2024-05-05  Klaus Rabbertz <klaus.rabbertz@cern.ch>
 
diff --git a/v2.5/toolkit/NEWS b/v2.5/toolkit/NEWS
index ae40bd5b7b4c3513874bc937a643607101aaa6f8..d5e4cf5e90a36911516fe9f9537928040a0db519 100644
--- a/v2.5/toolkit/NEWS
+++ b/v2.5/toolkit/NEWS
@@ -1,6 +1,22 @@
+Notes for public release of the fastNLO_toolkit package version 2.5.1, tag 3034
+===============================================================================
+- Fix a missing LDFLAGS setting in case of HOPPET use
+- Fix a few warnings for unused variables in conditional compiling of fnlo-tk-rootout
+- Adapt hoppet test to new default a_s = 0.1180 instead of 0.1181
+- Require full C++17 functionality
+
+
+Notes for public release of the fastNLO_toolkit package version 2.5.1, tag 3028
+===============================================================================
+- Make LHAPDF alpha_s evolution default in cppread, too, to avoid confusion.
+- Update default alpha_s(mZ) to PDG2023
+- Implement possibility of 30 scale variations (for normalised x sections only)
+- Bug fix for use of NodeDensity
+
+
 Notes for public release of the fastNLO_toolkit package version 2.5.1, tag 3022
 ===============================================================================
-- Unify x section and uncertainty priint-outs.
+- Unify x section and uncertainty print-outs.
 - Respect and modify fastNLO verbosity settings.
 - Add example python script for such print-outs.
 
diff --git a/v2.5/toolkit/configure.ac b/v2.5/toolkit/configure.ac
index c84e754c830c08cf3272f6ffbd62b7e1a37f7f24..70994ebaca2f8fa691b9cb513b86ff3af1a63526 100644
--- a/v2.5/toolkit/configure.ac
+++ b/v2.5/toolkit/configure.ac
@@ -57,7 +57,7 @@ AM_CONDITIONAL([HAVE_LIBZ],[test "x$HAVE_LIBZ" == "xtrue"])
 AC_HEADER_STDBOOL
 AC_C_INLINE
 
-# Require full C++11 functionality, which has been supported by gcc since version 4.8.1
+# Require full C++17 functionality, which has been supported by gcc since version 11
 # If the following macro is not found, you might want to install the autoconf-archive
 # package and repeat the 'autoreconf -i' step.
 AX_CXX_COMPILE_STDCXX_17
diff --git a/v2.5/toolkit/data/check/fnl1014_I902309_2-2_hoppetastest1.log b/v2.5/toolkit/data/check/fnl1014_I902309_2-2_hoppetastest1.log
index 891faefa83b56ffeb4c1562e516c8ca627d674f2..41baf0e574fa7ee6b72e30cfc63c1436a87de654 100644
--- a/v2.5/toolkit/data/check/fnl1014_I902309_2-2_hoppetastest1.log
+++ b/v2.5/toolkit/data/check/fnl1014_I902309_2-2_hoppetastest1.log
@@ -1,4 +1,4 @@
-     1  3.000         1   0.000       0.5000         1   18.00       21.00      19.34          1.56016887459E+07  1.64608712441E+07   1.05507   1.39331   1.40000
-     2  3.000         1   0.000       0.5000         2   21.00       24.00      22.37          8.34454474113E+06  8.81384220036E+06   1.05624   1.35830   1.38000
-     3  3.000         2   0.5000      1.000          1   18.00       21.00      19.32          1.51486835075E+07  1.61410660517E+07   1.06551   1.40726   1.40000
-     4  3.000         2   0.5000      1.000          2   21.00       24.00      22.35          8.08815475747E+06  8.57750170104E+06   1.06050   1.38335   1.32000
+     1  3.000         1   0.000       0.5000         1   18.00       21.00      19.34          1.55666620623E+07  1.64229571327E+07   1.05501   1.39245   1.40000
+     2  3.000         1   0.000       0.5000         2   21.00       24.00      22.37          8.32636995623E+06  8.79413797059E+06   1.05618   1.35754   1.38000
+     3  3.000         2   0.5000      1.000          1   18.00       21.00      19.32          1.51146737648E+07  1.61037089999E+07   1.06544   1.40638   1.40000
+     4  3.000         2   0.5000      1.000          2   21.00       24.00      22.35          8.07053823617E+06  8.55828702273E+06   1.06044   1.38254   1.32000
diff --git a/v2.5/toolkit/fastnlotoolkit/fastNLOLHAPDF.cc b/v2.5/toolkit/fastnlotoolkit/fastNLOLHAPDF.cc
index 4e9329bc73dea4e2a4fa7040d4102237c6d39660..391ffe19492baa87f86186a6bedc8045186f9e56 100644
--- a/v2.5/toolkit/fastnlotoolkit/fastNLOLHAPDF.cc
+++ b/v2.5/toolkit/fastnlotoolkit/fastNLOLHAPDF.cc
@@ -413,7 +413,8 @@ XsUncertainty fastNLOLHAPDF::GetXsUncertainty(const fastNLO::EAsUncertaintyStyle
 
 //______________________________________________________________________________
 
-std::vector< std::vector<double> > fastNLOLHAPDF::GetXsUncertaintyVec(const fastNLO::EAsUncertaintyStyle eAsUnc, bool lNorm, int iprint) {
+// std::vector< std::vector<double> > fastNLOLHAPDF::GetXsUncertaintyVec(const fastNLO::EAsUncertaintyStyle eAsUnc, bool lNorm, int iprint) {
+std::vector< std::vector<double> > fastNLOLHAPDF::GetAsUncertaintyVec(const fastNLO::EAsUncertaintyStyle eAsUnc, bool lNorm, int iprint) {
    XsUncertainty xsUnc = fastNLOLHAPDF::GetXsUncertainty(eAsUnc, lNorm);
    if (iprint > 0) {
       string style{AsUncertaintyStyle_to_string(eAsUnc)};
@@ -431,7 +432,8 @@ std::vector< std::vector<double> > fastNLOLHAPDF::GetXsUncertaintyVec(const fast
 
 //______________________________________________________________________________
 
-void fastNLOLHAPDF::PrintXsUncertaintyVec(fastNLO::EAsUncertaintyStyle eAsUnc, std::string UncName, bool lNorm) {
+// void fastNLOLHAPDF::PrintXsUncertaintyVec(fastNLO::EAsUncertaintyStyle eAsUnc, std::string UncName, bool lNorm) {
+void fastNLOLHAPDF::PrintAsUncertaintyVec(fastNLO::EAsUncertaintyStyle eAsUnc, std::string UncName, bool lNorm) {
    XsUncertainty xsUnc = GetXsUncertainty(eAsUnc, lNorm);
    fastNLOTools::PrintXSUncertainty(xsUnc, UncName);
 }
@@ -622,12 +624,12 @@ XsUncertainty fastNLOLHAPDF::GetXsUncertainty(const fastNLO::EPDFUncertaintyStyl
 
 
 //______________________________________________________________________________
-std::vector< std::vector<double> > fastNLOLHAPDF::GetXsUncertaintyVec(const fastNLO::EPDFUncertaintyStyle ePDFUnc, bool lNorm, int iprint) {
+// std::vector< std::vector<double> > fastNLOLHAPDF::GetXsUncertaintyVec(const fastNLO::EPDFUncertaintyStyle ePDFUnc, bool lNorm, int iprint) {
+std::vector< std::vector<double> > fastNLOLHAPDF::GetPDFUncertaintyVec(const fastNLO::EPDFUncertaintyStyle ePDFUnc, bool lNorm, int iprint) {
    XsUncertainty xsUnc = GetXsUncertainty(ePDFUnc, lNorm);
    if (iprint > 0) {
       string style{PDFUncertaintyStyle_to_string(ePDFUnc)};
       string PDFFile = GetLHAPDFFilename();
-      cout << "PPPPPPPPPPPPPPPPPPPP " << PDFFile << endl;
       string UncName = " # Relative PDF Uncertainties (" + style + " " + PDFFile + " " + "TODO" + ")";
       fastNLOTools::PrintXSUncertainty(xsUnc, UncName);
    }
@@ -641,7 +643,8 @@ std::vector< std::vector<double> > fastNLOLHAPDF::GetXsUncertaintyVec(const fast
 
 
 //______________________________________________________________________________
-void fastNLOLHAPDF::PrintXsUncertaintyVec(fastNLO::EPDFUncertaintyStyle ePDFUnc, std::string UncName, bool lNorm) {
+// void fastNLOLHAPDF::PrintXsUncertaintyVec(fastNLO::EPDFUncertaintyStyle ePDFUnc, std::string UncName, bool lNorm) {
+void fastNLOLHAPDF::PrintPDFUncertaintyVec(fastNLO::EPDFUncertaintyStyle ePDFUnc, std::string UncName, bool lNorm) {
    XsUncertainty xsUnc = GetXsUncertainty(ePDFUnc, lNorm);
    fastNLOTools::PrintXSUncertainty(xsUnc, UncName);
 }
@@ -653,12 +656,16 @@ XsUncertainty fastNLOLHAPDF::GetXsUncertainty(const fastNLO::EScaleUncertaintySt
    return fastNLOReader::GetXsUncertainty(eScaleUnc, lNorm, sclfac);
 }
 //______________________________________________________________________________
-std::vector< std::vector<double> > fastNLOLHAPDF::GetXsUncertaintyVec(const fastNLO::EScaleUncertaintyStyle eScaleUnc, bool lNorm, int iprint, double sclfac) {
-   return fastNLOReader::GetXsUncertaintyVec(eScaleUnc, lNorm, iprint, sclfac);
+// std::vector< std::vector<double> > fastNLOLHAPDF::GetXsUncertaintyVec(const fastNLO::EScaleUncertaintyStyle eScaleUnc, bool lNorm, int iprint, double sclfac) {
+//    return fastNLOReader::GetXsUncertaintyVec(eScaleUnc, lNorm, iprint, sclfac);
+std::vector< std::vector<double> > fastNLOLHAPDF::GetScaleUncertaintyVec(const fastNLO::EScaleUncertaintyStyle eScaleUnc, bool lNorm, int iprint, double sclfac) {
+   return fastNLOReader::GetScaleUncertaintyVec(eScaleUnc, lNorm, iprint, sclfac);
 }
 //______________________________________________________________________________
-void fastNLOLHAPDF::PrintXsUncertaintyVec(fastNLO::EScaleUncertaintyStyle eScaleUnc, std::string UncName, bool lNorm, double sclfac) {
-   fastNLOReader::PrintXsUncertaintyVec(eScaleUnc, UncName, lNorm, sclfac);
+// void fastNLOLHAPDF::PrintXsUncertaintyVec(fastNLO::EScaleUncertaintyStyle eScaleUnc, std::string UncName, bool lNorm, double sclfac) {
+//    fastNLOReader::PrintXsUncertaintyVec(eScaleUnc, UncName, lNorm, sclfac);
+void fastNLOLHAPDF::PrintScaleUncertaintyVec(fastNLO::EScaleUncertaintyStyle eScaleUnc, std::string UncName, bool lNorm, double sclfac) {
+   fastNLOReader::PrintScaleUncertaintyVec(eScaleUnc, UncName, lNorm, sclfac);
 }
 
 
@@ -668,10 +675,14 @@ XsUncertainty fastNLOLHAPDF::GetXsUncertainty(const fastNLO::EStatUncertaintySty
    return fastNLOReader::GetXsUncertainty(eStatUnc, lNorm);
 }
 //______________________________________________________________________________
-std::vector< std::vector<double> > fastNLOLHAPDF::GetXsUncertaintyVec(const fastNLO::EStatUncertaintyStyle eStatUnc, bool lNorm, int iprint) {
-   return fastNLOReader::GetXsUncertaintyVec(eStatUnc, lNorm, iprint);
+// std::vector< std::vector<double> > fastNLOLHAPDF::GetXsUncertaintyVec(const fastNLO::EStatUncertaintyStyle eStatUnc, bool lNorm, int iprint) {
+//    return fastNLOReader::GetXsUncertaintyVec(eStatUnc, lNorm, iprint);
+std::vector< std::vector<double> > fastNLOLHAPDF::GetStatUncertaintyVec(const fastNLO::EStatUncertaintyStyle eStatUnc, bool lNorm, int iprint) {
+   return fastNLOReader::GetStatUncertaintyVec(eStatUnc, lNorm, iprint);
 }
 //______________________________________________________________________________
-void fastNLOLHAPDF::PrintXsUncertaintyVec(fastNLO::EStatUncertaintyStyle eStatUnc, std::string UncName, bool lNorm) {
-   fastNLOReader::PrintXsUncertaintyVec(eStatUnc, UncName, lNorm);
+// void fastNLOLHAPDF::PrintXsUncertaintyVec(fastNLO::EStatUncertaintyStyle eStatUnc, std::string UncName, bool lNorm) {
+//    fastNLOReader::PrintXsUncertaintyVec(eStatUnc, UncName, lNorm);
+void fastNLOLHAPDF::PrintStatUncertaintyVec(fastNLO::EStatUncertaintyStyle eStatUnc, std::string UncName, bool lNorm) {
+   fastNLOReader::PrintStatUncertaintyVec(eStatUnc, UncName, lNorm);
 }
diff --git a/v2.5/toolkit/fastnlotoolkit/fastNLOReader.cc b/v2.5/toolkit/fastnlotoolkit/fastNLOReader.cc
index 816e515ba14257f50b79a8dd35325090fd68ba73..3045658185b19b57e5a4d7a67bdc7cc533766689 100644
--- a/v2.5/toolkit/fastnlotoolkit/fastNLOReader.cc
+++ b/v2.5/toolkit/fastnlotoolkit/fastNLOReader.cc
@@ -3473,10 +3473,14 @@ XsUncertainty fastNLOReader::GetXsUncertainty(const EScaleUncertaintyStyle eScal
       SetScaleFactorsMuRMuF(xmurn[iscl],xmufn[iscl]);
       CalcCrossSection();
       bool lNormScale = false;
-      if (lNorm && eScaleUnc == kAsymmetricRatio) {
-         lNormScale = true;
+      if (lNorm) {
+         if (eScaleUnc == kAsymmetricRatio) {
+            lNormScale = true;
+         }
+         MyXSection = GetNormCrossSection(lNormScale,xmurd[iscl],xmufd[iscl]);
+      } else {
+         MyXSection = GetCrossSection(lNorm);
       }
-      MyXSection = GetNormCrossSection(lNormScale,xmurd[iscl],xmufd[iscl]);
       for (unsigned int iobs = 0; iobs < NObsBin; iobs++) {
          if (iscl == 0) {
             XsUnc.xs.push_back(MyXSection[iobs]);
@@ -3510,7 +3514,8 @@ XsUncertainty fastNLOReader::GetXsUncertainty(const EScaleUncertaintyStyle eScal
 
 //______________________________________________________________________________
 
-std::vector< std::vector<double> > fastNLOReader::GetXsUncertaintyVec(const EScaleUncertaintyStyle eScaleUnc, bool lNorm, int iprint, double sclfac) {
+// std::vector< std::vector<double> > fastNLOReader::GetXsUncertaintyVec(const EScaleUncertaintyStyle eScaleUnc, bool lNorm, int iprint, double sclfac) {
+std::vector< std::vector<double> > fastNLOReader::GetScaleUncertaintyVec(const EScaleUncertaintyStyle eScaleUnc, bool lNorm, int iprint, double sclfac) {
    XsUncertainty xsUnc = fastNLOReader::GetXsUncertainty(eScaleUnc, lNorm, sclfac);
    if (iprint > 0) {
       string style{ScaleUncertaintyStyle_to_string(eScaleUnc)};
@@ -3528,7 +3533,8 @@ std::vector< std::vector<double> > fastNLOReader::GetXsUncertaintyVec(const ESca
 
 //______________________________________________________________________________
 
-void fastNLOReader::PrintXsUncertaintyVec(fastNLO::EScaleUncertaintyStyle eScaleUnc, std::string UncName, bool lNorm, double sclfac) {
+// void fastNLOReader::PrintXsUncertaintyVec(fastNLO::EScaleUncertaintyStyle eScaleUnc, std::string UncName, bool lNorm, double sclfac) {
+void fastNLOReader::PrintScaleUncertaintyVec(fastNLO::EScaleUncertaintyStyle eScaleUnc, std::string UncName, bool lNorm, double sclfac) {
    XsUncertainty xsUnc = GetXsUncertainty(eScaleUnc, lNorm, sclfac);
    fastNLOTools::PrintXSUncertainty(xsUnc, UncName);
 }
@@ -3586,7 +3592,8 @@ XsUncertainty fastNLOReader::GetXsUncertainty(const EStatUncertaintyStyle eStatU
 
 
 //______________________________________________________________________________
-std::vector< std::vector<double> > fastNLOReader::GetXsUncertaintyVec(const EStatUncertaintyStyle eStatUnc, bool lNorm, int iprint) {
+// std::vector< std::vector<double> > fastNLOReader::GetXsUncertaintyVec(const EStatUncertaintyStyle eStatUnc, bool lNorm, int iprint) {
+std::vector< std::vector<double> > fastNLOReader::GetStatUncertaintyVec(const EStatUncertaintyStyle eStatUnc, bool lNorm, int iprint) {
    XsUncertainty xsUnc = fastNLOReader::GetXsUncertainty(eStatUnc, lNorm);
    if (iprint > 0) {
       string style{StatUncertaintyStyle_to_string(eStatUnc)};
@@ -3604,7 +3611,8 @@ std::vector< std::vector<double> > fastNLOReader::GetXsUncertaintyVec(const ESta
 
 //______________________________________________________________________________
 
-void fastNLOReader::PrintXsUncertaintyVec(fastNLO::EStatUncertaintyStyle eStatUnc, std::string UncName, bool lNorm) {
+// void fastNLOReader::PrintXsUncertaintyVec(fastNLO::EStatUncertaintyStyle eStatUnc, std::string UncName, bool lNorm) {
+void fastNLOReader::PrintStatUncertaintyVec(fastNLO::EStatUncertaintyStyle eStatUnc, std::string UncName, bool lNorm) {
    XsUncertainty xsUnc = GetXsUncertainty(eStatUnc, lNorm);
    fastNLOTools::PrintXSUncertainty(xsUnc, UncName);
 }
diff --git a/v2.5/toolkit/fastnlotoolkit/include/fastnlotk/fastNLOLHAPDF.h b/v2.5/toolkit/fastnlotoolkit/include/fastnlotk/fastNLOLHAPDF.h
index b6adee55fa7be149d5da4fdfb37989dc5bdfd1a3..af931c3f9bdad835d6f82328696cd0be0752d341 100644
--- a/v2.5/toolkit/fastnlotoolkit/include/fastnlotk/fastNLOLHAPDF.h
+++ b/v2.5/toolkit/fastnlotoolkit/include/fastnlotk/fastNLOLHAPDF.h
@@ -61,23 +61,31 @@ public:
    double GetAlphasMz() const;
 
    //! Return struct with vectors (for C++) or vector of vectors (for Python) containing the cross section values and the selected uncertainty
-   //! Enum of Uncertaintstyle decides on method to call
+   //! Enum of Uncertaintstyle decides on method to call, but does not work for Python extension --> switch back to use differently named UncertaintyVec methods
    // Use implementations in fastNLOReader for these
    XsUncertainty GetXsUncertainty(const fastNLO::EStatUncertaintyStyle eStatUnc, bool lNorm = false);
-   std::vector< std::vector<double> > GetXsUncertaintyVec(const fastNLO::EStatUncertaintyStyle eStatUnc, bool lNorm = false, int iprint = 0);
-   void PrintXsUncertaintyVec(fastNLO::EStatUncertaintyStyle, std::string UncName, bool lNorm = false);
+   // std::vector< std::vector<double> > GetXsUncertaintyVec(const fastNLO::EStatUncertaintyStyle eStatUnc, bool lNorm = false, int iprint = 0);
+   // void PrintXsUncertaintyVec(fastNLO::EStatUncertaintyStyle, std::string UncName, bool lNorm = false);
+   std::vector< std::vector<double> > GetStatUncertaintyVec(const fastNLO::EStatUncertaintyStyle eStatUnc, bool lNorm = false, int iprint = 0);
+   void PrintStatUncertaintyVec(fastNLO::EStatUncertaintyStyle, std::string UncName, bool lNorm = false);
    //
    XsUncertainty GetXsUncertainty(const fastNLO::EScaleUncertaintyStyle eScaleUnc, bool lNorm = false, double sclfac = 1.);
-   std::vector< std::vector<double> > GetXsUncertaintyVec(const fastNLO::EScaleUncertaintyStyle eScaleUnc, bool lNorm = false, int iprint = 0, double sclfac = 1.);
-   void PrintXsUncertaintyVec(fastNLO::EScaleUncertaintyStyle, std::string UncName, bool lNorm = false, double sclfac =1.);
+   // std::vector< std::vector<double> > GetXsUncertaintyVec(const fastNLO::EScaleUncertaintyStyle eScaleUnc, bool lNorm = false, int iprint = 0, double sclfac = 1.);
+   // void PrintXsUncertaintyVec(fastNLO::EScaleUncertaintyStyle, std::string UncName, bool lNorm = false, double sclfac =1.);
+   std::vector< std::vector<double> > GetScaleUncertaintyVec(const fastNLO::EScaleUncertaintyStyle eScaleUnc, bool lNorm = false, int iprint = 0, double sclfac = 1.);
+   void PrintScaleUncertaintyVec(fastNLO::EScaleUncertaintyStyle, std::string UncName, bool lNorm = false, double sclfac =1.);
    // Specific implementations in fastNLOLHAPDF
    XsUncertainty GetXsUncertainty(const fastNLO::EAsUncertaintyStyle eAsUnc, bool lNorm = false);
-   std::vector< std::vector<double> > GetXsUncertaintyVec(const fastNLO::EAsUncertaintyStyle eAsUnc, bool lNorm = false, int iprint = 0);
-   void PrintXsUncertaintyVec(fastNLO::EAsUncertaintyStyle, std::string UncName, bool lNorm = false);
+   // std::vector< std::vector<double> > GetXsUncertaintyVec(const fastNLO::EAsUncertaintyStyle eAsUnc, bool lNorm = false, int iprint = 0);
+   // void PrintXsUncertaintyVec(fastNLO::EAsUncertaintyStyle, std::string UncName, bool lNorm = false);
+   std::vector< std::vector<double> > GetAsUncertaintyVec(const fastNLO::EAsUncertaintyStyle eAsUnc, bool lNorm = false, int iprint = 0);
+   void PrintAsUncertaintyVec(fastNLO::EAsUncertaintyStyle, std::string UncName, bool lNorm = false);
    //
    XsUncertainty GetXsUncertainty(const fastNLO::EPDFUncertaintyStyle ePDFUnc, bool lNorm = false);
-   std::vector<std::vector<double> > GetXsUncertaintyVec(const fastNLO::EPDFUncertaintyStyle, bool lNorm = false, int iprint = 0);
-   void PrintXsUncertaintyVec(fastNLO::EPDFUncertaintyStyle, std::string UncName, bool lNorm = false);
+   // std::vector<std::vector<double> > GetXsUncertaintyVec(const fastNLO::EPDFUncertaintyStyle, bool lNorm = false, int iprint = 0);
+   // void PrintXsUncertaintyVec(fastNLO::EPDFUncertaintyStyle, std::string UncName, bool lNorm = false);
+   std::vector<std::vector<double> > GetPDFUncertaintyVec(const fastNLO::EPDFUncertaintyStyle, bool lNorm = false, int iprint = 0);
+   void PrintPDFUncertaintyVec(fastNLO::EPDFUncertaintyStyle, std::string UncName, bool lNorm = false);
 
    std::vector<LHAPDF::PDFUncertainty>  GetPDFUncertaintyLHAPDF(double cl=100*erf(1/sqrt(2)), bool alternative=false); //!< return PDF uncertainty, formulae taken from LHAPDF6
    std::vector<double> CalcPDFUncertaintyMinus(const std::vector<LHAPDF::PDFUncertainty>& ) const; //!<get vector<double> for PDF-minus uncertainty. Uncertainties are POSITIVE!
diff --git a/v2.5/toolkit/fastnlotoolkit/include/fastnlotk/fastNLOReader.h b/v2.5/toolkit/fastnlotoolkit/include/fastnlotk/fastNLOReader.h
index 23ac03c4c7ed8b787ff1df5d92f52e814afb1c2f..c491b5cea33fe77068c9549f6e426decfcb2b6a3 100644
--- a/v2.5/toolkit/fastnlotoolkit/include/fastnlotk/fastNLOReader.h
+++ b/v2.5/toolkit/fastnlotoolkit/include/fastnlotk/fastNLOReader.h
@@ -98,14 +98,18 @@ public:
    std::vector < std::vector < double > > GetCrossSection2Dim();
 
    //! Return struct with vectors (for C++) or vector of vectors (for Python) containing the cross section values and the selected uncertainty
-   //! Enum of Uncertaintstyle decides on method to call
+   //! Enum of Uncertaintstyle decides on method to call, but does not work for Python extension --> switch back to use differently named UncertaintyVec methods
    XsUncertainty GetXsUncertainty(const fastNLO::EScaleUncertaintyStyle eScaleUnc, bool lNorm = false, double sclfac = 1.);
-   std::vector< std::vector<double> > GetXsUncertaintyVec(const fastNLO::EScaleUncertaintyStyle eScaleUnc, bool lNorm = false, int iprint = 0, double sclfac = 1.);
-   void PrintXsUncertaintyVec(fastNLO::EScaleUncertaintyStyle, std::string UncName, bool lNorm = false, double sclfac =1.);
+   // std::vector< std::vector<double> > GetXsUncertaintyVec(const fastNLO::EScaleUncertaintyStyle eScaleUnc, bool lNorm = false, int iprint = 0, double sclfac = 1.);
+   // void PrintXsUncertaintyVec(fastNLO::EScaleUncertaintyStyle, std::string UncName, bool lNorm = false, double sclfac =1.);
+   std::vector< std::vector<double> > GetScaleUncertaintyVec(const fastNLO::EScaleUncertaintyStyle eScaleUnc, bool lNorm = false, int iprint = 0, double sclfac = 1.);
+   void PrintScaleUncertaintyVec(fastNLO::EScaleUncertaintyStyle, std::string UncName, bool lNorm = false, double sclfac =1.);
    //
    XsUncertainty GetXsUncertainty(const fastNLO::EStatUncertaintyStyle eStatUnc, bool lNorm = false);
-   std::vector< std::vector<double> > GetXsUncertaintyVec(const fastNLO::EStatUncertaintyStyle eStatUnc, bool lNorm = false, int iprint = 0);
-   void PrintXsUncertaintyVec(fastNLO::EStatUncertaintyStyle, std::string UncName, bool lNorm = false);
+   // std::vector< std::vector<double> > GetXsUncertaintyVec(const fastNLO::EStatUncertaintyStyle eStatUnc, bool lNorm = false, int iprint = 0);
+   // void PrintXsUncertaintyVec(fastNLO::EStatUncertaintyStyle, std::string UncName, bool lNorm = false);
+   std::vector< std::vector<double> > GetStatUncertaintyVec(const fastNLO::EStatUncertaintyStyle eStatUnc, bool lNorm = false, int iprint = 0);
+   void PrintStatUncertaintyVec(fastNLO::EStatUncertaintyStyle, std::string UncName, bool lNorm = false);
 
    // ---- Getters for fastNLOReader member variables ---- //
    fastNLO::EScaleFunctionalForm GetMuRFunctionalForm() const { return fMuRFunc; };
diff --git a/v2.5/toolkit/src/Makefile.am b/v2.5/toolkit/src/Makefile.am
index d456f2eb15e7fe6be158ea733dd27e1366c50d4d..75bc6a4180d00379dd951c00c18dee48f7a4bc6b 100644
--- a/v2.5/toolkit/src/Makefile.am
+++ b/v2.5/toolkit/src/Makefile.am
@@ -43,7 +43,7 @@ fnlo_tk_merge_SOURCES   = fnlo-tk-merge.cc
 fnlo_tk_merge2_SOURCES  = fnlo-tk-merge2.cc
 fnlo_tk_append_SOURCES  = fnlo-tk-append.cc
 fnlo_tk_modify_SOURCES  = fnlo-tk-modify.cc
-fnlo_tk_cat_SOURCES   = fnlo-tk-cat.cc
+fnlo_tk_cat_SOURCES     = fnlo-tk-cat.cc
 
 #
 # Preprocessor flags
@@ -57,14 +57,11 @@ if HAVE_LHAPDF
 endif
 
 # Individual targets
-fnlo_tk_cppread_CPPFLAGS = $(my_include_dirs) -I${includedir} $(LHAPDFCPPFLAGS) $(AM_CPPFLAGS)
-fnlo_tk_example_CPPFLAGS = $(my_include_dirs) -I${includedir} $(ROOTCPPFLAGS) $(AM_CPPFLAGS)
-if HAVE_ROOT
-   fnlo_tk_example_CPPFLAGS += $(ROOTCPPFLAGS)
-endif
-fnlo_tk_yodaout_CPPFLAGS = $(my_include_dirs) -I${includedir} $(YODACPPFLAGS) $(AM_CPPFLAGS)
-fnlo_tk_statunc_CPPFLAGS = $(my_include_dirs) -I${includedir} $(YODACPPFLAGS) $(AM_CPPFLAGS)
-fnlo_tk_rootout_CPPFLAGS = $(my_include_dirs) -I${includedir} $(ROOTCPPFLAGS) $(AM_CPPFLAGS)
+fnlo_tk_cppread_CPPFLAGS = $(my_include_dirs) -I${includedir} $(AM_CPPFLAGS) $(LHAPDFCPPFLAGS)
+fnlo_tk_example_CPPFLAGS = $(my_include_dirs) -I${includedir} $(AM_CPPFLAGS) $(ROOTCPPFLAGS)
+fnlo_tk_yodaout_CPPFLAGS = $(my_include_dirs) -I${includedir} $(AM_CPPFLAGS) $(YODACPPFLAGS)
+fnlo_tk_statunc_CPPFLAGS = $(my_include_dirs) -I${includedir} $(AM_CPPFLAGS) $(YODACPPFLAGS)
+fnlo_tk_rootout_CPPFLAGS = $(my_include_dirs) -I${includedir} $(AM_CPPFLAGS) $(ROOTCPPFLAGS)
 fnlo_tk_merge_CPPFLAGS   = $(my_include_dirs) -I${includedir} $(AM_CPPFLAGS)
 fnlo_tk_merge2_CPPFLAGS  = $(my_include_dirs) -I${includedir} $(AM_CPPFLAGS)
 fnlo_tk_append_CPPFLAGS  = $(my_include_dirs) -I${includedir} $(AM_CPPFLAGS)
@@ -74,18 +71,15 @@ fnlo_tk_cat_CPPFLAGS     = $(my_include_dirs) -I${includedir} $(AM_CPPFLAGS)
 #
 # C++ compiler flags
 #
-# Recall: -std=c++11 is requested by default through configure.ac macro AX_CXX_COMPILE_STDCXX_11
+# Recall: -std=c++17 is requested by default through configure.ac macro AX_CXX_COMPILE_STDCXX_17
 #         and works with g++, clang etc.!
-#         -std=gnu++11 is restricted to g++ only and not the best option
+#         -std=gnu++17 is restricted to g++ only and not the best option
 # All targets
 AM_CXXFLAGS = -g -O2 -Wall -Wdeprecated-declarations
 # Debug flags
 # AM_CXXFLAGS = -g -ftrapping-math -fsignaling-nans -O0 -Wall
-fnlo_tk_cppread_CXXFLAGS = $(AM_CXXFLAGS)
-fnlo_tk_example_CXXFLAGS = $(AM_CXXFLAGS)
-if HAVE_ROOT
-   fnlo_tk_example_CXXFLAGS += $(ROOTCXXFLAGS)
-endif
+fnlo_tk_cppread_CXXFLAGS = $(AM_CXXFLAGS) $(HOPPETCXXFLAGS)
+fnlo_tk_example_CXXFLAGS = $(AM_CXXFLAGS) $(ROOTCXXFLAGS)
 fnlo_tk_yodaout_CXXFLAGS = $(AM_CXXFLAGS)
 fnlo_tk_statunc_CXXFLAGS = $(AM_CXXFLAGS)
 fnlo_tk_rootout_CXXFLAGS = $(AM_CXXFLAGS) $(ROOTCXXFLAGS)
@@ -101,13 +95,13 @@ fnlo_tk_cat_CXXFLAGS     = $(AM_CXXFLAGS)
 # Require lhapdf, use lhapdf-config if possible
 # All targets
 AM_LDFLAGS = -L${pkglibdir} -lfastnlotoolkit
+if HAVE_HOPPET
+   AM_LDFLAGS += -lgfortran
+endif
 my_lib_dirs = -L${srcdir}/../fastnlotoolkit -lfastnlotoolkit -L${top_builddir}/fastnlotoolkit -lfastnlotoolkit -L${top_srcdir}/fastnlotoolkit -lfastnlotoolkit
 # Individual targets
-fnlo_tk_cppread_LDFLAGS = $(my_lib_dirs) $(AM_LDFLAGS) $(LHAPDFLDFLAGS)
-fnlo_tk_example_LDFLAGS = $(my_lib_dirs) $(AM_LDFLAGS) $(LHAPDFLDFLAGS)
-if HAVE_ROOT
-   fnlo_tk_example_LDFLAGS += $(ROOTLDFLAGS)
-endif
+fnlo_tk_cppread_LDFLAGS = $(my_lib_dirs) $(AM_LDFLAGS) $(LHAPDFLDFLAGS) $(HOPPETLDFLAGS)
+fnlo_tk_example_LDFLAGS = $(my_lib_dirs) $(AM_LDFLAGS) $(LHAPDFLDFLAGS) $(ROOTLDFLAGS)
 fnlo_tk_yodaout_LDFLAGS = $(my_lib_dirs) $(AM_LDFLAGS) $(LHAPDFLDFLAGS) $(YODALDFLAGS)
 fnlo_tk_statunc_LDFLAGS = $(my_lib_dirs) $(AM_LDFLAGS) $(LHAPDFLDFLAGS) $(YODALDFLAGS)
 fnlo_tk_rootout_LDFLAGS = $(my_lib_dirs) $(AM_LDFLAGS) $(LHAPDFLDFLAGS) $(ROOTLDFLAGS)
diff --git a/v2.5/toolkit/src/fnlo-tk-rootout.cc b/v2.5/toolkit/src/fnlo-tk-rootout.cc
index fe1c78986b0eb034b7391c3fd7d6a3b9bcac37f8..a6a29cc7fa084f32487840c06b1c1cbe7ce917e7 100644
--- a/v2.5/toolkit/src/fnlo-tk-rootout.cc
+++ b/v2.5/toolkit/src/fnlo-tk-rootout.cc
@@ -61,9 +61,11 @@ int main(int argc, char** argv) {
    }
 
    //! --- Parse commmand line
+#ifdef WITH_ROOT
    char buffer[1024];
    char titlel[1024];
    char titleu[1024];
+#endif
    string tablename;
    if (argc <= 1) {
       yell << "" << endl;
@@ -165,7 +167,7 @@ int main(int argc, char** argv) {
    //! --- Uncertainty choice
    EScaleUncertaintyStyle eScaleUnc = kScaleNone;
    EPDFUncertaintyStyle   ePDFUnc   = kPDFNone;
-   EAsUncertaintyStyle    eAsUnc    = kAsNone;
+   // EAsUncertaintyStyle    eAsUnc    = kAsNone;
    EStatUncertaintyStyle  eStatUnc  = kStatNone;
    string chunc;
    if (argc > 3) {
@@ -423,9 +425,11 @@ int main(int argc, char** argv) {
 #endif
 
    //  Define histogram multiplicity and initialise histogram counter
+#ifdef WITH_ROOT
    const unsigned int nMult = 3;
-   unsigned int nHist       = 0;
    unsigned int nHistAll    = 0;
+#endif
+   unsigned int nHist       = 0;
 
    //! --- Now loop over PDF sets
    for (unsigned int iPDF=0; iPDF<PDFFiles.size(); iPDF++) {
@@ -470,7 +474,9 @@ int main(int argc, char** argv) {
          fnlo->CalcCrossSection();
 
          //! Do PDF, statistical/numerical, and scale uncertainties
+#ifdef WITH_ROOT
          unsigned int iOffs[4] = {1,3,6,8};
+#endif
          for (unsigned int iUnc = 0; iUnc<4; iUnc++) {
 
             //! Get cross section & uncertainties (only for additive perturbative contributions)
@@ -561,7 +567,6 @@ int main(int argc, char** argv) {
 #ifdef WITH_ROOT
             //! --- Book ROOT histos
             TH1D *histo[nMult*nHist];
-#endif
 
             //! Loop over no. of histograms
             unsigned int iobs = 0;
@@ -593,7 +598,6 @@ int main(int argc, char** argv) {
                   exit(1);
                }
 
-#ifdef WITH_ROOT
                // Arrays to fill ROOT histos
                // N+1 bin borders
                double xbins[nHistBins+1];
@@ -656,7 +660,6 @@ int main(int argc, char** argv) {
                histo[ih+iUnc]->GetXaxis()->SetTitle(fnlo->GetDimLabels()[NDim-1].c_str());
                histo[ih+iUnc]->GetYaxis()->SetTitle(titleu);
                nHistAll++;
-#endif
 
                if (NDim == 1 ) {
                   iobs = 0;
@@ -677,6 +680,7 @@ int main(int argc, char** argv) {
                   }
                }
             }
+#endif
          }
       }
    }