diff --git a/CHANGELOG.md b/CHANGELOG.md
index 493d5bdfb239a9fdb761af5ded85e8eadbc500e1..8e6b38dfb6dfc878b148c60c05aa2df44d238ee6 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -15,17 +15,15 @@
 
 ----
 
-## *UNRELEASED* (last updated: 2020-03-19)
+## *UNRELEASED* (last updated: 2021-01-18)
 
 **Here we collect the list of *added*, *changed*, *deprecated*, *removed* and *fixed* features in preparation for the next release.**
 
 ### Added
-- `EFSET` option for voronoi: read in whished value of Fermi level from inputcard (core state energies of starting potential is shifted accordingly)
-- `<AFAC_RAD>` input for voronoi: read in a factor of radial mesh (r(i)=b*(exp(a*(i-1))-1)) where b is determined from a and rmt. Default value (a=0.025) is obtained with setting AFAC_RAD to a negative number. If a is increased (decreased) the start of the radial mesh is shifted to a lower (higher) radius.
-- `POT_NS_CUTOFF` option for KKRhost and KKRimp (see issue #124)
+- None
 
 ### Changed
-- cutoff of potential components which are (almost) zero (see issue #124 and `POT_NS_CUTOFF`)
+- None
 
 ### Deprecated
 - None
@@ -36,6 +34,40 @@
 ### Fixed
 - None
 
+----
+
+## v3.5 (2021-01-18)
+
+Some improvements and bugfixes to use with AiiDA-KKR plugin.
+
+### Added
+- `EFSET` option for voronoi: read in whished value of Fermi level from inputcard (core state energies of starting potential is shifted accordingly)
+- `<AFAC_RAD>` input for voronoi: read in a factor of radial mesh (r(i)=b*(exp(a*(i-1))-1)) where b is determined from a and rmt. Default value (a=0.025) is obtained with setting AFAC_RAD to a negative number. If a is increased (decreased) the start of the radial mesh is shifted to a lower (higher) radius.
+- `POT_NS_CUTOFF` option for KKRhost and KKRimp (see issue #124)
+- improved cmake settings (compile options `TIMING_DETAIL`, `ENABLE_DEBUG_SYMBOLS`, `OPTFLAGS_xHOST`. `OPTFLAGS_AMD`, `OPTFLAGS_AVX512`, `ENABLE_OMP_EVERYWHERE` and `ENABLE_OPTRPT`)
+- add MKL patch for AMD hardware with `ENABLE_PATCH_INTEL` compile option (needs `mpiifort`, MPI+OpenMP parallelization and `OPTFLAGS_AMD` to be active)
+- add broyden spin mixing for nonco angles
+- add `NSIMPLEMIXFIRST` input to do some simplemixing steps before Broyden starts
+- add `set_kmesh_large` run option to force the largest k-mesh on all energy points
+- timing information for PKKprime
+- use '#' as comment sign in inputcard (see issue #128)
+
+### Changed
+- cutoff of potential components which are (almost) zero (see issue #124 and `POT_NS_CUTOFF`)
+- rename `set_cheby_nosoc` to `decouple_spins_cheby` (now `set_cheby_nosoc` again gives the expected behavior of setting `SOCSCALE` to 0, see issue #120)
+- print run and test options in the beginning to `output.000.txt`
+
+### Removed
+- `mixbroydenspinangle` in KKRimp that was unused and a copy of `mixbroydenspin`
+
+### Fixed
+- writeout of test and run options which printed garbage becaus of missing initialization
+- behavior when `VCONST` and `IVSHIFT` are in input
+- open some output file of KKRimp only when necessary
+- small fixes for LDA+U
+- small bugfixes
+
+----
 
 ## v3.4 (2019-08-30)
 
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 34f7dc7e476c1c1b5a8f74f8f0211713a48f2b7c..c887a7079ad157d439e6c2f9c40248502a37b32b 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -9,6 +9,8 @@ set(CMAKE_Fortran_MODULE_DIRECTORY ${PROJECT_BINARY_DIR}/modules)
 # here the executables are written to
 set( CMAKE_RUNTIME_OUTPUT_DIRECTORY ./ )
 
+# maybe useful for future library dependecies
+set(complib "")
 
 # we define some compiler flags
 include( ./cmake/compiler_config.txt )
@@ -16,18 +18,26 @@ include( ./cmake/compiler_config.txt )
 #define build type and compile options
 include( ./cmake/compile_options.txt )
 
-
-# maybe useful for future library dependecies
-set(complib "")
+# default values for compile options (see cmake/compile_options.txt for details)
+option(TIMING_DETAIL "Write detailed timing information (e.g. in rllsll)" OFF)
+option(ENABLE_DEBUG_SYMBOLS "Add debug symbols (-g) everywhere" OFF)
+option(ENABLE_OPTRPT "Generate optimization reports (*.optrpt files) at compilation" OFF)
+option(OPTFLAGS_xHOST "Turn on xHost optimization flag for release build" ON)
+option(OPTFLAGS_AVX512 "Use AVX512 instruction set for release build" OFF)
+option(OPTFLAGS_AMD "FLAGS for AMD64 node on iffslurm (see compiler_config.txt)" OFF)
+option(ENABLE_PATCH_INTEL "Use patch to make MKL think it works on intel hardware (EXPERIMENTAL!!!)" OFF)
+option(ENABLE_MPI "Enable MPI parallelization" ON)
+option(ENABLE_OMP "Enable OpenMP parallelization" OFF)
+option(ENABLE_OMP_EVERYWHERE "Add openmp compile flags everywhere" OFF)
 
 
 # default values of codes to compile:
 option(COMPILE_KKRHOST "Compile KKRhost" ON)
-option(COMPILE_KKRIMP "Compile KKRimp" ON)
+option(COMPILE_KKRIMP "Compile KKRimp" OFF)
 option(COMPILE_KKRSUSC "Compile KKRsusc" OFF)
-option(COMPILE_PKKPRIME "Compile PKKprime" ON)
+option(COMPILE_PKKPRIME "Compile PKKprime" OFF)
 option(COMPILE_VORONOI "Compile voronoi" ON)
-option(COMPILE_RHOQ "Compile rhoq" ON)
+option(COMPILE_RHOQ "Compile rhoq" OFF)
 option(WRITE_RLLSLL_STANDALONE_INPUT "Set option to write out rllsll input files" OFF)
 option(ENABLE_RLLSLL_STANDALONE "Compile rllsll standalone test exec" OFF)
 
diff --git a/cmake/compile_options.txt b/cmake/compile_options.txt
index 3ded148817eae415e9e48f038b54a30019a4e986..3ba222a809a5a840c73a0f485c9b42bc41108234 100644
--- a/cmake/compile_options.txt
+++ b/cmake/compile_options.txt
@@ -11,13 +11,14 @@ endif()
 
 # common preprocessing options for all compilers
 add_definitions(-DCPP_TIMING)
+if(TIMING_DETAIL)
+    add_definitions(-DCPP_TIMING_DETAIL)
+endif()
 
 # compiler flags etc for parallelization
 # MPI option (enable with '-DENABLE_MPI=ON')
 # and OpenMP option (enable with '-DENABLE_OMP=ON')
 # hybrid version with -DENABLE_MPI=ON and -DENABLE_OMP=ON
-option(ENABLE_MPI "Enable MPI parallelization" ON)
-option(ENABLE_OMP "Enable OpenMP parallelization" OFF)
 set(ompflags "") # default
 if(ENABLE_MPI)
     message("MPI is enabled")
@@ -29,6 +30,9 @@ if(ENABLE_MPI)
             set(ompflags "-qopenmp")
         elseif(CMAKE_Fortran_COMPILER_ID MATCHES GNU)
             set(ompflags "-fopenmp")
+            if(ENABLE_TSAN)
+                set(ompflags "${ompflags} -lomp")
+            endif()
         endif()
         set(compflag "hybrid")
     else()
@@ -41,11 +45,25 @@ elseif(ENABLE_OMP)
         set(ompflags "-qopenmp")
     elseif(CMAKE_Fortran_COMPILER_ID MATCHES GNU)
         set(ompflags "-fopenmp")
+        if(ENABLE_TSAN)
+            set(ompflags "${ompflags} -lomp")
+        endif()
     endif()
     set(compflag "openmp")
 else()
     message("both MPI and OpenMP are disabled")
 endif()
+if(ENABLE_OMP_EVERYWHERE)
+    if(CMAKE_Fortran_COMPILER_ID MATCHES Intel)
+        set(ompflags "-qopenmp")
+    elseif(CMAKE_Fortran_COMPILER_ID MATCHES GNU)
+        set(ompflags "-fopenmp")
+        if(ENABLE_TSAN)
+            set(ompflags "${ompflags} -lomp")
+        endif()
+    endif()
+    set(CMAKE_Fortran_FLAGS         "${CMAKE_Fortran_FLAGS} ${ompflags}")
+endif()
 
 # extract version info
 # generate a Git version string
@@ -57,9 +75,3 @@ add_definitions(-DCOMPVER2="${compver}")
 add_definitions(-DCOMPVER3="${compflag}")
 add_definitions(-DCOMPVER4="${complib}")
 
-
-
-if(ENABLE_BdG)
-    add_definitions(-DCPP_BdG)
-endif()
-
diff --git a/cmake/compiler_config.txt b/cmake/compiler_config.txt
index 87f53953e99710c45ed7db09e9532c3e4dc9afe9..b0a18507d2a4953a634948128264d5b524aa322a 100644
--- a/cmake/compiler_config.txt
+++ b/cmake/compiler_config.txt
@@ -1,10 +1,28 @@
+
+# automatically activate USE_LIBFLAME if BLIS_PATH and/or FLAME_PATH is given
+if(BLIS_PATH OR FLAME_PATH)
+    message("BLIS_PATH or FLAME_PATH was given in the input. This triggers using the FLAME and BLIS libraries instead of BLAS+LAPACK.")
+    set(USE_LIBFLAME "ON")
+else()
+    # this means we don't use libflame
+    set(USE_LIBFLAME "OFF")
+endif()
+
+# now compiler flags etc. first intel, then gfortran
+
 if(CMAKE_Fortran_COMPILER_ID MATCHES Intel)
 
     message("Intel compiler found")
     set(compver "intel")
 
     # standard compiler flags
-    set(CMAKE_Fortran_FLAGS         "${CMAKE_Fortran_FLAGS} -traceback")
+    set(CMAKE_Fortran_FLAGS "${CMAKE_Fortran_FLAGS} -traceback")
+    if(ENABLE_DEBUG_SYMBOLS)
+        set(CMAKE_Fortran_FLAGS "${CMAKE_Fortran_FLAGS} -g")
+    endif()
+    if(ENABLE_OPTRPT)
+        set(CMAKE_Fortran_FLAGS "${CMAKE_Fortran_FLAGS} -qopt-report=5")
+    endif() 
 
     # increase stacksize on mac
     if(CMAKE_SYSTEM_NAME MATCHES Darwin)
@@ -12,33 +30,57 @@ if(CMAKE_Fortran_COMPILER_ID MATCHES Intel)
         set(CMAKE_Fortran_FLAGS         "${CMAKE_Fortran_FLAGS} -Wl,-stack_size,0x80000000,-stack_addr,0xf0000000")
     endif()
 
-    # link serial or parallel mkl
-    if(ENABLE_OMP)
-        set(CMAKE_Fortran_FLAGS         "${CMAKE_Fortran_FLAGS} -mkl=parallel")
+    if(USE_LIBFLAME)
+        # tell the BLIS and FLAME libs are set later, for the intel compiler we additionally need to deactovate the PARDISO solver which is part of mkl but not in libflame
+        add_definitions(-DNO_PARDISO)
     else()
-        set(CMAKE_Fortran_FLAGS         "${CMAKE_Fortran_FLAGS} -mkl=sequential")
+        # link serial or parallel mkl
+        if(ENABLE_OMP)
+            set(CMAKE_Fortran_FLAGS "${CMAKE_Fortran_FLAGS} -mkl=parallel")
+        else()
+            set(CMAKE_Fortran_FLAGS "${CMAKE_Fortran_FLAGS} -mkl=sequential")
+        endif()
     endif()
 
     # debug flags
-    set(CMAKE_Fortran_FLAGS_DEBUG   "-O0 -r8 -CB -check all -check uninit -ftrapuv -gen-interfaces -warn all -warn notruncated_source -fpe0 -debug extended -traceback -g -sox")
-    #set(CMAKE_Fortran_FLAGS_DEBUG   "-O0 -r8 -CB -check all -check uninit -gen-interfaces -warn all -warn notruncated_source -debug extended -traceback -g -sox")
+    set(CMAKE_Fortran_FLAGS_DEBUG   "-O0 -r8 -CB -check all,noarg_temp_created -check uninit -ftrapuv -gen-interfaces -warn all -warn notruncated_source -fpe0 -debug extended -traceback -g -sox")
+    #set(CMAKE_Fortran_FLAGS_DEBUG   "-O0 -r8 -CB -check all,noarg_temp_created -check uninit -gen-interfaces -warn all -warn notruncated_source -debug extended -traceback -g -sox")
 
     # release flags
-    set(CMAKE_Fortran_FLAGS_RELEASE "-O2 -ip -xHOST")
+    if(OPTFLAGS_xHOST)
+
+      set(CMAKE_Fortran_FLAGS_RELEASE "-O2 -ip -xHOST")
+
+    elseif(OPTFLAGS_AMD)
+
+      set(CMAKE_Fortran_FLAGS_RELEASE "-O3 -march=core-avx2 -align array64byte -fma -ftz -fomit-frame-pointer")
+      if(ENABLE_PATCH_INTEL)
+        set(CMAKE_Fortran_FLAGS "${CMAKE_Fortran_FLAGS} -Wl,--allow-multiple-definition -static-intel -mkl")
+        #set(CMAKE_Fortran_FLAGS "${CMAKE_Fortran_FLAGS} -Wl,--allow-multiple-definition -static-intel -mkl -assume byterecl")
+        #set(CMAKE_Fortran_FLAGS_RELEASE "${CMAKE_Fortran_FLAGS_RELEASE} -O3 -march=core-avx2 -mtune=core-avx2 -g")
+        set(complib "mklpatch ${complib}")
+      endif()
+
+    elseif(OPTFLAGS_AVX512)
+
+      set(CMAKE_Fortran_FLAGS_RELEASE "-O2 -ip -xCORE-AVX512")
+
+    endif()
+
     if(NOT COMPILE_KKRIMP)
         set(CMAKE_Fortran_FLAGS_RELEASE "${CMAKE_Fortran_FLAGS_RELEASE} -r8")
     endif()
 
     # add special flags for voronoi code
     if(COMPILE_VORONOI)
-        set(CMAKE_Fortran_FLAGS         "${CMAKE_Fortran_FLAGS} -mcmodel medium -shared-intel")
+        set(CMAKE_Fortran_FLAGS "${CMAKE_Fortran_FLAGS} -mcmodel medium -shared-intel")
     endif()
 
 
     # for coverage report
     if(ENABLE_COV)
         message("Set profiling flags for test coverage report")
-        set(CMAKE_Fortran_FLAGS     "${CMAKE_Fortran_FLAGS} -prof-gen:srcpos")
+        set(CMAKE_Fortran_FLAGS "${CMAKE_Fortran_FLAGS} -prof-gen:srcpos")
     endif()
 
     # the old compiler (e.g. v12.1.3 on iff003) does not recognize
@@ -54,35 +96,45 @@ elseif(CMAKE_Fortran_COMPILER_ID MATCHES GNU)
     set(compver "gnu")
 
     # standard compiler flags
-    #set(CMAKE_Fortran_FLAGS         "${CMAKE_Fortran_FLAGS} -ffree-line-length-none -fdefault-real-8 -fimplicit-none")
-    set(CMAKE_Fortran_FLAGS         "${CMAKE_Fortran_FLAGS} -lblas -llapack -ffree-line-length-none")
+    #set(CMAKE_Fortran_FLAGS "${CMAKE_Fortran_FLAGS} -ffree-line-length-none -fdefault-real-8 -fimplicit-none")
+    set(CMAKE_Fortran_FLAGS "${CMAKE_Fortran_FLAGS} -ffree-line-length-none")
 
     # debug flags # -finit-local-zero
-    set(CMAKE_Fortran_FLAGS_DEBUG   "-O0 -g3 -fcheck=all -fbacktrace -Wall -Wextra -mtune=native")
+    set(CMAKE_Fortran_FLAGS_DEBUG "-O0 -g3 -fcheck=all -fbacktrace -Wall -Wextra -mtune=native")
 
     # release flags
-    set(CMAKE_Fortran_FLAGS_RELEASE "-Ofast -march=native -fbacktrace")
+    if(OPTFLAGS_AMD)
+      set(CMAKE_Fortran_FLAGS_RELEASE "-O3 -march=znver1 -mtune=znver1 -mfma -mavx2 -m3dnow -fomit-frame-pointer")
+    else()
+      set(CMAKE_Fortran_FLAGS_RELEASE "-Ofast -march=native -fbacktrace")
+    endif()
 
     # flags for code-coverage
     if(ENABLE_COV)
         message("Set profiling flags for test coverage report")
-        set(CMAKE_Fortran_FLAGS     "${CMAKE_Fortran_FLAGS} -fprofile-arcs -ftest-coverage -fPIC")
+        set(CMAKE_Fortran_FLAGS "${CMAKE_Fortran_FLAGS} -fprofile-arcs -ftest-coverage -fPIC")
+    endif()
+
+    # flags for thread sanitizer
+    if(ENABLE_TSAN)
+        set(CMAKE_Fortran_FLAGS "${CMAKE_Fortran_FLAGS} -fsanitize=thread -g")
+        set(CMAKE_Fortran_FLAGS_RELEASE "-O3 -DNDEBUG")
     endif()
 
     # disable MD5 sums for GNU compiler
     add_definitions(-DCPP_NOMD5)
 
-   # lapack lib on iff machines
-   #set(MKLROOT "/usr/local/intel/mkl")
-   #find_package(BLAS REQUIRED)
-   #message("Found BLAS version ${BLAS_VERSION}")
-   #find_package(LAPACK REQUIRED)
-   #message("Found LAPACK version ${LAPACK_VERSION}")
-
-   find_package(BLAS)
-   find_package(LAPACK)
-   if(LAPACK_FOUND AND BLAS_FOUND)
-      set(lapackblas_libraries ${BLAS_LIBRARIES} ${LAPACK_LIBRARIES})
+   # BLAS for thread sanitizer (POP analysis)
+   if(ENABLE_TSAN)
+       set(BLA_VENDOR "Intel10_64lp")
+   endif()
+
+   if(NOT USE_LIBFLAME)
+       # try to find BLAS and LAPACK automatically
+       find_package(BLAS REQUIRED)
+       message("Found BLAS version ${BLAS_VERSION}: ${BLAS_LIBRARIES}")
+       find_package(LAPACK REQUIRED)
+       message("Found LAPACK version ${LAPACK_VERSION}: ${LAPACK_LIBRARIES}")
    endif()
   
 
@@ -92,11 +144,40 @@ elseif(CMAKE_Fortran_COMPILER_ID MATCHES GNU)
 elseif(CMAKE_Fortran_COMPILER_ID MATCHES NAG)
 
     message("NAG compiler found")
-    set(CMAKE_Fortran_FLAGS         "${CMAKE_Fortran_FLAGS} -Imodules -L/usr/local/intel/mkl/lib/intel64 -lmkl_intel_lp64 -lmkl_sequential -lmkl_core")
-    set(CMAKE_Fortran_FLAGS_DEBUG   "-O0 -C=all")
+    set(CMAKE_Fortran_FLAGS "${CMAKE_Fortran_FLAGS} -Imodules -L/usr/local/intel/mkl/lib/intel64 -lmkl_intel_lp64 -lmkl_sequential -lmkl_core")
+    set(CMAKE_Fortran_FLAGS_DEBUG "-O0 -C=all")
     set(CMAKE_Fortran_FLAGS_RELEASE "-O3")
     # disable MD5 sums for gnu compiler
     add_definitions(-DCPP_NOMD5)
     set(compver "nag")
 
 endif()
+
+
+if(USE_LIBFLAME)
+    # tell CMAKE to ues libflame in libs directory (there we link blis and libflame from where they are compiled)
+    # check if path to BLIS lib is given
+    if(BLIS_PATH)
+        message("BLIS_PATH was given in the input. We use this library for all BLAS calls.")
+        set(BLAS_LIBRARIES "${BLIS_PATH}")
+    else()
+        message(FATAL_ERROR "BLIS_PATH not set. Please specify the location of the BLIS library with -DBLIS_PATH=<path-to-libblis-mt.a>")
+    endif()
+    # check if path to FLAME lib is given
+    if(FLAME_PATH)
+        message("FLAME_PATH was given in the input. We use this library for all LAPACK calls.")
+        set(LAPACK_LIBRARIES "${FLAME_PATH}")
+    else()
+        message(FATAL_ERROR "FLAME_PATH not set. Please specify the location of the FLAME library with -FLAME_PATH=<path-to-libflame.a>")
+    endif()
+    set(complib "libflame")
+    set(complib "${complib} libflame")
+    message("Use BLIS: ${BLAS_LIBRARIES}")
+    message("Use LAPACK: ${LAPACK_LIBRARIES}")
+    # we need to make sure that these are linked with the openmp flags since on the cluster they are compiled like that
+    if(CMAKE_Fortran_COMPILER_ID MATCHES Intel)
+        set(LAPACK_LIBRARIES "-qopenmp ${LAPACK_LIBRARIES}")
+    elseif(CMAKE_Fortran_COMPILER_ID MATCHES GNU)
+        set(LAPACK_LIBRARIES "-fopenmp ${LAPACK_LIBRARIES}")
+    endif()
+endif()
\ No newline at end of file
diff --git a/cmake/source_list_KKRhost.txt b/cmake/source_list_KKRhost.txt
index a5db6c01541d289ce53a8225e5254be1e4388282..e1b1f80333752b0ceeb0b4c6991d8fd86644d526 100644
--- a/cmake/source_list_KKRhost.txt
+++ b/cmake/source_list_KKRhost.txt
@@ -12,8 +12,6 @@ if(ENABLE_MPI) # this works only in hybrid mode at the moment and not with OpenM
 endif()
 
 # parallelization of global/local solutions broken, probably because local solutions are called within global solutions
-#set_source_files_properties(source/KKRhost/rll_global_solutions.F90 PROPERTIES COMPILE_FLAGS "${ompflags}")
-#set_source_files_properties(source/KKRhost/sll_global_solutons.F90 PROPERTIES COMPILE_FLAGS "${ompflags}")
 #set_source_files_properties(source/KKRhost/rll_local_solutions.F90 PROPERTIES COMPILE_FLAGS "${ompflags}")
 #set_source_files_properties(source/KKRhost/sll_local_solutons.F90 PROPERTIES COMPILE_FLAGS "${ompflags}")
 
@@ -28,11 +26,19 @@ endif()
 if(WRITE_RLLSLL_STANDALONE_INPUT)
     add_definitions(-Dtest_prep)
 endif()
+if(WRITE_KLOOP_STANDALONE_INPUT)
+    add_definitions(-DCPP_WRITE_KLOOP_TEST_INPUT)
+endif()
 
 
 # some static dimensions used in Dirac solver
 execute_process(COMMAND ln -s ../source/KKRhost/sprkkr_rmesh.dim .)
 
+
+# external libraries (need their own CMakeLists!)
+#add_subdirectory(source/external/NPY-for-Fortran)
+
+
 # these are the source files of KKRhost, create kkr_library to be able to conveniently reuse parts of if in BdG development version
 add_library(lib_common STATIC
     source/common/broyden.f90
@@ -103,8 +109,23 @@ add_library(lib_common STATIC
     source/common/wronskian.f90
     source/common/mathtools.f90
 )
-# disable cmake auto add pf 'lib' prefix to .so file
+# disable cmake auto add of 'lib' prefix to .so file
 SET_TARGET_PROPERTIES(lib_common PROPERTIES PREFIX "")
+
+
+if(ENABLE_PATCH_INTEL)
+    # disable cmake auto add of 'lib' prefix to .so file
+    add_library(lib_patch_intel STATIC
+        source/common/patch_intel.c
+        source/common/patch_intel.f90
+    )
+    SET_TARGET_PROPERTIES(lib_patch_intel PROPERTIES PREFIX "")
+    # activate preprcessor flag to call patch_intel subroutine
+    add_definitions(-DCPP_PATCH_INTEL)
+    target_link_libraries(lib_common lib_patch_intel)
+endif()
+
+
 add_library(lib_kkrhost STATIC
     source/KKRhost/addvirtual14.f90
     source/KKRhost/amemagvec.f90
@@ -367,7 +388,7 @@ add_library(lib_kkrhost STATIC
     source/KKRhost/wunfiles.F90
     source/KKRhost/ylag.f90
 )
-# disable cmake auto add pf 'lib' prefix to .so file
+# disable cmake auto add of 'lib' prefix to .so file
 SET_TARGET_PROPERTIES(lib_kkrhost PROPERTIES PREFIX "")
 target_link_libraries(lib_kkrhost lib_common)
 
@@ -378,8 +399,8 @@ add_executable(
     source/KKRhost/main_all.F90
     )
 target_link_libraries(kkr.x lib_kkrhost)
-if(CMAKE_Fortran_COMPILER_ID MATCHES GNU)
-    target_link_libraries(kkr.x ${lapackblas_libraries})
+if(CMAKE_Fortran_COMPILER_ID MATCHES GNU OR USE_LIBFLAME)
+    target_link_libraries(kkr.x ${LAPACK_LIBRARIES} ${BLAS_LIBRARIES})
 endif()
 target_link_libraries(kkr.x "${ompflags}")
 
@@ -391,7 +412,7 @@ if(ENABLE_BdG)
         source/KKRhost/main1a_dummy_BdG.f90 
         )
     target_link_libraries(kkr_BdG_radial.x lib_kkrhost)
-    if(CMAKE_Fortran_COMPILER_ID MATCHES GNU)
-        target_link_libraries(kkr_BdG_radial.x ${lapackblas_libraries})
+    if(CMAKE_Fortran_COMPILER_ID MATCHES GNU OR USE_LIBFLAME)
+        target_link_libraries(kkr_BdG_radial.x ${LAPACK_LIBRARIES} ${BLAS_LIBRARIES})
     endif()
 endif()
diff --git a/cmake/source_list_KKRimp.txt b/cmake/source_list_KKRimp.txt
index f6e74a6b3cc97b14e12174fca142749a18b923af..0b77fbb70bea76702966bf57fa4d65afbc8203c8 100644
--- a/cmake/source_list_KKRimp.txt
+++ b/cmake/source_list_KKRimp.txt
@@ -185,6 +185,6 @@ add_executable(
     source/KKRimp/kkrflex.F90
     )
 
-if(CMAKE_Fortran_COMPILER_ID MATCHES GNU)
-    target_link_libraries(kkrflex.exe ${lapackblas_libraries})
+if(CMAKE_Fortran_COMPILER_ID MATCHES GNU OR USE_LIBFLAME)
+    target_link_libraries(kkrflex.exe ${LAPACK_LIBRARIES} ${BLAS_LIBRARIES})
 endif()
diff --git a/cmake/source_list_PKKprime.txt b/cmake/source_list_PKKprime.txt
index 842b52d813d8f91168f14d876b337e0907088f98..05d007c57fe291ece0542466c4242cceb3d3d6d7 100644
--- a/cmake/source_list_PKKprime.txt
+++ b/cmake/source_list_PKKprime.txt
@@ -26,6 +26,7 @@ add_library(lib_pkkr STATIC
     source/common/global_variables.F90
     source/common/version_info.F90
     source/common/version.F90
+    source/common/profiling.f90
     source/PKKprime/type_inc.F90
     source/PKKprime/mod_mympi.F90
     source/PKKprime/mod_ioformat.f90
@@ -59,8 +60,8 @@ add_executable(
     source/PKKprime/main.f90
 )
 target_link_libraries(Pkkr.x lib_pkkr)
-if(CMAKE_Fortran_COMPILER_ID MATCHES GNU)
-    target_link_libraries(Pkkr.x ${lapackblas_libraries})
+if(CMAKE_Fortran_COMPILER_ID MATCHES GNU OR USE_LIBFLAME)
+    target_link_libraries(Pkkr.x ${LAPACK_LIBRARIES} ${BLAS_LIBRARIES})
 endif()
 
 
@@ -71,8 +72,8 @@ add_executable(
     source/PKKprime/bands.f90
 )
 target_link_libraries(band.x lib_pkkr)
-if(CMAKE_Fortran_COMPILER_ID MATCHES GNU)
-    target_link_libraries(band.x ${lapackblas_libraries})
+if(CMAKE_Fortran_COMPILER_ID MATCHES GNU OR USE_LIBFLAME)
+    target_link_libraries(band.x ${LAPACK_LIBRARIES} ${BLAS_LIBRARIES})
 endif()
 
 
@@ -82,8 +83,8 @@ add_executable(
     source/PKKprime/mergerefined.F90
 )
 target_link_libraries(mergerefined.x lib_pkkr)
-if(CMAKE_Fortran_COMPILER_ID MATCHES GNU)
-    target_link_libraries(mergerefined.x ${lapackblas_libraries})
+if(CMAKE_Fortran_COMPILER_ID MATCHES GNU OR USE_LIBFLAME)
+    target_link_libraries(mergerefined.x ${LAPACK_LIBRARIES} ${BLAS_LIBRARIES})
 endif()
 
 
@@ -93,8 +94,8 @@ add_executable(
     source/PKKprime/refineBZparts.f90
 )
 target_link_libraries(refineBZparts.x lib_pkkr)
-if(CMAKE_Fortran_COMPILER_ID MATCHES GNU)
-    target_link_libraries(refineBZparts.x ${lapackblas_libraries})
+if(CMAKE_Fortran_COMPILER_ID MATCHES GNU OR USE_LIBFLAME)
+    target_link_libraries(refineBZparts.x ${LAPACK_LIBRARIES} ${BLAS_LIBRARIES})
 endif()
 
 
@@ -104,8 +105,8 @@ add_executable(
     source/PKKprime/Amatprecalc.f90
 )
 target_link_libraries(Amatprecalc.x lib_pkkr)
-if(CMAKE_Fortran_COMPILER_ID MATCHES GNU)
-    target_link_libraries(Amatprecalc.x ${lapackblas_libraries})
+if(CMAKE_Fortran_COMPILER_ID MATCHES GNU OR USE_LIBFLAME)
+    target_link_libraries(Amatprecalc.x ${LAPACK_LIBRARIES} ${BLAS_LIBRARIES})
 endif()
 
 
@@ -115,8 +116,8 @@ add_executable(
     source/PKKprime/calculate_spinmixing.F90
 )
 target_link_libraries(calculate_spinmixing.x lib_pkkr)
-if(CMAKE_Fortran_COMPILER_ID MATCHES GNU)
-    target_link_libraries(calculate_spinmixing.x ${lapackblas_libraries})
+if(CMAKE_Fortran_COMPILER_ID MATCHES GNU OR USE_LIBFLAME)
+    target_link_libraries(calculate_spinmixing.x ${LAPACK_LIBRARIES} ${BLAS_LIBRARIES})
 endif()
 
 
@@ -126,8 +127,8 @@ add_executable(
     source/PKKprime/visdata.F90
 )
 target_link_libraries(visdata.x lib_pkkr)
-if(CMAKE_Fortran_COMPILER_ID MATCHES GNU)
-    target_link_libraries(visdata.x ${lapackblas_libraries})
+if(CMAKE_Fortran_COMPILER_ID MATCHES GNU OR USE_LIBFLAME)
+    target_link_libraries(visdata.x ${LAPACK_LIBRARIES} ${BLAS_LIBRARIES})
 endif()
 
 
@@ -137,8 +138,8 @@ add_executable(
     source/PKKprime/vis2int.F90
 )
 target_link_libraries(vis2int.x lib_pkkr)
-if(CMAKE_Fortran_COMPILER_ID MATCHES GNU)
-    target_link_libraries(vis2int.x ${lapackblas_libraries})
+if(CMAKE_Fortran_COMPILER_ID MATCHES GNU OR USE_LIBFLAME)
+    target_link_libraries(vis2int.x ${LAPACK_LIBRARIES} ${BLAS_LIBRARIES})
 endif()
 
 
@@ -148,7 +149,7 @@ add_executable(
     source/PKKprime/test.F90
 )
 target_link_libraries(test.x lib_pkkr)
-if(CMAKE_Fortran_COMPILER_ID MATCHES GNU)
-    target_link_libraries(test.x ${lapackblas_libraries})
+if(CMAKE_Fortran_COMPILER_ID MATCHES GNU OR USE_LIBFLAME)
+    target_link_libraries(test.x ${LAPACK_LIBRARIES} ${BLAS_LIBRARIES})
 endif()
 
diff --git a/cmake/source_list_rhoq.txt b/cmake/source_list_rhoq.txt
index d2cba895665b4f2c49746cadcd687e2965d2b83b..9376a28726a99c39218fada7ef494a7c0a173f2f 100644
--- a/cmake/source_list_rhoq.txt
+++ b/cmake/source_list_rhoq.txt
@@ -30,6 +30,6 @@ add_executable(
     source/rhoq/mod_rhoq.F90
     )
 
-if(CMAKE_Fortran_COMPILER_ID MATCHES GNU)
-    target_link_libraries(rhoq.x ${lapackblas_libraries})
+if(CMAKE_Fortran_COMPILER_ID MATCHES GNU OR USE_LIBFLAME)
+    target_link_libraries(rhoq.x ${LAPACK_LIBRARIES} ${BLAS_LIBRARIES})
 endif()
diff --git a/cmake/source_list_rllsll_test.txt b/cmake/source_list_rllsll_test.txt
index e18fbb77225ccc54b68db3b09e460ea826d7f9c8..1302eafe815000e82c3bd67321d3fe8cedc6a7d2 100644
--- a/cmake/source_list_rllsll_test.txt
+++ b/cmake/source_list_rllsll_test.txt
@@ -14,6 +14,6 @@ add_executable(
     source/common/version_info.F90
     source/common/version.F90
     )
-if(CMAKE_Fortran_COMPILER_ID MATCHES GNU)
-    target_link_libraries(rllsll_standalone.x ${lapackblas_libraries})
-endif()
+
+target_link_libraries(rllsll_standalone.x ${LAPACK_LIBRARIES} ${BLAS_LIBRARIES})
+
diff --git a/cmake/source_list_voronoi.txt b/cmake/source_list_voronoi.txt
index 21d985530e3fac6fc96a1c3eacbebd5aa801364c..96d78430c7e0dc970b66268e346836bda2a0eb8e 100644
--- a/cmake/source_list_voronoi.txt
+++ b/cmake/source_list_voronoi.txt
@@ -61,6 +61,6 @@ add_executable(
     source/voronoi/inc.geometry
     )
 
-if(CMAKE_Fortran_COMPILER_ID MATCHES GNU)
-    target_link_libraries(voronoi.exe ${lapackblas_libraries})
-endif()
+if(CMAKE_Fortran_COMPILER_ID MATCHES GNU OR USE_LIBFLAME)
+    target_link_libraries(voronoi.exe ${LAPACK_LIBRARIES} ${BLAS_LIBRARIES})
+endif()
\ No newline at end of file
diff --git a/docs/settings_ford.md b/docs/settings_ford.md
index 9728dfceec4099c5b4a638d1e4065b2dd5fd4621..d87a1dc755b6fcd47347eb28dd784339391e2af9 100644
--- a/docs/settings_ford.md
+++ b/docs/settings_ford.md
@@ -3,7 +3,7 @@ summary: Source code documentation of the Jülich KKR code family
 author: The Jülich KKR team
 email: p.ruessmann@fz-juelich.de
 license: by-nc
-version: 3.4
+version: 3.5
 project_website: https://iffgit.fz-juelich.de/kkr/jukkr
 project_download: https://iffgit.fz-juelich.de/kkr/jukkr
 src_dir: ../source/common/
diff --git a/source/KKRhost/bzirr3d.f90 b/source/KKRhost/bzirr3d.f90
index 8095792979c7b218da83616f0cd941cd22f446d2..761e6843cc04091f24e8ccbdfa6549fa58715724 100644
--- a/source/KKRhost/bzirr3d.f90
+++ b/source/KKRhost/bzirr3d.f90
@@ -85,6 +85,8 @@ contains
 
     allocate (ibk(0:maxk1,0:maxk2,0:maxk3))
 
+    ! initialization
+    cf(:) = 0.0_dp
 
     ! heck if we are in surface mode
     lsurf = .false.
diff --git a/source/KKRhost/kkrmat01.F90 b/source/KKRhost/kkrmat01.F90
index 0c7baf70114e4ed9f65bf8d051b1daeb12d12082..37f75774bd416b25cb4e3d5c51d3dcdd88be02df 100644
--- a/source/KKRhost/kkrmat01.F90
+++ b/source/KKRhost/kkrmat01.F90
@@ -52,7 +52,7 @@ contains
 #endif
     use :: mod_types, only: t_inc
     use :: mod_runoptions, only: print_program_flow, use_Chebychev_solver, use_qdos, use_virtual_atoms, &
-      write_green_imp, write_rhoq_input, set_cheby_nosoc
+      write_green_imp, write_rhoq_input, decouple_spins_cheby
     use :: mod_rhoqtools, only: rhoq_find_kmask, rhoq_saveg, rhoq_write_tau0, rhoq_read_mu0_scoef
     use :: global_variables, only: nembd1, nembd2, nsheld, nclsd, naclsd, lmmaxd, nprincd, nrd, nrefd, lmgf0d, krel, ndim_slabinv, alm, almgf0 
     use :: mod_constants, only: czero, cone, nsymaxd, ci,pi
@@ -343,7 +343,7 @@ contains
         ! ----------------------------------------------------------------------
         ! LLY Lloyd
         ! --------------------------------------------------------------------
-        if (.not. use_Chebychev_solver .or. set_cheby_nosoc) then
+        if (.not. use_Chebychev_solver .or. decouple_spins_cheby) then
           ! $omp single
           do i2 = 1, alm
             do i1 = 1, alm
diff --git a/source/KKRhost/main0.F90 b/source/KKRhost/main0.F90
index 8dfbdbb8a3436304a645382bd4ec4586c30f309c..b53aca49136d9c378a2bc932e3ecf0ba93da1b21 100644
--- a/source/KKRhost/main0.F90
+++ b/source/KKRhost/main0.F90
@@ -1477,7 +1477,7 @@ contains
 
     write (iunit, '(1A)') '     Screened Korringa-Kohn-Rostoker Electronic Structure Code'
     write (iunit, '(1A)') '                      for Bulk and Interfaces'
-    write (iunit, '(1A)') '                    Juelich-Munich 2001 - 2018'
+    write (iunit, '(1A)') '                    Juelich-Munich 2001 - 2021'
     write (iunit, '(1A)') ''
     write (iunit, '(2A)') '  Code version: ', trim(version1)
     write (iunit, '(6A)') '  Compile options: ', trim(version2), ' ', trim(version3), ' ', trim(version4)
diff --git a/source/KKRhost/main1b.F90 b/source/KKRhost/main1b.F90
index 6ea3c30a498566cd3bf34acf29456ad96a850802..d03d3c1818365fb88696d9e69fb9aa1633b74848 100644
--- a/source/KKRhost/main1b.F90
+++ b/source/KKRhost/main1b.F90
@@ -37,7 +37,7 @@ contains
     use :: mod_datatypes, only: dp, sp
     use :: mod_runoptions, only: calc_exchange_couplings, formatted_file, set_gmat_to_zero, use_Chebychev_solver, &
       use_qdos, use_readcpa, write_deci_tmat, write_gmat_plain, write_green_host, write_green_imp, write_kkrimp_input, &
-      write_pkkr_input, write_pkkr_operators, write_rhoq_input, write_gmat_ascii, set_cheby_nosoc
+      write_pkkr_input, write_pkkr_operators, write_rhoq_input, write_gmat_ascii, decouple_spins_cheby
     use :: mod_constants, only: czero, cone, pi
     use :: mod_operators_for_fscode, only: operators_for_fscode
     use :: mod_getscratch, only: opendafile
@@ -522,9 +522,9 @@ contains
             end if
             do i = 1, lm1
               trefll(i, i, i1) = wn1(i, i)
-              if (use_Chebychev_solver .and. .not.set_cheby_nosoc) trefll(lm1+i, lm1+i, i1) = wn1(i, i)
+              if (use_Chebychev_solver .and. .not.decouple_spins_cheby) trefll(lm1+i, lm1+i, i1) = wn1(i, i)
               dtrefll(i, i, i1) = wn2(i, i)                              ! LLY
-              if (use_Chebychev_solver .and. .not.set_cheby_nosoc) dtrefll(lm1+i, lm1+i, i1) = wn2(i, i) ! LLY
+              if (use_Chebychev_solver .and. .not.decouple_spins_cheby) dtrefll(lm1+i, lm1+i, i1) = wn2(i, i) ! LLY
             end do
 
             if (write_rhoq_input) then
@@ -567,7 +567,7 @@ contains
             tmat(:, :) = t_tgmat%tmat(:, :, irec)
           end if
 
-          if (use_Chebychev_solver .and. .not. set_cheby_nosoc) then
+          if (use_Chebychev_solver .and. .not. decouple_spins_cheby) then
             ! read in theta and phi for noncolinear
             theta = theta_at(i1)
             phi = phi_at(i1)
@@ -587,7 +587,7 @@ contains
               tmat(:, :) = t_lloyd%dtmat(:, :, irec)
             end if
 
-            if (use_Chebychev_solver .and. .not. set_cheby_nosoc) call rotatematrix(tmat, theta, phi, lmgf0d, 0) ! LLY
+            if (use_Chebychev_solver .and. .not. decouple_spins_cheby) call rotatematrix(tmat, theta, phi, lmgf0d, 0) ! LLY
 
             dtmatll(1:lmmaxd, 1:lmmaxd, i1) = tmat(1:lmmaxd, 1:lmmaxd) ! LLY
             if (t_lloyd%dtmat_to_file) then
@@ -752,7 +752,7 @@ contains
 
         if (lly/=0) then           ! LLY
 
-          if (use_Chebychev_solver .and. .not.set_cheby_nosoc) then
+          if (use_Chebychev_solver .and. .not.decouple_spins_cheby) then
             cdos_lly(ie, ispin) = tralpha(ie, ispin) - lly_grtr(ie, ispin)/volbz(1) + 2.0_dp*lly_g0tr(ie) ! LLY
           else
             if (lly/=2) then       ! LLY Lloyd
diff --git a/source/KKRhost/main1c.F90 b/source/KKRhost/main1c.F90
index 7a2c0b0b3de66316c4ba2ea42015cda2a91279e6..1a4c8f23e3cc3001fc36819f019b6cac1b9e4158 100644
--- a/source/KKRhost/main1c.F90
+++ b/source/KKRhost/main1c.F90
@@ -41,7 +41,7 @@ contains
     use mod_datatypes, only: dp
     use mod_runoptions, only: calc_gmat_lm_full, fix_nonco_angles, relax_SpinAngle_Dirac, use_Chebychev_solver, &
       use_decimation, use_qdos, write_DOS, write_complex_qdos, write_density_ascii, write_rho2ns, write_DOS_lm, &
-      set_cheby_nosoc, disable_print_serialnumber
+      decouple_spins_cheby, disable_print_serialnumber
     use mod_constants, only: czero, pi
     use mod_profiling, only: memocc
     use mod_mympi, only: myrank, master
@@ -811,7 +811,7 @@ contains
       ! Write out lm charges and moments
       ! -------------------------------------------------------------------
       withorbmom = krel+korbit
-      if (set_cheby_nosoc) withorbmom = nspin-1 !withorbmom+1
+      if (decouple_spins_cheby) withorbmom = nspin-1 !withorbmom+1
       call wrmoms(withorbmom, natyp, nspinpot, charge, muorb, lmax, lmaxd1)
 
       ! ----------------------------------------------------------------------
diff --git a/source/KKRhost/main_all.F90 b/source/KKRhost/main_all.F90
index db144bd3ea070ec90576fe8b47cb676709c132db..0c00ce09f1bc19d71d5d1c8e31b36651411a9a05 100644
--- a/source/KKRhost/main_all.F90
+++ b/source/KKRhost/main_all.F90
@@ -4,6 +4,7 @@
 ! of the MIT license as expressed in the LICENSE.md file in more detail.                  !
 !-----------------------------------------------------------------------------------------!
 
+
 ! -----------------------------------------------------------------------------------
 !> Summary: Main program for the JM-KKR
 !> Author: Philipp Ruessmann, Bernd Zimmermann, Phivos Mavropoulos, R. Zeller, and many others ...
@@ -59,7 +60,9 @@ program kkrcode
     rc, rcls, rclsimp, refpot, righttinvll, rmesh, rmtnew, rmtrefat, rnew, rpan_intervall, rr, rrel, rrot, rs, rws, s, rmt, rmtref, &
     socscale, socscl, srrel, thesme, thetas, thetasnew, tleft, tright, rmrel, uldau, vins, visp, vref, vtrel, wez, wg, wldau, &
     yrg, zat, zrel, ueff
-
+#ifdef CPP_PATCH_INTEL
+  use mod_patch_intel, only: patch_intel
+#endif
 
   implicit none
 
@@ -90,6 +93,16 @@ program kkrcode
   ! <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< initialize MPI !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
   ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
 
+
+
+#ifdef CPP_PATCH_INTEL
+  ! this makes the MKL think it works on intel hardware even if it runs on AMD
+  ! seems to give better performance than unpatched MKL or BLIS+LIBFLAME
+  call patch_intel()
+#endif
+
+
+
   ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
   ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! start KKR with main0 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
   ! >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
diff --git a/source/KKRhost/mixnocospin.f90 b/source/KKRhost/mixnocospin.f90
index 59eb96c333b5e0f4093006176277e34b0123edee..727e2d001646f7efc81ab7ab401e1d1130564f67 100644
--- a/source/KKRhost/mixnocospin.f90
+++ b/source/KKRhost/mixnocospin.f90
@@ -23,7 +23,7 @@ contains
   subroutine spinmix_noco(iter, natyp, theta, phi, fixdir, angles_new, totmoment, iounit)
     use mod_datatypes, only: dp
     use mod_constants, only: pi
-    use mod_runoptions, only: use_boyden_spinmix, write_angles_alliter, disable_print_serialnumber, fix_nonco_angles, set_cheby_nosoc
+    use mod_runoptions, only: use_broyden_spinmix, write_angles_alliter, disable_print_serialnumber, fix_nonco_angles, decouple_spins_cheby
     use global_variables, only: qbound_spin
     use mod_version_info, only: version_print_header
     use mod_wunfiles, only: t_params
@@ -45,7 +45,7 @@ contains
 
 
     ! MdSD,PR: write information on new angles to output file
-    if (.not.set_cheby_nosoc) then
+    if (.not.decouple_spins_cheby) then
 
       write (1337,*)
       write (1337, '("      I1    In/Out THETA[deg]       In/Out PHI[deg]        FIXDIR[boolean]   RMS(angles)[deg]")')
@@ -77,7 +77,7 @@ contains
         end do
       end if
 
-    end if ! .not.set_cheby_nosoc
+    end if ! .not.decouple_spins_cheby
   
     ! rewrite new theta and phi to nonco_angle_out.dat, nonco_angle.dat is the input
     if (.not. fix_nonco_angles) then
@@ -87,7 +87,7 @@ contains
       call version_print_header(iounit, disable_print=disable_print_serialnumber)
       if (write_angles_alliter) open(unit=iounit+1, file='nonco_angle_out_all_iter.dat', form='formatted', position='append')
 
-      if (.not.use_boyden_spinmix) then
+      if (.not.use_broyden_spinmix) then
 
         ! conventional scheme: use output angles as input
         do i1 = 1, natyp
@@ -219,7 +219,7 @@ contains
           phi = atan2(moment(2), moment(1))
         ! theta is 0 or pi
         else
-          if (moment(3) < 0.0_dp) then
+          if (moment(3) < 0.0_dp .and. abs(moment(3)) > 1e-14_dp) then
             theta = pi
           else
             theta = 0.0_dp
diff --git a/source/KKRhost/renorm_lly.f90 b/source/KKRhost/renorm_lly.f90
index bfb091b5c85bfa3528c9542f0e409f50b27ea1e9..8543348d645fe74fe3ecbbbc2d726de52a85be51 100644
--- a/source/KKRhost/renorm_lly.f90
+++ b/source/KKRhost/renorm_lly.f90
@@ -29,7 +29,7 @@ contains
   subroutine renorm_lly(cdos_lly, ielast, nspin, natyp, cden, lmaxp1, conc, iestart, ieend, wez, ircut, ipan, ez, zat, rho2ns, r2nef, denef, denefat, espv)
 
     use :: mod_datatypes, only: dp
-    use :: mod_runoptions, only: use_Chebychev_solver, set_cheby_nosoc
+    use :: mod_runoptions, only: use_Chebychev_solver, decouple_spins_cheby
     use :: mod_constants, only: czero, pi
     use :: global_variables, only: ipand, natypd, lmaxd, npotd, iemxd, irmd, lmpotd, krel, nspind 
     implicit none
@@ -91,7 +91,7 @@ contains
       end do
     end do
     ! Now the locally-summed charge/energy is in cdos_loc, charge/energy/atom in chadd
-    if (.not. use_Chebychev_solver .or. set_cheby_nosoc) then
+    if (.not. use_Chebychev_solver .or. decouple_spins_cheby) then
       do ie = iestart, ieend
         do ispin = 1, nspin
           ! Renormalization factor per energy:
@@ -130,7 +130,7 @@ contains
     !    ENDDO
     !   ENDDO
 
-    if (nspin==1 .or. (use_Chebychev_solver .and. .not. set_cheby_nosoc) ) cren(:, 2) = cren(:, 1)
+    if (nspin==1 .or. (use_Chebychev_solver .and. .not. decouple_spins_cheby) ) cren(:, 2) = cren(:, 1)
 
 
     ! Now apply renormalization to energy-integrated density
diff --git a/source/KKRhost/rhooutnew.f90 b/source/KKRhost/rhooutnew.f90
index 293f00d395725f3f03d4e412bfa08fdc2e204848..3218e7895d2188b2e2a9f39a992d5ed0b6bab661 100644
--- a/source/KKRhost/rhooutnew.f90
+++ b/source/KKRhost/rhooutnew.f90
@@ -22,7 +22,7 @@ contains
      rll, ull, rllleft, sllleft, cden, cdenlm, cdenns, rho2nsc, corbital, gflle_part, rpan_intervall, ipan_intervall, nspin)
 
     use :: mod_constants, only: cone,czero,pi
-    use :: mod_runoptions, only: calc_gmat_lm_full, use_ldau, set_cheby_nosoc
+    use :: mod_runoptions, only: calc_gmat_lm_full, use_ldau, decouple_spins_cheby
     use :: mod_profiling, only: memocc
     use :: global_variables, only: lmmaxd, ncleb, ntotd, nfund, korbit
     use :: mod_datatypes, only: dp
@@ -103,7 +103,7 @@ contains
     pnsi = czero
 
     ! set LMSHIFT value which is need to construct CDEN
-    if (set_cheby_nosoc) then
+    if (decouple_spins_cheby) then
       lmshift1(:) = 0 
       lmshift2(:) = 0 
     else
diff --git a/source/KKRhost/rhovalnew.F90 b/source/KKRhost/rhovalnew.F90
index ec94550143d7a532730f122e4f1e7b1bdd657bd0..5441f6e64bf490ec210c8e788d7e0427f5e8e5b2 100644
--- a/source/KKRhost/rhovalnew.F90
+++ b/source/KKRhost/rhovalnew.F90
@@ -41,7 +41,7 @@ contains
     use :: mod_save_wavefun, only: t_wavefunctions, read_wavefunc
     use :: mod_runoptions, only: calc_exchange_couplings, calc_gmat_lm_full, disable_tmat_sratrick, fix_nonco_angles, &
                                  use_qdos, write_complex_qdos, write_pkkr_operators, write_DOS_lm, set_cheby_nospeedup, &
-                                 set_cheby_nosoc, disable_print_serialnumber, set_gmat_to_zero
+                                 decouple_spins_cheby, disable_print_serialnumber, set_gmat_to_zero
     use :: mod_version_info, only: version_print_header
     use :: global_variables, only: lmmaxd, iemxd, ncleb, lmxspd, irmd, ntotd, nrmaxd, lmpotd, nspotd, nfund, korbit, mmaxd, nspind
     use :: mod_constants, only: czero, cvlight, cone, pi, ci
@@ -224,7 +224,7 @@ contains
     call memocc(i_stat, product(shape(vins))*kind(vins), 'VINS', 'RHOVALNEW')
     vins = 0.0_dp
     vins(1:irmdnew, 1:lmpotd, 1) = vinsnew(1:irmdnew, 1:lmpotd, ipot)
-    if (.not.set_cheby_nosoc)  vins(1:irmdnew, 1:lmpotd, nspin) = vinsnew(1:irmdnew, 1:lmpotd, ipot+nspin-1)
+    if (.not.decouple_spins_cheby)  vins(1:irmdnew, 1:lmpotd, nspin) = vinsnew(1:irmdnew, 1:lmpotd, ipot+nspin-1)
 
     ! set up the non-spherical ll' matrix for potential VLL'
     allocate (vnspll0(lmmaxd,lmmaxd,irmdnew), stat=i_stat)
@@ -477,7 +477,7 @@ contains
 
       ! recalculate wavefuntions, also include left solution
       ! contruct the spin-orbit coupling hamiltonian and add to potential
-      if ( .not. set_cheby_nosoc) then
+      if ( .not. decouple_spins_cheby) then
         call spinorbit_ham(lmax, lmmax0d, vins, rnew, eryd, zat, cvlight, socscale, nspin, lmpotd, theta, phi, ipan_intervall, &
           rpan_intervall, npan_tot, ncheb, irmdnew, nrmaxd, vnspll0, vnspll1(:,:,:,ith), '1')
       else
@@ -508,7 +508,7 @@ contains
         jlk2(:, :, ith) = czero
         gmatprefactor = czero
         jlk_index = 0
-        if (set_cheby_nosoc) then
+        if (decouple_spins_cheby) then
           use_fullgmat = 0
         else
           use_fullgmat = 1
@@ -554,7 +554,7 @@ contains
       !------------------------------------------------------------------------------
       if ((t_wavefunctions%nwfsavemax>0 .and. (.not. (rllleft_was_read_in .and. sllleft_was_read_in))) .or. (t_wavefunctions%nwfsavemax==0)) then
         ! read/recalc wavefunctions left contruct the TRANSPOSE spin-orbit coupling hamiltonian and add to potential
-        if ( .not. set_cheby_nosoc) then
+        if ( .not. decouple_spins_cheby) then
           call spinorbit_ham(lmax, lmmax0d, vins, rnew, eryd, zat, cvlight, socscale, nspin, lmpotd, theta, phi, ipan_intervall, rpan_intervall, npan_tot, ncheb, irmdnew, nrmaxd, &
             vnspll0, vnspll1(:,:,:,ith), 'rll')
         else
@@ -637,7 +637,7 @@ contains
         ! $omp end critical
 #endif
 
-        if ( .not. set_cheby_nosoc) then
+        if ( .not. decouple_spins_cheby) then
           ! rotate gmat from global frame to local frame
           call rotatematrix(gmat0, theta, phi, lmmax0d, 1)
         end if
@@ -706,7 +706,7 @@ contains
       !------------------------------------------------------------------------------
       ! Get orbital moment
       ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
-      if (.not. set_cheby_nosoc) then
+      if (.not. decouple_spins_cheby) then
         do iorb = 1, 3
           call rhooutnew(nsra, lmax, gmatll(1,1,ie), ek, lmpotd, cone, npan_tot, ncheb, cleb, icleb, iend, irmdnew, thetasnew, ifunm, imt1, lmsp, rll(:,:,:,ith), & ! SLL(:,:,:,ith), ! commented out since sll is not used in rhooutnew
             ull(:,:,:,ith), rllleft(:,:,:,ith), sllleft(:,:,:,ith), cden(:,:,:,ith), cdenlm(:,:,:,ith), cdenns(:,:,ith), r2orbc(:,:,:,ith), iorb, gflle_part(:,:,ith), rpan_intervall, ipan_intervall, nspin)
@@ -745,7 +745,7 @@ contains
             muorb(lmaxd1+1, 1:3) = muorb(lmaxd1+1, 1:3) + muorb(lm1, 1:3)
           end do
         end do ! IORB
-      end if ! .not. set_cheby_nosoc
+      end if ! .not. decouple_spins_cheby
 
     end do                         ! IE loop
 #ifdef CPP_OMP
@@ -1029,9 +1029,9 @@ contains
       ! MdSD: Should this also be corrected if the angles change?
       den_out(0:lmaxd1, 1:ielast, 1:nspin/(nspin-korbit)) = den(0:lmaxd1, 1:ielast, 1, 1:nspin/(nspin-korbit))
       ! calculate new THETA and PHI for non-colinear
-      ! if (.not. fix_nonco_angles .and. .not.set_cheby_nosoc) then
+      ! if (.not. fix_nonco_angles .and. .not.decouple_spins_cheby) then
       ! MdSD: now the new directions are always calculated, which can be useful for information purposes
-      if (.not.set_cheby_nosoc) then
+      if (.not.decouple_spins_cheby) then
         rho2ns_temp(1, 1) = rho2int(1)
         rho2ns_temp(2, 2) = rho2int(2)
         rho2ns_temp(1, 2) = rho2int(3)
@@ -1052,12 +1052,12 @@ contains
         totxymoment = sqrt(moment(1)**2+moment(2)**2)
 
         ! MdSD: theta not 0 or pi
-        if (abs(totxymoment)>1d-05) then
+        if (abs(totxymoment)>1e-05_dp) then
           thetanew = acos(moment(3)/totmoment)
           phinew = atan2(moment(2), moment(1))
         ! MdSD: theta is 0 or pi
         else
-          if (moment(3) < 0.0_dp) then
+          if (moment(3) < 0.0_dp .and. abs(moment(3)) > 1e-14_dp) then
             thetanew = pi
           else
             thetanew = 0.0_dp
@@ -1066,8 +1066,8 @@ contains
         end if
 
         if (t_inc%i_write>0) then
-          write (1337, *) 'moment', myrank, moment(1), moment(2), moment(3)
-          write (1337, *) thetanew/(2.0_dp*pi)*360.0_dp, phinew/(2.0_dp*pi)*360.0_dp
+          write (1337, '(A,i5,3es16.7)') 'moment', myrank, moment(1), moment(2), moment(3)
+          write (1337, '(2es16.7)') thetanew/(2.0_dp*pi)*360.0_dp, phinew/(2.0_dp*pi)*360.0_dp
         end if
         ! only on master different from zero:
         angles_new(1) = thetanew
diff --git a/source/KKRhost/rinput13.F90 b/source/KKRhost/rinput13.F90
index f1476d0fa37a6911375ed718b69c05d6553d20f4..e9a1c912cf62d41b76209b9d801a8b3ff4633ee2 100644
--- a/source/KKRhost/rinput13.F90
+++ b/source/KKRhost/rinput13.F90
@@ -40,11 +40,11 @@ contains
     qmtet, qmphi, kreadldau, lopt, ueff, jeff, erefldau, invmod, verbosity, MPI_scheme, special_straight_mixing)
 
     use mod_profiling, only: memocc
-    use mod_runoptions, only: read_runoptions, calc_DOS_Efermi, calc_GF_Efermi, calc_exchange_couplings, &
+    use mod_runoptions, only: read_runoptions, print_runoptions, calc_DOS_Efermi, calc_GF_Efermi, calc_exchange_couplings, &
       dirac_scale_SpeefOfLight, disable_charge_neutrality, disable_print_serialnumber, modify_soc_Dirac, relax_SpinAngle_Dirac, search_Efermi, &
     set_kmesh_large, stop_1b, stop_1c, use_BdG, use_Chebychev_solver, use_cond_LB, use_decimation, use_lloyd, use_qdos, &
     use_rigid_Efermi, use_semicore, use_virtual_atoms, write_green_host, write_green_imp, write_kkrimp_input, &
-    write_pkkr_input, write_pkkr_operators, use_ldau, set_cheby_nospeedup, set_cheby_nosoc, write_tb_coupling
+    write_pkkr_input, write_pkkr_operators, use_ldau, set_cheby_nospeedup, decouple_spins_cheby, write_tb_coupling, set_cheby_nosoc
     use mod_constants, only: cvlight, ryd
     use mod_wunfiles, only: t_params
     use memoryhandling, only: allocate_semi_inf_host, allocate_magnetization, allocate_cell, allocate_cpa, allocate_soc, allocate_ldau
@@ -313,6 +313,8 @@ contains
     write (1337, *) '  <<< Reading in new style of run-options. >>>'
     if (oldstyle) write (1337, *) '  WARNING: this may overwrite old-style run-options'
     call read_runoptions()
+    ! write all runoptions
+    call print_runoptions(1337)! write to output.0.txt
 
 
 
@@ -884,9 +886,9 @@ contains
 
     if (use_Chebychev_solver) korbit = 1
 
-    if (set_cheby_nosoc) then
-      write (*, '(A)') 'Warning: detected test option <set_cheby_nosoc>: use spin-decoupled radial equations with new solver'
-      write (1337, *)  'Warning: detected test option <set_cheby_nosoc>: reset KORBIT to zero but use NEWSOSOL for spin-decoupled matrices with explicit spin-loop'
+    if (decouple_spins_cheby) then
+      write (*, '(A)') 'Warning: detected test option <decouple_spins_cheby>: use spin-decoupled radial equations with new solver'
+      write (1337, *)  'Warning: detected test option <decouple_spins_cheby>: reset KORBIT to zero but use NEWSOSOL for spin-decoupled matrices with explicit spin-loop'
       korbit = 0
     end if
 
@@ -1165,7 +1167,7 @@ contains
     ! End of allocation of SOC arrays
     !--------------------------------------------------------------------------------
     if (use_Chebychev_solver) then      ! Spin-orbit
-      if (use_Chebychev_solver .and. (nspin/=2) .and. .not.set_cheby_nosoc) stop ' set NSPIN = 2 for SOC solver in inputcard'
+      if (use_Chebychev_solver .and. (nspin/=2) .and. .not.decouple_spins_cheby) stop ' set NSPIN = 2 for SOC solver in inputcard'
       npan_log = 30
       npan_eq = 30
       ncheb = 10
@@ -1193,7 +1195,7 @@ contains
     end if
 
     call ioinput('<SOCSCL>        ', uio, 1, 7, ier)
-    if (ier==0) then
+    if (ier==0 .and. .not.(set_cheby_nosoc .or. decouple_spins_cheby)) then
       write (111, '(A10)') '<SOCSCL>  '
       do i = 1, natyp
         call ioinput('<SOCSCL>        ', uio, i, 7, ier)
@@ -1207,6 +1209,10 @@ contains
       ! !Bernd - old way
       ! write(111,FMT='(A10,50E10.2)') '<SOCSCL>= ',(SOCSCALE(I1),I1=1,NATYP)
       ! !Bernd - old way
+    elseif (set_cheby_nosoc .or. decouple_spins_cheby) then
+      write(*,*) 'Skipped reading <SOCSCL> because <set_cheby_nosoc>= T or <decouple_spins_cheby>= T. Automatically use <SOCSCL>=0.'
+      socscale(:) = 0.0_dp
+      write (111, fmt='(A18,50E10.2)') '<SOCSCL>= ', (socscale(i1), i1=1, natyp)
     else
       write (111, fmt='(A18,50E10.2)') 'Default <SOCSCL>= ', (socscale(i1), i1=1, natyp)
     end if
@@ -1527,6 +1533,15 @@ contains
       intervz = 1
     end if
 
+    call ioinput('<set_kmesh_large>', uio, 1, 7, ier)
+    if (ier==0) then
+      read (unit=uio, fmt=*, iostat=ier) set_kmesh_large
+      if (ier/=0) stop 'Error reading `set_kmesh_large`: check your inputcard'
+      write (111, fmt='(A18,A2)') '<set_kmesh_large>=', set_kmesh_large
+    else
+      write (111, fmt='(A26,A2)') 'Default <set_kmesh_large>=', set_kmesh_large
+    end if
+
     ! Energy contour
     npol = 7
     call ioinput('NPOL            ', uio, 1, 7, ier)
@@ -1904,6 +1919,8 @@ contains
     if (calc_exchange_couplings) then
       nsteps = 1
       write (1337, *) 'RUNOPT XCPL used, setting NSTEPS to 1'
+      set_kmesh_large = .true.
+      write (1337, *) 'RUNOPT XCPL used, enabling set_kmesh_large'
     end if
     if (write_kkrimp_input) then
       nsteps = 1
@@ -1992,7 +2009,7 @@ contains
     end if
 
     ! for broyden spin mixing of noncollinear directions
-    ! activated with the <use_boyden_spinmix> run option
+    ! only used with the <use_broyden_spinmix> run option
     call ioinput('SPINMIXALPHA    ', uio, 1, 7, ier)
     if (ier==0) then
       read (unit=uio, fmt=*, iostat=ier) mixfac_broydenspin
diff --git a/source/KKRhost/startb1.f90 b/source/KKRhost/startb1.f90
index 1f125fbb7ec8be5c89375e4634d16acc21204737..6fb2699c4e0cc4d7f31a887a93fcb972ecf1fde9 100644
--- a/source/KKRhost/startb1.f90
+++ b/source/KKRhost/startb1.f90
@@ -496,7 +496,7 @@ contains
             do j = 1, irmin(ih)
               vm2z(j, i) = vm2z(j, i) + vconst
             end do
-          else if (abs(vconst)>eps) then
+          else if (abs(vconst)>eps .and. ivshift==0) then
             write (1337, *) 'shifting potential by VCONST=', vconst
             do j = 1, nr
               vm2z(j, i) = vm2z(j, i) + vconst
diff --git a/source/KKRhost/testdim.f90 b/source/KKRhost/testdim.f90
index b24fd870477b3340f87526c7b22e128be9bbd467..0d6082c6b72b94f50dde60a57bea80aa3309677a 100644
--- a/source/KKRhost/testdim.f90
+++ b/source/KKRhost/testdim.f90
@@ -31,7 +31,7 @@ contains
   subroutine testdim(nspin,naez,nemb,natyp,ins,insref,nref,irns,nlayer,krel,nspind, &
     nprincd,knosph,irnsd,korbit,invmod)
 
-    use :: mod_runoptions, only: calc_complex_bandstructure, use_Chebychev_solver, use_cont, use_virtual_atoms, set_cheby_nosoc
+    use :: mod_runoptions, only: calc_complex_bandstructure, use_Chebychev_solver, use_cont, use_virtual_atoms, decouple_spins_cheby
     implicit none
 
     integer, intent (in) :: ins    !! 0 (MT), 1(ASA), 2(Full Potential)
@@ -103,7 +103,7 @@ contains
     end if
 
     if (use_Chebychev_solver .and. korbit==0) then
-      if (set_cheby_nosoc) then
+      if (decouple_spins_cheby) then
         write (6, *) 'Using NEWSOSOL for decoupled spin channels.'
       else
         write (6, *) 'Using option NEWSOSOL, change KORBIT in the inputcard from', korbit, 'to 1'
diff --git a/source/KKRhost/tmat_newsolver.F90 b/source/KKRhost/tmat_newsolver.F90
index 1e293bd459617db08d7db2a0d0b0ca00f1662762..3b266c8b95feb74383458ab65287a7914a1efdf4 100644
--- a/source/KKRhost/tmat_newsolver.F90
+++ b/source/KKRhost/tmat_newsolver.F90
@@ -45,7 +45,7 @@ contains
 #endif
     use :: mod_datatypes, only: dp
     use :: mod_runoptions, only: calc_exchange_couplings, disable_tmat_sratrick, formatted_file, stop_1b, &
-      write_BdG_tests, write_pkkr_operators, write_rhoq_input, set_cheby_nospeedup, set_cheby_nosoc, calc_wronskian
+      write_BdG_tests, write_pkkr_operators, write_rhoq_input, set_cheby_nospeedup, decouple_spins_cheby, calc_wronskian
     use :: mod_constants, only: czero, cone, cvlight
     use :: global_variables, only: ntotd, ncleb, nrmaxd, mmaxd, nspind, nspotd, iemxd, lmmaxd, korbit
     use :: mod_wunfiles, only: t_params
@@ -190,7 +190,7 @@ contains
       vnspll0, vnspll1, hlk, jlk, hlk2, jlk2, tmatsph, ull, rll, sll, rllleft, sllleft)
 
     vins(1:irmdnew, 1:lmpot, 1) = vinsnew(1:irmdnew, 1:lmpot, ipot)
-    if (.not.set_cheby_nosoc) vins(1:irmdnew, 1:lmpot, nspin) = vinsnew(1:irmdnew, 1:lmpot, ipot+nspin-1)
+    if (.not.decouple_spins_cheby) vins(1:irmdnew, 1:lmpot, nspin) = vinsnew(1:irmdnew, 1:lmpot, ipot+nspin-1)
 
     KBdG = 0
 #ifdef CPP_BdG
@@ -345,7 +345,7 @@ contains
         !$omp end critical
 #endif
 
-        if ( .not. set_cheby_nosoc) then
+        if ( .not. decouple_spins_cheby) then
           ! Contruct the spin-orbit coupling hamiltonian and add to potential
           call spinorbit_ham(lmax, lmmax0d, vins, rnew, eryd, zat, cvlight, socscale, nspin, lmpot, theta, phi, ipan_intervall, rpan_intervall, npan_tot, ncheb, irmdnew, nrmaxd, &
             vnspll0(:,:,:), vnspll1(:,:,:,ith), '1')
@@ -411,7 +411,7 @@ contains
         hlk2(:, :, ith) = czero
         jlk2(:, :, ith) = czero
         gmatprefactor = czero
-        if (set_cheby_nosoc) then
+        if (decouple_spins_cheby) then
           use_fullgmat = 0
         else
           use_fullgmat = 1
diff --git a/source/KKRhost/writekkrflex.f90 b/source/KKRhost/writekkrflex.f90
index 162890916a962efbb0bc4ad34a6384a049de8b4a..e9eb3c352729c564e6a3fdeb5e5c2f8ef0c0068e 100644
--- a/source/KKRhost/writekkrflex.f90
+++ b/source/KKRhost/writekkrflex.f90
@@ -84,7 +84,6 @@ contains
       end if
 
       ! read in non-collinear angles
-!      call read_angles(t_params, natyp, theta, phi)
       theta(1:natyp) = t_params%theta(1:natyp)
       phi(1:natyp) = t_params%phi(1:natyp)
 
diff --git a/source/KKRhost/wunfiles.F90 b/source/KKRhost/wunfiles.F90
index f9b99b9632e1171763734f2da5a607a7c709c181..13e58ac6b1e50cd99560d29ad835cb56641e9433 100644
--- a/source/KKRhost/wunfiles.F90
+++ b/source/KKRhost/wunfiles.F90
@@ -366,7 +366,7 @@ contains
     use :: mod_runoptions, only: impurity_operator_only, relax_SpinAngle_Dirac, use_Chebychev_solver, use_qdos, &
       write_cpa_projection_file, write_deci_tmat, write_gmat_file, write_green_host, write_green_imp, write_gref_file, &
       write_kkrimp_input, write_lloyd_cdos_file, write_lloyd_dgref_file, write_lloyd_dtmat_file, write_lloyd_file, &
-      write_lloyd_g0tr_file, write_lloyd_tralpha_file, write_pkkr_input, write_pkkr_operators, write_tmat_file, set_cheby_nosoc
+      write_lloyd_g0tr_file, write_lloyd_tralpha_file, write_pkkr_input, write_pkkr_operators, write_tmat_file, decouple_spins_cheby
 
     implicit none
     ! ..
@@ -691,7 +691,7 @@ contains
     t_inc%naclsmax = naclsmax
     t_inc%nshell0 = nshell(0)
     if (use_Chebychev_solver) t_inc%newsosol = .true.
-    if (set_cheby_nosoc) t_inc%nosoc = .true.
+    if (decouple_spins_cheby) t_inc%nosoc = .true.
     if (write_deci_tmat) t_inc%deci_out = .true.
     !--------------------------------------------------------------------------------
     ! t_inc t_inc t_inc t_inc t_inc t_inc t_inc t_inc t_inc t_inc
diff --git a/source/KKRimp/kkrflex.F90 b/source/KKRimp/kkrflex.F90
index a33206109159a8d0e2e88a01c612a911a360c20f..29225bbac2f698a8facd6f49897606be6c6cc9ed 100644
--- a/source/KKRimp/kkrflex.F90
+++ b/source/KKRimp/kkrflex.F90
@@ -79,6 +79,9 @@ program kkrflex
 
   use mod_mathtools
   use mod_version_info
+#ifdef CPP_PATCH_INTEL
+  use mod_patch_intel, only: patch_intel
+#endif
   implicit none 
 
 !***********************************
@@ -213,6 +216,14 @@ mpi_size=1
 ! find serial number that is printed to files
 call construct_serialnr()
 
+
+#ifdef CPP_PATCH_INTEL
+  ! this makes the MKL think it works on intel hardware even if it runs on AMD
+  ! seems to give better performance than unpatched MKL or BLIS+LIBFLAME
+  call patch_intel()
+#endif
+
+
 ! ********************************************************** 
 ! open the log (and timing) file for each processor 
 ! the log file is called out_log.xxx.txt where xxx is 
@@ -265,7 +276,7 @@ mythread = omp_get_thread_num()
 if (myrank==0 .and. mythread==0) then
   nthreads = omp_get_num_threads()
   write (*, '(/79("*")//1X,A,I5//79("*")/)') 'Number of OpenMP threads used:', nthreads
-  if(t_inc%i_write) write (1337, '(/79("*")//1X,A,I5//79("*")/)') 'Number of OpenMP threads used:', nthreads
+  if(t_inc%i_write>0) write (1337, '(/79("*")//1X,A,I5//79("*")/)') 'Number of OpenMP threads used:', nthreads
 end if
 !$omp end parallel
 #endif
diff --git "a/source/KKRsusc/SOURCE/rhoval_new.f90\\" "b/source/KKRsusc/SOURCE/rhoval_new.f90\\"
deleted file mode 100755
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..0000000000000000000000000000000000000000
diff --git a/source/PKKprime/mod_calconfs.F90 b/source/PKKprime/mod_calconfs.F90
index e8cf9b9247702e6d895a8c086e08b3a71a9d7e53..5f311ae0e489f41a75f714cd41259e070bb673ff 100644
--- a/source/PKKprime/mod_calconfs.F90
+++ b/source/PKKprime/mod_calconfs.F90
@@ -1288,13 +1288,28 @@ contains
       if(cfg%lspin==1 .or. force_spin) then
 
         call IoInput('LSPINATOM ',uio,1,7,ierr)
-        read(unit=uio,fmt=*) cfg%lspinperatom
+        if(ierr==0) then
+          read(unit=uio,fmt=*) cfg%lspinperatom
+        else ! ensures compatibility of old format input files
+          write(*,*) "Warning : LSPINATOM set to 0 by default !"
+          cfg%lspinperatom=0
+        end if!ierr==0
 
         call IoInput('LTORQ     ',uio,1,7,ierr)
-        read(unit=uio,fmt=*) cfg%ltorq
+        if(ierr==0) then
+          read(unit=uio,fmt=*) cfg%ltorq
+        else ! ensures compatibility of old format input files
+          write(*,*) "Warning : LTORQ set to 0 by default !"
+          cfg%ltorq=0
+        end if!ierr==0
 
         call IoInput('LTORQATOM ',uio,1,7,ierr)
-        read(unit=uio,fmt=*) cfg%ltorqperatom
+        if(ierr==0) then
+          read(unit=uio,fmt=*) cfg%ltorqperatom
+        else ! ensures compatibility of old format input files
+          write(*,*) "Warning : LTORQATOM set to 0 by default !"
+          cfg%ltorqperatom=0
+        end if!ierr==0
 
         call IoInput('LSPINFLUX ',uio,1,7,ierr)
         if(ierr==0) then
@@ -1313,7 +1328,12 @@ contains
         end if!ierr==0
 
         call IoInput('SIMPSON   ',uio,1,7,ierr)
-        read(unit=uio,fmt=*) cfg%simpson
+        if(ierr==0) then
+          read(unit=uio,fmt=*) cfg%simpson
+        else ! ensures compatibility of old format input files
+          write(*,*) "Warning : SIMPSON set to F by default !"
+          cfg%simpson = .false.
+        end if!ierr==0
 
         call IoInput('LSAVEEIGV ',uio,1,7,ierr)
         read(unit=uio,fmt=*) inum
@@ -1324,7 +1344,12 @@ contains
         end if
 
         call IoInput('LRASHBA   ',uio,1,7,ierr)
-        read(unit=uio,fmt=*) cfg%lrashba
+        if(ierr==0) then
+          read(unit=uio,fmt=*) cfg%lrashba
+        else ! ensures compatibility of old format input files
+          write(*,*) "Warning : LRASHBA set to F by default !"
+          cfg%lrashba = 0
+        end if!ierr==0
         if(cfg%lrashba==1)then
           call IoInput('ILAYER    ',uio,1,7,ierr)
           read(unit=uio,fmt=*) cfg%ilayer
diff --git a/source/PKKprime/mod_fermisurf.F90 b/source/PKKprime/mod_fermisurf.F90
index a5607af7a39dd1304d3212e2dbb5786867dddde2..8450ca392afc9c57c3a4d70ca9c0923eff320f81 100644
--- a/source/PKKprime/mod_fermisurf.F90
+++ b/source/PKKprime/mod_fermisurf.F90
@@ -24,6 +24,9 @@ contains
     use mod_fermisurf_3D,    only: find_fermisurface_3D
     use mod_fermisurf_2D,    only: find_fermisurface_2D
     use mod_fermisurf_basic, only: save_kpointsfile_int
+#ifdef CPP_TIMING
+    use mod_timing, only: timing_start, timing_stop
+#endif
 
     implicit none
 
@@ -44,12 +47,21 @@ contains
 
 
 
+#ifdef CPP_TIMING
+    call timing_start('  prepare FS calculation')
+#endif
     call read_fscfg(lfsurf, nCub3, nFSiter, nROOTiter, nstepsconnect, nCut_iter, roottype, rooteps, lrefine, nrefinenew)
     if(lfsurf/=1) return
 
     !initialize symmetries
     call set_symmetries(inc, lattice, symmetries)
+#ifdef CPP_TIMING
+    call timing_stop('  prepare FS calculation')
+#endif
 
+#ifdef CPP_TIMING
+    call timing_start('  calculate FS')
+#endif
     select case (inc%nBZdim)
       case(2);  call find_fermisurface_2D( inc, lattice, cluster, tgmatrx, symmetries, nCub3, nFSiter, nROOTiter, nstepsconnect, &
                                          & nCut_iter, roottype, rooteps, lrefine, nrefinenew, nkpts_int, kpoints_int, areas_int  )
@@ -57,6 +69,9 @@ contains
                                          & nCut_iter, roottype, rooteps, lrefine, nrefinenew, nkpts_int, kpoints_int, areas_int  )
       case default; stop 'dimens must be 2 or 3'
     end select
+#ifdef CPP_TIMING
+    call timing_stop('  calculate FS')
+#endif
 
 
 !   save the integration k-points and areas to a file
diff --git a/source/PKKprime/mod_fermisurf_3D.F90 b/source/PKKprime/mod_fermisurf_3D.F90
index 2f6f22e3063c80e4613c03f751c360becd64ee40..d960576b08111054b50d32882d90fb04245590c1 100644
--- a/source/PKKprime/mod_fermisurf_3D.F90
+++ b/source/PKKprime/mod_fermisurf_3D.F90
@@ -29,6 +29,9 @@ contains
     use mod_ioformat,   only: filename_cubesinfo, ext_formatted, fmt_fn_ext
     use mod_iohelp,     only: file_present
     use mod_fermisurf_basic, only: get_cubesinfo_filename, read_cubesfile, save_cubesfile, mark_cubes_FScross, find_kpoints_irredset, save_kpointsfile_vis
+#ifdef CPP_TIMING
+    use mod_timing, only: timing_start, timing_stop
+#endif
     implicit none
 
     type(inc_type),     intent(in) :: inc
@@ -59,6 +62,9 @@ contains
     character(len=256) :: filename, filetest
     logical :: l_cubesfile, l_exist
 
+#ifdef CPP_TIMING
+    call timing_start('  FS 3D - get cubes')
+#endif
 
     call get_IBZwedge_faces(lattice%recbv, symmetries%nsym_used, symmetries%rotmat, symmetries%isym_used, nfaces, nvec, dscal, bounds)
 
@@ -134,12 +140,18 @@ contains
         end do!icube
       end if!iterstart==1
 
+#ifdef CPP_TIMING
+    call timing_stop('  FS 3D - get cubes')
+#endif
 
       !======
       != scan the cubes for intersections
       !======
       do iter=iterstart,nFSiter
 
+#ifdef CPP_TIMING
+        call timing_start('  FS 3D - FS iter - mark cubes in IBZ')
+#endif
         !=== mark the cubes that lie (at least with one corner) within the first BZ ===!
         call mark_cubes_in_IBZ(nCub3, nfaces, nvec, dscal, bounds, nmarked, imarked)
         if(myrank==master) then
@@ -148,7 +160,13 @@ contains
           write(*,'("***** Iteration ",I0," *****")') iter
           write(*,'(2X,2(A,I0),(A,F5.1,A))') 'Cubes found within the IBZ: ', nmarked, ' of ', ntotal, ' (= ', real(nmarked*100)/ntotal,' %)'
         end if!myrank==master
+#ifdef CPP_TIMING
+        call timing_stop('  FS 3D - FS iter - mark cubes in IBZ')
+#endif
 
+#ifdef CPP_TIMING
+        call timing_start('  FS 3D - FS iter - find FS crossings')
+#endif
         !========= mark the cubes that cross the Fermi surface =========!
         !=== (only searching across the four diagonals of the cubes) ===!
         ntotal = nmarked
@@ -161,7 +179,13 @@ contains
           write(*,'(2X,2(A,I0),(A,F5.1,A))') 'Cubes found intersecting with FS: ', nmarked, ' of ', ntotal, ' (= ', real(nmarked*100)/ntotal,' %)'
           call save_cubesfile(nCub3, nmarked, imarked, lintermediate=.true.)
         end if!myrank==master
+#ifdef CPP_TIMING
+        call timing_stop('  FS 3D - FS iter - find FS crossings')
+#endif
 
+#ifdef CPP_TIMING
+        call timing_start('  FS 3D - FS iter - divide cubes')
+#endif
         !=== cut the remaining cubes into smaller pieces and update the indices ===!
 !       write(1000+myrank,*) iter, nCut_iter(iter)
         call cut_and_update_cubes(nCut_iter(iter), nCub3, nmarked, imarked)
@@ -170,6 +194,9 @@ contains
           write(filename,'("cubes_iter=",I0,"_step=",I0,"_",(A),".vtp")') iter, 3, 'cut'
           call cubes2VTK(filename, nCub3, nmarked, imarked, bounds)
         end if!myrank==master
+#ifdef CPP_TIMING
+        call timing_stop('  FS 3D - FS iter - divide cubes')
+#endif
 
       end do!iter
 
@@ -238,6 +265,10 @@ contains
 !     dtmp=dtmp+datan(ii*0.1d0)/ii
 !   end do!ii
 
+#ifdef CPP_TIMING
+    call timing_start('  FS 3D - find FS intersections')
+#endif
+
 !   write(*,*) 'before sub find_intesection_triangles, myrank=',myrank
     call find_intesection_triangles( inc, lattice, cluster, tgmatrx, symmetries,  &
                                    & nCub3, bounds, nmarked, imarked,             &
@@ -248,6 +279,9 @@ contains
 
     call find_kpoints_irredset( bounds, nkpts_vis, kpoints_vis, nkpts_irr, kpt2irr, irr2kpt)
 
+#ifdef CPP_TIMING
+    call timing_stop('  FS 3D - find FS intersections')
+#endif
 
     !save the visualization k-points to a file
     if(myrank==master) call save_kpointsfile_vis(nkpts_vis, nkpts_irr, kpoints_vis, symmetries%nsym_used, symmetries%isym_used, kpt2irr, irr2kpt, vis2int)
@@ -277,6 +311,9 @@ contains
     use mod_fermisurf_basic, only: roots_along_edge, compare_two_eigv_in_substeps, ROOT_IMAG, ROOT_REAL, generate_cubevertices
 #ifdef CPP_MPI
     use mpi
+#endif
+#ifdef CPP_TIMING
+    use mod_timing,     only: timing_start, timing_stop
 #endif
     implicit none
 
@@ -407,6 +444,10 @@ contains
 
       !update statusbar
       if(mod(icub,printstep)==0 .and. myrank==master) write(*,FMT=200)
+#ifdef CPP_TIMING
+      if (icub==1) call timing_start('  FS 3D - find FS intersections - time1')
+      if (icub==1) call timing_start('  FS 3D - find FS intersections - time10')
+#endif
 
 !     write(iofile,'(A,I0)') 'starting cube ', imarked(icub+ioff)
 
@@ -433,6 +474,11 @@ contains
                              & eigwends(:,:,iedge)                                  )
       end do!iedge
 
+#ifdef CPP_TIMING
+      if (icub==1) call timing_stop('  FS 3D - find FS intersections - time1')
+      if (icub==10) call timing_stop('  FS 3D - find FS intersections - time10')
+#endif
+
 #ifdef CPP_DEBUG
       write(iofile,'(2X,"#roots found on the edges:")')
       do iedge=1,19
diff --git a/source/PKKprime/mod_routines.F90 b/source/PKKprime/mod_routines.F90
index 0521c21efbd1e82da12a39ba80a23431493f7c37..3f67991c190b31b9130b73e140c06d56a7707f1d 100644
--- a/source/PKKprime/mod_routines.F90
+++ b/source/PKKprime/mod_routines.F90
@@ -28,6 +28,10 @@ contains
 #ifdef CPP_MPI
     use mpi
 #endif
+#ifdef CPP_TIMING
+    use mod_timing,     only: timing_init, timing_start, timing_stop
+    use mod_types, only: t_inc ! needed to set i_time=0 for all but the master rank
+#endif
 
     implicit none
 
@@ -46,13 +50,23 @@ contains
 #endif
     call mympi_init()
 
+#ifdef CPP_TIMING
+    if (myrank/=master) t_inc%i_time = 0 ! diable writeing of the timing file for all but the master rank
+    call timing_init(myrank, disable_serial_number=.true.)
+#endif
+
     !Read in TBKKR-data
+#ifdef CPP_TIMING
+    call timing_start('Read TBkkr-data')
+#endif
     call read_inc(inc)
-
     call read_TBkkrdata(inc, lattice, cluster, tgmatrx)
 
     !Perform tests
     if(myrank==master) call testpath(inc, lattice, cluster, tgmatrx)
+#ifdef CPP_TIMING
+    call timing_stop('Read TBkkr-data')
+#endif
 
     !Calculate the Fermi Surface
     call fermisurface(inc, lattice, cluster, tgmatrx, nkpts, kpoints, areas)
diff --git a/source/PKKprime/mod_scattering.F90 b/source/PKKprime/mod_scattering.F90
index 2ff1357b5d81cd82e14ee20668e9e2f8b784e2d5..451f6a3c8d4cae69c497e206916cd5a52b1339f4 100644
--- a/source/PKKprime/mod_scattering.F90
+++ b/source/PKKprime/mod_scattering.F90
@@ -102,7 +102,7 @@ contains
     use mod_mympi,      only: myrank, nranks, master
     use mod_mathtools,  only: pi
 #ifdef CPP_TIMING
-    use mod_timing,     only: timing_init, timing_start, timing_stop
+    use mod_timing,     only: timing_start, timing_stop
 #endif
     use mpi
     implicit none
@@ -167,7 +167,6 @@ contains
     BZVol = getBZvolume(lattice%recbv)
 
 #ifdef CPP_TIMING
-    call timing_init(myrank, disable_serial_number=.true.)
     call timing_start('Read in of data')
 #endif
 
diff --git a/source/common/findgroup.f90 b/source/common/findgroup.f90
index bf4e476e855b12d2bf744a90656a5f10d0419d28..86a1bddd7f4b0cfb7fab713ee76400140777d688 100644
--- a/source/common/findgroup.f90
+++ b/source/common/findgroup.f90
@@ -274,11 +274,16 @@ contains
     real (kind=dp) :: bravais1(3,3),tol
     integer :: i,j,isym,nsym,i0,ia
     character(len=10) :: charstr(64)
-    logical :: llatbas,lbulk
+    logical :: llatbas, lbulk
+    logical, save :: writesymfile = .true.
     tol=1e-5
     !     -------------------------------------------------------------
     nsym = 0
-    call pointgrp(rotmat,rotname)
+
+    if (myrank/=master) writesymfile = .false. ! write only once on master rank
+    call pointgrp(rotmat,rotname, writesymfile)
+    if (myrank==master) writesymfile = .false. ! suppresses further sym.out creation
+
     do i=1,3
       do j=1,3
         bravais1(j,i) = bravais(j,i)
diff --git a/source/common/ioinput.f90 b/source/common/ioinput.f90
index 911c1d56ddea4b1a77597ea7f2610b8aae3fd4bf..9c535660db650dec1f58ed1c98cb3d82f7cec62e 100644
--- a/source/common/ioinput.f90
+++ b/source/common/ioinput.f90
@@ -153,7 +153,7 @@ contains
     integer, intent(in) :: ifile
     integer, parameter :: maxcol = 2048
 
-    integer :: ierror, ios, nlinetmp, ncoltmp, iline
+    integer :: ierror, ios, nlinetmp, ncoltmp, iline, ipos
     character(len=maxcol) :: line
     character(len=:), allocatable :: linetmp
 
@@ -195,6 +195,17 @@ contains
       rewind (ifile)
       do iline = 1, nlines
         read (ifile, fmt='(A)') linetmp
+
+        ! now remove comments which follow the '#' sign
+        ! to do this we overwrite linetmp starting from the '#' sign with spaces
+        ipos = index(linetmp, '#')
+        if (ipos>0) then
+          write(1337,'(A)') 'WARNING: Found "#" in inputcard and change line for reading'
+          write(1337,'(2A)') 'Original line:', linetmp
+          linetmp(ipos:) = ' '
+          write(1337,'(2A)') 'Changed to:', linetmp
+        end if
+ 
         call capitalize_escaped_keywords(linetmp, linetxt(iline), ierror)
         if (ierror==1) then
           write(1337,'(A,I5,A)') 'Warning capitalizing line ', iline, ' of inputcard.'
@@ -204,16 +215,18 @@ contains
           write(*,   '(A,I5,A)') 'Error capitalizing line ', iline, ' of inputcard.'
           stop
         end if
-      end do
+
+      end do ! iline
 
       !--------------------------------------------------------------------------------
       ! close inputcard and finish up
       !--------------------------------------------------------------------------------
       close (ifile)
       inputcard_is_read = .true.
-    end if
+
+    end if ! .not.inputcard_is_read
     
-  end subroutine
+  end subroutine read_inputcard
 
   !-------------------------------------------------------------------------------
   !> Summary: Capitalize all escaped keywords in a string
diff --git a/source/common/patch_intel.c b/source/common/patch_intel.c
new file mode 100644
index 0000000000000000000000000000000000000000..bc7d055ade9a2dcb2100130b7966a1b30bf10719
--- /dev/null
+++ b/source/common/patch_intel.c
@@ -0,0 +1,196 @@
+/* Code from Agner Fog to improve performance of INTEL compiler/libraries on AMD */
+
+
+
+/***********************  intel_cpu_feature_patch.c  **************************
+* Author:           Agner Fog
+* Date created:     2014-07-30
+* Last modified:    2019-12-29
+* Source URL:       https://www.agner.org/optimize/intel_dispatch_patch.zip
+* Language:         C or C++
+*
+* Description:
+* Patch for Intel compiler version 13.0 and later, including the general
+* libraries, LIBM and SVML, but not MKL and VML.
+*
+* Example of how to patch Intel's CPU feature dispatcher in order to improve
+* compatibility of generated code with non-Intel processors.
+* In Windows: Use the static link libraries (*.lib), not the dynamic link
+* librarise (*.DLL).
+* In Linux and Mac: use static linking (*.a) or dynamic linking (*.so).
+*
+* Include this code in your C or C++ program and call intel_cpu_patch();
+* before any call to the library functions.
+*
+* Copyright (c) 2014-2019. BSD License 2.0
+******************************************************************************/
+#include <stdint.h>
+
+#ifdef __cplusplus  // use C-style linking
+extern "C" {
+#endif
+
+// link to Intel libraries
+extern int64_t __intel_cpu_feature_indicator;    // CPU feature bits
+extern int64_t __intel_cpu_feature_indicator_x;  // CPU feature bits
+void __intel_cpu_features_init();                // unfair dispatcher: checks CPU features for Intel CPU's only
+void __intel_cpu_features_init_x();              // fair dispatcher: checks CPU features without discriminating by CPU brand
+
+#ifdef __cplusplus
+}  // end of extern "C"
+#endif
+
+void intel_cpu_patch() {
+    // force a re-evaluation of the CPU features without discriminating by CPU brand
+    __intel_cpu_feature_indicator = 0;
+    __intel_cpu_feature_indicator_x = 0;
+    __intel_cpu_features_init_x();
+    __intel_cpu_feature_indicator = __intel_cpu_feature_indicator_x;
+}
+
+/***********************  intel_mkl_cpuid_patch.c  **************************
+* Author:           Agner Fog
+* Date created:     2019-12-29
+* Source URL:       https://www.agner.org/optimize/intel_dispatch_patch.zip
+* Language:         C or C++
+*
+* Description:
+* Patch for Intel Math Kernel Library (MKL) version 14.0 and later, except
+* the Vector Math Library (VML).
+*
+* Example of how to override Intel's CPU feature dispatcher in order to improve
+* compatibility of Intel function libraries with non-Intel processors.
+*
+* Include this code in your C or C++ program and make sure it is linked before
+* any Intel libraries. You may need to include intel_mkl_feature_patch.c as well.
+*
+* Copyright (c) 2019. BSD License 2.0
+******************************************************************************/
+//#include <stdint.h>
+#ifdef __cplusplus  // use C-style linking
+extern "C" {
+#endif
+/*
+    // detect if Intel CPU
+    int mkl_serv_intel_cpu() {
+        return 1;
+    }
+
+    // detect if Intel CPU
+    int mkl_serv_intel_cpu_true() {
+        return 1;
+    }
+
+
+    int mkl_serv_cpuhaspnr_true() {
+        return 0;
+    }
+
+    int mkl_serv_cpuhaspnr() {
+        return 0;
+    }
+
+    int mkl_serv_cpuhasnhm() {
+        return 0;
+    }
+
+    int mkl_serv_cpuisbulldozer() {
+        return 0;
+    }
+
+    int mkl_serv_cpuiszen() {
+        return 1;
+    }
+
+    int mkl_serv_cpuisatomsse4_2() {
+        return 0;
+    }
+
+    int mkl_serv_cpuisatomssse3() {
+        return 0;
+    }
+
+    int mkl_serv_cpuisitbarcelona() {
+        return 0;
+    }
+
+    int mkl_serv_cpuisskl() {
+        return 0;
+    }
+
+    int mkl_serv_cpuisknm() {
+        return 0;
+    }
+
+    int mkl_serv_cpuisclx() {
+        return 0;
+    }
+
+    int mkl_serv_get_microarchitecture() {
+        // I don't know what this number means
+        return 33;
+    }
+   int mkl_serv_cpuisclx() {
+        return 1;
+    }
+    int mkl_serv_cpuiszen() {
+        return 1;
+    }
+*/
+    int mkl_serv_intel_cpu() {
+        return 1;
+    }
+
+    int mkl_serv_intel_cpu_true() {
+        return 1;
+    }
+
+#ifdef __cplusplus
+}  // end of extern "C"
+#endif
+/***********************  intel_mkl_feature_patch.c  **************************
+* Author:           Agner Fog
+* Date created:     2014-07-30
+* Last modified:    2019-12-29
+* Source URL:       https://www.agner.org/optimize/intel_dispatch_patch.zip
+* Language:         C or C++
+*
+* Description:
+* Patch for Intel Math Kernel Library (MKL) version 14.0 and later, except
+* the Vector Math Library (VML).
+*
+* Example of how to patch Intel's CPU feature dispatcher in order to improve
+* compatibility of Intel function libraries with non-Intel processors.
+* In Windows: Use the static link libraries (*.lib), not the dynamic link
+* librarise (*.DLL).
+* In Linux and Mac: use static linking (*.a) or dynamic linking (*.so).
+*
+* Include this code in your C or C++ program and call intel_mkl_patch();
+* before any call to the MKL functions. You may need to include
+* intel_mkl_cpuid_patch.c as well.
+*
+* Copyright (c) 2014-2019. BSD License 2.0
+******************************************************************************/
+//#include <stdint.h>
+
+#ifdef __cplusplus  // use C-style linking
+extern "C" {
+#endif
+
+// link to MKL libraries
+extern int64_t __intel_mkl_feature_indicator;       // CPU feature bits
+extern int64_t __intel_mkl_feature_indicator_x;     // CPU feature bits
+void __intel_mkl_features_init();                   // unfair dispatcher: checks CPU features for Intel CPU's only
+void __intel_mkl_features_init_x();                 // fair dispatcher: checks CPU features without discriminating by CPU brand
+
+#ifdef __cplusplus
+}  // end of extern "C"
+#endif
+
+void intel_mkl_patch() {
+    // force a re-evaluation of the CPU features without discriminating by CPU brand
+    __intel_mkl_feature_indicator = 0;
+    __intel_mkl_feature_indicator_x = 0;
+    __intel_mkl_features_init_x();
+    __intel_mkl_feature_indicator = __intel_mkl_feature_indicator_x;
+}
diff --git a/source/common/patch_intel.f90 b/source/common/patch_intel.f90
new file mode 100644
index 0000000000000000000000000000000000000000..b31a152d42214dfa3a67304a41b18cb5fcc701d0
--- /dev/null
+++ b/source/common/patch_intel.f90
@@ -0,0 +1,43 @@
+
+!-----------------------------------------------------------------------------------------!
+! Copyright (c) 2020 Peter Grünberg Institut, Forschungszentrum Jülich, Germany           !
+! This file is part of Jülich KKR code and available as free software under the conditions!
+! of the MIT license as expressed in the LICENSE.md file in more detail.                  !
+!-----------------------------------------------------------------------------------------!
+
+module mod_patch_intel
+
+  private
+  public :: patch_intel
+
+
+  !-------------------------------------------------------------------------------
+  !> Summary: interface to patch_intel.c which make mkl believe it works on a intel CPU
+  !> Author: 
+  !> Category: 
+  !> Deprecated: False 
+  !> taken from fleur code, seems to give better performance on AMD hardware
+  !> than unpatched MKL or AMD's BLIS+FLAME libraries.
+  !-------------------------------------------------------------------------------
+contains
+
+  subroutine patch_intel()
+    !we try to patch the intel libraries to overwrite determination of 'INTEL' brand
+    !otherwise performance on AMD CPUs is bad.
+    INTERFACE
+      subroutine mkl_patch() BIND(C, name="intel_mkl_patch")
+      END subroutine
+    END INTERFACE
+    INTERFACE
+      subroutine cpu_patch() BIND(C, name="intel_cpu_patch")
+      END subroutine
+    END INTERFACE
+
+    print *,"INTEL PATCH applied"
+
+    call cpu_patch()
+    call mkl_patch()
+
+  end subroutine patch_intel
+
+end module mod_patch_intel
\ No newline at end of file
diff --git a/source/common/pointgrp.f90 b/source/common/pointgrp.f90
index 348bd5cc76695604e7d5f22d2e1b37a8d6cbfd59..1d43e15c5cd2991b957c1bfe9c7a812830befad1 100644
--- a/source/common/pointgrp.f90
+++ b/source/common/pointgrp.f90
@@ -24,10 +24,14 @@ contains
   !> This subroutine defines the rotation matrices for all the 32 point groups and names them after
   !> J.F. Cornwell (Group Theory??) second edition Appendix D, p 324-325
   !-------------------------------------------------------------------------------
-  subroutine pointgrp(rotmat, rotname)
+  subroutine pointgrp(rotmat, rotname, writesymfile)
 
     implicit none
 
+    ! optional input, can trigger writeout of symmetry matrices to sym.out file
+    logical, optional :: writesymfile
+    integer, parameter :: iou=3514 ! file unit for sym.out file
+
     ! .. Output variables
     real (kind=dp), dimension(64, 3, 3), intent(out) :: rotmat !! Rotation matrices
     character (len=10), dimension(64), intent(out) :: rotname  !! Name of the space group
@@ -243,6 +247,20 @@ contains
       rotname(56+is) = 'I' // rotname(48+is)
     end do
 
+    ! for FS code we should be able to write out the symmetries to a file
+    if (present(writesymfile)) then
+      if(writesymfile)then
+        open(unit=iou,file='sym.out',form='formatted',action='write')
+        write(iou,'(I0)') 64
+        do is=1,64
+          write(iou,'(A)') ROTNAME(is)
+          write(iou,'(3ES25.16)') ROTMAT(is,:,:)
+        end do
+        close(iou)
+        writesymfile = .false.
+      end if ! writesymfile
+    end if ! present(writesymfile)
+
     ! ccccccccccccccccccccccccccccccccccccccccccccccccc
   end subroutine pointgrp
 
diff --git a/source/common/runoptions.F90 b/source/common/runoptions.F90
index bf0c430dd0f990db59608cb9dac221918f4bda65..536ad1e866a60a6816978fab17999b84cd2010c1 100644
--- a/source/common/runoptions.F90
+++ b/source/common/runoptions.F90
@@ -19,7 +19,8 @@ module mod_runoptions
   logical :: calc_DOS_Efermi = .false.                 !!calculate DOS at Fermi energy only (former: 'DOS-EF')
   logical :: calc_GF_Efermi = .false.                  !!calculation of cluster Green function at E Fermi (former: 'GF-EF')
   logical :: set_cheby_nospeedup = .false.             !!always calculate irregular solution in Chebychev solver (even if not needed) (former: 'norllsll')
-  logical :: set_cheby_nosoc     = .false.             !!decouple matrices in Chebychev solver neglecting SOC (former: 'NOSOC')
+  logical :: decouple_spins_cheby = .false.            !!decouple spin matrices in Chebychev solver neglecting SOC and for collinear calculations only
+  logical :: set_cheby_nosoc     = .false.             !!set SOC strength to 0 for all atoms (former: 'NOSOC')
   logical :: use_cheby_quadprec  = .false.             !!use quadruple precision in Chebychev solver for irregular solution (former: 'quadprec')
   logical :: calc_complex_bandstructure = .false.      !!complex band structure (former: 'COMPLEX')
   logical :: calc_exchange_couplings = .false.         !!calculate magnetic exchange coupling parameters (former: 'XCPL')
@@ -112,8 +113,8 @@ module mod_runoptions
   logical :: write_tmat_file = .false.                 !!write t-matix to file (former: 'tmatfile')
   logical :: write_tb_coupling = .false.               !!write couplings in tight-binging reference system to file `couplings.dat` (former: 'godfrin')
   logical :: calc_wronskian = .false.                  !!calculate the wronskian relations of first and second kind for the wavefunctions (see PhD Bauer pp 48)
-  logical :: use_boyden_spinmix = .false.              !! use broyden spin mixing for noncollinear angles
-  logical :: write_angles_alliter= .false.             !! use broyden spin mixing for noncollinear angles
+  logical :: use_broyden_spinmix = .false.             !! use broyden spin mixing for noncollinear angles
+  logical :: write_angles_alliter= .false.             !! write out noncollinear angles for all iterations
 
   !some old run and test options have been removed:
   !  'atptshft': replaced by presence or absence of IVSHIFT in inputcard
@@ -204,6 +205,7 @@ module mod_runoptions
     call set_runoption(symmetrize_potential_madelung , '<symmetrize_potential_madelung>' , '<potsymm>' )
     call set_runoption(use_cheby_quadprec            , '<use_cheby_quadprec>'            , '<quadprec>')
     call set_runoption(set_cheby_nosoc               , '<set_cheby_nosoc>'               , '<NOSOC>'   )
+    call set_runoption(decouple_spins_cheby          , '<decouple_spins_cheby>')
     call set_runoption(set_empty_system              , '<set_empty_system>'              , '<zeropot>' )
     call set_runoption(write_tmat_file               , '<write_tmat_file>'               , '<tmatfile>')
     call set_runoption(write_tb_coupling             , '<write_tb_coupling>'             , '<godfrin>' )
@@ -233,7 +235,7 @@ module mod_runoptions
     call set_runoption(use_lloyd                     , '<use_lloyd>'                     , '<LLOYD>'   )
     call set_runoption(write_gmat_file               , '<write_gmat_file>'               , '<gmatfile>')
     call set_runoption(calc_wronskian                , '<calc_wronskian>'                , '<wronskian>')
-    call set_runoption(use_boyden_spinmix            , '<use_boyden_spinmix>'            , '<bryspinmix>')
+    call set_runoption(use_broyden_spinmix           , '<use_broyden_spinmix>'            , '<bryspinmix>')
     call set_runoption(write_angles_alliter          , '<write_angles_alliter>')
 
   end subroutine read_runoptions
@@ -746,6 +748,7 @@ module mod_runoptions
     call mpi_bcast(symmetrize_potential_madelung , 1, mpi_logical, master, mpi_comm_world, ierr)
     call mpi_bcast(use_cheby_quadprec            , 1, mpi_logical, master, mpi_comm_world, ierr)
     call mpi_bcast(set_cheby_nosoc               , 1, mpi_logical, master, mpi_comm_world, ierr)
+    call mpi_bcast(decouple_spins_cheby          , 1, mpi_logical, master, mpi_comm_world, ierr)
     call mpi_bcast(set_empty_system              , 1, mpi_logical, master, mpi_comm_world, ierr)
     call mpi_bcast(write_tmat_file               , 1, mpi_logical, master, mpi_comm_world, ierr)
     call mpi_bcast(write_tb_coupling             , 1, mpi_logical, master, mpi_comm_world, ierr)
@@ -775,10 +778,124 @@ module mod_runoptions
     call mpi_bcast(use_lloyd                     , 1, mpi_logical, master, mpi_comm_world, ierr)
     call mpi_bcast(write_gmat_file               , 1, mpi_logical, master, mpi_comm_world, ierr)
     call mpi_bcast(calc_wronskian                , 1, mpi_logical, master, mpi_comm_world, ierr)
-    call mpi_bcast(use_boyden_spinmix            , 1, mpi_logical, master, mpi_comm_world, ierr)
+    call mpi_bcast(use_broyden_spinmix           , 1, mpi_logical, master, mpi_comm_world, ierr)
     call mpi_bcast(write_angles_alliter          , 1, mpi_logical, master, mpi_comm_world, ierr)
 
   end subroutine bcast_runoptions
 #endif
 
+  !-------------------------------------------------------------------------------
+  !> Summary: Write out the runoptions to file with iounit unit
+  !> Author: Philipp Ruessmann
+  !> Category: KKRhost
+  !> Deprecated: False ! This needs to be set to True for deprecated subroutines
+  !>
+  !> needs to be updated if new runoptions are added!
+  !-------------------------------------------------------------------------------
+  subroutine print_runoptions(iounit)
+
+    implicit none
+    integer, intent(in) :: iounit !! unit for the writeout of the runoptions
+
+    write(iounit, '(A)') "# List of run options:"
+    write(iounit, '(A35,1x,1L,3x,A)') '<calc_GF_Efermi>=', calc_GF_Efermi, "calculation of cluster Green function at E Fermi (former: 'GF-EF')"
+    write(iounit, '(A35,1x,1L,3x,A)') '<set_cheby_nospeedup>=', set_cheby_nospeedup, "always calculate irregular solution in Chebychev solver (even if not needed) (former: 'norllsll')"
+    write(iounit, '(A35,1x,1L,3x,A)') '<set_cheby_nosoc>=', set_cheby_nosoc, "set SOC strength to 0 for all atoms (former: 'NOSOC')"
+    write(iounit, '(A35,1x,1L,3x,A)') '<decouple_spins_cheby>=', decouple_spins_cheby, "decouple spin matrices in Chebychev solver neglecting SOC and for collinear calculations only"
+    write(iounit, '(A35,1x,1L,3x,A)') '<calc_complex_bandstructure>=', calc_complex_bandstructure, "complex band structure (former: 'COMPLEX')"
+    write(iounit, '(A35,1x,1L,3x,A)') '<calc_exchange_couplings>=', calc_exchange_couplings, "calculate magnetic exchange coupling parameters (former: 'XCPL')"
+    write(iounit, '(A35,1x,1L,3x,A)') '<calc_exchange_couplings_energy>=', calc_exchange_couplings_energy, "write energy-resolved Jij-files also if npol/=0 (former: 'Jijenerg')"
+    write(iounit, '(A35,1x,1L,3x,A)') '<calc_gmat_lm_full>=', calc_gmat_lm_full, "calculate all lm-lm components of systems greens function and store to file `gflle` (former: 'lmlm-dos')"
+    write(iounit, '(A35,1x,1L,3x,A)') '<dirac_scale_SpeefOfLight>=', dirac_scale_SpeefOfLight, "scale the speed of light for Dirac solver (former: 'CSCALE')"
+    write(iounit, '(A35,1x,1L,3x,A)') '<disable_charge_neutrality>=', disable_charge_neutrality, "no charge neutrailty required: leaving Fermi level unaffected (former: 'no-neutr')"
+    write(iounit, '(A35,1x,1L,3x,A)') '<disable_print_serialnumber>=', disable_print_serialnumber, "deactivate writing of serial number and version information to files (for backwards compatibility) (former: 'noserial')"
+    write(iounit, '(A35,1x,1L,3x,A)') '<disable_reference_system>=', disable_reference_system, "deactivate the tight-binding reference system (former: 'lrefsysf')"
+    write(iounit, '(A35,1x,1L,3x,A)') '<disable_tmat_sratrick>=', disable_tmat_sratrick, "deactivate SRATRICK in solver for t-matirx (former: 'nosph')"
+    write(iounit, '(A35,1x,1L,3x,A)') '<fix_nonco_angles>=', fix_nonco_angles, "fix direction of non-collinear magnetic moments (Chebychev solver) (former: 'FIXMOM')"
+    write(iounit, '(A35,1x,1L,3x,A)') '<formatted_file>=', formatted_file, "write files ascii-format. only effective with some other write-options (former: 'fileverb')"
+    write(iounit, '(A35,1x,1L,3x,A)') '<impurity_operator_only>=', impurity_operator_only, "only for `write_pkkr_operators`: disable costly recalculation of host operators (former: 'IMP_ONLY')"
+    write(iounit, '(A35,1x,1L,3x,A)') '<modify_soc_Dirac>=', modify_soc_Dirac, "modify SOC for Dirac solver (former: 'SOC')"
+    write(iounit, '(A35,1x,1L,3x,A)') '<no_madelung>=', no_madelung, "do not add some energy terms (coulomb, XC, eff. pot.) to total energy (former: 'NoMadel')"
+    write(iounit, '(A35,1x,1L,3x,A)') '<print_Gij>=', print_Gij, "print cluster G_ij matrices to outfile (former: 'Gmatij')"
+    write(iounit, '(A35,1x,1L,3x,A)') '<print_gmat>=', print_gmat, "print Gmat to outfile (former: 'Gmat')"
+    write(iounit, '(A35,1x,1L,3x,A)') '<print_ickeck>=', print_ickeck, "enable test-output of ICHECK matrix from gfmask (former: 'ICHECK')"
+    write(iounit, '(A35,1x,1L,3x,A)') '<print_kmesh>=', print_kmesh, "output of k-mesh (former: 'k-net')"
+    write(iounit, '(A35,1x,1L,3x,A)') '<print_kpoints>=', print_kpoints, "print k-points to outfile (former: 'BZKP')"
+    write(iounit, '(A35,1x,1L,3x,A)') '<print_program_flow>=', print_program_flow, "monitor the program flow in some parts of the code (former: 'flow')"
+    write(iounit, '(A35,1x,1L,3x,A)') '<print_radial_mesh>=', print_radial_mesh, "write mesh information to output (former: 'RMESH')"
+    write(iounit, '(A35,1x,1L,3x,A)') '<print_refpot>=', print_refpot, "test output of refpot (former: 'REFPOT')"
+    write(iounit, '(A35,1x,1L,3x,A)') '<print_tau_structure>=', print_tau_structure, "write extensive information about k-mesh symmetrization and structure of site-diagonal tau matrices to output (former: 'TAUSTRUC')"
+    write(iounit, '(A35,1x,1L,3x,A)') '<print_tmat>=', print_tmat, "print t-matrix to outfile (former: 'tmat')"
+    write(iounit, '(A35,1x,1L,3x,A)') '<relax_SpinAngle_Dirac>=', relax_SpinAngle_Dirac, "relax the spin angle in a SCF calculation [only DIRAC mode] (former: 'ITERMDIR')"
+    write(iounit, '(A35,1x,1L,3x,A)') '<search_Efermi>=', search_Efermi, "modify convergence parameters to scan for fermi energy only (to reach charge neutrality). (former: 'SEARCHEF')"
+    write(iounit, '(A35,1x,1L,3x,A)') '<set_gmat_to_zero>=', set_gmat_to_zero, "set GMAT=0 in evaluation of density (former: 'GMAT=0')"
+    write(iounit, '(A35,1x,1L,3x,A)') '<set_empty_system>=', set_empty_system, "set potential and nuclear charge to zero (former: 'zeropot')"
+    write(iounit, '(A35,1x,1L,3x,A)') '<set_kmesh_large>=', set_kmesh_large, "set equal k-mesh (largest) for all energy points (former: 'fix mesh')"
+    write(iounit, '(A35,1x,1L,3x,A)') '<set_kmesh_small>=', set_kmesh_small, "set equal k-mesh (smallest) for all energy points (former: 'fix4mesh')"
+    write(iounit, '(A35,1x,1L,3x,A)') '<set_tmat_noinversion>=', set_tmat_noinversion, "do not perform inversion to get msst = Delta t^-1, but msst = Delta t. (former: 'testgmat')"
+    write(iounit, '(A35,1x,1L,3x,A)') '<simulate_asa>=', simulate_asa, "set non-spherical potential to zero in full-potential calculation with Chebychev solver (former: 'simulasa')"
+    write(iounit, '(A35,1x,1L,3x,A)') '<slow_mixing_Efermi>=', slow_mixing_Efermi, "renormalize Fermi-energy shift by mixing factor during mixing (former: 'slow-neu')"
+    write(iounit, '(A35,1x,1L,3x,A)') '<stop_1a>=', stop_1a, "stop after main1a (former: 'STOP1A')"
+    write(iounit, '(A35,1x,1L,3x,A)') '<stop_1b>=', stop_1b, "stop after main1b (former: 'STOP1B')"
+    write(iounit, '(A35,1x,1L,3x,A)') '<stop_1c>=', stop_1c, "stop after main1c (former: 'STOP1C')"
+    write(iounit, '(A35,1x,1L,3x,A)') '<symmetrize_gmat>=', symmetrize_gmat, "use symmetrization [G(k) + G(-k)]/2 in k-point loop (former: 'symG(k)')"
+    write(iounit, '(A35,1x,1L,3x,A)') '<symmetrize_potential_cubic>=', symmetrize_potential_cubic, "keep only symmetric part of potential (L=1,11,21,25,43,47). (former: 'potcubic')"
+    write(iounit, '(A35,1x,1L,3x,A)') '<symmetrize_potential_madelung>=', symmetrize_potential_madelung, "symmetrize potential in consistency to madelung potential (former: 'potsymm')"
+    write(iounit, '(A35,1x,1L,3x,A)') '<torque_operator_onlyMT>=', torque_operator_onlyMT, "for torque operator: include only the part within the muffin tin (former: 'ONLYMT')"
+    write(iounit, '(A35,1x,1L,3x,A)') '<torque_operator_onlySph>=', torque_operator_onlySph, "for torque operator: include only the spherically symmetric part (former: 'ONLYSPH')"
+    write(iounit, '(A35,1x,1L,3x,A)') '<use_BdG>=', use_BdG, "use Bogoliubov-de-Gennes Formalism (former: 'useBdG')"
+    write(iounit, '(A35,1x,1L,3x,A)') '<use_Chebychev_solver>=', use_Chebychev_solver, "use the Chebychev solver (former: 'NEWSOSOL')"
+    write(iounit, '(A35,1x,1L,3x,A)') '<use_cond_LB>=', use_cond_LB, "perform calculation of conductance in Landauer-Büttiker formalism (former: 'CONDUCT')"
+    write(iounit, '(A35,1x,1L,3x,A)') '<use_cont>=', use_cont, "no usage of embedding points. NEMB is set to 0. (former: 'CONT')"
+    write(iounit, '(A35,1x,1L,3x,A)') '<use_deci_onebulk>=', use_deci_onebulk, "in case of decimation: use same bulk on right and left. Speeds up calculations. (former: 'ONEBULK')"
+    write(iounit, '(A35,1x,1L,3x,A)') '<use_decimation>=', use_decimation, "use Decimation technique for semi-infinite systems (former: 'DECIMATE')"
+    write(iounit, '(A35,1x,1L,3x,A)') '<use_ewald_2d>=', use_ewald_2d, "use 2D ewald sum instead of 3D sum (Attention: does not work always!) (former: 'ewald2d')"
+    write(iounit, '(A35,1x,1L,3x,A)') '<use_full_BZ>=', use_full_BZ, "use full Brillouin zone, i.e. switch off symmetries for k-space integration (former: 'fullBZ')"
+    write(iounit, '(A35,1x,1L,3x,A)') '<use_ldau>=', use_ldau, "use LDA+U as exchange-correlation potential (former: 'LDA+U')"
+    write(iounit, '(A35,1x,1L,3x,A)') '<use_lloyd>=', use_lloyd, "use Lloyds formula to correct finite angular momentum cutoff (former: 'LLOYD')"
+    write(iounit, '(A35,1x,1L,3x,A)') '<use_qdos>=', use_qdos, "writes out qdos files for band structure calculations. (former: 'qdos')"
+    write(iounit, '(A35,1x,1L,3x,A)') '<use_readcpa>=', use_readcpa, "read cpa t-matrix from file (former: 'readcpa')"
+    write(iounit, '(A35,1x,1L,3x,A)') '<use_rigid_Efermi>=', use_rigid_Efermi, "keep the Fermi energy fixed during self-consistency (former: 'rigid-ef')"
+    write(iounit, '(A35,1x,1L,3x,A)') '<use_semicore>=', use_semicore, "use semicore contour (former: 'SEMICORE')"
+    write(iounit, '(A35,1x,1L,3x,A)') '<use_spherical_potential_only>=', use_spherical_potential_only, "keeping only spherical component of potential (former: 'Vspher')"
+    write(iounit, '(A35,1x,1L,3x,A)') '<use_virtual_atoms>=', use_virtual_atoms, "add virtual atoms (former: 'VIRATOMS')"
+    write(iounit, '(A35,1x,1L,3x,A)') '<write_BdG_tests>=', write_BdG_tests, "test options for Bogouliubov-deGennes (former: 'BdG_dev')"
+    write(iounit, '(A35,1x,1L,3x,A)') '<write_DOS>=', write_DOS, "write out DOS files in any case (also if npol!=0) (former: 'DOS')"
+    write(iounit, '(A35,1x,1L,3x,A)') '<write_DOS_lm>=', write_DOS_lm, "write out DOS files with decomposition into l and m components (former: 'lmdos')"
+    write(iounit, '(A35,1x,1L,3x,A)') '<write_gmat_plain>=', write_gmat_plain, "write out Green function as plain text file (former: 'GPLAIN')"
+    write(iounit, '(A35,1x,1L,3x,A)') '<write_green_host>=', write_green_host, "write green function of the host to file `green_host` (former: 'WRTGREEN')"
+    write(iounit, '(A35,1x,1L,3x,A)') '<write_green_imp>=', write_green_imp, "write out impurity Green function to GMATLL_GES (former: 'GREENIMP')"
+    write(iounit, '(A35,1x,1L,3x,A)') '<write_complex_qdos>=', write_complex_qdos, "write complex qdos to file (former: 'compqdos')"
+    write(iounit, '(A35,1x,1L,3x,A)') '<write_cpa_projection_file>=', write_cpa_projection_file, "write CPA projectors to file (former: 'projfile')"
+    write(iounit, '(A35,1x,1L,3x,A)') '<write_deci_pot>=', write_deci_pot, "write decimation-potential file (former: 'deci-pot')"
+    write(iounit, '(A35,1x,1L,3x,A)') '<write_deci_tmat>=', write_deci_tmat, "write t-matrix to file 'decifile' (former: 'deci-out')"
+    write(iounit, '(A35,1x,1L,3x,A)') '<write_density_ascii>=', write_density_ascii, "write density rho2ns to file densitydn.ascii (former: 'den-asci')"
+    write(iounit, '(A35,1x,1L,3x,A)') '<write_energy_mesh>=', write_energy_mesh, "write out the energy mesh to file `emesh.scf` (former: 'EMESH')"
+    write(iounit, '(A35,1x,1L,3x,A)') '<write_generalized_potential>=', write_generalized_potential, "write potential in general format. Usually prepares for running the VORONOI program. (former: 'GENPOT')"
+    write(iounit, '(A35,1x,1L,3x,A)') '<write_gmat_file>=', write_gmat_file, "write GMAT to file (former: 'gmatfile')"
+    write(iounit, '(A35,1x,1L,3x,A)') '<write_gref_file>=', write_gref_file, "write GREF to file (former: 'greffile')"
+    write(iounit, '(A35,1x,1L,3x,A)') '<write_gmat_ascii>=', write_gmat_ascii, "write GMAT to formatted file `gmat.ascii` (former: 'gmatasci')"
+    write(iounit, '(A35,1x,1L,3x,A)') '<write_kkrimp_input>=', write_kkrimp_input, "write out files for KKRimp-code (former: 'KKRFLEX')"
+    write(iounit, '(A35,1x,1L,3x,A)') '<write_kkrsusc_input>=', write_kkrsusc_input, "write out files for KKRsusc-code (former: 'KKRSUSC')"
+    write(iounit, '(A35,1x,1L,3x,A)') '<write_kpts_file>=', write_kpts_file, "write and read k-mesh to/from file `kpoints` (former: 'kptsfile')"
+    write(iounit, '(A35,1x,1L,3x,A)') '<write_lloyd_cdos_file>=', write_lloyd_cdos_file, "write Lloyd array to file  (former: 'wrtcdos')"
+    write(iounit, '(A35,1x,1L,3x,A)') '<write_lloyd_dgref_file>=', write_lloyd_dgref_file, "write Lloyd array to file  (former: 'wrtdgref')"
+    write(iounit, '(A35,1x,1L,3x,A)') '<write_lloyd_dtmat_file>=', write_lloyd_dtmat_file, "write Lloyd array to file  (former: 'wrtdtmat')"
+    write(iounit, '(A35,1x,1L,3x,A)') '<write_lloyd_file>=', write_lloyd_file, "write several Lloyd-arrays to files (former: 'llyfiles')"
+    write(iounit, '(A35,1x,1L,3x,A)') '<write_lloyd_g0tr_file>=', write_lloyd_g0tr_file, "write Lloyd array to file  (former: 'wrtgotr')"
+    write(iounit, '(A35,1x,1L,3x,A)') '<write_lloyd_tralpha_file>=', write_lloyd_tralpha_file, "write Lloyd array to file  (former: 'wrttral')"
+    write(iounit, '(A35,1x,1L,3x,A)') '<write_madelung_file>=', write_madelung_file, "write madelung summation to file 'abvmad.unformatted' instead of keeping it in memory (former: 'madelfil')"
+    write(iounit, '(A35,1x,1L,3x,A)') '<write_pkkr_input>=', write_pkkr_input, "write out files for Pkkprime-code (former: 'FERMIOUT')"
+    write(iounit, '(A35,1x,1L,3x,A)') '<write_pkkr_operators>=', write_pkkr_operators, "for Fermi-surface output: calculate various operators in KKR basis. (former: 'OPERATOR')"
+    write(iounit, '(A35,1x,1L,3x,A)') '<write_potential_tests>=', write_potential_tests, "write potential at different steps in main2 to different files (former: 'vintrasp' and 'vpotout')"
+    write(iounit, '(A35,1x,1L,3x,A)') '<write_rho2ns>=', write_rho2ns, "write array rho2ns into file out_rhoval (from main1c) and out_rhotot (from main2) (former: 'RHOVALTW' and 'RHOVALW')"
+    write(iounit, '(A35,1x,1L,3x,A)') '<write_rhoq_input>=', write_rhoq_input, "write out files needed for rhoq module (Quasiparticle interference) (former: 'rhoqtest')"
+    write(iounit, '(A35,1x,1L,3x,A)') '<write_tmat_file>=', write_tmat_file, "write t-matix to file (former: 'tmatfile')"
+    write(iounit, '(A35,1x,1L,3x,A)') '<write_tb_coupling>=', write_tb_coupling, "write couplings in tight-binging reference system to file `couplings.dat` (former: 'godfrin')"
+    write(iounit, '(A35,1x,1L,3x,A)') '<calc_wronskian>=', calc_wronskian, "calculate the wronskian relations of first and second kind for the wavefunctions (see PhD Bauer pp 48)"
+    write(iounit, '(A35,1x,1L,3x,A)') '<use_broyden_spinmix>=', use_broyden_spinmix, "use broyden spin mixing for noncollinear angles"
+    write(iounit, '(A35,1x,1L,3x,A)') '<write_angles_alliter>=', write_angles_alliter, "write out noncollinear angles for all iterations"
+
+  end subroutine print_runoptions
+
 end module mod_runoptions
diff --git a/source/common/spinorbit_ham.f90 b/source/common/spinorbit_ham.f90
index 011e5f007fcd64e09e2d3c6856f4944a6c78fb57..5e0d00a2132c955b82a6c6387c0c47fda3fd4275 100644
--- a/source/common/spinorbit_ham.f90
+++ b/source/common/spinorbit_ham.f90
@@ -33,7 +33,7 @@ contains
 
     use :: mod_datatypes, only: dp
     use :: mod_constants, only: czero
-    use :: mod_runoptions, only: set_cheby_nosoc
+    use :: mod_runoptions, only: set_cheby_nosoc, decouple_spins_cheby
     use :: mod_cheb, only: getclambdacinv
     use :: mod_spin_orbit_compl, only: spin_orbit_compl
     use :: mod_rotatespinframe, only: rotatematrix
@@ -136,7 +136,7 @@ contains
     ! contruct prefactor of spin-orbit hamiltonian
     hsofac = 0e0_dp
     vnspll1 = (0e0_dp, 0e0_dp)
-    if (set_cheby_nosoc .or. zat<1e-6_dp) then
+    if (set_cheby_nosoc .or. decouple_spins_cheby .or. zat<1e-6_dp) then
       vnspll1(1:2*lmmaxd, 1:2*lmmaxd, 1:irmdnew) = vnspll(1:2*lmmaxd, 1:2*lmmaxd, 1:irmdnew)
     else
       do ir = 1, irmdnew
diff --git "a/source/deprecated/from_KKRimp/rhoval_new.f90\\" "b/source/deprecated/from_KKRimp/rhoval_new.f90\\"
deleted file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..0000000000000000000000000000000000000000
diff --git a/tests/KKRhost/test_inputs/test_03.2_NOSOC/NEWSOSOL_DECOUPLED_SPINS/inputcard b/tests/KKRhost/test_inputs/test_03.2_NOSOC/NEWSOSOL_DECOUPLED_SPINS/inputcard
new file mode 100644
index 0000000000000000000000000000000000000000..0368a46508da21c340209d6677cd5a73ab3eb721
--- /dev/null
+++ b/tests/KKRhost/test_inputs/test_03.2_NOSOC/NEWSOSOL_DECOUPLED_SPINS/inputcard
@@ -0,0 +1,54 @@
+      ***Running options*** 
+RUNOPT 
+full invLLOYD   NEWSOSOL
++-------+-------+-------+-------+-------+
+TESTOPT
+NOSOC
+
++-------+-------+-------+-------+-------+
+  LMAX=2    NSPIN=2   NATYP=4 
+--------------------------------------------
+ ** Description of lattice**
+ALATBASIS= 10.263
+LATTICE=1
+BRAVAIS 
+  0.0   0.5   0.5
+  0.5   0.0   0.5
+  0.5   0.5   0.0
+----------------------------------------------------------------------
+NAEZ=4   NEMB=0   NEMBZ=0  KAOEZ=1
+CARTESIAN= f
+RBASIS                                  <SOCSCL>
+        0.00000    0.00000    0.00000    0.0
+        0.25000    0.25000    0.25000    0.0
+        0.50000    0.50000    0.50000    0.0
+        0.75000    0.75000    0.75000    0.0
+----------------------------------------------------------------------
+Parameters for the clusters    (if same spherical cluster else cylindrical)
+RCLUSTZ=1.05d0
+----------------------------------------------------------------------
+ATOMINFO
+Z     LMXC    KFG     CLS   REFPOT   NTC    FAC    IRNS   RMT     WGHT
+14.0   3    2 1 0 0    1      1       1     1.00   208    2.2d0   1.0d0
+14.0   3    2 1 0 0    1      1       1     1.00   208    2.2d0   1.0d0
+ 0.0   0    0 0 0 0    1      1       1     1.00   208    2.2d0   1.0d0
+ 0.0   0    0 0 0 0    1      1       1     1.00   208    2.2d0   1.0d0
+----------------------------------------------------------------------
+EMIN      EMAX       TEMPR      NPOL      NPT1    NPT2     NPT3  
+-0.40     1.2         473.d0     5         3       10       3
+----------------------------------------------------------------------
+BZDIVIDE= 10 10 10 
+----------------------------------------------------------------------
+NSTEPS     IMIX    STRMIX       FCM       QBOUND    BRYMIX      ITDBRY
+ 1          5      0.010        20.0      1.D-8      0.06        20
+----------------------------------------------------------------------
+Parameters for ewald sums
+RMAX=7.0d0     GMAX=65.0d0     (fcc 7  65)
+----------------------------------------------------------------------
+
+NPAN_LOG= 8
+NPAN_EQ=  3
+NCHEB=    7
+R_LOG=    0.60
+
+<decouple_spins_cheby>= T
diff --git a/tests/KKRhost/test_inputs/test_03.2_NOSOC/NEWSOSOL_DECOUPLED_SPINS/potential b/tests/KKRhost/test_inputs/test_03.2_NOSOC/NEWSOSOL_DECOUPLED_SPINS/potential
new file mode 120000
index 0000000000000000000000000000000000000000..ec68b8ce5a0075c3ad91b1826f9a3ef716d1febd
--- /dev/null
+++ b/tests/KKRhost/test_inputs/test_03.2_NOSOC/NEWSOSOL_DECOUPLED_SPINS/potential
@@ -0,0 +1 @@
+../potential
\ No newline at end of file
diff --git a/tests/KKRhost/test_inputs/test_03.2_NOSOC/NEWSOSOL_DECOUPLED_SPINS/shapefun b/tests/KKRhost/test_inputs/test_03.2_NOSOC/NEWSOSOL_DECOUPLED_SPINS/shapefun
new file mode 120000
index 0000000000000000000000000000000000000000..5499a713f4624579e925222f0ba0e508381077fb
--- /dev/null
+++ b/tests/KKRhost/test_inputs/test_03.2_NOSOC/NEWSOSOL_DECOUPLED_SPINS/shapefun
@@ -0,0 +1 @@
+../shapefun
\ No newline at end of file
diff --git a/tests/KKRhost/test_inputs/test_04.1/inputcard b/tests/KKRhost/test_inputs/test_04.1/inputcard
index 101ebff17c957483a3317d16adb8756e878e1e7d..8e4dc71633abf043ab3834a27b5d51cffc6829f7 100644
--- a/tests/KKRhost/test_inputs/test_04.1/inputcard
+++ b/tests/KKRhost/test_inputs/test_04.1/inputcard
@@ -67,7 +67,4 @@ NPAN_EQ=    3
 NCHEB=      6
 R_LOG=   0.600000000000000     
 
-NPAN_LOG=   5
-NPAN_EQ=    3
-NCHEB=      6
-R_LOG=   0.600000000000000     
+<set_kmesh_large>= T
diff --git a/tests/KKRhost/test_inputs/test_04.1/ref/Jij.atom00002 b/tests/KKRhost/test_inputs/test_04.1/ref/Jij.atom00002
index 61308b2e2ac4f4b0b6494643a3edb2d93d54d136..2f7a13947fe357dbf957314055a944ffab34107b 100644
--- a/tests/KKRhost/test_inputs/test_04.1/ref/Jij.atom00002
+++ b/tests/KKRhost/test_inputs/test_04.1/ref/Jij.atom00002
@@ -1,68 +1,68 @@
-# serial: kkrjm_v2.3-64-g8cc70fc_mpi_20180831102945; MD5 (potential) = 9a1124b567de286b27a5602d727b59f3; MD5 (shapefun) = 2a2e1c5c0b89c36da8d88650ba34a20e
+# serial: JuKKR_v3.1-1717-g1f7d9f5_gnu_20201103133014; 00000000000000000000000000000000  potential; 00000000000000000000000000000000  shapefun
 # off-diagonal exchange coupling constants 
 # for atom IT =     2 on site IQ =     2 impurity site =     1
 # R_IQ,JQ      J_IT,JT     D_IT,JT   S_IT,JT     A_IT,JT       Rvec    JT
 # ( ALAT )       ( Ry )
 #      
-  1.00000000 -0.83636663E-02  0.18976607E-17 -0.16050221E-05  0.88273932E-13   -1.00000000  0.00000000  0.00000000      2   11
-  1.00000000 -0.83636663E-02  0.10349026E-17  0.16050221E-05 -0.88281191E-13    0.00000000 -1.00000000  0.00000000      2   16
-  1.00000000 -0.83636663E-02  0.14600428E-18  0.16050221E-05 -0.88281142E-13    0.00000000  1.00000000  0.00000000      2   17
-  1.00000000 -0.83636663E-02 -0.54838341E-18 -0.16050221E-05  0.88273976E-13    1.00000000  0.00000000  0.00000000      2   22
-  1.41421356 -0.91731971E-02  0.71090636E-18  0.43819938E-13 -0.93730079E-06   -1.00000000 -1.00000000  0.00000000      2   10
-  1.41421356 -0.91731971E-02  0.47083333E-18 -0.43819130E-13  0.93730079E-06   -1.00000000  1.00000000  0.00000000      2   12
-  1.41421356 -0.91731971E-02  0.74879682E-18 -0.43819128E-13  0.93730079E-06    1.00000000 -1.00000000  0.00000000      2   21
-  1.41421356 -0.91731971E-02  0.50269308E-18  0.43819939E-13 -0.93730079E-06    1.00000000  1.00000000  0.00000000      2   23
-  2.00000000  0.28014748E-02  0.40050260E-17 -0.14981927E-06  0.47104896E-13   -2.00000000  0.00000000  0.00000000      2    6
-  2.00000000  0.28014748E-02  0.26075830E-17  0.14981927E-06 -0.47109748E-13    0.00000000 -2.00000000  0.00000000      2   15
-  2.00000000  0.28014748E-02  0.67608466E-17  0.14981927E-06 -0.47111987E-13    0.00000000  2.00000000  0.00000000      2   18
-  2.00000000  0.28014748E-02  0.48109943E-17 -0.14981927E-06  0.47101222E-13    2.00000000  0.00000000  0.00000000      2   27
-  2.23606798 -0.83568629E-02  0.94401450E-18  0.32330835E-06  0.21935118E-06   -2.00000000 -1.00000000  0.00000000      2    5
-  2.23606798 -0.83568629E-02  0.61005864E-18  0.32330843E-06 -0.21935122E-06   -2.00000000  1.00000000  0.00000000      2    7
-  2.23606798 -0.83568629E-02  0.97165785E-18 -0.32330843E-06  0.21935122E-06   -1.00000000 -2.00000000  0.00000000      2    9
-  2.23606798 -0.83568629E-02  0.60824271E-18 -0.32330835E-06 -0.21935118E-06   -1.00000000  2.00000000  0.00000000      2   13
-  2.23606798 -0.83568629E-02  0.62284646E-18 -0.32330835E-06 -0.21935118E-06    1.00000000 -2.00000000  0.00000000      2   20
-  2.23606798 -0.83568629E-02  0.32331699E-18 -0.32330843E-06  0.21935122E-06    1.00000000  2.00000000  0.00000000      2   24
-  2.23606798 -0.83568629E-02  0.49233594E-18  0.32330843E-06 -0.21935122E-06    2.00000000 -1.00000000  0.00000000      2   26
-  2.23606798 -0.83568629E-02  0.19521754E-18  0.32330835E-06  0.21935118E-06    2.00000000  1.00000000  0.00000000      2   28
-  2.82842712  0.26607947E-02  0.66319002E-17  0.45004104E-15 -0.10241133E-05   -2.00000000 -2.00000000  0.00000000      2    4
-  2.82842712  0.26607947E-02  0.49869260E-17 -0.45050590E-15  0.10241133E-05   -2.00000000  2.00000000  0.00000000      2    8
-  2.82842712  0.26607947E-02  0.43618946E-17 -0.45050206E-15  0.10241133E-05    2.00000000 -2.00000000  0.00000000      2   25
-  2.82842712  0.26607947E-02  0.53747417E-17  0.45012027E-15 -0.10241133E-05    2.00000000  2.00000000  0.00000000      2   29
-  3.00000000  0.14787638E-02 -0.16914816E-17 -0.29261724E-06  0.50056964E-13   -3.00000000  0.00000000  0.00000000      2    3
-  3.00000000  0.14787638E-02 -0.26944937E-17  0.29261724E-06 -0.50069220E-13    0.00000000 -3.00000000  0.00000000      2   14
-  3.00000000  0.14787638E-02  0.43666405E-17  0.29261724E-06 -0.50070381E-13    0.00000000  3.00000000  0.00000000      2   19
-  3.00000000  0.14787638E-02  0.23211008E-17 -0.29261724E-06  0.50060374E-13    3.00000000  0.00000000  0.00000000      2   30
+  1.00000000  0.91949538E-04  0.17898225E-18 -0.13678665E-05  0.87333726E-13   -1.00000000E+00  0.00000000E+00  0.00000000E+00      2   11
+  1.00000000  0.91949538E-04 -0.29486368E-18  0.13678665E-05 -0.87333653E-13    0.00000000E+00 -1.00000000E+00  0.00000000E+00      2   16
+  1.00000000  0.91949538E-04  0.17964965E-18  0.13678665E-05 -0.87333619E-13    0.00000000E+00  1.00000000E+00  0.00000000E+00      2   17
+  1.00000000  0.91949538E-04 -0.13603020E-18 -0.13678665E-05  0.87333717E-13    1.00000000E+00  0.00000000E+00  0.00000000E+00      2   22
+  1.41421356 -0.36219625E-03  0.13570908E-18  0.31495998E-13 -0.71483289E-06   -1.00000000E+00 -1.00000000E+00  0.00000000E+00      2   10
+  1.41421356 -0.36219625E-03  0.25155664E-19 -0.31495999E-13  0.71483289E-06   -1.00000000E+00  1.00000000E+00  0.00000000E+00      2   12
+  1.41421356 -0.36219625E-03 -0.29348947E-19 -0.31496031E-13  0.71483289E-06    1.00000000E+00 -1.00000000E+00  0.00000000E+00      2   21
+  1.41421356 -0.36219625E-03 -0.14501691E-18  0.31495956E-13 -0.71483289E-06    1.00000000E+00  1.00000000E+00  0.00000000E+00      2   23
+  2.00000000  0.37352049E-04 -0.93853008E-20  0.11741786E-06  0.41560390E-13   -2.00000000E+00  0.00000000E+00  0.00000000E+00      2    6
+  2.00000000  0.37352049E-04  0.14383369E-18 -0.11741786E-06 -0.41560403E-13    0.00000000E+00 -2.00000000E+00  0.00000000E+00      2   15
+  2.00000000  0.37352049E-04 -0.14342054E-18 -0.11741786E-06 -0.41560400E-13    0.00000000E+00  2.00000000E+00  0.00000000E+00      2   18
+  2.00000000  0.37352049E-04  0.81573992E-20  0.11741786E-06  0.41560394E-13    2.00000000E+00  0.00000000E+00  0.00000000E+00      2   27
+  2.23606798  0.27648596E-04 -0.14553037E-19  0.33892372E-07 -0.37742198E-06   -2.00000000E+00 -1.00000000E+00  0.00000000E+00      2    5
+  2.23606798  0.27648596E-04  0.12352948E-18  0.33892419E-07  0.37742196E-06   -2.00000000E+00  1.00000000E+00  0.00000000E+00      2    7
+  2.23606798  0.27648596E-04 -0.46850493E-19 -0.33892419E-07 -0.37742196E-06   -1.00000000E+00 -2.00000000E+00  0.00000000E+00      2    9
+  2.23606798  0.27648596E-04  0.54409724E-19 -0.33892372E-07  0.37742198E-06   -1.00000000E+00  2.00000000E+00  0.00000000E+00      2   13
+  2.23606798  0.27648596E-04 -0.53017577E-19 -0.33892372E-07  0.37742198E-06    1.00000000E+00 -2.00000000E+00  0.00000000E+00      2   20
+  2.23606798  0.27648596E-04  0.44506155E-19 -0.33892419E-07 -0.37742196E-06    1.00000000E+00  2.00000000E+00  0.00000000E+00      2   24
+  2.23606798  0.27648596E-04 -0.12328622E-18  0.33892419E-07  0.37742196E-06    2.00000000E+00 -1.00000000E+00  0.00000000E+00      2   26
+  2.23606798  0.27648596E-04  0.18572729E-19  0.33892372E-07 -0.37742198E-06    2.00000000E+00  1.00000000E+00  0.00000000E+00      2   28
+  2.82842712 -0.63799665E-06  0.56126309E-18 -0.15639335E-13 -0.51856069E-06   -2.00000000E+00 -2.00000000E+00  0.00000000E+00      2    4
+  2.82842712 -0.63799665E-06 -0.20357581E-18  0.15639347E-13  0.51856069E-06   -2.00000000E+00  2.00000000E+00  0.00000000E+00      2    8
+  2.82842712 -0.63799665E-06  0.19329802E-18  0.15639343E-13  0.51856069E-06    2.00000000E+00 -2.00000000E+00  0.00000000E+00      2   25
+  2.82842712 -0.63799665E-06 -0.56442472E-18 -0.15639336E-13 -0.51856069E-06    2.00000000E+00  2.00000000E+00  0.00000000E+00      2   29
+  3.00000000  0.37352049E-04 -0.15360517E-18  0.11741786E-06  0.41560394E-13   -3.00000000E+00  0.00000000E+00  0.00000000E+00      2    3
+  3.00000000  0.37352049E-04 -0.30019052E-18 -0.11741786E-06 -0.41560401E-13    0.00000000E+00 -3.00000000E+00  0.00000000E+00      2   14
+  3.00000000  0.37352049E-04  0.29559435E-18 -0.11741786E-06 -0.41560402E-13    0.00000000E+00  3.00000000E+00  0.00000000E+00      2   19
+  3.00000000  0.37352049E-04  0.15623299E-18  0.11741786E-06  0.41560398E-13    3.00000000E+00  0.00000000E+00  0.00000000E+00      2   30
 #&
-  0.86602540  0.35845296E-02 -0.16722559E-17  0.14587608E-12  0.25666040E-05   -0.50000000 -0.50000000  0.50000000      3    2
-  0.86602540  0.35845296E-02 -0.39592135E-18 -0.14587520E-12 -0.25666040E-05   -0.50000000  0.50000000  0.50000000      3   43
-  0.86602540  0.35845296E-02 -0.89867869E-18 -0.14587526E-12 -0.25666040E-05    0.50000000 -0.50000000  0.50000000      3   48
-  0.86602540  0.35845296E-02 -0.16402578E-18  0.14587548E-12  0.25666040E-05    0.50000000  0.50000000  0.50000000      3   49
-  1.65831240  0.51762952E-03 -0.55919565E-13 -0.57799932E-06  0.15539236E-06   -1.50000000 -0.50000000  0.50000000      3   37
-  1.65831240  0.51762952E-03  0.55918668E-13 -0.57799935E-06 -0.15539233E-06   -1.50000000  0.50000000  0.50000000      3   38
-  1.65831240  0.51762952E-03  0.55918984E-13  0.57799935E-06  0.15539233E-06   -0.50000000 -1.50000000  0.50000000      3   42
-  1.65831240  0.51762952E-03 -0.55920061E-13  0.57799932E-06 -0.15539236E-06   -0.50000000  1.50000000  0.50000000      3   44
-  1.65831240  0.51762952E-03 -0.55920144E-13  0.57799932E-06 -0.15539236E-06    0.50000000 -1.50000000  0.50000000      3   47
-  1.65831240  0.51762952E-03  0.55918509E-13  0.57799935E-06  0.15539233E-06    0.50000000  1.50000000  0.50000000      3   50
-  1.65831240  0.51762952E-03  0.55918846E-13 -0.57799935E-06 -0.15539233E-06    1.50000000 -0.50000000  0.50000000      3   54
-  1.65831240  0.51762952E-03 -0.55919809E-13 -0.57799932E-06  0.15539236E-06    1.50000000  0.50000000  0.50000000      3   55
-  2.17944947  0.71920399E-03 -0.67891287E-18  0.13386259E-13 -0.68665365E-07   -1.50000000 -1.50000000  0.50000000      3   36
-  2.17944947  0.71920399E-03 -0.49540081E-18 -0.13386044E-13  0.68665365E-07   -1.50000000  1.50000000  0.50000000      3   39
-  2.17944947  0.71920399E-03 -0.71081183E-18 -0.13386030E-13  0.68665365E-07    1.50000000 -1.50000000  0.50000000      3   53
-  2.17944947  0.71920399E-03 -0.58740290E-18  0.13386207E-13 -0.68665365E-07    1.50000000  1.50000000  0.50000000      3   56
-  2.59807621  0.13122593E-02 -0.61319981E-18  0.33002310E-06 -0.51267127E-06   -2.50000000 -0.50000000  0.50000000      3   32
-  2.59807621  0.13122593E-02 -0.16617553E-18  0.33002315E-06  0.51267126E-06   -2.50000000  0.50000000  0.50000000      3   33
-  2.59807621  0.13122593E-02 -0.76383626E-18 -0.33002315E-06 -0.51267126E-06   -0.50000000 -2.50000000  0.50000000      3   41
-  2.59807621  0.13122593E-02 -0.13796201E-17 -0.33002310E-06  0.51267127E-06   -0.50000000  2.50000000  0.50000000      3   45
-  2.59807621  0.13122593E-02 -0.47932066E-18 -0.33002310E-06  0.51267127E-06    0.50000000 -2.50000000  0.50000000      3   46
-  2.59807621  0.13122593E-02 -0.38864618E-18 -0.33002315E-06 -0.51267126E-06    0.50000000  2.50000000  0.50000000      3   51
-  2.59807621  0.13122593E-02 -0.17104686E-17  0.33002315E-06  0.51267126E-06    2.50000000 -0.50000000  0.50000000      3   59
-  2.59807621  0.13122593E-02 -0.78571900E-18  0.33002310E-06 -0.51267127E-06    2.50000000  0.50000000  0.50000000      3   60
-  2.95803989  0.45540091E-03 -0.56713963E-18  0.66489650E-06 -0.28938005E-06   -2.50000000 -1.50000000  0.50000000      3   31
-  2.95803989  0.45540091E-03 -0.67450084E-18  0.66489648E-06  0.28938006E-06   -2.50000000  1.50000000  0.50000000      3   34
-  2.95803989  0.45540091E-03 -0.44331868E-18 -0.66489648E-06 -0.28938006E-06   -1.50000000 -2.50000000  0.50000000      3   35
-  2.95803989  0.45540091E-03 -0.44056045E-18 -0.66489650E-06  0.28938005E-06   -1.50000000  2.50000000  0.50000000      3   40
-  2.95803989  0.45540091E-03 -0.49173461E-18 -0.66489650E-06  0.28938005E-06    1.50000000 -2.50000000  0.50000000      3   52
-  2.95803989  0.45540091E-03 -0.34770952E-18 -0.66489648E-06 -0.28938006E-06    1.50000000  2.50000000  0.50000000      3   57
-  2.95803989  0.45540091E-03 -0.34393078E-18  0.66489648E-06  0.28938006E-06    2.50000000 -1.50000000  0.50000000      3   58
-  2.95803989  0.45540091E-03 -0.25694348E-18  0.66489650E-06 -0.28938005E-06    2.50000000  1.50000000  0.50000000      3   61
+  0.86602540  0.37653945E-02 -0.43570963E-18  0.14018160E-12  0.23080243E-05   -5.00000000E-01 -5.00000000E-01  5.00000000E-01      3    2
+  0.86602540  0.37653945E-02  0.57816694E-18 -0.14018176E-12 -0.23080243E-05   -5.00000000E-01  5.00000000E-01  5.00000000E-01      3   43
+  0.86602540  0.37653945E-02 -0.18204643E-18 -0.14018167E-12 -0.23080243E-05    5.00000000E-01 -5.00000000E-01  5.00000000E-01      3   48
+  0.86602540  0.37653945E-02 -0.22586960E-18  0.14018151E-12  0.23080243E-05    5.00000000E-01  5.00000000E-01  5.00000000E-01      3   49
+  1.65831240 -0.13525709E-03 -0.62697114E-13 -0.55124823E-06  0.50610780E-06   -1.50000000E+00 -5.00000000E-01  5.00000000E-01      3   37
+  1.65831240 -0.13525709E-03  0.62697214E-13 -0.55124825E-06 -0.50610777E-06   -1.50000000E+00  5.00000000E-01  5.00000000E-01      3   38
+  1.65831240 -0.13525709E-03  0.62697372E-13  0.55124825E-06  0.50610777E-06   -5.00000000E-01 -1.50000000E+00  5.00000000E-01      3   42
+  1.65831240 -0.13525709E-03 -0.62697512E-13  0.55124823E-06 -0.50610780E-06   -5.00000000E-01  1.50000000E+00  5.00000000E-01      3   44
+  1.65831240 -0.13525709E-03 -0.62697140E-13  0.55124823E-06 -0.50610780E-06    5.00000000E-01 -1.50000000E+00  5.00000000E-01      3   47
+  1.65831240 -0.13525709E-03  0.62697597E-13  0.55124825E-06  0.50610777E-06    5.00000000E-01  1.50000000E+00  5.00000000E-01      3   50
+  1.65831240 -0.13525709E-03  0.62697058E-13 -0.55124825E-06 -0.50610777E-06    1.50000000E+00 -5.00000000E-01  5.00000000E-01      3   54
+  1.65831240 -0.13525709E-03 -0.62697006E-13 -0.55124823E-06  0.50610780E-06    1.50000000E+00  5.00000000E-01  5.00000000E-01      3   55
+  2.17944947  0.13983983E-03 -0.10388684E-18  0.21234244E-13 -0.29094243E-06   -1.50000000E+00 -1.50000000E+00  5.00000000E-01      3   36
+  2.17944947  0.13983983E-03 -0.62091179E-19 -0.21234224E-13  0.29094243E-06   -1.50000000E+00  1.50000000E+00  5.00000000E-01      3   39
+  2.17944947  0.13983983E-03  0.89315770E-20 -0.21234226E-13  0.29094243E-06    1.50000000E+00 -1.50000000E+00  5.00000000E-01      3   53
+  2.17944947  0.13983983E-03  0.13260979E-18  0.21234218E-13 -0.29094243E-06    1.50000000E+00  1.50000000E+00  5.00000000E-01      3   56
+  2.59807621 -0.78368796E-04 -0.21740809E-18  0.32208315E-06 -0.79021687E-14   -2.50000000E+00 -5.00000000E-01  5.00000000E-01      3   32
+  2.59807621 -0.78368796E-04 -0.79974150E-19  0.32208315E-06 -0.79021722E-14   -2.50000000E+00  5.00000000E-01  5.00000000E-01      3   33
+  2.59807621 -0.78368796E-04 -0.29749751E-18 -0.32208315E-06  0.79021712E-14   -5.00000000E-01 -2.50000000E+00  5.00000000E-01      3   41
+  2.59807621 -0.78368796E-04 -0.28085968E-18 -0.32208315E-06  0.79021656E-14   -5.00000000E-01  2.50000000E+00  5.00000000E-01      3   45
+  2.59807621 -0.78368796E-04 -0.12290804E-18 -0.32208315E-06  0.79021687E-14    5.00000000E-01 -2.50000000E+00  5.00000000E-01      3   46
+  2.59807621 -0.78368796E-04 -0.65596775E-19 -0.32208315E-06  0.79021692E-14    5.00000000E-01  2.50000000E+00  5.00000000E-01      3   51
+  2.59807621 -0.78368796E-04 -0.20726667E-18  0.32208315E-06 -0.79021694E-14    2.50000000E+00 -5.00000000E-01  5.00000000E-01      3   59
+  2.59807621 -0.78368796E-04  0.25611625E-18  0.32208315E-06 -0.79021720E-14    2.50000000E+00  5.00000000E-01  5.00000000E-01      3   60
+  2.95803989 -0.13459247E-03  0.20217104E-18  0.60562794E-06  0.32380493E-14   -2.50000000E+00 -1.50000000E+00  5.00000000E-01      3   31
+  2.95803989 -0.13459247E-03  0.85677723E-19  0.60562794E-06  0.32380421E-14   -2.50000000E+00  1.50000000E+00  5.00000000E-01      3   34
+  2.95803989 -0.13459247E-03  0.14482482E-18 -0.60562794E-06 -0.32380635E-14   -1.50000000E+00 -2.50000000E+00  5.00000000E-01      3   35
+  2.95803989 -0.13459247E-03  0.27024737E-18 -0.60562794E-06 -0.32380578E-14   -1.50000000E+00  2.50000000E+00  5.00000000E-01      3   40
+  2.95803989 -0.13459247E-03 -0.27257479E-21 -0.60562794E-06 -0.32380728E-14    1.50000000E+00 -2.50000000E+00  5.00000000E-01      3   52
+  2.95803989 -0.13459247E-03  0.22809328E-18 -0.60562794E-06 -0.32380648E-14    1.50000000E+00  2.50000000E+00  5.00000000E-01      3   57
+  2.95803989 -0.13459247E-03 -0.52986648E-19  0.60562794E-06  0.32380536E-14    2.50000000E+00 -1.50000000E+00  5.00000000E-01      3   58
+  2.95803989 -0.13459247E-03  0.31849701E-18  0.60562794E-06  0.32380496E-14    2.50000000E+00  1.50000000E+00  5.00000000E-01      3   61
 #&
diff --git a/tests/KKRhost/test_inputs/test_04.1/ref/Jij.atom00003 b/tests/KKRhost/test_inputs/test_04.1/ref/Jij.atom00003
index 3b82329e85d832cc3c60f952836163bac5b17146..e7705c88457ea487a1ea58720c92711e830fe2c6 100644
--- a/tests/KKRhost/test_inputs/test_04.1/ref/Jij.atom00003
+++ b/tests/KKRhost/test_inputs/test_04.1/ref/Jij.atom00003
@@ -1,68 +1,68 @@
-# serial: kkrjm_v2.3-64-g8cc70fc_mpi_20180831102945; MD5 (potential) = 9a1124b567de286b27a5602d727b59f3; MD5 (shapefun) = 2a2e1c5c0b89c36da8d88650ba34a20e
+# serial: JuKKR_v3.1-1717-g1f7d9f5_gnu_20201103133014; 00000000000000000000000000000000  potential; 00000000000000000000000000000000  shapefun
 # off-diagonal exchange coupling constants 
 # for atom IT =     3 on site IQ =     3 impurity site =     2
 # R_IQ,JQ      J_IT,JT     D_IT,JT   S_IT,JT     A_IT,JT       Rvec    JT
 # ( ALAT )       ( Ry )
 #      
-  0.86602540  0.35845296E-02  0.17730103E-17  0.14587574E-12  0.25666040E-05    0.50000000  0.50000000 -0.50000000      2    1
-  0.86602540  0.35845296E-02  0.95946263E-19  0.14587580E-12  0.25666040E-05   -0.50000000 -0.50000000 -0.50000000      2   10
-  0.86602540  0.35845296E-02  0.10388724E-17 -0.14587578E-12 -0.25666040E-05   -0.50000000  0.50000000 -0.50000000      2   11
-  0.86602540  0.35845296E-02  0.59349235E-18 -0.14587548E-12 -0.25666040E-05    0.50000000 -0.50000000 -0.50000000      2   16
-  1.65831240  0.51762952E-03  0.55919889E-13 -0.57799932E-06  0.15539236E-06   -1.50000000 -0.50000000 -0.50000000      2    5
-  1.65831240  0.51762952E-03 -0.55918814E-13 -0.57799935E-06 -0.15539233E-06   -1.50000000  0.50000000 -0.50000000      2    6
-  1.65831240  0.51762952E-03 -0.55918464E-13  0.57799935E-06  0.15539233E-06   -0.50000000 -1.50000000 -0.50000000      2    9
-  1.65831240  0.51762952E-03  0.55920127E-13  0.57799932E-06 -0.15539236E-06   -0.50000000  1.50000000 -0.50000000      2   12
-  1.65831240  0.51762952E-03  0.55920038E-13  0.57799932E-06 -0.15539236E-06    0.50000000 -1.50000000 -0.50000000      2   15
-  1.65831240  0.51762952E-03 -0.55918852E-13  0.57799935E-06  0.15539233E-06    0.50000000  1.50000000 -0.50000000      2   17
-  1.65831240  0.51762952E-03 -0.55918576E-13 -0.57799935E-06 -0.15539233E-06    1.50000000 -0.50000000 -0.50000000      2   21
-  1.65831240  0.51762952E-03  0.55919554E-13 -0.57799932E-06  0.15539236E-06    1.50000000  0.50000000 -0.50000000      2   22
-  2.17944947  0.71920399E-03  0.59410847E-18  0.13386229E-13 -0.68665365E-07   -1.50000000 -1.50000000 -0.50000000      2    4
-  2.17944947  0.71920399E-03  0.77856664E-18 -0.13386025E-13  0.68665365E-07   -1.50000000  1.50000000 -0.50000000      2    7
-  2.17944947  0.71920399E-03  0.57502974E-18 -0.13386037E-13  0.68665365E-07    1.50000000 -1.50000000 -0.50000000      2   20
-  2.17944947  0.71920399E-03  0.63930837E-18  0.13386272E-13 -0.68665365E-07    1.50000000  1.50000000 -0.50000000      2   23
-  2.59807621  0.13122593E-02  0.15587342E-17  0.33002315E-06  0.51267126E-06   -2.50000000  0.50000000 -0.50000000      2    3
-  2.59807621  0.13122593E-02  0.34625483E-18 -0.33002310E-06  0.51267127E-06   -0.50000000  2.50000000 -0.50000000      2   13
-  2.59807621  0.13122593E-02  0.13169674E-17 -0.33002310E-06  0.51267127E-06    0.50000000 -2.50000000 -0.50000000      2   14
-  2.59807621  0.13122593E-02  0.64569083E-18 -0.33002315E-06 -0.51267126E-06    0.50000000  2.50000000 -0.50000000      2   18
-  2.59807621  0.13122593E-02  0.12108508E-18  0.33002315E-06  0.51267126E-06    2.50000000 -0.50000000 -0.50000000      2   26
-  2.59807621  0.13122593E-02  0.58858628E-18  0.33002310E-06 -0.51267127E-06    2.50000000  0.50000000 -0.50000000      2   27
-  2.59807621  0.13122593E-02  0.81064110E-18  0.33002310E-06 -0.51267127E-06   -2.50000000 -0.50000000 -0.50000000      2   63
-  2.59807621  0.13122593E-02  0.25627277E-18 -0.33002315E-06 -0.51267126E-06   -0.50000000 -2.50000000 -0.50000000      2   66
-  2.95803989  0.45540091E-03  0.50819127E-18 -0.66489650E-06  0.28938005E-06   -1.50000000  2.50000000 -0.50000000      2    8
-  2.95803989  0.45540091E-03  0.45549302E-18 -0.66489648E-06 -0.28938006E-06    1.50000000  2.50000000 -0.50000000      2   24
-  2.95803989  0.45540091E-03  0.69692413E-18  0.66489648E-06  0.28938006E-06    2.50000000 -1.50000000 -0.50000000      2   25
-  2.95803989  0.45540091E-03  0.66484395E-18  0.66489650E-06 -0.28938005E-06    2.50000000  1.50000000 -0.50000000      2   28
-  2.95803989  0.45540091E-03  0.25489938E-18  0.66489650E-06 -0.28938005E-06   -2.50000000 -1.50000000 -0.50000000      2   62
-  2.95803989  0.45540091E-03  0.29898149E-18  0.66489648E-06  0.28938006E-06   -2.50000000  1.50000000 -0.50000000      2   64
-  2.95803989  0.45540091E-03  0.38135457E-18 -0.66489648E-06 -0.28938006E-06   -1.50000000 -2.50000000 -0.50000000      2   65
-  2.95803989  0.45540091E-03  0.41099316E-18 -0.66489650E-06  0.28938005E-06    1.50000000 -2.50000000 -0.50000000      2   67
+  0.86602540  0.37653945E-02  0.65174667E-18  0.14018147E-12  0.23080243E-05    5.00000000E-01  5.00000000E-01 -5.00000000E-01      2    1
+  0.86602540  0.37653945E-02  0.49385070E-18  0.14018126E-12  0.23080243E-05   -5.00000000E-01 -5.00000000E-01 -5.00000000E-01      2   10
+  0.86602540  0.37653945E-02  0.32019142E-18 -0.14018153E-12 -0.23080243E-05   -5.00000000E-01  5.00000000E-01 -5.00000000E-01      2   11
+  0.86602540  0.37653945E-02 -0.44947308E-18 -0.14018135E-12 -0.23080243E-05    5.00000000E-01 -5.00000000E-01 -5.00000000E-01      2   16
+  1.65831240 -0.13525709E-03  0.62697004E-13 -0.55124823E-06  0.50610780E-06   -1.50000000E+00 -5.00000000E-01 -5.00000000E-01      2    5
+  1.65831240 -0.13525709E-03 -0.62697063E-13 -0.55124825E-06 -0.50610777E-06   -1.50000000E+00  5.00000000E-01 -5.00000000E-01      2    6
+  1.65831240 -0.13525709E-03 -0.62697608E-13  0.55124825E-06  0.50610777E-06   -5.00000000E-01 -1.50000000E+00 -5.00000000E-01      2    9
+  1.65831240 -0.13525709E-03  0.62697159E-13  0.55124823E-06 -0.50610780E-06   -5.00000000E-01  1.50000000E+00 -5.00000000E-01      2   12
+  1.65831240 -0.13525709E-03  0.62697518E-13  0.55124823E-06 -0.50610780E-06    5.00000000E-01 -1.50000000E+00 -5.00000000E-01      2   15
+  1.65831240 -0.13525709E-03 -0.62697367E-13  0.55124825E-06  0.50610777E-06    5.00000000E-01  1.50000000E+00 -5.00000000E-01      2   17
+  1.65831240 -0.13525709E-03 -0.62697206E-13 -0.55124825E-06 -0.50610777E-06    1.50000000E+00 -5.00000000E-01 -5.00000000E-01      2   21
+  1.65831240 -0.13525709E-03  0.62697119E-13 -0.55124823E-06  0.50610780E-06    1.50000000E+00  5.00000000E-01 -5.00000000E-01      2   22
+  2.17944947  0.13983983E-03 -0.12722769E-18  0.21234235E-13 -0.29094243E-06   -1.50000000E+00 -1.50000000E+00 -5.00000000E-01      2    4
+  2.17944947  0.13983983E-03 -0.10890870E-20 -0.21234230E-13  0.29094243E-06   -1.50000000E+00  1.50000000E+00 -5.00000000E-01      2    7
+  2.17944947  0.13983983E-03  0.71386487E-19 -0.21234253E-13  0.29094243E-06    1.50000000E+00 -1.50000000E+00 -5.00000000E-01      2   20
+  2.17944947  0.13983983E-03  0.12834826E-18  0.21234236E-13 -0.29094243E-06    1.50000000E+00  1.50000000E+00 -5.00000000E-01      2   23
+  2.59807621 -0.78368796E-04  0.20604044E-18  0.32208315E-06 -0.79021707E-14   -2.50000000E+00  5.00000000E-01 -5.00000000E-01      2    3
+  2.59807621 -0.78368796E-04  0.12551978E-18 -0.32208315E-06  0.79021618E-14   -5.00000000E-01  2.50000000E+00 -5.00000000E-01      2   13
+  2.59807621 -0.78368796E-04  0.28290020E-18 -0.32208315E-06  0.79021697E-14    5.00000000E-01 -2.50000000E+00 -5.00000000E-01      2   14
+  2.59807621 -0.78368796E-04  0.29869354E-18 -0.32208315E-06  0.79021695E-14    5.00000000E-01  2.50000000E+00 -5.00000000E-01      2   18
+  2.59807621 -0.78368796E-04  0.82867062E-19  0.32208315E-06 -0.79021698E-14    2.50000000E+00 -5.00000000E-01 -5.00000000E-01      2   26
+  2.59807621 -0.78368796E-04  0.21898996E-18  0.32208315E-06 -0.79021681E-14    2.50000000E+00  5.00000000E-01 -5.00000000E-01      2   27
+  2.59807621 -0.78368796E-04 -0.25974002E-18  0.32208315E-06 -0.79021711E-14   -2.50000000E+00 -5.00000000E-01 -5.00000000E-01      2   63
+  2.59807621 -0.78368796E-04  0.63545837E-19 -0.32208315E-06  0.79021675E-14   -5.00000000E-01 -2.50000000E+00 -5.00000000E-01      2   66
+  2.95803989 -0.13459247E-03  0.30915472E-20 -0.60562794E-06 -0.32380679E-14   -1.50000000E+00  2.50000000E+00 -5.00000000E-01      2    8
+  2.95803989 -0.13459247E-03 -0.13928517E-18 -0.60562794E-06 -0.32380636E-14    1.50000000E+00  2.50000000E+00 -5.00000000E-01      2   24
+  2.95803989 -0.13459247E-03 -0.83645294E-19  0.60562794E-06  0.32380471E-14    2.50000000E+00 -1.50000000E+00 -5.00000000E-01      2   25
+  2.95803989 -0.13459247E-03 -0.20466876E-18  0.60562794E-06  0.32380536E-14    2.50000000E+00  1.50000000E+00 -5.00000000E-01      2   28
+  2.95803989 -0.13459247E-03 -0.32623162E-18  0.60562794E-06  0.32380486E-14   -2.50000000E+00 -1.50000000E+00 -5.00000000E-01      2   62
+  2.95803989 -0.13459247E-03  0.56915014E-19  0.60562794E-06  0.32380548E-14   -2.50000000E+00  1.50000000E+00 -5.00000000E-01      2   64
+  2.95803989 -0.13459247E-03 -0.22570487E-18 -0.60562794E-06 -0.32380647E-14   -1.50000000E+00 -2.50000000E+00 -5.00000000E-01      2   65
+  2.95803989 -0.13459247E-03 -0.26908993E-18 -0.60562794E-06 -0.32380630E-14    1.50000000E+00 -2.50000000E+00 -5.00000000E-01      2   67
 #&
-  1.00000000 -0.83636663E-02 -0.84142030E-18 -0.16050220E-05  0.88274378E-13   -1.00000000  0.00000000  0.00000000      3   37
-  1.00000000 -0.83636663E-02 -0.93594791E-18  0.16050220E-05 -0.88280737E-13    0.00000000 -1.00000000  0.00000000      3   42
-  1.00000000 -0.83636663E-02 -0.24346711E-17  0.16050220E-05 -0.88280638E-13    0.00000000  1.00000000  0.00000000      3   43
-  1.00000000 -0.83636663E-02 -0.25465874E-17 -0.16050220E-05  0.88274365E-13    1.00000000  0.00000000  0.00000000      3   48
-  1.41421356 -0.91731971E-02 -0.19529097E-17  0.43819524E-13 -0.93730079E-06   -1.00000000 -1.00000000  0.00000000      3   36
-  1.41421356 -0.91731971E-02 -0.20028595E-17 -0.43819491E-13  0.93730079E-06   -1.00000000  1.00000000  0.00000000      3   38
-  1.41421356 -0.91731971E-02 -0.15628490E-17 -0.43819460E-13  0.93730079E-06    1.00000000 -1.00000000  0.00000000      3   47
-  1.41421356 -0.91731971E-02 -0.15919536E-17  0.43819456E-13 -0.93730079E-06    1.00000000  1.00000000  0.00000000      3   49
-  2.00000000  0.28014749E-02 -0.38815562E-17 -0.14981926E-06  0.47101395E-13   -2.00000000  0.00000000  0.00000000      3   32
-  2.00000000  0.28014749E-02 -0.67726408E-17  0.14981926E-06 -0.47111417E-13    0.00000000 -2.00000000  0.00000000      3   41
-  2.00000000  0.28014749E-02 -0.18662693E-17  0.14981926E-06 -0.47112268E-13    0.00000000  2.00000000  0.00000000      3   44
-  2.00000000  0.28014749E-02 -0.25179903E-17 -0.14981926E-06  0.47101401E-13    2.00000000  0.00000000  0.00000000      3   54
-  2.23606798 -0.83568629E-02 -0.14162388E-17  0.32330835E-06  0.21935118E-06   -2.00000000 -1.00000000  0.00000000      3   31
-  2.23606798 -0.83568629E-02 -0.15733550E-17  0.32330843E-06 -0.21935122E-06   -2.00000000  1.00000000  0.00000000      3   33
-  2.23606798 -0.83568629E-02 -0.14616371E-17 -0.32330843E-06  0.21935122E-06   -1.00000000 -2.00000000  0.00000000      3   35
-  2.23606798 -0.83568629E-02 -0.16835088E-17 -0.32330835E-06 -0.21935118E-06   -1.00000000  2.00000000  0.00000000      3   39
-  2.23606798 -0.83568629E-02 -0.16718426E-17 -0.32330835E-06 -0.21935118E-06    1.00000000 -2.00000000  0.00000000      3   46
-  2.23606798 -0.83568629E-02 -0.18907005E-17 -0.32330843E-06  0.21935122E-06    1.00000000  2.00000000  0.00000000      3   50
-  2.23606798 -0.83568629E-02 -0.18522378E-17  0.32330843E-06 -0.21935122E-06    2.00000000 -1.00000000  0.00000000      3   53
-  2.23606798 -0.83568629E-02 -0.19949944E-17  0.32330835E-06  0.21935118E-06    2.00000000  1.00000000  0.00000000      3   55
-  2.82842712  0.26607948E-02 -0.29324193E-17 -0.44932692E-15  0.10241133E-05   -2.00000000  2.00000000  0.00000000      3   34
-  2.82842712  0.26607948E-02 -0.34427876E-17 -0.44964355E-15  0.10241133E-05    2.00000000 -2.00000000  0.00000000      3   52
-  2.82842712  0.26607948E-02  0.18007062E-17  0.45003109E-15 -0.10241133E-05    2.00000000  2.00000000  0.00000000      3   56
-  2.82842712  0.26607948E-02 -0.83508529E-17  0.45006631E-15 -0.10241133E-05   -2.00000000 -2.00000000  0.00000000      3   69
-  3.00000000  0.14787639E-02 -0.63306752E-17  0.29261724E-06 -0.50064344E-13    0.00000000  3.00000000  0.00000000      3   45
-  3.00000000  0.14787639E-02 -0.77390367E-17 -0.29261724E-06  0.50065153E-13    3.00000000  0.00000000  0.00000000      3   59
-  3.00000000  0.14787639E-02  0.68863514E-17 -0.29261724E-06  0.50065498E-13   -3.00000000  0.00000000  0.00000000      3   68
-  3.00000000  0.14787639E-02  0.39269252E-17  0.29261724E-06 -0.50064818E-13    0.00000000 -3.00000000  0.00000000      3   70
+  1.00000000  0.91949538E-04  0.45318954E-18 -0.13678665E-05  0.87333566E-13   -1.00000000E+00  0.00000000E+00  0.00000000E+00      3   37
+  1.00000000  0.91949538E-04 -0.50374617E-18  0.13678665E-05 -0.87333532E-13    0.00000000E+00 -1.00000000E+00  0.00000000E+00      3   42
+  1.00000000  0.91949538E-04  0.47815580E-18  0.13678665E-05 -0.87333586E-13    0.00000000E+00  1.00000000E+00  0.00000000E+00      3   43
+  1.00000000  0.91949538E-04 -0.38949584E-18 -0.13678665E-05  0.87333584E-13    1.00000000E+00  0.00000000E+00  0.00000000E+00      3   48
+  1.41421356 -0.36219625E-03 -0.24761686E-19  0.31495994E-13 -0.71483289E-06   -1.00000000E+00 -1.00000000E+00  0.00000000E+00      3   36
+  1.41421356 -0.36219625E-03  0.14623947E-18 -0.31496033E-13  0.71483289E-06   -1.00000000E+00  1.00000000E+00  0.00000000E+00      3   38
+  1.41421356 -0.36219625E-03 -0.14916423E-18 -0.31496037E-13  0.71483289E-06    1.00000000E+00 -1.00000000E+00  0.00000000E+00      3   47
+  1.41421356 -0.36219625E-03  0.28769767E-19  0.31496027E-13 -0.71483289E-06    1.00000000E+00  1.00000000E+00  0.00000000E+00      3   49
+  2.00000000  0.37352049E-04  0.10648929E-18  0.11741786E-06  0.41560399E-13   -2.00000000E+00  0.00000000E+00  0.00000000E+00      3   32
+  2.00000000  0.37352049E-04  0.59085725E-19 -0.11741786E-06 -0.41560397E-13    0.00000000E+00 -2.00000000E+00  0.00000000E+00      3   41
+  2.00000000  0.37352049E-04 -0.61157035E-19 -0.11741786E-06 -0.41560398E-13    0.00000000E+00  2.00000000E+00  0.00000000E+00      3   44
+  2.00000000  0.37352049E-04 -0.11307252E-18  0.11741786E-06  0.41560398E-13    2.00000000E+00  0.00000000E+00  0.00000000E+00      3   54
+  2.23606798  0.27648595E-04  0.37446886E-19  0.33892368E-07 -0.37742198E-06   -2.00000000E+00 -1.00000000E+00  0.00000000E+00      3   31
+  2.23606798  0.27648595E-04 -0.10516518E-19  0.33892415E-07  0.37742196E-06   -2.00000000E+00  1.00000000E+00  0.00000000E+00      3   33
+  2.23606798  0.27648595E-04  0.83309023E-19 -0.33892415E-07 -0.37742196E-06   -1.00000000E+00 -2.00000000E+00  0.00000000E+00      3   35
+  2.23606798  0.27648595E-04 -0.17304597E-18 -0.33892368E-07  0.37742198E-06   -1.00000000E+00  2.00000000E+00  0.00000000E+00      3   39
+  2.23606798  0.27648595E-04  0.17159078E-18 -0.33892368E-07  0.37742198E-06    1.00000000E+00 -2.00000000E+00  0.00000000E+00      3   46
+  2.23606798  0.27648595E-04 -0.82938054E-19 -0.33892415E-07 -0.37742196E-06    1.00000000E+00  2.00000000E+00  0.00000000E+00      3   50
+  2.23606798  0.27648595E-04  0.94933584E-20  0.33892415E-07  0.37742196E-06    2.00000000E+00 -1.00000000E+00  0.00000000E+00      3   53
+  2.23606798  0.27648595E-04 -0.35350237E-19  0.33892368E-07 -0.37742198E-06    2.00000000E+00  1.00000000E+00  0.00000000E+00      3   55
+  2.82842712 -0.63799645E-06 -0.18053408E-18  0.15639327E-13  0.51856070E-06   -2.00000000E+00  2.00000000E+00  0.00000000E+00      3   34
+  2.82842712 -0.63799645E-06  0.17818858E-18  0.15639332E-13  0.51856070E-06    2.00000000E+00 -2.00000000E+00  0.00000000E+00      3   52
+  2.82842712 -0.63799645E-06 -0.62277660E-18 -0.15639337E-13 -0.51856070E-06    2.00000000E+00  2.00000000E+00  0.00000000E+00      3   56
+  2.82842712 -0.63799645E-06  0.61417811E-18 -0.15639338E-13 -0.51856070E-06   -2.00000000E+00 -2.00000000E+00  0.00000000E+00      3   69
+  3.00000000  0.37352049E-04  0.22746320E-18 -0.11741786E-06 -0.41560393E-13    0.00000000E+00  3.00000000E+00  0.00000000E+00      3   45
+  3.00000000  0.37352049E-04  0.27992374E-18  0.11741786E-06  0.41560402E-13    3.00000000E+00  0.00000000E+00  0.00000000E+00      3   59
+  3.00000000  0.37352049E-04 -0.28669136E-18  0.11741786E-06  0.41560397E-13   -3.00000000E+00  0.00000000E+00  0.00000000E+00      3   68
+  3.00000000  0.37352049E-04 -0.23126755E-18 -0.11741786E-06 -0.41560399E-13    0.00000000E+00 -3.00000000E+00  0.00000000E+00      3   70
 #&
diff --git a/tests/KKRhost/test_inputs/test_04_Jijs_Fe_slab_lmax2_noSOC/inputcard b/tests/KKRhost/test_inputs/test_04_Jijs_Fe_slab_lmax2_noSOC/inputcard
index b052f6de363d35f255468dade005f7c2af21d8aa..10cf10eb9c7f20abb9cff3621c70f780aa6dc05f 100644
--- a/tests/KKRhost/test_inputs/test_04_Jijs_Fe_slab_lmax2_noSOC/inputcard
+++ b/tests/KKRhost/test_inputs/test_04_Jijs_Fe_slab_lmax2_noSOC/inputcard
@@ -61,3 +61,5 @@ HFIELD=0.00
 JIJRAD= 3.0
 JIJSITEI= 2 2 3
 JIJSITEJ= 2 2 3
+
+<set_kmesh_large>= T
diff --git a/tests/KKRhost/test_inputs/test_04_Jijs_Fe_slab_lmax2_noSOC/ref/Jij.atom00002 b/tests/KKRhost/test_inputs/test_04_Jijs_Fe_slab_lmax2_noSOC/ref/Jij.atom00002
index 624400590feb2007f6d908efc03c55fdc120ecb0..527dd890fd1cd2ab9a01d568377dbe5a7314e1f1 100644
--- a/tests/KKRhost/test_inputs/test_04_Jijs_Fe_slab_lmax2_noSOC/ref/Jij.atom00002
+++ b/tests/KKRhost/test_inputs/test_04_Jijs_Fe_slab_lmax2_noSOC/ref/Jij.atom00002
@@ -1,18 +1,18 @@
-# serial: kkrjm_v2.3-64-g8cc70fc_mpi_20180905082255; MD5 (potential) = 14ddafa231a8ee9e0a34b4d0dd10a860; MD5 (shapefun) = 2a2e1c5c0b89c36da8d88650ba34a20e
+# serial: JuKKR_v3.1-1717-g1f7d9f5_gnu_20201103133243; 00000000000000000000000000000000  potential; 00000000000000000000000000000000  shapefun
 # off-diagonal exchange coupling constants 
 # for atom IT =   2 on site IQ =   2
 # R_IQ,JQ      J_IT,JT       JT
 # ( ALAT )       ( Ry )
 #      
-  0.86602540   0.35941497E-02    3    5
-  3.00000000   0.14664035E-02    2    6
-  2.82842712   0.26976060E-02    2    7
-  2.23606798  -0.83986382E-02    2    8
-  2.00000000   0.28385389E-02    2    9
-  1.41421356  -0.92168810E-02    2   10
-  1.00000000  -0.83979723E-02    2   11
-  2.95803989   0.45237483E-03    3   12
-  2.59807621   0.13166116E-02    3   13
-  2.17944947   0.72423323E-03    3   14
-  1.65831240   0.51782812E-03    3   15
+  0.86602540   0.37764954E-02    3    5
+  3.00000000   0.39495883E-04    2    6
+  2.82842712   0.11677144E-05    2    7
+  2.23606798   0.24829416E-04    2    8
+  2.00000000   0.39495883E-04    2    9
+  1.41421356  -0.36515737E-03    2   10
+  1.00000000   0.96536330E-04    2   11
+  2.95803989  -0.13806683E-03    3   12
+  2.59807621  -0.80177438E-04    3   13
+  2.17944947   0.14304881E-03    3   14
+  1.65831240  -0.13574534E-03    3   15
  &
diff --git a/tests/KKRhost/test_inputs/test_04_Jijs_Fe_slab_lmax2_noSOC/ref/Jij.atom00003 b/tests/KKRhost/test_inputs/test_04_Jijs_Fe_slab_lmax2_noSOC/ref/Jij.atom00003
index a01b56f16b753777038692c1738dac21fc830963..38c45acdf89a0c0e8a316883c45d6a285e22f8d4 100644
--- a/tests/KKRhost/test_inputs/test_04_Jijs_Fe_slab_lmax2_noSOC/ref/Jij.atom00003
+++ b/tests/KKRhost/test_inputs/test_04_Jijs_Fe_slab_lmax2_noSOC/ref/Jij.atom00003
@@ -1,18 +1,18 @@
-# serial: kkrjm_v2.3-64-g8cc70fc_mpi_20180905082255; MD5 (potential) = 14ddafa231a8ee9e0a34b4d0dd10a860; MD5 (shapefun) = 2a2e1c5c0b89c36da8d88650ba34a20e
+# serial: JuKKR_v3.1-1717-g1f7d9f5_gnu_20201103133243; 00000000000000000000000000000000  potential; 00000000000000000000000000000000  shapefun
 # off-diagonal exchange coupling constants 
 # for atom IT =   3 on site IQ =   3
 # R_IQ,JQ      J_IT,JT       JT
 # ( ALAT )       ( Ry )
 #      
-  0.86602540   0.35941497E-02    2   16
-  2.59807621   0.13166116E-02    2   17
-  2.17944947   0.72423323E-03    2   18
-  1.65831240   0.51782812E-03    2   19
-  2.95803989   0.45237483E-03    2   20
-  2.23606798  -0.83986382E-02    3   21
-  2.00000000   0.28385389E-02    3   22
-  2.82842712   0.26976060E-02    3   23
-  1.41421356  -0.92168810E-02    3   24
-  1.00000000  -0.83979723E-02    3   25
-  3.00000000   0.14664035E-02    3   26
+  0.86602540   0.37764954E-02    2   16
+  2.59807621  -0.80177438E-04    2   17
+  2.17944947   0.14304881E-03    2   18
+  1.65831240  -0.13574534E-03    2   19
+  2.95803989  -0.13806683E-03    2   20
+  2.23606798   0.24829416E-04    3   21
+  2.00000000   0.39495883E-04    3   22
+  2.82842712   0.11677144E-05    3   23
+  1.41421356  -0.36515737E-03    3   24
+  1.00000000   0.96536330E-04    3   25
+  3.00000000   0.39495883E-04    3   26
  &
diff --git a/tests/KKRhost/tools/kkrparser_functions.py b/tests/KKRhost/tools/kkrparser_functions.py
index 44edf3ec469ee296b3f34b63fb6c6551bc50cfeb..b10d778b41618fb6f15d983985d704728f7bbef7 100644
--- a/tests/KKRhost/tools/kkrparser_functions.py
+++ b/tests/KKRhost/tools/kkrparser_functions.py
@@ -20,7 +20,7 @@ __copyright__ = (u"Copyright (c), 2017, Forschungszentrum Jülich GmbH,"
                  "IAS-1/PGI-1, Germany. All rights reserved.")
 __license__ = "MIT license, see LICENSE.txt file"
 __contributors__ = u"Philipp Rüßmann"
-__version__ = "1.7"
+__version__ = "1.8"
 
 ####################################################################################
 
@@ -78,6 +78,19 @@ def get_rms(outfile, outfile2, debug=False):
     return rms_charge, rms_spin, rms_charge_atoms[-natoms:], rms_spin_atoms[-natoms:]
 
 
+def get_noco_rms(outfile, debug=False):
+    """
+    Get average noco rms error
+    """
+    if debug: print(outfile)
+    try:
+        rms_noco = parse_array_float(outfile, 'Total RMS(angles)', [1, ':', 1], debug=debug)
+    except:
+        rms_noco = []
+        if debug: traceback.print_exc()
+    return rms_noco
+
+
 def get_neutr(outfile):
     res = parse_array_float(outfile, 'charge neutrality in unit cell', [1, '=', 1])
     return res
@@ -395,10 +408,16 @@ def use_newsosol(outfile_0init):
     f = open_general(outfile_0init)
     tmptxt = f.readlines()
     f.close()
-    itmp = search_string('NEWSOSOL', tmptxt)
     newsosol = False
-    if itmp>=0:
+    # old style (RUNOPT output)
+    itmp = search_string('NEWSOSOL', tmptxt)
+    if itmp>=0 and tmptxt[itmp].split()[0]=='NEWSOSOL':
         newsosol = True
+    itmp = search_string('<use_Chebychev_solver>=', tmptxt)
+    # new style: check for output of runoptions
+    if itmp>=0 :
+        if tmptxt[itmp].split()[1][:1]=='T':
+            newsosol = True    
     return newsosol
 
 
@@ -728,6 +747,18 @@ def parse_kkr_outputfile(out_dict, outfile, outfile_0init, outfile_000, timing_f
             msg_list.append(msg)
             if debug: traceback.print_exc()
 
+        # get RMS info for nonco angles
+        try:
+            if nspin>1 and newsosol:
+                result = get_noco_rms(outfile, debug)
+                if len(result)>0:
+                    out_dict['convergence_group']['noco_angles_rms_all_iterations'] = result[:]
+                    out_dict['convergence_group']['noco_angles_rms_all_iterations_unit'] = 'degrees'
+        except:
+            msg = "Error parsing output of KKR: noco angles rms value"
+            msg_list.append(msg)
+            if debug: traceback.print_exc()
+
         try:
             result = get_EF(outfile)
             out_dict['fermi_energy'] = result[-1]
diff --git a/tests/KKRhost/tools/run_test_03_2.sh b/tests/KKRhost/tools/run_test_03_2.sh
index 55ae599423ab6af655e6c99988764a9345a7bd08..10b87083c2709cc10a001cc72a90a8b1021c9717 100755
--- a/tests/KKRhost/tools/run_test_03_2.sh
+++ b/tests/KKRhost/tools/run_test_03_2.sh
@@ -11,5 +11,9 @@ cd ..
 cd NEWSOSOL_SOCSCL0/
 mpirun -np 3 ../../../kkr.x | tee out_kkr
 grep -A10000 'Information on renormalization by Lloyds formula' output.000.txt > out_last.txt
-cd ../../
+cd ../
 
+cd NEWSOSOL_DECOUPLED_SPINS/
+mpirun -np 3 ../../../kkr.x | tee out_kkr
+grep -A10000 'Information on renormalization by Lloyds formula' output.000.txt > out_last.txt
+cd ../../
diff --git a/tests/KKRhost/tools/test_verify_results.py b/tests/KKRhost/tools/test_verify_results.py
index 9cd078a5704dff57e653c1c2cc80602de26c0b64..db5e8fc46a4bb1a0b35baed41b8f2460f53d476a 100644
--- a/tests/KKRhost/tools/test_verify_results.py
+++ b/tests/KKRhost/tools/test_verify_results.py
@@ -19,7 +19,7 @@ class Test_serial():
 
     def test_2_Fe_slab(self):
         path0 = 'test_run02_serial_1_1/'
-        standard_verify(path0, rms_threshold=7*10**-8)
+        standard_verify(path0, rms_threshold=7*10**-8, debug=True)
 
     def test_3_Si_lloyd(self):
         path0 = 'test_run03_serial_1_1/'
@@ -230,7 +230,7 @@ class Test_SOC():
 
     def test_2_Fe_slab(self):
         path0 = 'test_run02.1_hybrid_1_3/'
-        standard_verify(path0, rms_threshold=1*10**-8, rms_threshold_end=1*10**-8)
+        standard_verify(path0, rms_threshold=2*10**-8, rms_threshold_end=1*10**-8)
 
     def test_3_Si_lloyd(self):
         path0 = 'test_run03.1_hybrid_1_3/'
@@ -241,11 +241,16 @@ class Test_SOC():
         # check convergence of both runs
         standard_verify(path0+'NEWSOSOL_NOSOC/', rms_threshold=1.5*10**-6, rms_threshold_end=1.5*10**-6, neutr_threshold=8*10**-5)
         standard_verify(path0+'NEWSOSOL_SOCSCL0/', rms_threshold=1.5*10**-6, rms_threshold_end=1.5*10**-6, neutr_threshold=8*10**-5)
+        standard_verify(path0+'NEWSOSOL_DECOUPLED_SPINS//', rms_threshold=1.5*10**-6, rms_threshold_end=1.5*10**-6, neutr_threshold=8*10**-5)
         # cross check both runs against each other (comparing output writte to 'out_last.txt')
         num, text = read_file(path0+'NEWSOSOL_NOSOC/out_last.txt')
         num_ref, text_ref = read_file(path0+'NEWSOSOL_SOCSCL0/out_last.txt')
         assert std(num-num_ref)<5*10**-12
         assert set(text)-set(text_ref)==set()
+        # compare also to decoupled spin channels
+        num, text = read_file(path0+'NEWSOSOL_DECOUPLED_SPINS/out_last.txt')
+        assert std(num-num_ref)<5*10**-12
+        assert set(text)-set(text_ref)==set()
 
     def test_4_Jijs_SOC(self):
         paths = ['test_run04.1_hybrid_1_3/']
@@ -308,12 +313,12 @@ class Test_SOC():
         
 # helper functions
 
-def standard_verify(path0, rms_threshold=10**-8, rms_threshold_end=10**-8, neutr_threshold=10**-6):
+def standard_verify(path0, rms_threshold=10**-8, rms_threshold_end=10**-8, neutr_threshold=10**-6, debug=False):
     """
     wrapper for standard tests reading output and comparins rms and charge neutrality
     """
     # use parser function from aiida-kkr
-    success, parser_msgs, out_dict = parse_kkr_outputfile({}, path0+'out_kkr', path0+'output.0.txt', path0+'output.000.txt', path0+'out_timing.000.txt', path0+'out_potential', path0+'nonco_angle_out.dat')
+    success, parser_msgs, out_dict = parse_kkr_outputfile({}, path0+'out_kkr', path0+'output.0.txt', path0+'output.000.txt', path0+'out_timing.000.txt', path0+'out_potential', path0+'nonco_angle_out.dat', debug=debug)
     pprint.pprint(parser_msgs)
     pprint.pprint(out_dict)
     # first check if parsing was successful
diff --git a/tests/KKRimp/clean_kkrimp_tests.sh b/tests/KKRimp/clean_kkrimp_tests.sh
index 597dc7e0796fa3484ef9932ce220e59c8e62e55f..508d46ebb6fb988e5c92fcc7c4383269175d4018 100755
--- a/tests/KKRimp/clean_kkrimp_tests.sh
+++ b/tests/KKRimp/clean_kkrimp_tests.sh
@@ -10,6 +10,7 @@ rm -rf test_case_kkrflex_host_in_host/imp/test_run_tmatnew_mpi_8
 rm -rf test_case_kkrflex_host_in_host/imp/test_run_nosavewf/out
 rm -rf test_case_kkrflex_host_in_host/imp/test_run_nosratrick/out
 rm -rf test_case_kkrflex_host_in_host/imp/test_run_Jij/out
+rm -rf test_case_kkrflex_host_in_host/imp/test_run_Jij_hybrid/out
 rm -rf test_case_kkrflex_host_in_host/imp/test_run_Jij_savewf/out
 rm -rf test_case_kkrflex_host_in_host/imp/test_run_Jij_nosratrick/out
 rm -f test_case_kkrflex_host_in_host/imp/test_run_{Jij,Jij_nosratrick,Jij_savewf,nosavewf,nosratrick}/{ldaupot,out_*,storage_*,test_*}
diff --git a/tests/KKRimp/kkrimp_run_tests_manual.sh b/tests/KKRimp/kkrimp_run_tests_manual.sh
index c7abacacee1f89a2d023ebde9477e37748fb6d53..7d808fffa76db1262af3ef5e906376c33a288b5f 100755
--- a/tests/KKRimp/kkrimp_run_tests_manual.sh
+++ b/tests/KKRimp/kkrimp_run_tests_manual.sh
@@ -117,6 +117,14 @@ fi
 if [[ ! -f test_case_kkrflex_host_in_host/imp/test_run_Jij/out ]]; then
   echo "test 12"
   cd test_case_kkrflex_host_in_host/imp/test_run_Jij/
+  ln -s ../../../../kkrflex.exe_mpi kkrflex.exe
+  export OMP_NUM_THREADS=1; mpirun -np 8 ./kkrflex.exe | tee out
+  cd ../../../
+fi
+  
+if [[ ! -f test_case_kkrflex_host_in_host/imp/test_run_Jij_hybrid/out ]]; then
+  echo "test 12"
+  cd test_case_kkrflex_host_in_host/imp/test_run_Jij_hybrid/
   ln -s ../../../../kkrflex.exe_hybrid kkrflex.exe
   export OMP_NUM_THREADS=1; mpirun -np 8 ./kkrflex.exe | tee out
   cd ../../../
@@ -125,7 +133,7 @@ fi
 if [[ ! -f test_case_kkrflex_host_in_host/imp/test_run_Jij_savewf/out ]]; then
   echo "test 13"
   cd test_case_kkrflex_host_in_host/imp/test_run_Jij_savewf/
-  ln -s ../../../../kkrflex.exe_hybrid kkrflex.exe
+  ln -s ../../../../kkrflex.exe_mpi kkrflex.exe
   export OMP_NUM_THREADS=1; mpirun -np 8 ./kkrflex.exe | tee out
   cd ../../../
 fi
@@ -133,7 +141,7 @@ fi
 if [[ ! -f test_case_kkrflex_host_in_host/imp/test_run_Jij_nosratrick/out ]]; then
   echo "test 14"
   cd test_case_kkrflex_host_in_host/imp/test_run_Jij_nosratrick/
-  ln -s ../../../../kkrflex.exe_hybrid kkrflex.exe
+  ln -s ../../../../kkrflex.exe_mpi kkrflex.exe
   export OMP_NUM_THREADS=1; mpirun -np 8 ./kkrflex.exe | tee out
   cd ../../../
 fi
diff --git a/tests/KKRimp/test_case_kkrflex_host_in_host/imp/test_verify.py b/tests/KKRimp/test_case_kkrflex_host_in_host/imp/test_verify.py
index f8e83ec7dd7e5c6448d4d2070e708034224452f0..41204f2d14392191c63b888a68515dd95c1e18db 100644
--- a/tests/KKRimp/test_case_kkrflex_host_in_host/imp/test_verify.py
+++ b/tests/KKRimp/test_case_kkrflex_host_in_host/imp/test_verify.py
@@ -52,10 +52,13 @@ class Tests_scf_SOC():
    def test_Jij(self):
       check_Jijs('test_run_Jij', refpath='host_in_host_Jijs')
 
-   def test_Jij(self):
+   def test_Jij_hybrid(self):
+      check_Jijs('test_run_Jij_hybrid', refpath='host_in_host_Jijs')
+
+   def test_Jij_savewf(self):
       check_Jijs('test_run_Jij_savewf', refpath='host_in_host_Jijs')
 
-   def test_Jij(self):
+   def test_Jij_nosratrick(self):
       check_Jijs('test_run_Jij_nosratrick', refpath='host_in_host_Jijs', sracomp=True)