diff --git a/sammy/src/ang/mang0.f b/sammy/src/ang/mang0.f
index 676deda549b3bfc74ff1f955b1f69bc5bb7bae15..eb9f8d4568050dfaf44a5fc476f40eba2dfd19b5 100644
--- a/sammy/src/ang/mang0.f
+++ b/sammy/src/ang/mang0.f
@@ -10,10 +10,10 @@ C
       use exploc_common_m
       use array_sizes_common_m
       use oopsch_common_m, only : Nowwww, Segmen
-      use lbro_common_m, only : Debug, Ydoppr, Yresol
+      use lbro_common_m, only : Debug
       use AuxGridHelper_M, only : getNumAuxGridPoints
       use rsl7_m, only : Set_Kws
-      use mxct27_m
+      use mxct27_m      
       IMPLICIT none
       real(kind=8),allocatable,dimension(:)::A_Icccll
       real(kind=8),allocatable,dimension(:)::A_Ipoly
@@ -88,8 +88,7 @@ C
 C - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - >
 C
 C
-      Jwwwww = 9     
-      Numcro = Nangle
+      Jwwwww = 9           
        CALL Write_Commons_Many
 C
       END
diff --git a/sammy/src/ang/mang1.f b/sammy/src/ang/mang1.f
index a77049d17f5d5473d0047381525858552bc7ce72..a68607376df99d6ea4ed0ca2be891d1b7e79a38b 100644
--- a/sammy/src/ang/mang1.f
+++ b/sammy/src/ang/mang1.f
@@ -50,10 +50,8 @@ C
 
 
       call grid%initialize()
-      call grid%setParameters(numcro, ktzero)
       call grid%setToExpGrid(expData)
       call auxGrid%initialize()
-      call auxGrid%setParameters(numcro, ktzero)
       call auxGrid%setToAuxGrid(expData)
 C
       Kkkmin = 0
@@ -195,18 +193,6 @@ C
   190    CONTINUE
       END DO
 C *** end of loop on isotopes
-C
-      if (.not.Another_Process_Will_Happen.or.
-     *     .not.Need_Isotopes) then
-           call calcData%sumOverIsotopes(numUsedPar+1)
-       end if
-       if (.not.Another_Process_Will_Happen) then
-          DO Jdat=1, grid%getNumEnergies(expData)
-             Em  =  grid%getEnergy(Jdat, expData)
-             CALL Only_Norm_Ang (Parnbk, Iflnbk,
-     *                           Em,  Jdat, Jdat, Nangle)
-          end do
-       end if
 
       nauxStart = getAuxGridOffset()
       nauxStart = nauxStart + Kkkmin - 1
@@ -214,11 +200,9 @@ C
       call setAuxGridOffset(nauxStart)
       call setAuxGridRowMax(Kkkdat - 1)
       IF (Kkkdat.EQ.1) STOP '[STOP in Diffee in ang/mang1.f    # 4]'
-      IF (Another_Process_Will_Happen) THEN
-         Kkkmin = Kkkmin - 1
-         CALL Write_Cross_Sections (calcData,
-     *                              Kkkkkk, Kkkmin, 0)
-      END IF
+
+      Kksave = Kkkkkk
+
       call grid%destroy()
       call auxGrid%destroy()
       RETURN
diff --git a/sammy/src/ang/mang2.f b/sammy/src/ang/mang2.f
index 2480ffb55d4ad95ad7b8aba6e2c029e8b24a09a4..f3ffae8ea1b12758371888fe811906f0e2ce8e08 100644
--- a/sammy/src/ang/mang2.f
+++ b/sammy/src/ang/mang2.f
@@ -75,8 +75,8 @@ C
       SUBROUTINE Outnat (Parmsc, Iflmsc,
      *   Total, Dtotal, Prime, Ee, Jjdat, irow, iso)
 C
-      use fixedi_m,  only : Nangle, numcro, numUsedPar
-      use ifwrit_m, only : Nnpar, Kjatto, ktzero
+      use fixedi_m,  only : Nangle, numUsedPar
+      use ifwrit_m, only : Nnpar, Kjatto
       use EndfData_common_m, only : covData, expData
       use SammyGridAccess_M
       use array_sizes_common_m, only : calcData
@@ -97,8 +97,7 @@ C ***    Theta-Dtheta to Theta+Dtheta.  This is not really correct, but
 C ***    corresponds to what FGP (Francis Perey?) did in RFUNC.
 C
       N = Jjdat
-      call grid%initialize()
-      call grid%setParameters(numcro, ktzero)
+      call grid%initialize()      
       call grid%setToAuxGrid(expData)
       Kkk = Kjatto - 1
       DO Iangle=1,Nangle
diff --git a/sammy/src/avg/mavg4.f b/sammy/src/avg/mavg4.f
index 2a5169da25bdcc05b644df5bab6cc09ce5c4c4b5..9af17cf83fbc726d61bcc9a59ae942524b5797ba 100644
--- a/sammy/src/avg/mavg4.f
+++ b/sammy/src/avg/mavg4.f
@@ -60,7 +60,6 @@ C    *   Emn(Ndatq), Emx(Ndatq), Deld(Ndatq), Delu(Ndatq)
       DATA Half /0.5d0/, Three /3.0d0/
 
       call grid%initialize()
-      call grid%setParameters(numcro, ktzero)
       call grid%setToAuxGrid(expData)
 C
 C
@@ -188,8 +187,7 @@ C    *   Emn(Ndatq), Emx(Ndatq), Deld(Ndatq), Delu(Ndatq)
      *   Emx(*), Deld(*), Delu(*)
       DATA One /1.0d0/, Two /2.0d0/
 
-      call grid%initialize()
-      call grid%setParameters(numcro, ktzero)
+      call grid%initialize()      
       call grid%setToAuxGrid(expData)
 C
 C
diff --git a/sammy/src/ccm/mccm1.F b/sammy/src/ccm/mccm1.F
index 05944eb5346b3cc534f29274590c9714fb73a8b4..1d1fbb1fa5c158de9f6adffbfc58814f8c36898d 100755
--- a/sammy/src/ccm/mccm1.F
+++ b/sammy/src/ccm/mccm1.F
@@ -34,8 +34,7 @@ C
       type(ResonanceCovariance)::uCov
       DATA Ncol/10/, Zero /0.0d0/
 
-      call grid%initialize()
-      call grid%setParameters(numcro, ktzero)
+      call grid%initialize()      
       call grid%setToExpGrid(expData)
 C
       N = Nnndat
diff --git a/sammy/src/clm/mclm3.f b/sammy/src/clm/mclm3.f
index c4638ab379af5d35e7d25c3df91fcf8fe83e7786..7dc8be21e98cc6ef92e7c39eab3fbecdb8ff011c 100644
--- a/sammy/src/clm/mclm3.f
+++ b/sammy/src/clm/mclm3.f
@@ -10,9 +10,9 @@ C
 C *** PURPOSE -- FORM DOPPLER-BROADENED CROSS SECTION AND DERIVATIVES
 C
       use fixedi_m, only : Ktruet, Lllmax,
-     *                     Numiso, numcro, numUsedPar
+     *                     Numiso, numUsedPar
       use ifwrit_m, only : Kcros, Kdebug, Kfinit, Ksindi, Ksitmp,
-     *                     ktzero, Kvtemp, Kvthck, Nonu
+     *                     Kvtemp, Kvthck, Nonu
       use fixedr_m, only : Emax, Emaxs, Emin, Emins, Temp, Thick,
      *                     Sitemp
       use brdd_common_m, only : Iup, Kc
@@ -49,10 +49,8 @@ C
       type(DerivativeHandler)::tmpCalc
 
       call grid%initialize()
-      call grid%setParameters(numcro, ktzero)
       call grid%setToExpGrid(expData)
       call auxGrid%initialize()
-      call auxGrid%setParameters(numcro, ktzero)
       call auxGrid%setToAuxGrid(expData)
       call setAuxGridOffset(1) ! reset auxillary grid starting point
       numEl    = grid%getNumEnergies(expData)
diff --git a/sammy/src/clm/mclm8a.f90 b/sammy/src/clm/mclm8a.f90
index 601c779b31aaa9069d47b158b6c62082b2a3b7cc..663426350013c5c8761ad222a414a6abfe1640af 100644
--- a/sammy/src/clm/mclm8a.f90
+++ b/sammy/src/clm/mclm8a.f90
@@ -19,8 +19,7 @@ module Qtrap_Clm_m
 !     *** Bs     - Beta array (variable of integration)
 !     *** Ss     - Weighting function (S_alpha_beta)
 !
-      use fixedi_m, only : numcro,numUsedPar
-      use ifwrit_m, only : ktzero
+      use fixedi_m, only : numUsedPar
       use fixedr_m, only : Aaawww
       use clm_common_m, only : Dwpix, Eps, Mode_S_Norm
       use constn_common_m, only : Aneutr
@@ -43,7 +42,6 @@ module Qtrap_Clm_m
       logical(C_BOOL)::accu
 !
       call grid%initialize()
-      call grid%setParameters(numcro, ktzero)
       call grid%setToAuxGrid(expData)
 !
       L1er = 0
diff --git a/sammy/src/convolution/CMakeLists.txt b/sammy/src/convolution/CMakeLists.txt
index 51936cfc0465900a23c196c364480bb27f17653d..4c8fd56d3b6e2d223f042ec32a3e9d66de5b09c4 100644
--- a/sammy/src/convolution/CMakeLists.txt
+++ b/sammy/src/convolution/CMakeLists.txt
@@ -18,6 +18,8 @@ SET(HEADERS
    
     DopplerAndResolutionBroadener.h
     interface/cpp/DopplerAndResolutionBroadenerInterface.h
+
+    DopplerBroadening.h
 )
 
 APPEND_SET(CONVOLUTION_SOURCES
@@ -36,6 +38,8 @@ APPEND_SET(CONVOLUTION_SOURCES
     interface/cpp/DopplerAndResolutionBroadenerInterface.cpp
     interface/fortran/DopplerAndResolutionBroadener_I.f90
     interface/fortran/DopplerAndResolutionBroadener_M.f90
+
+    DopplerBroadening.cpp
 )
 
 
diff --git a/sammy/src/convolution/DopplerAndResolutionBroadener.cpp b/sammy/src/convolution/DopplerAndResolutionBroadener.cpp
index a2bf61a4bbfa092f1aa84259fbca5c3479c08363..983fdbdbc1bc5ff3ef6b7ce97d3e640dd3df3a96 100644
--- a/sammy/src/convolution/DopplerAndResolutionBroadener.cpp
+++ b/sammy/src/convolution/DopplerAndResolutionBroadener.cpp
@@ -9,7 +9,6 @@ DopplerAndResolutionBroadener::DopplerAndResolutionBroadener(DerivativeHandler &
                                                              GridDataList & list,
                                                              GridDataList & work):handler(hand), gridList(list), workSpace(work)
 {
-     numIso = 0;
      numPerEner = 1;
      posUn = posBroad = 0;
      offUn = offBroad = 0;
@@ -231,27 +230,28 @@ void DopplerAndResolutionBroadener::ensureWorkGridLength(int length){
     }
 }
 
-void DopplerAndResolutionBroadener::setupBroadnener(int numcro, int ktzero, bool moreBroadening){
-    int nn = numcro;
-    if (nn == 0) nn = 1;
-    setNumPerEnergy(nn);
-
-    nn = 0;
-    if (ktzero != 0){
-        if (numcro > 1){
-            nn = 2;
-        }
-        else{
-            nn = 1;
-        }
+void DopplerAndResolutionBroadener::setupBroadnener(bool moreBroadening){
+    const std::unique_ptr<GridData> & grid = gridList.getGrid(0);
+    int numcro = 1;
+    int ipos =  0;
+    if (grid != nullptr) {
+        numcro = grid->getNumPerEnergy();
+
+        // ipos is only relevant for the experimental grid (index 0)
+        // it is ignored  for auxillary grid (index > 0)
+        ipos = grid->getDataColumn() - 1;
+        if (numcro > 1) ipos--;
+        if (ipos < 0) ipos = 0;
     }
+    if (numcro == 0) numcro = 1;
+    setNumPerEnergy(numcro);
 
-    setUnbroadenedGrid(1, nn);  // unbroadened grid is always auxillary grid
+    setUnbroadenedGrid(1, ipos);  // unbroadened grid is always auxillary grid
     if (moreBroadening){
-        setBroadenedGrid(1,nn);  // and if more brodening is to happen, it is also broadened to the auxillary grid
+        setBroadenedGrid(1,ipos);  // and if more brodening is to happen, it is also broadened to the auxillary grid
     }
     else{
-        setBroadenedGrid(0,nn);  // if last broadening it is on the experimental grid
+        setBroadenedGrid(0,ipos);  // if last broadening it is on the experimental grid
     }
 }
 
diff --git a/sammy/src/convolution/DopplerAndResolutionBroadener.h b/sammy/src/convolution/DopplerAndResolutionBroadener.h
index 4798a18dbc8a31cd19f6942760380b1b2a73be82..956aa722dfe62fedeb41166b6006adad385bb8b3 100644
--- a/sammy/src/convolution/DopplerAndResolutionBroadener.h
+++ b/sammy/src/convolution/DopplerAndResolutionBroadener.h
@@ -28,21 +28,6 @@ public:
     DopplerAndResolutionBroadener(const DopplerAndResolutionBroadener & orig)=delete;
     virtual ~DopplerAndResolutionBroadener(){}
 
-    /**
-     * Get the number of isotopes to consider.
-     *
-     * @return the number of isotopes to consider
-     */
-    int getNumIso() const{ return numIso;}
-
-    /**
-     * Set the number of isotopes.
-     * If 1, only shared values in DerivativeHandler are considered
-     *
-     * @param iso the number of isotopes
-     */
-    void setNumIso(int iso) { numIso = iso;}
-
     /**
      * Get the number of points per energy
      *
@@ -272,11 +257,10 @@ public:
 
     /**
      * Set up the grid
-     * @param numcro  the number of points per energy
-     * @param ktzero  if t_0 is adjusted, the position of the energy in the grid shifts
+     *
      * @param moreBroadening true if more broadening is to happen after
      */
-    void setupBroadnener(int numcro, int ktzero, bool moreBroadening);
+    void setupBroadnener(bool moreBroadening);
 
     /**
      * Indicate where broadenend data actually start on the
@@ -302,7 +286,6 @@ private:
 
     void ensureWorkGridLength(int length);
 
-    int numIso; // number of isotopes (if 1 - always use shared value)
     int numPerEner; // number of points per energy
 
     int posUn, posBroad; // the position of the energy in the unbroadened and braodened grid
diff --git a/sammy/src/convolution/DopplerBroadening.cpp b/sammy/src/convolution/DopplerBroadening.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..c3bff21aadaa6141b248f9ea2cbd9cf5a6aa1474
--- /dev/null
+++ b/sammy/src/convolution/DopplerBroadening.cpp
@@ -0,0 +1,5 @@
+#include "DopplerBroadening.h"
+
+namespace  sammy{
+
+}
diff --git a/sammy/src/convolution/DopplerBroadening.h b/sammy/src/convolution/DopplerBroadening.h
new file mode 100644
index 0000000000000000000000000000000000000000..016c639e2cd85d81be9e790024158a8b5ea0a60f
--- /dev/null
+++ b/sammy/src/convolution/DopplerBroadening.h
@@ -0,0 +1,20 @@
+#ifndef SAMMY_DOPPLERBROADENING_H
+#define SAMMY_DOPPLERBROADENING_H
+
+#include "DopplerAndResolutionBroadener.h"
+#include "salmon/GridData.h"
+#include "salmon/DerivativeHandler.h"
+
+namespace sammy{
+class DopplerBroadening : public DopplerAndResolutionBroadener
+{
+public:
+    DopplerBroadening(DerivativeHandler & hand, GridDataList & list, GridDataList & work):
+                      DopplerAndResolutionBroadener(hand, list, work){}
+    DopplerBroadening(const DopplerBroadening & orig) = delete;
+    virtual ~DopplerBroadening(){}
+private:
+    double temp;
+};
+}
+#endif // SAMMY_DOPPLERBROADENING_H
diff --git a/sammy/src/convolution/interface/cix/DopplerAndResolutionBroadener.cpp2f.xml b/sammy/src/convolution/interface/cix/DopplerAndResolutionBroadener.cpp2f.xml
index 6a18bf648f32d512d9e653d321be2559b0dbcb59..3fb977f258779bbe894e24fe7b3027dcc140c3e6 100644
--- a/sammy/src/convolution/interface/cix/DopplerAndResolutionBroadener.cpp2f.xml
+++ b/sammy/src/convolution/interface/cix/DopplerAndResolutionBroadener.cpp2f.xml
@@ -11,11 +11,6 @@
              <param name="work" type="GridDataList"/>
          </constructor>
 
-         <method name="getNumIso" return_type="int"/>
-         <method name="setNumIso">
-             <param name="iso" type="int"/>
-         </method>
-
          <method name="getNumPerEnergy" return_type="int"/>
          <method name="setNumPerEnergy">
              <param name="n" type="int"/>
@@ -94,9 +89,7 @@
           <method name="setXoefWeights">
               <param name="index" type="int"   offset="-1"/>
           </method>
-          <method name="setupBroadnener">
-             <param name="numcro" type="int"/>
-             <param name="ktzero" type="int"/>
+          <method name="setupBroadnener">             
              <param name="moreBroadening" type="bool"/>
           </method>
 
diff --git a/sammy/src/convolution/interface/cpp/DopplerAndResolutionBroadenerInterface.cpp b/sammy/src/convolution/interface/cpp/DopplerAndResolutionBroadenerInterface.cpp
index 1262a7cfaf455ffd141df543da4d1f3879cbbced..708cf7c72bce00b93eecbf4252297ed00b985d20 100644
--- a/sammy/src/convolution/interface/cpp/DopplerAndResolutionBroadenerInterface.cpp
+++ b/sammy/src/convolution/interface/cpp/DopplerAndResolutionBroadenerInterface.cpp
@@ -14,16 +14,6 @@ void* DopplerAndResolutionBroadener_initialize(DerivativeHandler * hand,GridData
     return new DopplerAndResolutionBroadener(*hand,*list,*work);
 }
 
-int DopplerAndResolutionBroadener_getNumIso(void * DopplerAndResolutionBroadener_ptr)
-{
-    return ((DopplerAndResolutionBroadener*)DopplerAndResolutionBroadener_ptr)->getNumIso();
-}
-
-void DopplerAndResolutionBroadener_setNumIso(void * DopplerAndResolutionBroadener_ptr,int * iso)
-{
-    ((DopplerAndResolutionBroadener*)DopplerAndResolutionBroadener_ptr)->setNumIso(*iso);
-}
-
 int DopplerAndResolutionBroadener_getNumPerEnergy(void * DopplerAndResolutionBroadener_ptr)
 {
     return ((DopplerAndResolutionBroadener*)DopplerAndResolutionBroadener_ptr)->getNumPerEnergy();
@@ -144,9 +134,9 @@ void DopplerAndResolutionBroadener_setXoefWeights(void * DopplerAndResolutionBro
     ((DopplerAndResolutionBroadener*)DopplerAndResolutionBroadener_ptr)->setXoefWeights(*index);
 }
 
-void DopplerAndResolutionBroadener_setupBroadnener(void * DopplerAndResolutionBroadener_ptr,int * numcro,int * ktzero,bool * moreBroadening)
+void DopplerAndResolutionBroadener_setupBroadnener(void * DopplerAndResolutionBroadener_ptr,bool * moreBroadening)
 {
-    ((DopplerAndResolutionBroadener*)DopplerAndResolutionBroadener_ptr)->setupBroadnener(*numcro,*ktzero,*moreBroadening);
+    ((DopplerAndResolutionBroadener*)DopplerAndResolutionBroadener_ptr)->setupBroadnener(*moreBroadening);
 }
 
 void DopplerAndResolutionBroadener_updateBroadenedOffset(void * DopplerAndResolutionBroadener_ptr,int * offSet)
diff --git a/sammy/src/convolution/interface/cpp/DopplerAndResolutionBroadenerInterface.h b/sammy/src/convolution/interface/cpp/DopplerAndResolutionBroadenerInterface.h
index 5aa65f409c5c2278a84c474ac5180743e5dff8c6..e517e2cb68b1c13d066c49fc10b17ac7f9a3a917 100644
--- a/sammy/src/convolution/interface/cpp/DopplerAndResolutionBroadenerInterface.h
+++ b/sammy/src/convolution/interface/cpp/DopplerAndResolutionBroadenerInterface.h
@@ -15,8 +15,6 @@ using namespace sammy;
 extern "C" {
 #endif
 void* DopplerAndResolutionBroadener_initialize(DerivativeHandler * hand,GridDataList * list,GridDataList * work );
-int DopplerAndResolutionBroadener_getNumIso(void * DopplerAndResolutionBroadener_ptr);
-void DopplerAndResolutionBroadener_setNumIso(void * DopplerAndResolutionBroadener_ptr,int * iso);
 int DopplerAndResolutionBroadener_getNumPerEnergy(void * DopplerAndResolutionBroadener_ptr);
 void DopplerAndResolutionBroadener_setNumPerEnergy(void * DopplerAndResolutionBroadener_ptr,int * n);
 int DopplerAndResolutionBroadener_getIntegralStart(void * DopplerAndResolutionBroadener_ptr);
@@ -41,7 +39,7 @@ void DopplerAndResolutionBroadener_nullifyWorkGrid(void * DopplerAndResolutionBr
 double DopplerAndResolutionBroadener_getWorkData(void * DopplerAndResolutionBroadener_ptr,int * index,int * row,int * col);
 void DopplerAndResolutionBroadener_setWorkData(void * DopplerAndResolutionBroadener_ptr,int * index,int * row,int * col,double * val);
 void DopplerAndResolutionBroadener_setXoefWeights(void * DopplerAndResolutionBroadener_ptr,int * index);
-void DopplerAndResolutionBroadener_setupBroadnener(void * DopplerAndResolutionBroadener_ptr,int * numcro,int * ktzero,bool * moreBroadening);
+void DopplerAndResolutionBroadener_setupBroadnener(void * DopplerAndResolutionBroadener_ptr,bool * moreBroadening);
 void DopplerAndResolutionBroadener_updateBroadenedOffset(void * DopplerAndResolutionBroadener_ptr,int * offSet);
 void DopplerAndResolutionBroadener_setLength(void * DopplerAndResolutionBroadener_ptr,int * l);
 int DopplerAndResolutionBroadener_getLength(void * DopplerAndResolutionBroadener_ptr);
diff --git a/sammy/src/convolution/interface/fortran/DopplerAndResolutionBroadener_I.f90 b/sammy/src/convolution/interface/fortran/DopplerAndResolutionBroadener_I.f90
index 0cfe834e4d94dc5eb090824d6c1586b523a76e5a..73cd720e76efeb07f848493d4634467a7aa091c4 100644
--- a/sammy/src/convolution/interface/fortran/DopplerAndResolutionBroadener_I.f90
+++ b/sammy/src/convolution/interface/fortran/DopplerAndResolutionBroadener_I.f90
@@ -17,17 +17,6 @@ type(C_PTR) function f_DopplerAndResolutionBroadener_initialize( hand,list,work
     type(C_PTR), value :: list;
     type(C_PTR), value :: work;
 end function
-integer(C_INT) function f_DopplerAndResolutionBroadener_getNumIso(DopplerAndResolutionBroadener_ptr ) BIND(C,name="DopplerAndResolutionBroadener_getNumIso")
-    use,intrinsic :: ISO_C_BINDING
-    implicit none
-    type(C_PTR), value :: DopplerAndResolutionBroadener_ptr;
-end function
-subroutine f_DopplerAndResolutionBroadener_setNumIso(DopplerAndResolutionBroadener_ptr, iso ) BIND(C,name="DopplerAndResolutionBroadener_setNumIso")
-    use,intrinsic :: ISO_C_BINDING
-    implicit none
-    type(C_PTR), value :: DopplerAndResolutionBroadener_ptr;
-    integer(C_INT) :: iso;
-end subroutine
 integer(C_INT) function f_DopplerAndResolutionBroadener_getNumPerEnergy(DopplerAndResolutionBroadener_ptr ) BIND(C,name="DopplerAndResolutionBroadener_getNumPerEnergy")
     use,intrinsic :: ISO_C_BINDING
     implicit none
@@ -175,12 +164,10 @@ subroutine f_DopplerAndResolutionBroadener_setXoefWeights(DopplerAndResolutionBr
     type(C_PTR), value :: DopplerAndResolutionBroadener_ptr;
     integer(C_INT) :: index;
 end subroutine
-subroutine f_DopplerAndResolutionBroadener_setupBroadnener(DopplerAndResolutionBroadener_ptr, numcro,ktzero,moreBroadening ) BIND(C,name="DopplerAndResolutionBroadener_setupBroadnener")
+subroutine f_DopplerAndResolutionBroadener_setupBroadnener(DopplerAndResolutionBroadener_ptr, moreBroadening ) BIND(C,name="DopplerAndResolutionBroadener_setupBroadnener")
     use,intrinsic :: ISO_C_BINDING
     implicit none
-    type(C_PTR), value :: DopplerAndResolutionBroadener_ptr;
-    integer(C_INT) :: numcro;
-    integer(C_INT) :: ktzero;
+    type(C_PTR), value :: DopplerAndResolutionBroadener_ptr;   
     logical(C_BOOL) :: moreBroadening;
 end subroutine
 subroutine f_DopplerAndResolutionBroadener_updateBroadenedOffset(DopplerAndResolutionBroadener_ptr, offSet ) BIND(C,name="DopplerAndResolutionBroadener_updateBroadenedOffset")
diff --git a/sammy/src/convolution/interface/fortran/DopplerAndResolutionBroadener_M.f90 b/sammy/src/convolution/interface/fortran/DopplerAndResolutionBroadener_M.f90
index c49b5640f6e8d49b40e46caad109fee15e9f373f..7d25af375ca16a8cd27e4eb5dd09025e9fab066b 100644
--- a/sammy/src/convolution/interface/fortran/DopplerAndResolutionBroadener_M.f90
+++ b/sammy/src/convolution/interface/fortran/DopplerAndResolutionBroadener_M.f90
@@ -14,9 +14,7 @@ use GridData_M
 type DopplerAndResolutionBroadener
     type(C_PTR) :: instance_ptr=C_NULL_PTR
     contains
-    procedure, pass(this) :: initialize => DopplerAndResolutionBroadener_initialize
-    procedure, pass(this) :: getNumIso => DopplerAndResolutionBroadener_getNumIso
-    procedure, pass(this) :: setNumIso => DopplerAndResolutionBroadener_setNumIso
+    procedure, pass(this) :: initialize => DopplerAndResolutionBroadener_initialize    
     procedure, pass(this) :: getNumPerEnergy => DopplerAndResolutionBroadener_getNumPerEnergy
     procedure, pass(this) :: setNumPerEnergy => DopplerAndResolutionBroadener_setNumPerEnergy
     procedure, pass(this) :: getIntegralStart => DopplerAndResolutionBroadener_getIntegralStart
@@ -57,18 +55,6 @@ subroutine DopplerAndResolutionBroadener_initialize(this, hand, list, work)
     class(GridDataList)::work
     this%instance_ptr = f_DopplerAndResolutionBroadener_initialize( hand%instance_ptr,list%instance_ptr,work%instance_ptr)
 end subroutine
-function DopplerAndResolutionBroadener_getNumIso(this) result(result2Return)
-    implicit none
-    class(DopplerAndResolutionBroadener)::this
-    integer(C_INT):: result2Return
-    result2Return=f_DopplerAndResolutionBroadener_getNumIso(this%instance_ptr)
-end function
-subroutine DopplerAndResolutionBroadener_setNumIso(this, iso)
-    implicit none
-    class(DopplerAndResolutionBroadener)::this
-    integer(C_INT)::iso
-    call f_DopplerAndResolutionBroadener_setNumIso(this%instance_ptr, iso)
-end subroutine
 function DopplerAndResolutionBroadener_getNumPerEnergy(this) result(result2Return)
     implicit none
     class(DopplerAndResolutionBroadener)::this
@@ -233,13 +219,11 @@ subroutine DopplerAndResolutionBroadener_setXoefWeights(this, index)
     integer(C_INT)::index
     call f_DopplerAndResolutionBroadener_setXoefWeights(this%instance_ptr, index-1)
 end subroutine
-subroutine DopplerAndResolutionBroadener_setupBroadnener(this, numcro, ktzero, moreBroadening)
+subroutine DopplerAndResolutionBroadener_setupBroadnener(this, moreBroadening)
     implicit none
     class(DopplerAndResolutionBroadener)::this
-    integer(C_INT)::numcro
-    integer(C_INT)::ktzero
     logical(C_BOOL)::moreBroadening
-    call f_DopplerAndResolutionBroadener_setupBroadnener(this%instance_ptr, numcro,ktzero,moreBroadening)
+    call f_DopplerAndResolutionBroadener_setupBroadnener(this%instance_ptr, moreBroadening)
 end subroutine
 subroutine DopplerAndResolutionBroadener_updateBroadenedOffset(this, offSet)
     implicit none
diff --git a/sammy/src/cro/mcro5.f90 b/sammy/src/cro/mcro5.f90
index 3ed9e6ff64e1ac9bf40348705ec5e7657a87346d..10b4edea822c427fe819bc699a3ca20cd732eb36 100644
--- a/sammy/src/cro/mcro5.f90
+++ b/sammy/src/cro/mcro5.f90
@@ -42,6 +42,27 @@ contains
    call summer%normalize(numUsedPar)
    call summer%destroy
    end subroutine normAndBack
+
+   subroutine normAfterAng(moreBroadening, needIsos, broadener)
+   use DerivativeHandler_M
+   use DopplerAndResolutionBroadener_M
+   use SumIsoAndConvertToTrans_M
+   use array_sizes_common_m, only : calcData, calcDataSelf
+   use ifwrit_m, only : Kcros
+   use fixedi_m, only : numUsedPar
+   use, intrinsic :: ISO_C_BINDING
+   implicit none
+   logical(C_BOOL)::moreBroadening, needIsos
+   class(DopplerAndResolutionBroadener)::broadener
+
+   type(SumIsoAndConvertToTrans)::summer
+
+   call summer%initialize(broadener, calcDataSelf, Kcros.eq.8)
+   summer%Need_Isotopes= needIsos
+   summer%Another_Process_Will_Happen=moreBroadening
+   call summer%angPostProcessing(numUsedPar)
+   call summer%destroy
+   end subroutine normAfterAng
 end module sumAndConvertAfterBroadening_m
 
 !
@@ -151,7 +172,8 @@ end module sumAndConvertAfterBroadening_m
       use, intrinsic :: ISO_C_BINDING
       IMPLICIT none      
       logical::debugOut
-      logical(C_BOOL)::moreBroadening
+      logical(C_BOOL)::moreBroadening, needIsos
+      type(FreeGasDopplerBroadening)::broadener
 
       !TODO: break up this function that is now too long
       debugOut = debug.or.Kplotu.ne.0
@@ -188,6 +210,16 @@ end module sumAndConvertAfterBroadening_m
           ! if we want intermediate output, do so
           if (debugOut)  call Samint_0(debugOut, Yssmsc)
           call Samang_0
+
+          moreBroadening = Ydoppr.or.Yresol.or.Yssmsc
+          needIsos = Ydoppr.or.Yssmsc
+          if (.not.workArrayInit) then
+              call workArray%initialize()
+              workArrayInit = .true.
+          end if
+          call broadener%initialize(calcData, expData, workArray)
+          call normAfterAng(moreBroadening, needIsos, broadener)
+          call broadener%destroy()
       end if
 
       ! any doppler broadening
@@ -231,7 +263,7 @@ end module sumAndConvertAfterBroadening_m
          else
              STOP 'Invalid doppler broadening option in  cro/mcro5.f'
          end if
-         call dopplerOption%broadener%setupBroadnener(numcro, ktzero, moreBroadening)
+         call dopplerOption%broadener%setupBroadnener(moreBroadening)
 
          IF (Kkkdop.EQ.0) then            
             call Samdbd_0            
@@ -372,7 +404,7 @@ end module sumAndConvertAfterBroadening_m
 
             ! switch handler data grid
             call Set_Kws
-            call resolutionOption%resBroad1%setupBroadnener(numcro, ktzero, moreBroadening)
+            call resolutionOption%resBroad1%setupBroadnener(moreBroadening)
 
             if (Nudwhi.ne.0) then
                call samudr_0
@@ -393,7 +425,7 @@ end module sumAndConvertAfterBroadening_m
 
             ! switch handler data grid
             call Set_Kws
-            call resolutionOption%resBroad1%setupBroadnener(numcro, ktzero, moreBroadening)
+            call resolutionOption%resBroad1%setupBroadnener(moreBroadening)
 
             if (Kkkdex.ne.0) then
                 call samdex_0
@@ -410,7 +442,7 @@ end module sumAndConvertAfterBroadening_m
 
              ! switch handler data grid
              call Set_Kws
-             call resolutionOption%resBroad2%setupBroadnener(numcro, ktzero, moreBroadening)
+             call resolutionOption%resBroad2%setupBroadnener(moreBroadening)
 
 
             if (Nudwhi.ne.0) then
diff --git a/sammy/src/dat/mdat0.f90 b/sammy/src/dat/mdat0.f90
index 31bf3d2c9c63bea00c184d247fb3881b0b74f3c6..40a1df84e0bbeca30485cd8a4da9b618860bb3c8 100644
--- a/sammy/src/dat/mdat0.f90
+++ b/sammy/src/dat/mdat0.f90
@@ -5,7 +5,7 @@ contains
   !
   SUBROUTINE Samdat_0(secondPass)
     !
-    use fixedi_m, only : Krefit, Medrpi, Mmmrpi, Ngtvv, Nres, Nrext, Ntotc, Nudtim, Numcro, Numdtp, Numorr
+    use fixedi_m, only : Krefit, Medrpi, Mmmrpi, Ngtvv, Nres, Nrext, Ntotc, Nudtim, Numdtp, Numorr
     use ifwrit_m, only : Iptdop, Iptwid, Kartgd, Kdata, Kdatv, Kdebug, Kendbd, Keveng, Kidcxx, Kkkdop, &
          Kphase, Kresol, Ktzero, Ndat, Ndatb, kkclqx
     use exploc_common_m
@@ -52,13 +52,19 @@ contains
     integer::ipos, j, Kdatbm, Krext, Maxd, Maxe, Mind
     integer::minDataIndex, Mine, Mnp, Mnr, N, Ndatbm
     integer,save::Ndatt
-    integer::Nmax, Nn, Nnndat, Np, Nr, Nwd
+    integer::Nmax, Nn, Nnndat, Np, Nr, Nwd, numPerEner
     real(kind=8),save::oldEmin,oldEmax
     !
     Segmen(1) = 'D'
     Segmen(2) = 'A'
     Segmen(3) = 'T'
     Nowwww = 0
+    if (expData%getLength().eq.0) then
+       numPerEner = 1
+    else
+       call expData%getGrid(grid, 1)
+       numPerEner = grid%getNumPerEnergy()
+    end if
     !
     CALL Initil
     hasAuxGrid = .true.
@@ -116,7 +122,7 @@ contains
        !
        !
        ! *** GUESSTIMATE ARRAY Sizes
-       CALL Estdat (Ndatt, Ndatbm, Nnndat, Nr, Np)
+       CALL Estdat (Ndatt, Ndatbm, Nnndat, Nr, Np, numPerEner)
        !
        !
        ! ### one ###
@@ -128,7 +134,7 @@ contains
        ! ### two ###
        ! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - <
        call allocate_real_data(A_Id, Ndatb)
-       call allocate_real_data(A_Idata, Ndat*Numcro)
+       call allocate_real_data(A_Idata, Ndat*numPerEner)
        call allocate_real_data(A_Ivarda, Ndatt)
        call allocate_integer_data(I_Iiflag, Ndat)
        Igtild = 1
@@ -155,12 +161,12 @@ contains
        indat = 1
        minDataIndex = 2
        if(Ktzero.NE.0) minDataIndex = minDataIndex + 1
-       if(Numcro.gt.1) minDataIndex = minDataIndex + 1
-       call grid%setDataIndex(minDataIndex)
-       maxRow = Ndat * Numcro
+       if(numPerEner.gt.1) minDataIndex = minDataIndex + 1
+       call grid%setDataIndex(minDataIndex)       
+       maxRow = Ndat * numPerEner
        maxCol = 2
-       if (Numcro.gt.1) maxCol = 3
-       if (Ktzero.NE.0)  maxCol = maxCol + 1
+       if (numPerEner.gt.1) maxCol = 3
+       if (Ktzero.NE.0)  maxCol = maxCol + 1       
        call grid%reserve(maxRow, maxCol)
 
        do i = 1, Ndat
@@ -171,8 +177,8 @@ contains
           end if
 
           ! if not angle data
-          if ( Numcro.gt.1) then
-             do j = 1, Numcro
+          if ( numPerEner.gt.1) then
+             do j = 1, numPerEner
                 call grid%addData(indat, 1, ee)
                 call grid%addData(indat, 2, A_Iangle(j))
                 if (Ktzero.NE.0) then
@@ -210,7 +216,7 @@ contains
           end do
        end if
 
-       call read_implict_data_cov(expData, numcro)
+       call read_implict_data_cov(expData, numPerEner)
        if (.not.(Kartgd.EQ.1 .OR. Kkclqx.NE.0)) then  ! only if not an articial grid - in which case read data is only called once
           ! articial grid is not included here because
           ! we mulitply and and divide A_Ienerg by a factor before and after saving to ODF file
@@ -238,7 +244,7 @@ contains
             I_Inud_E , I_Inud_T , A_Iude , A_Iudr , A_Iudt, A_J1, A_J2,  Krext, I_Iflrpi)
 
        ! preserve output
-       CALL Estdat (Ndatt, Ndatbm, Nnndat, Nr, Np)
+       CALL Estdat (Ndatt, Ndatbm, Nnndat, Nr, Np, numPerEner)
        WRITE (21,99998) Emin, Emax, Ndat
   99998 FORMAT (/' Energy range of data is from ', 1PE11.5, ' to ',  &
            E11.5, ' eV.', /,                                         &
@@ -255,7 +261,7 @@ contains
        ! ***    Write data onto ascii files
        IF (Kdata.NE.0) THEN
           CALL Outdat (A_Iptild , Ndat)
-          call reallocate_real_data(A_Id, Ndat*Numcro)
+          call reallocate_real_data(A_Id, Ndat*numPerEner)
           CALL Outv (A_Id , I_Iiflag ) ! temporary arrays used in the subroutine
        END IF
     END IF
@@ -408,18 +414,19 @@ contains
           else
              call auxGrid%initialize()
              call expData%addGrid(auxGrid)
+             call auxGrid%setNumPerEnergy(numPerEner)
           end if
-          maxRow = Ndatb * Numcro
+          maxRow = Ndatb * numPerEner
           maxCol  = 1
           call auxGrid%reserve(maxRow, maxCol)
           ipos = 1
           do i = 1, Ndatb
-             do ii = 1, numcro
+             do ii = 1, numPerEner
                 call auxGrid%addData(ipos, 1, A_Ie(i))
                 ipos =  ipos + 1
              end do
           end do
-          call auxGrid%setDataIndex(0)
+          call auxGrid%setDataIndex(2)
 
        end if
        !
@@ -451,19 +458,19 @@ contains
 
   subroutine fill_initial_aux(ener, nn, Emind, Emaxd)
     use EndfData_common_m, only : expData, auxEndData
-    use fixedi_m, only : numcro
     use GridData_M
     implicit none
     real(kind=8)::ener(:)
     real(kind=8)::Emind, Emaxd, val
-    integer::nn
+    integer::nn, numPerEner
 
     integer::ii, i, ndat
     real(kind=8)::ee
     type(GridData)::grid
 
     call expData%getGrid(grid, 1)
-    ndat = grid%getLength()/numcro
+    numPerEner = grid%getNumPerEnergy()
+    ndat = grid%getLength()/numPerEner
 
     nn = 0
 
@@ -489,7 +496,7 @@ contains
 
     ! add experimental data
     do i = 1, ndat
-       ee = grid%getData((i-1)*numcro + 1, 1)
+       ee = grid%getData((i-1)*numPerEner + 1, 1)
        nn = nn + 1
        ener(nn) = ee
     end do
@@ -509,14 +516,14 @@ contains
   !
   ! ______________________________________________________________
   !
-  SUBROUTINE Estdat (Ndatt, Ndatbm, Nnndat, Nr, Np)
+  SUBROUTINE Estdat (Ndatt, Ndatbm, Nnndat, Nr, Np, numPerEner)
     !
     use oops_common_m, only : Msize
-    use fixedi_m, only : Krefit, Nres, Ntotc, numcro, Numdtp
+    use fixedi_m, only : Krefit, Nres, Ntotc, Numdtp
     use ifwrit_m, only : Iptdop, Iptwid, Jjjdop, Kartgd, Kdatv, Kkkdop, Ktzero, Ndat, Ndatb
     use fixedr_m
     IMPLICIT none
-    integer::Ndatt, Ndatbm, Nnndat, Nr, Np
+    integer::Ndatt, Ndatbm, Nnndat, Nr, Np, numPerEner
     integer::I,II, K, K1, K1x, K2, K3, K4, K5, K6
     integer::Mnp, Mnr, N, N1, N2, Ne, Nnn, Idimen
     external Idimen
@@ -527,7 +534,7 @@ contains
     IF (Ktzero.NE.0) K1 = K1 + Ndat
     !
     ! ### two ###
-    Nnndat = Ndat*Numcro
+    Nnndat = Ndat*numPerEner
     IF (Kdatv.NE.0) THEN
        Ndatt = (Nnndat*(Nnndat+1))/2
     ELSE
@@ -535,7 +542,7 @@ contains
     END IF
     N = Numdtp*Ndat
     IF (N.EQ.0) N = 1
-    K2 = Ndatb + Ndat*Numcro + Ndatt + Ndat + N
+    K2 = Ndatb + Ndat*numPerEner + Ndatt + Ndat + N
     !
     ! ### three ###
     K3 = 8*Ntotc
diff --git a/sammy/src/dat/mdat4.f90 b/sammy/src/dat/mdat4.f90
index 9f98163741dd25b8cc456997e9a17e4314ff7017..21a7b237732d34f93fde002ab691a6a3665b4057 100644
--- a/sammy/src/dat/mdat4.f90
+++ b/sammy/src/dat/mdat4.f90
@@ -174,8 +174,7 @@ contains
       ELSE
 !
 ! ***    Here there's really no broadening
-         call grid%initialize()
-         call grid%setParameters(numcro, ktzero)
+         call grid%initialize()         
          call grid%setToExpGrid(expData)         
          numEl = grid%getNumEnergies(expData)
 
diff --git a/sammy/src/dat/mdat9.f90 b/sammy/src/dat/mdat9.f90
index cc41467e6fd464443743f0cfc3af730d24b5b86a..b25c0231a981dcd99f38195a7935c580b6343313 100755
--- a/sammy/src/dat/mdat9.f90
+++ b/sammy/src/dat/mdat9.f90
@@ -115,16 +115,13 @@ module mdat9_m
 ! *** Purpose -- Locate position Nwhere, such that
 ! ***               grid%getEnergy(Nwhere, expData) =< E < grid%getEnergy(Nwhere+1, expData),
 ! ***            for Nn < 2**K points in En
-      use EndfData_common_m
-      use fixedi_m, only : numcro
-      use ifwrit_m, only : ktzero
+      use EndfData_common_m      
       use SammyGridAccess_M
       DOUBLE PRECISION E
       type(SammyGridAccess)::grid
 
       N = istart
-      call grid%initialize()
-      call grid%setParameters(numcro, ktzero)
+      call grid%initialize()      
       call grid%setToAuxGrid(expData)
 
       IF (E.GT.grid%getEnergy(istart, expData)) THEN
diff --git a/sammy/src/dbd/mdbd1.f b/sammy/src/dbd/mdbd1.f
index 0538f73101075910ef503f47c84872abf11bdc2c..80271d8cb378d764f85b6fabdeff627fc1d3ce07 100644
--- a/sammy/src/dbd/mdbd1.f
+++ b/sammy/src/dbd/mdbd1.f
@@ -7,8 +7,8 @@ C
 C *** PURPOSE -- FORM DOPPLER-BROADENED CROSS SECTION and derivatives
 C
       use fixedi_m, only : Ktruet,
-     *                     Ndats, numcro, numUsedPar
-      use ifwrit_m, only : ktzero, Kcros, Kdebug, Kfinit, Kvthck,
+     *                     Ndats, numUsedPar
+      use ifwrit_m, only : Kcros, Kdebug, Kfinit, Kvthck,
      *                     Ndat, Nolowb, Nonu, Kvtemp
       use fixedr_m, only : Elowbr, Emaxs, Emins, Thick
       use broad_common_m, only : Brdlim, Dopple
@@ -40,12 +40,10 @@ C
 C *** Brdlim is now set in segment DAT
       DATA Two /2.0d0/
 
-      call grid%initialize()
-      call grid%setParameters(numcro, ktzero)
+      call grid%initialize()      
       call grid%setToExpGrid(expData)
       numEl = grid%getNumEnergies(expData)
-      call auxGrid%initialize()
-      call auxGrid%setParameters(numcro, ktzero)
+      call auxGrid%initialize()      
       call auxGrid%setToAuxGrid(expData)
       call setAuxGridOffset(1) ! reset the auxillary grid starting point
 
diff --git a/sammy/src/dbd/mdbd2.f b/sammy/src/dbd/mdbd2.f
index f37bd8cdaa65427d2fb714d2c996ad6f5b42fc45..4b5b284145b96f9d92840ebeea80eb463e5ae958 100644
--- a/sammy/src/dbd/mdbd2.f
+++ b/sammy/src/dbd/mdbd2.f
@@ -6,9 +6,7 @@ C
 C
 C *** PURPOSE -- GENERATE COEFFICIENTS FOR USE IN BROADENING
 C
-      use ifwrit_m, only : ktzero
       use EndfData_common_m, only : expData
-      use fixedi_m, only : numcro
       use SammyGridAccess_M
       use brdd_common_m, only : Weights
       use AllocateFunctions_m
@@ -20,8 +18,7 @@ C
       real(kind=8)::e1, e2
       integer::I, K, Nn, Nnp2
 
-      call grid%initialize()
-      call grid%setParameters(numcro, ktzero)
+      call grid%initialize()      
       call grid%setToAuxGrid(expData)
 
       Nn = Kdatb - 3
diff --git a/sammy/src/dbd/mdbd3.f b/sammy/src/dbd/mdbd3.f
index 827413d7ff680d20d50e4a19e3f255f3314b6cd2..39c8660ad1192b3bd82315a621248168a91b770b 100644
--- a/sammy/src/dbd/mdbd3.f
+++ b/sammy/src/dbd/mdbd3.f
@@ -7,9 +7,7 @@ C
 C *** Purpose -- FIND Kc AND Iup, ALSO Ipnts
 C
       use brdd_common_m, only : Ipnts, Iup, Kc
-      use EndfData_common_m, only : expData
-      use fixedi_m, only : numcro
-      use ifwrit_m, only : ktzero
+      use EndfData_common_m, only : expData     
       use SammyGridAccess_M
       IMPLICIT none
       type(SammyGridAccess)::grid
@@ -18,7 +16,6 @@ C
       integer::Ilow
 
       call grid%initialize()
-      call grid%setParameters(numcro, ktzero)
       call grid%setToAuxGrid(expData)
 
       Ilow = Kc - 1
@@ -41,9 +38,7 @@ C
 C --------------------------------------------------------------
 C
       SUBROUTINE Which_Dbd (EM, Ipnts, Jwhich, Kc)
-      use EndfData_common_m, only : expData
-      use fixedi_m, only : numcro
-      use ifwrit_m, only : ktzero
+      use EndfData_common_m, only : expData      
       use SammyGridAccess_M
       IMPLICIT None
       type(SammyGridAccess)::grid
@@ -52,8 +47,7 @@ C
       real(kind=8)::A, Ddd, e1, e2
       integer::I
 
-      call grid%initialize()
-      call grid%setParameters(numcro, ktzero)
+      call grid%initialize()      
       call grid%setToAuxGrid(expData)
 C
       Jwhich = 0
diff --git a/sammy/src/dex/mdex1.f b/sammy/src/dex/mdex1.f
index 02a3827cbf2f6dccc2333c4220c9a3ae392eaeec..c5a35e349965f33043ed219a83522737c59994d1 100644
--- a/sammy/src/dex/mdex1.f
+++ b/sammy/src/dex/mdex1.f
@@ -10,8 +10,8 @@ C ***            function in energy between E and E-Dddeee)
 C ***            [or between E+Dddeee/2 & E-Dddeee/2, if Ndexxx=1]
 C
       use fixedi_m, only : K2reso, ndexxx, numUsedPar,
-     *                     numcro, Numnbk, Numorr, Numrpi, Numbgf
-      use ifwrit_m, only : Kdebug, ktzero, Ndat
+     *                     Numnbk, Numorr, Numrpi, Numbgf
+      use ifwrit_m, only : Kdebug, Ndat
       use fixedr_m, only : Dddeee
       use brdd_common_m, only : Ipk, Iup
       use mxct27_m
@@ -40,11 +40,9 @@ C
       CALL Read_Cross_Sections (nauxMax)
 
       call grid%initialize()
-      call grid%setParameters(numcro, ktzero)
-      call grid%setToExpGrid(expData)
+            call grid%setToExpGrid(expData)
       numEl = grid%getNumEnergies(expData)
-      call auxGrid%initialize()
-      call auxGrid%setParameters(numcro, ktzero)
+      call auxGrid%initialize()      
       call auxGrid%setToAuxGrid(expData)
 C
       IF (K2reso.EQ.1 .AND. (Numorr.GT.0 .OR. Numrpi.GT.0) ) THEN
diff --git a/sammy/src/dop/mdop1.f90 b/sammy/src/dop/mdop1.f90
index 783805da256743e47409fca4384e3bdb4960d31f..959b6e27b9a95299fa07f263a0edb7dcb041b0e9 100644
--- a/sammy/src/dop/mdop1.f90
+++ b/sammy/src/dop/mdop1.f90
@@ -41,8 +41,7 @@ module dop1_m
       Need_Isotopes = Yssmsc
       Another_Process_will_Happen = Yresol.OR.Yssmsc.or.yaverg
 !
-      call grid%initialize()
-      call grid%setParameters(numcro, ktzero)
+      call grid%initialize()      
       call grid%setToAuxGrid(expData)
       call setAuxGridOffset(1) ! reset auxiallary grid offset
       call derivs%nullify()
@@ -146,16 +145,17 @@ module dop1_m
       IMPLICIT DOUBLE PRECISION (a-h,o-z)
       type(GridData)::grid
       real(kind=8)::ee, val
-      integer::j1,j2,ii
+      integer::j1,j2,ii, nLength
       type(DerivativeHandler)::derivs, derivsSelf
 !
       call expData%getGrid(grid, 2)  ! we ensured that it exists
 
 
       ll = grid%getLength()
-      if (numcro.gt.1) ll = ll/numcro
+      nLength = grid%getNumPerEnergy()
+      if (nLength.gt.1) ll = ll/nLength
       DO Jj=1,ll
-         ee = grid%getData((Jj-1)*numcro+1, 1)
+         ee = grid%getData((Jj-1)*nLength+1, 1)
          if (ee.ge.0.0d0) exit
          DO Iso=1,derivs%getUsedIsotopes()
             ! set negative cross section to positive
diff --git a/sammy/src/fgm/mfgm0.f90 b/sammy/src/fgm/mfgm0.f90
index 58e1c0a1bc1a93cfe9f6814d8bdc0f187c5f9f7e..9ffcf1738ef833466aff12487bb8cc8e7ad86990 100644
--- a/sammy/src/fgm/mfgm0.f90
+++ b/sammy/src/fgm/mfgm0.f90
@@ -7,9 +7,9 @@
 !
       use fixedi_m, only : Jwwwww, K2reso,  Kkkdex,                &
                            Kkkrsl, Ndatd, Nudwhi,                  &
-                           Numorr, Numrpi, numcro, Lllmax, numUsedPar
+                           Numorr, Numrpi, Lllmax, numUsedPar
       use ifwrit_m, only : Kaverg, Kcros, Kplotu, Ksolve, Kvers7,  &
-                           Ndatb, Ntgrlq, ktzero, Ksitmp, Ksindi
+                           Ndatb, Ntgrlq, Ksitmp, Ksindi
       use fixedr_m, only : temp
       use exploc_common_m
       use array_sizes_common_m
diff --git a/sammy/src/fgm/mfgm1.f90 b/sammy/src/fgm/mfgm1.f90
index 70b0d3e45b09303c910d42abda394279e9f0681d..dea10f22f3810aa93591ce22b673a78031fa4386 100644
--- a/sammy/src/fgm/mfgm1.f90
+++ b/sammy/src/fgm/mfgm1.f90
@@ -8,9 +8,8 @@ contains
 !
 ! *** PURPOSE -- FORM DOPPLER-BROADENED CROSS SECTION AND DERIVATIVES
 !
-      use fixedi_m, only : Ktruet, Lllmax, numUsedPar,             &
-                           numcro
-      use ifwrit_m, only : Kcros, Kdebug, Ksindi, ktzero, Kvtemp,  &
+      use fixedi_m, only : Ktruet, Lllmax, numUsedPar
+      use ifwrit_m, only : Kcros, Kdebug, Ksindi, Kvtemp,  &
                            Kvthck, ndat, Nolowb, ndat, Nonu,       &
                            Kfinit, Ksitmp
       use fixedr_m, only : Elowbr, Emax, Emin, Emins, Sitemp, Temp, Thick, Emaxs
diff --git a/sammy/src/grp/mgrp2.f b/sammy/src/grp/mgrp2.f
index 57e62c80222bcab050b83fc1f04f62b0dae6ca39..b938effe6116a713960b12057023120b16d44fac 100755
--- a/sammy/src/grp/mgrp2.f
+++ b/sammy/src/grp/mgrp2.f
@@ -8,15 +8,12 @@ C *** Purpose -- Find highest Kmn such that Energy(Kmn).LE.Emn
 C ***                 lowest  Kmx such that Energy(Kmx).GE.Emx
 C     on auxillary grid
 C      
-      use EndfData_common_m
-      use fixedi_m, only : numcro
-      use ifwrit_m, only : ktzero
+      use EndfData_common_m      
       use SammyGridAccess_M
       IMPLICIT DOUBLE PRECISION (a-h,o-z)
       type(SammyGridAccess)::grid
 C
       call grid%initialize()
-      call grid%setParameters(numcro, ktzero)
       call grid%setToAuxGrid(expData)
 
       Ilow = Kc - 1
@@ -85,7 +82,6 @@ C
       DIMENSION  Ebonda(*), Bondar(*), Fintgr(2,Ngbxxx,*)
 C      
       call grid%initialize()
-      call grid%setParameters(numcro, ktzero)
       call grid%setToAuxGrid(expData)
 
       Kbonda = 0
diff --git a/sammy/src/grp/mgrp3.f b/sammy/src/grp/mgrp3.f
index 61871a93938710d1105d6926dcada4e47eada921..018b34d8efe53e28b6a901bde7d1519d1d239fe4 100644
--- a/sammy/src/grp/mgrp3.f
+++ b/sammy/src/grp/mgrp3.f
@@ -45,7 +45,6 @@ C ***    are within energy range specified.  If not, testee
 C ***    issues warning, and redefines limits (also redefines
 C ***    Ndatq, if needed).
       call grid%initialize()
-      call grid%setParameters(numcro, ktzero)
       call grid%setToAuxGrid(expData)
       elow  = grid%getEnergy(1, expData)
       ehigh = grid%getEnergy(Kdatb, expData)
diff --git a/sammy/src/grp/mgrp4.f b/sammy/src/grp/mgrp4.f
index da5a56c1ed2b9f99c673afdf7d074c55e8be71c5..940912cd63019d0a03288907c03ee7a44f7bfaeb 100755
--- a/sammy/src/grp/mgrp4.f
+++ b/sammy/src/grp/mgrp4.f
@@ -11,16 +11,13 @@ C *** Note    -- Integral is from Emn to Emx, where
 C ***              Energb(Jlow-1)  < Emn =< Energb(Jlow ) and
 C ***              Energb(Jup   ) =< Emx  < Energb(Jup+1)
 C
-      use EndfData_common_m
-      use fixedi_m, only : numcro
-      use ifwrit_m, only : ktzero
+      use EndfData_common_m      
       use SammyGridAccess_M
       IMPLICIT DOUBLE PRECISION (a-h,o-z)
       type(SammyGridAccess)::grid
       DIMENSION Wts(*), Weight(*)
 C
-      call grid%initialize()
-      call grid%setParameters(numcro, ktzero)
+      call grid%initialize()      
       call grid%setToAuxGrid(expData)
       CALL Zero_Array (Wts, Kdatb)
       J = Kmx - Kmn + 1
diff --git a/sammy/src/inp/minp01.f b/sammy/src/inp/minp01.f
index 7a41d383518847e0da4b5254e2a386b4ea877d05..f45e6e7811bea615e53bfd2b4fa06004ec1bf116 100644
--- a/sammy/src/inp/minp01.f
+++ b/sammy/src/inp/minp01.f
@@ -272,11 +272,13 @@ C
       use ifwrit_m
       use exploc_common_m
       use broad_common_m
-      use  EndfData_common_m
+      use EndfData_common_m
       use Qiso_m
       use par1_m
+      use GridData_M
       IMPLICIT DOUBLE PRECISION (a-h,o-z)
       DIMENSION Nvp(15), Nfp(15)
+      type(GridData)::grid
 
       call resParData%cleanIsotopes()
       
@@ -300,14 +302,21 @@ C
 C *** three
       Ncrsss = Ntotc + 1
       N = (Ncrsss+1)/2
-      call make_I_Ifcros(Ncrsss)
+      call make_I_Ifcros(Ncrsss)      
+      if (expData%getLength().eq.0) then
+          call grid%initialize()
+          call expData%addGrid(grid)
+          if (Nangle.gt.0) then
+             call grid%setNumPerEnergy(Nangle)
+          end if
+          ! one point per energy is the default
+          
+          numcro = grid%getNumPerEnergy()
+      end if
       IF (Nangle.GT.0) THEN
-         N = Nangle
-         Numcro = N
+         N = Nangle         
          call make_A_Iangle(N)
          call make_A_Idangl(N)
-      ELSE
-         Numcro = 1
       END IF
 C
 C *** four
diff --git a/sammy/src/int/mint0a.f b/sammy/src/int/mint0a.f
index e49d64d7955eea657eebbe759187e94979a001e7..e75a69e88aa13c90780722a4d33f9e5e3aa21561 100644
--- a/sammy/src/int/mint0a.f
+++ b/sammy/src/int/mint0a.f
@@ -34,7 +34,6 @@ C - - - - - - - - - - - - - >
       ! get SAMMY Aux grid. Reuse experimental grid if it doesn't exi
 
       call gridAccess%initialize()
-      call gridAccess%setParameters(numcro, ktzero)
       call gridAccess%setToAuxGrid(expData)
 C
 C *** Read the cross sections etc
@@ -153,8 +152,7 @@ C
 C
       Nnn= Ndat
       N  = Ndat
-      call gridAccess%initialize()
-      call gridAccess%setParameters(numcro, ktzero)
+      call gridAccess%initialize()      
       call gridAccess%setToExpGrid(expData)
 
       IF (Ktheor.NE.0) CALL Outthr (7, gridAccess,
diff --git a/sammy/src/int/mint1.f b/sammy/src/int/mint1.f
index 1ec72cbf68190bd31a71faa0094327866be208bf..46ba0fb6e73eb68f4fa183bb455a80dbc4e186b1 100644
--- a/sammy/src/int/mint1.f
+++ b/sammy/src/int/mint1.f
@@ -26,11 +26,9 @@ C
 C
       Kkknew = Jgbmax
 
-      call auxGrid%initialize()
-      call auxGrid%setParameters(numcro, ktzero)
+      call auxGrid%initialize()      
       call auxGrid%setToAuxGrid(expData)
-      call grid%initialize()
-      call grid%setParameters(numcro, ktzero)
+      call grid%initialize()      
       call grid%setToExpGrid(expData)
 C
       IF (Kkknew.LT.1) THEN
diff --git a/sammy/src/int/mint2.f90 b/sammy/src/int/mint2.f90
index fc4ec8f58630e77dbdb053ff7555c55ea6d87fda..323ef8fc236204cb7ca4887764d7c49a2f04afab 100644
--- a/sammy/src/int/mint2.f90
+++ b/sammy/src/int/mint2.f90
@@ -430,9 +430,7 @@ module mint2_m
 ! --------------------------------------------------------------
 !
       SUBROUTINE Wascii (derivs, Ndat)
-      use EndfData_common_m
-      use fixedi_m, only : numcro
-      use ifwrit_m, only : ktzero
+      use EndfData_common_m      
       use DerivativeHandler_M
       use SammyGridAccess_m
 ! *** Write theoretical values into ascii file SAMTHE.DAT
@@ -444,7 +442,6 @@ module mint2_m
 !
       CALL Newopn (59, File, 0)
       call grid%initialize()
-      call grid%setParameters(numcro, ktzero)
       call grid%setToExpGrid(expData)
       DO J=1,Ndat
          WRITE (59,10000) grid%getEnergy(J, expData), &
@@ -651,9 +648,7 @@ module mint2_m
 !  which we need to set the values for SammyGridAccess.
 !
       use modf3_M
-      use EndfData_common_m
-      use ifwrit_m, only : ktzero
-      use fixedi_m, only : numcro
+      use EndfData_common_m      
       use SammyGridAccess_M
       use DerivativeHandler_M
 
@@ -672,7 +667,6 @@ module mint2_m
       integer::Ipos,iso, NumSect, ii, niso
 
       call grid%initialize()
-      call grid%setParameters(numcro, ktzero)
       call grid%setToAuxGrid(expData)
       niso = derivs%getUsedIsotopes()
       if( old) niso = derivs%getUsedIsotopesOld()
diff --git a/sammy/src/int/mint3.f b/sammy/src/int/mint3.f
index 07323c3a85907d5e485c30380e366c16d9a0a8d3..c87f92567ec8f2d80c73ef970be174ba9c856df0 100644
--- a/sammy/src/int/mint3.f
+++ b/sammy/src/int/mint3.f
@@ -25,13 +25,11 @@ C
       type(GridData)::grid
       type(SammyGridAccess)::gridAccess
       DIMENSION Dum(*), Block(*)
-C      DIMENSION Data(Ndat*Numcro)
       Data Zero /0.0d0/, One /1.0d0/
 C
       Nsect = 0
       Input = 0
       call gridAccess%initialize()
-      call gridAccess%setParameters(numcro, ktzero)
       call gridAccess%setToExpGrid(expData)
       IF (Nblock.LT.Ndat) WRITE (6,10010) Nblock, Ndat
 10010 FORMAT (' Possible problem with ODF file; Nblock,Ndat=', 2I8)
@@ -255,8 +253,6 @@ C
       SUBROUTINE Undo (Data, Ndat)
       use fixedr_m
       use EndfData_common_m
-      use fixedi_m, only : numcro
-      use ifwrit_m, only : ktzero
       use SammyGridAccess_M
       IMPLICIT DOUBLE PRECISION (a-h,o-z)
       type(SammyGridAccess)::grid
@@ -264,7 +260,6 @@ C
       Data Zero /0.0d0/, One /1.0d0/
 C
       call grid%initialize()
-      call grid%setParameters(numcro, ktzero)
       call grid%setToExpGrid(expData)
 
       DO I=1,Ndat
@@ -292,9 +287,7 @@ C  Unfortunately this value can be different from the numcro set in fixedi_m,
 C  which we need to set the values for SammyGridAccess.
 C
       use modf3_M
-      use EndfData_common_m
-      use ifwrit_m, only : ktzero
-      use fixedi_m, only : numcro
+      use EndfData_common_m      
       use SammyGridAccess_M
       IMPLICIT DOUBLE PRECISION (a-h,o-z)
       DIMENSION Th(NumSect,Ndatb), Dum(*)
@@ -302,8 +295,7 @@ C
       type(SammyGridAccess)::grid
       procedure (arrayFunc), pointer :: f_ptr => auxEArray
 
-      call grid%initialize()
-      call grid%setParameters(numcro, ktzero)
+      call grid%initialize()      
       call grid%setToAuxGrid(expData)
 C
 cx      Input = 0
diff --git a/sammy/src/int/mint6.f b/sammy/src/int/mint6.f
index 168293743e542fe98f038d6d0a66157b299ce603..0c6a603bbcfff284bc75b4a2051c33ca18bcf753 100644
--- a/sammy/src/int/mint6.f
+++ b/sammy/src/int/mint6.f
@@ -30,8 +30,7 @@ C
       real(kind=8),allocatable,dimension(:)::A_Idum, A_Iblock
 C
 C *** Here when using Leal-Hwang so need to interpolate to present results
-      call gridAccess%initialize()
-      call gridAccess%setParameters(numcro, ktzero)
+      call gridAccess%initialize()      
       call gridAccess%setToExpGrid(expData)
 C
 C *** Read the cross sections etc
diff --git a/sammy/src/mso/mmso0.f b/sammy/src/mso/mmso0.f
index 48574d90bf0e61af0e06083cc11ef3b6019bac40..77b1eadd99291aeccbe7c719eeee61d80a430624 100644
--- a/sammy/src/mso/mmso0.f
+++ b/sammy/src/mso/mmso0.f
@@ -11,7 +11,7 @@ C ***              as subsequent versions.
 C
       use fixedi_m, only : Jtheta, Jwwwww, K2reso, Kkkdex,
      *                     Kkkrsl, Ktheta,
-     *                     Ntheta, Nudwhi, Numcro, Numrpi, Numorr,
+     *                     Ntheta, Nudwhi, Numrpi, Numorr,
      *                     Numder
       use ifwrit_m, only : Jjjdop, Kssmsc
       use exploc_common_m
@@ -217,7 +217,6 @@ C - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - >
 C
 C
       Jwwwww = 8
-      Numcro = 1
       Numder = 1
 C
         call multScat%setNumThetaNearOne( jkn1 )
diff --git a/sammy/src/mso/mmso2.f b/sammy/src/mso/mmso2.f
index 78c4aaf3abca41e71bff030570f0472f72227108..69defe1f6f5171912f252fe3b03df57630b31a2c 100644
--- a/sammy/src/mso/mmso2.f
+++ b/sammy/src/mso/mmso2.f
@@ -15,10 +15,10 @@ C *** Ssssds generates the [approximation to] the self-shielded,
 C ***   single-scattered, and double(plus)-scattered capture yield.
 C
       use fixedi_m, only : Ntepnt, Nxtptv, Nxtptw, Jtheta,
-     *                     Kssmpr, Ntheta, Numbgf, numcro,
+     *                     Kssmpr, Ntheta, Numbgf,
      *                     Numiso, Numnbk, numUsedPar
       use ifwrit_m, only : Nnpar, Kbrd, Kksave, Ksindi, Ksitmp,
-     *                     Ksolve, Kssdbl, Kssmsc, ktzero, Kwssms, Ndat
+     *                     Ksolve, Kssdbl, Kssmsc, Kwssms, Ndat
       use samxxx_common_m, only : Sam15x
       use fixedr_m, only : Aaawww, Sensin
       use lbro_common_m, only : Debug, Yaverg, Yresol, Yselfi
@@ -73,7 +73,6 @@ C
       DATA Zero /0.0d0/, One /1.0d0/
 
       call grid%initialize()
-      call grid%setParameters(numcro, ktzero)
       call grid%setToAuxGrid(expData)
       niso = calcData%getUsedIsotopesOld()
 C
diff --git a/sammy/src/mso/mmso4.f b/sammy/src/mso/mmso4.f
index e0b8eb30eb5a5fd813876d6a55a4502fdaf74a8d..53b76a6b110906ac58a037256c367d862845561b 100755
--- a/sammy/src/mso/mmso4.f
+++ b/sammy/src/mso/mmso4.f
@@ -20,8 +20,7 @@ C
       type(SammyGridAccess)::grid
       DATA Zero /0.0d0/, One /1.0d0/
 
-      call grid%initialize()
-      call grid%setParameters(numcro, ktzero)
+      call grid%initialize()      
       call grid%setToAuxGrid(expData)
 C
       IF (Idone.EQ.3 .AND. Ientrp.EQ.0) RETURN
@@ -155,8 +154,7 @@ C
      *     Dy2ccc(Nx,*)
       DATA Zero /0.0d0/, One /1.0d0/
 
-      call grid%initialize()
-      call grid%setParameters(numcro, ktzero)
+      call grid%initialize()      
       call grid%setToAuxGrid(expData)
 C
       IF (Ientrp.NE.0) THEN
diff --git a/sammy/src/mxw/mmxw5.f b/sammy/src/mxw/mmxw5.f
index a9763475e8b7f2afbc9e4db9b5a4385d6b8932b5..766230df3f5e944ccbcb0adaf5cd4234b21f868b 100644
--- a/sammy/src/mxw/mmxw5.f
+++ b/sammy/src/mxw/mmxw5.f
@@ -39,7 +39,6 @@ C
       DATA Etherm /0.00253d0/, Zero /0.0d0/
 
       call grid%initialize()
-      call grid%setParameters(numcro, ktzero)
       call grid%setToAuxGrid(expData)
       niso = calcData%getUsedIsotopes()
 C
diff --git a/sammy/src/npv/mnpv7.f b/sammy/src/npv/mnpv7.f
index fb51363fbc98cca65fd4a512ced4e3ac0de6e262..8507dae7237b975912aabd82abdbfefe2baab1c2 100644
--- a/sammy/src/npv/mnpv7.f
+++ b/sammy/src/npv/mnpv7.f
@@ -23,18 +23,15 @@ C
       RETURN
       END
 
-      real(kind=8) function getDerivative(idat, ncro, iipar
-     *                                     ) result(gg)
-      use fixedi_m, only : Numcro, numUsedPar
+      real(kind=8) function getDerivative(idat, iipar) result(gg)
+      use fixedi_m, only : numUsedPar
       use array_sizes_common_m, only : calcData
       implicit none
-      integer::idat, ncro, iipar
-      integer::ipos
+      integer::idat, iipar
 
       gg = 0.0d0    
-      if (iipar.le.numUsedPar) then
-         ipos = (Idat-1)*Numcro + ncro
-         gg = calcData%getData(Ipos, iipar, 1)
+      if (iipar.le.numUsedPar) then         
+         gg = calcData%getData(Idat, iipar, 1)
       end if
       end function getDerivative
 C
@@ -54,21 +51,16 @@ C
 C
       integer::ipup
       integer:: Kdat
-      integer::Ipar, Ii, I, K, Iffy, keep
+      integer::Ipar, I, K, Iffy, keep
       integer::ipos
       real(kind=8)::gg, getDerivative
 
-      kdat = resultData%getLength()
-      if (Numcro.gt.1) kdat = kdat/Numcro
+      kdat = resultData%getLength()      
       IF (Ksolve.NE.2) THEN    
          DO Ipar=1,covData%getNumTotalParam()
-            Ii = 1
             DO I=1,Kdat
-               DO K=1,Numcro
-                 call resultData%addData(Ii,
-     *                                 Ipar + derivStart, 0.0d0)
-                 Ii = Ii + 1
-               END Do
+               call resultData%addData(I,
+     *                                 Ipar + derivStart, 0.0d0)               
             End do
          End do
 
@@ -76,22 +68,18 @@ C
          DO Ipar=1,covData%getNumTotalParam()
             IF (covData%contributes(Ipar))THEN
                keep = covData%getCovIndex(Ipar)            
-               Ii = 0
                DO I=1,Kdat
-                  DO K=1,Numcro
-                     Ii = Ii + 1
-                     gg = getDerivative(i, k, ipar)
+                  gg = getDerivative(i, ipar)
 
-                     ipos = 0
-                     IF (Keep.LE.Nvpthe) THEN     ! derivatives start right after derivStart
-                        ipos = keep + derivStart
-                     else if (covData%isPupedParameter(ipar)) THEN
-                        ipos =  keep + derivStart + nimplgiven  ! pup'ed derivatives start after implicit derivatives
-                     end if
-                     if (ipos.gt.0) then
-                        call resultData%addData(Ii, ipos, gg)
-                     end if
-                  End do
+                  ipos = 0
+                  IF (Keep.LE.Nvpthe) THEN     ! derivatives start right after derivStart
+                     ipos = keep + derivStart
+                  else if (covData%isPupedParameter(ipar)) THEN
+                     ipos =  keep + derivStart + nimplgiven  ! pup'ed derivatives start after implicit derivatives
+                  end if
+                  if (ipos.gt.0) then
+                      call resultData%addData(I, ipos, gg)
+                  end if
                End do
             END IF
          END DO
@@ -103,15 +91,11 @@ C
                IF (Keep.LE.Nvpthe) THEN
 C                 These are not part of IDC so not needed at Ksolve=2
                ELSE IF (covData%isPupedParameter(Ipar)) THEN
-                  Ii = 0
                   DO I=1,Kdat
-                     DO K=1,Numcro
-                        Ii = Ii + 1
-                        gg = getDerivative(i, k, Ipar)
+                    gg = getDerivative(i, Ipar)
 
-                        ipos =  keep + derivStart + nimplgiven  ! pup'ed derivatives start after implicit derivatives
-                        call resultData%addData(Ii, ipos, gg)
-                     End do
+                    ipos =  keep + derivStart + nimplgiven  ! pup'ed derivatives start after implicit derivatives
+                    call resultData%addData(I, ipos, gg)
                   End do
                END IF
             END IF
diff --git a/sammy/src/npv/mnpv9.f b/sammy/src/npv/mnpv9.f
index 13f87bf56415f493483b50d0dc3486e69be67b64..3c92e91b90076f3e584403b8a6f6c407a70e9fa5 100644
--- a/sammy/src/npv/mnpv9.f
+++ b/sammy/src/npv/mnpv9.f
@@ -8,7 +8,7 @@ C *** Purpose -- Create the arrays Th, G, X, in lowest possible storage
 C ***            location so that other needed arrays will not wipe out
 C ***            the storage
 C
-      use fixedi_m, only : Numcro, Nvpdtp
+      use fixedi_m, only : Nvpdtp
       use ifwrit_m, only : Ksolve, Ntgrlq
       use exploc_common_m
       use samxxx_common_m, only : Sam30x
diff --git a/sammy/src/ntg/mntg3.f b/sammy/src/ntg/mntg3.f
index 06b781ab5cdbdac03bed080306a14395b4ffd2f2..ac82586efd4f522aac884bee199fc67591b3a9fb 100644
--- a/sammy/src/ntg/mntg3.f
+++ b/sammy/src/ntg/mntg3.f
@@ -4,8 +4,7 @@ C --------------------------------------------------------------
 C
       SUBROUTINE Therml (Kdatb, Numntg, Iso, Kountr)
       use fixedi_m
-      use EndfData_common_m
-      use ifwrit_m, only : ktzero
+      use EndfData_common_m      
       use SammyGridAccess_M
       use array_sizes_common_m, only : calcData
       IMPLICIT DOUBLE PRECISION (a-h,o-z)
@@ -13,8 +12,7 @@ C
       real(kind=8)::val1, val2
       DATA Etherm /0.0253d0/
 
-      call grid%initialize()
-      call grid%setParameters(numcro, ktzero)
+      call grid%initialize()      
       call grid%setToAuxGrid(expData)
 C
 C *** J = 1  thermal cross section
diff --git a/sammy/src/ntg/mntg4.f b/sammy/src/ntg/mntg4.f
index b75b70ecb765c871a10934bb87d7525cc1543e1b..f5b56f3c2242697dc8e6f5ede527ed860871b54c 100644
--- a/sammy/src/ntg/mntg4.f
+++ b/sammy/src/ntg/mntg4.f
@@ -33,7 +33,6 @@ C
       Aaold = Zero
 
       call grid%initialize()
-      call grid%setParameters(numcro, ktzero)
       call grid%setToAuxGrid(expData)
 C
 C *** figure which energy is just below E1=.00001 eV and E2=3 eV
@@ -387,7 +386,6 @@ C
       end if
 
       call grid%initialize()
-      call grid%setParameters(numcro, ktzero)
       call grid%setToAuxGrid(expData)
 C
 C *** figure which energy is just below E1=.00001 eV and E2=3 eV
diff --git a/sammy/src/ntg/mntg6.f b/sammy/src/ntg/mntg6.f
index 2d18fd379e6a328d226b41e80a7bb0241c369ce6..f7b3e2758733c208f41c7f5b8574026bbb491b5c 100644
--- a/sammy/src/ntg/mntg6.f
+++ b/sammy/src/ntg/mntg6.f
@@ -29,7 +29,6 @@ C     *   Const(2,Numntg)
 C
       Ipnts = Kdatb
       call grid%initialize()
-      call grid%setParameters(numcro, ktzero)
       call grid%setToAuxGrid(expData)
 C
 C *** figure which energies are just below bEgin and Equit
diff --git a/sammy/src/ntg/mntg7.f b/sammy/src/ntg/mntg7.f
index f6cca137ebe7ef2e0b14aa62352d535febfd0ba8..6abded2b3ec14a927680463f3b3e5412b814350e 100644
--- a/sammy/src/ntg/mntg7.f
+++ b/sammy/src/ntg/mntg7.f
@@ -31,7 +31,6 @@ C
 C
       Ipnts = Kdatb
       call grid%initialize()
-      call grid%setParameters(numcro, ktzero)
       call grid%setToAuxGrid(expData)
 C
 C *** figure which energies are just below bEgin and Equit
diff --git a/sammy/src/ntg/mntg8.f b/sammy/src/ntg/mntg8.f
index d4c24fcd46ad83f1359f3bc8c15f5a0398c8168b..400034a01488dab675ceb6e67c7a4d3b33d465da 100644
--- a/sammy/src/ntg/mntg8.f
+++ b/sammy/src/ntg/mntg8.f
@@ -32,7 +32,6 @@ C
       Tosp = Two/Sqrtpi
 
       call grid%initialize()
-      call grid%setParameters(numcro, ktzero)
       call grid%setToAuxGrid(expData)
 C
 C *** figure which energy is just below bEgin=1e-5 eV
diff --git a/sammy/src/ntg/mntga.f b/sammy/src/ntg/mntga.f
index 437baa190c55e20dd8ceb8c1f346fe277c3c240d..5119c15e0f010c6e30e025b2e995afbddc051893 100644
--- a/sammy/src/ntg/mntga.f
+++ b/sammy/src/ntg/mntga.f
@@ -34,7 +34,6 @@ C
       CALL Findpr (Nflux, Kflux)
 
       call grid%initialize()
-      call grid%setParameters(numcro, ktzero)
       call grid%setToAuxGrid(expData)
 
       Ipnts = Kdatb
diff --git a/sammy/src/odf/modf3.f90 b/sammy/src/odf/modf3.f90
index 7bd8851a2c251a94d9746cebf6b08545c259ccb6..f809916d3e075d945b8c4e585e41308fb850795e 100755
--- a/sammy/src/odf/modf3.f90
+++ b/sammy/src/odf/modf3.f90
@@ -449,15 +449,12 @@ contains
 !!
       real(kind=8) function auxEArray (i) result(data)
          use EndfData_common_m
-         use fixedi_m, only : numcro
-         use ifwrit_m, only : ktzero
          use SammyGridAccess_M
          implicit none
          type(SammyGridAccess)::grid
          integer, intent (in) :: i
 
          call grid%initialize()
-         call grid%setParameters(numcro, ktzero)
          call grid%setToAuxGrid(expData)
 
          data = grid%getEnergy(i, expData)
diff --git a/sammy/src/orr/morr0.f90 b/sammy/src/orr/morr0.f90
index b6b30253a801a03632513b421fadb05096c9ee93..f7774808b6e02d4759f76494159b61ee653032bd 100644
--- a/sammy/src/orr/morr0.f90
+++ b/sammy/src/orr/morr0.f90
@@ -7,8 +7,8 @@ module orr_m
 !
 ! *** Purpose -- ORR resolution function calculation
 !
-      use fixedi_m, only : Jwwwww, Numorr, numcro
-      use ifwrit_m, only : Jjjdop, Kplotu, ktzero
+      use fixedi_m, only : Jwwwww, Numorr
+      use ifwrit_m, only : Jjjdop, Kplotu
       use fixedr_m, only : Dist
       use EndfData_common_m, only : expData
       use DopplerAndResolutionBroadener_M
@@ -27,6 +27,7 @@ module orr_m
       type(GridDataList)::work
       type(DopplerAndResolutionBroadener)::broadener
       integer::N, Idimen, nauxMax, ii
+      logical(C_BOOL)::moreBroadening
       external Idimen
 !
 !
@@ -41,17 +42,8 @@ module orr_m
 
       call work%initialize()
       call broadener%initialize(calcData, expData, work)
-      call broadener%setNumPerEnergy(max(1,numcro))
-      ii = 1
-      if ( ktzero.ne.0) then
-         if (numcro.gt.1) then
-            ii = 3
-         else
-            ii = 2
-         end if
-      end if
-      call broadener%setUnbroadenedGrid(2, ii)
-      call broadener%setBroadenedGrid(1, ii) ! always finish on  experinental grid
+      moreBroadening = .false.
+      call broadener%setupBroadnener(moreBroadening) ! always finish on  experinental grid
 !
       CALL Initix
       IF (Kplotu.NE.0) Kplotu = 0
diff --git a/sammy/src/ort/mort.f b/sammy/src/ort/mort.f
index a476439cb6b59ce3841fbc4f3fceeb99aa96f983..0013745f561aadabac8add53397b8ef2c5763231 100644
--- a/sammy/src/ort/mort.f
+++ b/sammy/src/ort/mort.f
@@ -35,8 +35,7 @@ C
 C
       use over_common_m, only : Kount, Nsize
       use oops_common_m, only : Jmsize, Kmsize, Kount_Initial, Msize
-      use fixedi_m, only : Iu32, Kwatta, Nmdets, Numorr, numcro
-      use ifwrit_m, only : ktzero
+      use fixedi_m, only : Iu32, Kwatta, Nmdets, Numorr
       use fixedr_m, only : Dist
       use oopsch_common_m, only : Segmen
       use namfil_common_m, only : Dblank, Dignor, Dignor, Fblank,
@@ -56,9 +55,10 @@ C
       real(kind=8),allocatable,dimension(:)::A_It, A_Iweigh, A_Iwts
       integer,allocatable,dimension(:)::I_Iflorr
       real(Kind=8)::Aw, Dt, Elow, Em, Eup
-      integer::I, Idimen, Itime, Kpnts, Min, Mndets, N, ii
+      integer::I, Idimen, Itime, Kpnts, Min, Mndets, N
        type(DopplerAndResolutionBroadener)::broadener
        type(GridDataList)::work
+       logical(C_BOOL)::moreBroadening
 
       external Idimen
       
@@ -141,18 +141,9 @@ C
 
       call work%initialize()
       call broadener%initialize(calcData, expData, work)
-      call broadener%setNumPerEnergy(max(1,numcro))
-      ii = 1
-      if ( ktzero.ne.0) then
-         if (numcro.gt.1) then
-            ii = 3
-         else
-            ii = 2
-         end if
-      end if
-      call broadener%setUnbroadenedGrid(2, ii)
-      call broadener%setBroadenedGrid(1, ii) ! always finish on  experimental grid
-      
+      moreBroadening = .false.
+      call broadener%setupBroadnener(moreBroadening)
+
       CALL Orresb (broadener, A_Iweigh, A_Iwts, Dist)
       CALL Showwe (A_It , A_Iwts, Dt, Ipnts)
       CALL Showwt (A_It , A_Iwts, Dt, Kpnts)
diff --git a/sammy/src/ort/mort1.f b/sammy/src/ort/mort1.f
index 52ef439542028516d8c5c178e0c1366b6878aa45..6af6aacef4ea09dd58b3b34cb48faedbab691213 100755
--- a/sammy/src/ort/mort1.f
+++ b/sammy/src/ort/mort1.f
@@ -60,9 +60,7 @@ C --------------------------------------------------------------
 C
       SUBROUTINE Showwe (Tt, Wts, Dt, Ipnts)
       use modf3_M
-      use EndfData_common_m
-      use fixedi_m, only : numcro
-      use ifwrit_m, only : ktzero
+      use EndfData_common_m      
       use SammyGridAccess_M
       IMPLICIT DOUBLE PRECISION (a-h,o-z)
       CHARACTER*17 Xxxxxx, Xxxxxy
@@ -80,8 +78,7 @@ C     un-normalize !
          Wts(I) = Wts(I)/Dt
       END DO
 
-      call grid%initialize()
-      call grid%setParameters(numcro, ktzero)
+      call grid%initialize()      
       call grid%setToAuxGrid(expData)
 C
       Nsn = 3
diff --git a/sammy/src/ref/mref0.f b/sammy/src/ref/mref0.f
index b5b66c7e8b9d4a51b4b1cdc9759f24e8390319aa..0f71702eed6dcfa0cfe4ea7f86a2133a9bd5c92e 100644
--- a/sammy/src/ref/mref0.f
+++ b/sammy/src/ref/mref0.f
@@ -66,7 +66,6 @@ C *** read Energy from 50 & Data, Uncertainty from 44
 C
       use EndfData_common_m
       use SammyGridAccess_M
-      use fixedi_m, only : numcro
       use ifwrit_m, only : Kdatv
       IMPLICIT NONE
       type(GridData)::grid
diff --git a/sammy/src/ref/mref2.f b/sammy/src/ref/mref2.f
index a184a0406f71d6494d6569c4435d7cea28f4832a..19d39c460327e085b2945d73c72d428f67d8a775 100644
--- a/sammy/src/ref/mref2.f
+++ b/sammy/src/ref/mref2.f
@@ -12,13 +12,11 @@ C
       use samxxx_common_m
       use fixedr_m
       use EndfData_common_m
-      use fixedi_m, only : numcro
       use SammyGridAccess_M
       IMPLICIT DOUBLE PRECISION (A-h,o-z)
       type(SammyGridAccess)::grid
       DIMENSION Data(*), dData(*)
       call grid%initialize()
-      call grid%setParameters(numcro, ktzero)
       call grid%setToExpGrid(expData)
       Jcros  = Kcros
       Jtrans = Ktrans
diff --git a/sammy/src/ref/mrfs2.f b/sammy/src/ref/mrfs2.f
index 16ac0d71eafc6bf9e906fab088d39279dc305279..fbe40f02cb75af6d7793f4e54e8322d5adb719ec 100644
--- a/sammy/src/ref/mrfs2.f
+++ b/sammy/src/ref/mrfs2.f
@@ -91,8 +91,10 @@ C
       use exploc_common_m
       use broad_common_m
       use aaarfs_common_m
-      use EndfData_common_m, only : radFitFlags
+      use GridData_M
+      use EndfData_common_m, only : radFitFlags, expData
       IMPLICIT DOUBLE PRECISION (A-h,o-z)
+      type(GridData)::grid
 C
       call make_A_Iprbrd(Numbrd)
       call make_I_Iflbrd(Numbrd)
@@ -107,9 +109,19 @@ C
 C *** three
       N = Nangle
       IF (N.EQ.0) N = 1
-      Numcro = N
       call make_A_Iangle(N)
       call make_A_Idangl(N)
+
+      if (expData%getLength().eq.0) then
+          call grid%initialize()
+          call expData%addGrid(grid)
+          if (Nangle.gt.0) then
+             call grid%setNumPerEnergy(Nangle)
+          end if
+          ! one point per energy is the default
+
+          numcro = grid%getNumPerEnergy()
+      end if
 C
 C *** four
       N = Ncf
diff --git a/sammy/src/ref/mwrt1.f b/sammy/src/ref/mwrt1.f
index 65228f4db35bcc95d0127c017f18a119f9c73cee..9dae584fadda81488e1f76cde9e05adaaa20ccc2 100644
--- a/sammy/src/ref/mwrt1.f
+++ b/sammy/src/ref/mwrt1.f
@@ -184,15 +184,12 @@ C
 C --------------------------------------------------------------
 C
       SUBROUTINE Wrtdat (Data, Unc, Ndat)
-      use EndfData_common_m
-      use fixedi_m, only : numcro
-      use ifwrit_m, only : ktzero
+      use EndfData_common_m      
       use SammyGridAccess_M
       IMPLICIT DOUBLE PRECISION (A-h,o-z)
       type(SammyGridAccess)::grid
       DIMENSION Data(*), Unc(*)
       call grid%initialize()
-      call grid%setParameters(numcro, ktzero)
       call grid%setToExpGrid(expData)
       OPEN (UNIT=10, FILE='SAMMY.DAT', STATUS='unknown',
      *    FORM='formatted')
diff --git a/sammy/src/rpi/mrpi1.f90 b/sammy/src/rpi/mrpi1.f90
index aabe3b426350b0197f527991a84c9d24e89f2738..02a2602ac15b4158365110da83a9ba1825621a58 100644
--- a/sammy/src/rpi/mrpi1.f90
+++ b/sammy/src/rpi/mrpi1.f90
@@ -11,8 +11,8 @@ module rpi1_m
 ! ***            using RPI resolution function
 !
       use fixedi_m, only : numUsedPar,        &
-                           Nfprpi, Nnnrpi, numcro, Numnbk, Numbgf
-      use ifwrit_m, only : Jjjdop, Kdebug, Ksolve, ktzero
+                           Nfprpi, Nnnrpi, Numnbk, Numbgf
+      use ifwrit_m, only : Jjjdop, Kdebug, Ksolve
       use brdd_common_m, only : Ipk, Ipnts, Iup, Kc
       use rpijnk_common_m
       use rpires_common_m
@@ -43,7 +43,6 @@ module rpi1_m
       type(DerivativeHandler)::derivs
 
       call grid%initialize()
-      call grid%setParameters(numcro, ktzero)
       call grid%setToExpGrid(expData)
       numEl = grid%getNumEnergies(expData)
 
diff --git a/sammy/src/rpi/mrpi5.f90 b/sammy/src/rpi/mrpi5.f90
index 639db56d55fa65746e0cf2a272506716e97d3bbe..9b24f35bcde60b5c1936def19390f39da87fa272 100644
--- a/sammy/src/rpi/mrpi5.f90
+++ b/sammy/src/rpi/mrpi5.f90
@@ -9,8 +9,6 @@ module rpi5_m
 !
 ! *** PURPOSE -- form the resolution-broadening function
 !
-      use fixedi_m, only : numcro
-      use ifwrit_m, only : ktzero
       use brdd_common_m, only : Ipnts, Kc
       use rpijnk_common_m
       use rpires_common_m
@@ -29,7 +27,6 @@ module rpi5_m
         logical debug
 
         call grid%initialize()
-        call grid%setParameters(numcro, ktzero)
         call grid%setToAuxGrid(expData)
 
         debug=.false.
@@ -123,8 +120,8 @@ module rpi5_m
 ! *** November 16, 1999 -- Mods to fix subtle, obscure bug uncovered by
 ! ***                      Greg Leinweber in Troy, NY
 !
-      use fixedi_m, only : numcro, Lother, Mmmrpi
-      use ifwrit_m, only : ktzero, Itdchi
+      use fixedi_m, only : Lother, Mmmrpi
+      use ifwrit_m, only : Itdchi
       use fixedr_m, only : Ttoe
       use brdd_common_m, only : Ipnts, Kc
       use rpijnk_common_m
@@ -160,7 +157,6 @@ module rpi5_m
       CALL Zero_Array (Wts, Ipnts)
 
       call grid%initialize()
-      call grid%setParameters(numcro, ktzero)
       call grid%setToAuxGrid(expData)
 !
       Aw    = Aaa/Www
diff --git a/sammy/src/rpi/mrpi6.f90 b/sammy/src/rpi/mrpi6.f90
index 85a67cc9f31584b09eb2e05ecff2852125af24b1..f8771cffb47a5f503505676ccde892f52260f60b 100644
--- a/sammy/src/rpi/mrpi6.f90
+++ b/sammy/src/rpi/mrpi6.f90
@@ -11,8 +11,8 @@ module rpi6_m
 ! *** PURPOSE -- Form the weights for resolution broadening when
 ! ***            only the RPI target-detector function is used
 !
-      use fixedi_m, only : numcro, Lother
-      use ifwrit_m, only : ktzero, Itdchi
+      use fixedi_m, only : Lother
+      use ifwrit_m, only : Itdchi
       use fixedr_m, only : Ttoe
       use brdd_common_m, only : Ipnts, Kc
       use rpijnk_common_m
@@ -35,7 +35,6 @@ module rpi6_m
       DATA Zero /0.0d0/, Half /0.5d0/, Two /2.0d0/
 
       call grid%initialize()
-      call grid%setParameters(numcro, ktzero)
       call grid%setToAuxGrid(expData)
 
       Timeij_Old = 0.0d0
@@ -309,8 +308,6 @@ module rpi6_m
 ! *** PURPOSE -- Form the weights for resolution broadening when
 ! ***            only the electron burst is included (Gaussian)
 !
-      use fixedi_m, only : numcro
-      use ifwrit_m, only : ktzero
       use fixedr_m, only : Ttoe
       use brdd_common_m, only : Ipnts, Kc
       use rpijnk_common_m
@@ -334,7 +331,6 @@ module rpi6_m
       CALL Zero_Array (Wts, Ipnts)
 
       call grid%initialize()
-      call grid%setParameters(numcro, ktzero)
       call grid%setToAuxGrid(expData)
 !
       Allmax = Zero
@@ -374,9 +370,7 @@ module rpi6_m
 !
 ! *** PURPOSE -- Form the weights for resolution broadening when
 ! ***            only the channel widths contribute
-!
-      use fixedi_m, only : numcro
-      use ifwrit_m, only : ktzero
+!      
       use fixedr_m, only : Ttoe
       use brdd_common_m, only : Ipnts, Kc
       use rpijnk_common_m
@@ -394,7 +388,6 @@ module rpi6_m
       DATA Zero /0.0d0/, Half /0.5d0/, One/ 1.0d0/, Two /2.0d0/
 
       call grid%initialize()
-      call grid%setParameters(numcro, ktzero)
       call grid%setToAuxGrid(expData)
 !
 !
@@ -471,8 +464,6 @@ module rpi6_m
 ! ***            the (Gaussian) electron burst and the (square) channel 
 ! ***            widths are included 
 !
-      use fixedi_m, only : numcro
-      use ifwrit_m, only : ktzero
       use fixedr_m, only : Ttoe
       use brdd_common_m, only : Ipnts, Kc
       use rpijnk_common_m
@@ -491,7 +482,6 @@ module rpi6_m
 !
       DATA Zero /0.0d0/, Two /2.0d0/
       call grid%initialize()
-      call grid%setParameters(numcro, ktzero)
       call grid%setToAuxGrid(expData)
 !
 !
@@ -542,8 +532,8 @@ module rpi6_m
 ! ***            the (Gaussian) electron burst and the (chi squared
 ! ***            plus exponential) target-detector are included 
 !
-      use fixedi_m, only : numcro, Lother
-      use ifwrit_m, only : ktzero, Itdchi
+      use fixedi_m, only : Lother
+      use ifwrit_m, only : Itdchi
       use fixedr_m, only : Ttoe
       use brdd_common_m, only : Ipnts, Kc
       use rpijnk_common_m
@@ -565,7 +555,6 @@ module rpi6_m
       DATA Zero /0.0d0/, Half /0.5d0/, Two /2.0d0/
 
       call grid%initialize()
-      call grid%setParameters(numcro, ktzero)
       call grid%setToAuxGrid(expData)
 !
 !
@@ -694,8 +683,8 @@ module rpi6_m
 ! ***            the (square) channel width and the (chi squared
 ! ***            plus exponential) target-detector are included 
 !
-      use fixedi_m, only : numcro, Lother
-      use ifwrit_m, only : ktzero, Itdchi
+      use fixedi_m, only : Lother
+      use ifwrit_m, only : Itdchi
       use fixedr_m, only : Ttoe
       use brdd_common_m, only : Ipnts, Kc
       use rpijnk_common_m
@@ -717,7 +706,6 @@ module rpi6_m
       DATA Small /0.5d0/, Zero /0.0d0/, One/1.0d0/, Two /2.0d0/
 
       call grid%initialize()
-      call grid%setParameters(numcro, ktzero)
       call grid%setToAuxGrid(expData)
 !
 !
diff --git a/sammy/src/rpi/mrpi8.f90 b/sammy/src/rpi/mrpi8.f90
index a55807b0c6d276c9343a0bce6112c9d134f7ee51..eea10bb7b44f49a94888134f8fead5cb5f4d30bd 100644
--- a/sammy/src/rpi/mrpi8.f90
+++ b/sammy/src/rpi/mrpi8.f90
@@ -42,8 +42,8 @@ module rpi8_m
 ! ***            broadening when using (Gaussian) burst, RPI resolution,
 ! ***            and (square) channel width
 !
-      use fixedi_m, only : numcro, Lother, Mmmrpi
-      use ifwrit_m, only : ktzero, Itdchi
+      use fixedi_m, only : Lother, Mmmrpi
+      use ifwrit_m, only : Itdchi
       use fixedr_m, only : Ttoe
       use brdd_common_m, only : Ipnts, Kc
       use rpijnk_common_m
@@ -79,8 +79,7 @@ module rpi8_m
       END IF
 
 ! *** initialize
-      call grid%initialize()
-      call grid%setParameters(numcro, ktzero)
+      call grid%initialize()      
       call grid%setToAuxGrid(expData)
 
 !
diff --git a/sammy/src/rpi/mrpi9.f90 b/sammy/src/rpi/mrpi9.f90
index 5324428eb74f219662704913fa6be21783f5a13a..0f635618ad07397841ed435106fb05706e98304d 100644
--- a/sammy/src/rpi/mrpi9.f90
+++ b/sammy/src/rpi/mrpi9.f90
@@ -11,8 +11,8 @@ module rpi9_m
 ! ***            broadening parameters when only the RPI target-detector
 ! ***            function is used
 !
-      use fixedi_m, only : numcro, Lother, Mmmrpi
-      use ifwrit_m, only : ktzero, Itdchi
+      use fixedi_m, only : Lother, Mmmrpi
+      use ifwrit_m, only : Itdchi
       use fixedr_m, only : Ttoe
       use brdd_common_m, only : Ipnts, Kc
       use rpijnk_common_m, only : Time, Ac6x, A7x
@@ -44,7 +44,6 @@ module rpi9_m
       IF (Kstop.EQ.0) STOP '[ STOP - Onlytd_Der is not yet working in mrpi9.f]'
 
       call grid%initialize()
-      call grid%setParameters(numcro, ktzero)
       call grid%setToAuxGrid(expData)
 !
 ! *** initialize
@@ -291,8 +290,6 @@ module rpi9_m
 ! *** PURPOSE -- Form the derivatives of the weights for resolution
 ! ***            broadening when only the electron burst is included
 !
-      use fixedi_m, only : numcro
-      use ifwrit_m, only : ktzero
       use fixedr_m, only : Ttoe
       use brdd_common_m, only : Ipnts, Kc
       use rpijnk_common_m
@@ -312,7 +309,6 @@ module rpi9_m
 ! *** initialize
       CALL Zero_Array (Wtsx, Ipnts)
       call grid%initialize()
-      call grid%setParameters(numcro, ktzero)
       call grid%setToAuxGrid(expData)
 !
       Summax = Zero
@@ -338,8 +334,6 @@ module rpi9_m
 ! *** PURPOSE -- Form the derivatives of the weights for resolution 
 ! ***            broadening when only the channel widths contribute
 !
-      use fixedi_m, only : numcro
-      use ifwrit_m, only : ktzero
       use fixedr_m, only : Ttoe
       use brdd_common_m, only : Ipnts, Kc
       use rpijnk_common_m
@@ -361,7 +355,6 @@ module rpi9_m
       IF (Kstop.EQ.0) STOP '[STOP -- Onlych_Der not yet ready in mrpi9.f]'
 
       call grid%initialize()
-      call grid%setParameters(numcro, ktzero)
       call grid%setToAuxGrid(expData)
 !
 ! *** initialize
@@ -436,8 +429,6 @@ module rpi9_m
 ! ***            the (Gaussian) electron burst and the (square) channel 
 ! ***            widths are included 
 !
-      use fixedi_m, only : numcro
-      use ifwrit_m, only : ktzero
       use fixedr_m, only : Ttoe
       use brdd_common_m, only : Ipnts, Kc
       use rpijnk_common_m
@@ -462,7 +453,6 @@ module rpi9_m
 !
       CALL Zero_Array (Wtsx, Ipnts)
       call grid%initialize()
-      call grid%setParameters(numcro, ktzero)
       call grid%setToAuxGrid(expData)
       DO Ie=1,Ipnts
          eIe = grid%getEnergy(Ie+Kc-1, expData)
@@ -514,8 +504,8 @@ module rpi9_m
 ! ***            the (Gaussian) electron burst and the (chi squared
 ! ***            plus exponential) target-detector are included 
 !
-      use fixedi_m, only : numcro, Lother
-      use ifwrit_m, only : ktzero, Itdchi
+      use fixedi_m, only : Lother
+      use ifwrit_m, only : Itdchi
       use fixedr_m, only : Ttoe
       use brdd_common_m, only : Ipnts, Kc
       use rpijnk_common_m
@@ -541,8 +531,7 @@ module rpi9_m
 !
       IF (Kstop.EQ.0) STOP '[Stop -- Ebantd_Der not yet ready  rpi/mpri9.f]'
 
-      call grid%initialize()
-      call grid%setParameters(numcro, ktzero)
+      call grid%initialize()      
       call grid%setToAuxGrid(expData)
 !
 ! *** initialize
@@ -669,8 +658,7 @@ module rpi9_m
 ! ***            the (square) channel width and the (chi squared
 ! ***            plus exponential) target-detector are included 
 !
-      use fixedi_m, only : numcro
-      use ifwrit_m, only : ktzero, Itdchi
+      use ifwrit_m, only : Itdchi
       use fixedr_m, only : Ttoe
       use brdd_common_m, only : Ipnts, Kc
       use rpijnk_common_m
@@ -695,7 +683,6 @@ module rpi9_m
 !
       IF (Kstop.EQ.0) STOP '[Stop -- Chantd_Der not yet ready  rpi/mrpi9.f]'
       call grid%initialize()
-      call grid%setParameters(numcro, ktzero)
       call grid%setToAuxGrid(expData)
 !
 ! *** initialize
diff --git a/sammy/src/rpt/mrpt1.f b/sammy/src/rpt/mrpt1.f
index 5b687cfa829a3d1de9e033c4bd0c81f2cdd5ba47..4612a4af644fee20af063eb1d48a8975e8bc48f5 100644
--- a/sammy/src/rpt/mrpt1.f
+++ b/sammy/src/rpt/mrpt1.f
@@ -81,9 +81,7 @@ C
       use rpires_common_m
       use rpirrr_common_m
       use modf3_M
-      use EndfData_common_m
-      use fixedi_m, only : numcro
-      use ifwrit_m, only : ktzero
+      use EndfData_common_m      
       use SammyGridAccess_M
       IMPLICIT DOUBLE PRECISION (a-h,o-z)
 C
@@ -102,8 +100,7 @@ C      un-normalize !
          Wts(I) = Wts(I)*Wwnorm
       END DO
 
-      call grid%initialize()
-      call grid%setParameters(numcro, ktzero)
+      call grid%initialize()      
       call grid%setToAuxGrid(expData)
 C
 C     normalize for comparison to components of resolution function
diff --git a/sammy/src/rsl/mrsl0.f90 b/sammy/src/rsl/mrsl0.f90
index 92a89a0a2f407df54dfe162f69369fc465a52b4b..ac42f7b8fe54738fdcd33276081b6766c7414ae6 100644
--- a/sammy/src/rsl/mrsl0.f90
+++ b/sammy/src/rsl/mrsl0.f90
@@ -5,9 +5,9 @@ module rsl_m
 !
       SUBROUTINE Samrsl_0
 !
-      use fixedi_m, only : Jwwwww, K2reso, Kkkdex, Nudwhi, numcro,  &
+      use fixedi_m, only : Jwwwww, K2reso, Kkkdex, Nudwhi,  &
                            Numorr, Numrpi
-      use ifwrit_m, only : ktzero, Jjjdop, Kplotu
+      use ifwrit_m, only : Jjjdop, Kplotu
       use exploc_common_m
       use array_sizes_common_m
       use oopsch_common_m, only : Nowwww, Segmen
@@ -44,11 +44,9 @@ module rsl_m
 !
 !
 
-      call eGrid%initialize()
-      call eGrid%setParameters(numcro, ktzero)
+      call eGrid%initialize()      
       call eGrid%setToExpGrid(expData)
-      call auxGrid%initialize()
-      call auxGrid%setParameters(numcro, ktzero)
+      call auxGrid%initialize()      
       call auxGrid%setToAuxGrid(expData)
 !
 ! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - <
diff --git a/sammy/src/rsl/mrsl3.f90 b/sammy/src/rsl/mrsl3.f90
index 0b35486a87f542183018fa6bc46ddbfcf0781d96..d087536522ace3a3457898f4ef50b6cc25645afc 100644
--- a/sammy/src/rsl/mrsl3.f90
+++ b/sammy/src/rsl/mrsl3.f90
@@ -9,8 +9,7 @@ module rsl3_m
 ! *** interpolate to get (un-resolution-broadened) result, when energy
 ! ***    grid Energb is from Leal-Hwang evenly-spaced-in-velocity
 !
-      use fixedi_m, only :  numcro,numUsedPar
-      use ifwrit_m, only : ktzero
+      use fixedi_m, only :  numUsedPar
       use abro_common_m, only :  Delv
       use EndfData_common_m, only : expData
       use AuxGridHelper_M, only : getNumAuxGridPoints
@@ -28,8 +27,7 @@ module rsl3_m
       integer::I1, I2, I3, Ipar, N, nauxMax
       DATA half /0.5d0/
 !
-      call grid%initialize()
-      call grid%setParameters(numcro, ktzero)
+      call grid%initialize()      
       call grid%setToAuxGrid(expData)
 
       nauxMax = getNumAuxGridPoints()
diff --git a/sammy/src/rsl/mrsl6.f90 b/sammy/src/rsl/mrsl6.f90
index ee9621e6342a20f5c49cded80ef0cb95252cb326..3f9fa630dfc3e4ba643e57b447411e6356cf9c60 100644
--- a/sammy/src/rsl/mrsl6.f90
+++ b/sammy/src/rsl/mrsl6.f90
@@ -11,9 +11,7 @@ module rsl6_m
 !
       use brdd_common_m, only : Ipk, Ipke, Ipnts, Kc, Iup
       use EndfData_common_m, only : expData
-      use AuxGridHelper_M, only : getNumAuxGridPoints
-      use fixedi_m, only : numcro
-      use ifwrit_m, only : ktzero
+      use AuxGridHelper_M, only : getNumAuxGridPoints      
       use SammyGridAccess_M
 
       type(SammyGridAccess)::grid
@@ -22,7 +20,6 @@ module rsl6_m
       integer::Ilow, nauxMax
 
       call grid%initialize()
-      call grid%setParameters(numcro, ktzero)
       call grid%setToAuxGrid(expData)
 
       nauxMax = getNumAuxGridPoints()
diff --git a/sammy/src/rst/mrst1.f90 b/sammy/src/rst/mrst1.f90
index a62bf6f7ccaa2314ba3096bad3c30f31708eade3..c461794119086c3c63692268f41f0611fb853b34 100644
--- a/sammy/src/rst/mrst1.f90
+++ b/sammy/src/rst/mrst1.f90
@@ -108,8 +108,7 @@ module rst1_m
 ! ***            GAUSSIAN+EXPONENTIAL resolution function, AND
 ! ***            NORMALIZE THEM
 !
-      use fixedi_m, only : numcro
-      use ifwrit_m, only : ktzero, Kexpsh
+      use ifwrit_m, only : Kexpsh
       use broad_common_m, only : Iesopr
       use brdd_common_m, only : Ipnts, Ipke, Kc
       use EndfData_common_m, only : expData
@@ -131,7 +130,6 @@ module rst1_m
       DATA Zero /0.0d0/, Half /0.5d0/
 
       call grid%initialize()
-      call grid%setParameters(numcro, ktzero)
       call grid%setToAuxGrid(expData)
 !
 !
diff --git a/sammy/src/salmon/GridData.cpp b/sammy/src/salmon/GridData.cpp
index 9fb512cf35003c765ee5b9fdc822012fe1e0cf2a..299d2f81fd5e171f8a4fab8786fb8a6e9995cd37 100644
--- a/sammy/src/salmon/GridData.cpp
+++ b/sammy/src/salmon/GridData.cpp
@@ -7,7 +7,8 @@ namespace sammy{
                                                rowOffset(orig.rowOffset),
                                                rowMax(orig.rowMax),
                                                notSetReturnsZero(orig.notSetReturnsZero),
-                                               accumulate(orig.accumulate){
+                                               accumulate(orig.accumulate),
+                                               numPerEner(orig.numPerEner){
 
          if (orig.implicitParCov != nullptr){
              implicitParCov = std::make_unique<endf::ResonanceCovariance>(*(orig.implicitParCov));
diff --git a/sammy/src/salmon/GridData.h b/sammy/src/salmon/GridData.h
index cc9ed05249742fb8a5bb4e7f4d2a833d4a99354b..f25064159532f5a387759165fa6e79a592591b16 100644
--- a/sammy/src/salmon/GridData.h
+++ b/sammy/src/salmon/GridData.h
@@ -31,7 +31,7 @@ namespace sammy{
    */
   class GridData {
      public:
-      GridData():dataIndex(-1), rowOffset(0), rowMax(0), notSetReturnsZero(false),accumulate(false){}
+      GridData():dataIndex(-1), rowOffset(0), rowMax(0), notSetReturnsZero(false),accumulate(false), numPerEner(1){}
       GridData(const GridData & orig);
       virtual ~GridData(){}
 
@@ -170,6 +170,20 @@ namespace sammy{
         */
        void reserve(int maxRow, int maxCol);
        void reserveColumn(int row, int maxCol);
+
+       /**
+        * Get the number of points per energy
+        *
+        * @return the points per energy
+        */
+       int getNumPerEnergy() const{ return numPerEner;}
+
+       /**
+        * Set the number of  points per energy
+        *
+        * @param n the points per energy
+        */
+       void setNumPerEnergy(int n) { numPerEner = n;}
      protected:
 
         std::vector< std::vector<double> > data;
@@ -182,6 +196,8 @@ namespace sammy{
         bool notSetReturnsZero;
         bool accumulate;
 
+        int numPerEner;
+
 
         // arrays for the implicit data covariance
         // covariance for the implicit parameters
diff --git a/sammy/src/salmon/SammyGridAccess.cpp b/sammy/src/salmon/SammyGridAccess.cpp
index d60bb719edce92a8d5ef4281abbd9ff4a5777f6f..8063b925c817bb8e4c83c0cc5c63d3df17d02dc4 100644
--- a/sammy/src/salmon/SammyGridAccess.cpp
+++ b/sammy/src/salmon/SammyGridAccess.cpp
@@ -2,12 +2,6 @@
 #include <exception>
 
 namespace sammy {
-   void SammyGridAccess::setParameters(int numcro, int ktzero){
-       this->numcro = numcro;
-       this->ktzero = ktzero;
-       if (this->numcro == 0) this->numcro = 1;
-   }
-
    void SammyGridAccess::setToExpGrid(const GridDataList & list){
        gridIndex = list.getExpGridIndex();
 
@@ -32,6 +26,7 @@ namespace sammy {
 
    int SammyGridAccess::getNumEnergies(const GridDataList & list) const{
        const std::unique_ptr<GridData> & grid = getGrid(list);
+       int numcro = grid->getNumPerEnergy();
        int ll = grid->getLength();
        ll /= numcro;
 
@@ -47,14 +42,11 @@ namespace sammy {
 
    double SammyGridAccess::getEnergy(int index, const GridDataList & list) const{
        const std::unique_ptr<GridData> & grid = getGrid(list);
+       int numcro = grid->getNumPerEnergy();
 
-       int ipos = 0;
-       if (gridIndex == list.getExpGridIndex() || list.getLength() == 1){
-            if (ktzero != 0){
-                if( numcro > 1) ipos = 2;
-                else            ipos = 1;
-            }
-       }
+       int ipos = grid->getDataColumn() - 1;
+       if (numcro > 1) ipos--;
+       if (ipos < 0) ipos = 0;
 
        int jj = index;
        if( useOffsets)  jj += grid->getRowOffset();
@@ -69,6 +61,7 @@ namespace sammy {
        int jj = index;
        if( useOffsets)  jj += grid->getRowOffset();
 
+       int numcro = grid->getNumPerEnergy();
        jj *= numcro;
 
        return grid->getData(jj, 0);
diff --git a/sammy/src/salmon/SammyGridAccess.h b/sammy/src/salmon/SammyGridAccess.h
index add19dcd97a67c93c4c22213d9ed6551ba556e46..dd384589406c95873c81623237a83d6da5e2908e 100644
--- a/sammy/src/salmon/SammyGridAccess.h
+++ b/sammy/src/salmon/SammyGridAccess.h
@@ -26,17 +26,10 @@ namespace sammy{
     class SammyGridAccess
     {
        public:
-         SammyGridAccess():numcro(1),ktzero(0),gridIndex(0),useOffsets(true){}
+         SammyGridAccess():gridIndex(0),useOffsets(true){}
+         SammyGridAccess(const SammyGridAccess & orig) = delete;
          virtual ~SammyGridAccess(){}
 
-         /**
-           * Set the values for numcro and ktzero.
-           * See class description for more info.
-           *
-           * @param numcro number of angles on the angle grid for each energy
-           * @param ktzero do we have an energy calibration applied
-           */
-          void setParameters(int numcro, int ktzero);
 
           /**
            * Indicate that this access is for the experimental grid
@@ -87,10 +80,6 @@ namespace sammy{
        private:
            const std::unique_ptr<GridData> & getGrid( const GridDataList & list) const;
 
-           int numcro;  // number of angles
-
-           int ktzero; // did we correct to time-of-flight
-
            int gridIndex;
 
            bool useOffsets;
diff --git a/sammy/src/salmon/interface/cix/GridData.cpp2f.xml b/sammy/src/salmon/interface/cix/GridData.cpp2f.xml
index 8fbc81c4ce1bd4566942e8fa82a7d7cdc19ac673..1e484fa6512b485d03c506488e25da49c821fdc5 100644
--- a/sammy/src/salmon/interface/cix/GridData.cpp2f.xml
+++ b/sammy/src/salmon/interface/cix/GridData.cpp2f.xml
@@ -33,6 +33,11 @@
        <param name="col" type="int"/>
       </method>
 
+      <method name="getNumPerEnergy" return_type="int"/>
+      <method name="setNumPerEnergy">
+          <param name="n" type="int"/>
+      </method>
+
       <method name="addImplicitDerivs">
          <param name="grid" type="GridData*"/>
       </method>
diff --git a/sammy/src/salmon/interface/cix/SammyGridAccess.cpp2f.xml b/sammy/src/salmon/interface/cix/SammyGridAccess.cpp2f.xml
index e25c6e7a3edb4c19ec757d346f151075e9231538..3d4f8da2c848a0de9c05d5d4802158a691f84f1f 100644
--- a/sammy/src/salmon/interface/cix/SammyGridAccess.cpp2f.xml
+++ b/sammy/src/salmon/interface/cix/SammyGridAccess.cpp2f.xml
@@ -3,10 +3,6 @@
     <using_namespace name="sammy"/>
 
     <class name="SammyGridAccess">
-      <method name="setParameters">
-         <param name="numcro" type="int"/>
-         <param name="ktzero" type="int"/>
-      </method>
       <method name="setToExpGrid">
          <param name="list" type="GridDataList"/>
       </method>
diff --git a/sammy/src/salmon/interface/cpp/GridDataInterface.cpp b/sammy/src/salmon/interface/cpp/GridDataInterface.cpp
index 9877ebd19a84170f01bd91f70f02d9d753b8d241..389eaa5721de9f89c252cea3b0bfa9716e80b60b 100644
--- a/sammy/src/salmon/interface/cpp/GridDataInterface.cpp
+++ b/sammy/src/salmon/interface/cpp/GridDataInterface.cpp
@@ -69,6 +69,16 @@ void GridData_reserve(void * GridData_ptr,int * row,int * col)
     ((GridData*)GridData_ptr)->reserve(*row,*col);
 }
 
+int GridData_getNumPerEnergy(void * GridData_ptr)
+{
+    return ((GridData*)GridData_ptr)->getNumPerEnergy();
+}
+
+void GridData_setNumPerEnergy(void * GridData_ptr,int * n)
+{
+    ((GridData*)GridData_ptr)->setNumPerEnergy(*n);
+}
+
 void GridData_addImplicitDerivs(void * GridData_ptr,GridData* grid)
 {
     std::unique_ptr<GridData> gridPtr(grid);
diff --git a/sammy/src/salmon/interface/cpp/GridDataInterface.h b/sammy/src/salmon/interface/cpp/GridDataInterface.h
index fb679a93e204f9b8b30b9f871441ea3d62e532d5..491caa7aa17aba9bca9ff56d9dffad9bcc2aebf0 100644
--- a/sammy/src/salmon/interface/cpp/GridDataInterface.h
+++ b/sammy/src/salmon/interface/cpp/GridDataInterface.h
@@ -26,6 +26,8 @@ void GridData_setRowMax(void * GridData_ptr,int * offset);
 void GridData_clearGrid(void * GridData_ptr);
 void GridData_nullify(void * GridData_ptr);
 void GridData_reserve(void * GridData_ptr,int * row,int * col);
+int GridData_getNumPerEnergy(void * GridData_ptr);
+void GridData_setNumPerEnergy(void * GridData_ptr,int * n);
 void GridData_addImplicitDerivs(void * GridData_ptr,GridData* grid);
 void* GridData_getImplicitDerivs(void * GridData_ptr);
 void GridData_addImplicitParCov(void * GridData_ptr,endf::ResonanceCovariance* cov);
diff --git a/sammy/src/salmon/interface/cpp/SammyGridAccessInterface.cpp b/sammy/src/salmon/interface/cpp/SammyGridAccessInterface.cpp
index a51df1dde85994b25fa17d091e011b35099f1088..0998a3ef5c982b16abab85661d147e9f066dc2ea 100644
--- a/sammy/src/salmon/interface/cpp/SammyGridAccessInterface.cpp
+++ b/sammy/src/salmon/interface/cpp/SammyGridAccessInterface.cpp
@@ -9,11 +9,6 @@
 #include <string.h>
 #include "SammyGridAccessInterface.h"
 using namespace sammy;
-void SammyGridAccess_setParameters(void * SammyGridAccess_ptr,int * numcro,int * ktzero)
-{
-    ((SammyGridAccess*)SammyGridAccess_ptr)->setParameters(*numcro,*ktzero);
-}
-
 void SammyGridAccess_setToExpGrid(void * SammyGridAccess_ptr,GridDataList * list)
 {
     ((SammyGridAccess*)SammyGridAccess_ptr)->setToExpGrid(*list);
diff --git a/sammy/src/salmon/interface/cpp/SammyGridAccessInterface.h b/sammy/src/salmon/interface/cpp/SammyGridAccessInterface.h
index ab7e97b3350cd00258151d8c5e4a36b432cc4f7a..7c00bfe95aa15901c1902eef0c655f6182d3913a 100644
--- a/sammy/src/salmon/interface/cpp/SammyGridAccessInterface.h
+++ b/sammy/src/salmon/interface/cpp/SammyGridAccessInterface.h
@@ -13,7 +13,6 @@ using namespace sammy;
 #ifdef __cplusplus
 extern "C" {
 #endif
-void SammyGridAccess_setParameters(void * SammyGridAccess_ptr,int * numcro,int * ktzero);
 void SammyGridAccess_setToExpGrid(void * SammyGridAccess_ptr,GridDataList * list);
 void SammyGridAccess_setToAuxGrid(void * SammyGridAccess_ptr,GridDataList * list);
 double SammyGridAccess_getEnergy(void * SammyGridAccess_ptr,int * index,GridDataList * list);
diff --git a/sammy/src/salmon/interface/fortran/GridData_I.f90 b/sammy/src/salmon/interface/fortran/GridData_I.f90
index 5630fa4a8b29e668574984734fb6fded66621d3d..0f8a1b98aab75b121f498b33f9a6b36ae0bc9a57 100644
--- a/sammy/src/salmon/interface/fortran/GridData_I.f90
+++ b/sammy/src/salmon/interface/fortran/GridData_I.f90
@@ -79,6 +79,18 @@ subroutine f_GridData_reserve(GridData_ptr, row,col ) BIND(C,name="GridData_rese
     integer(C_INT) :: row;
     integer(C_INT) :: col;
 end subroutine
+integer(C_INT) function f_GridData_getNumPerEnergy(GridData_ptr ) BIND(C,name="GridData_getNumPerEnergy")
+    use,intrinsic :: ISO_C_BINDING
+    implicit none
+    type(C_PTR), value :: GridData_ptr;
+end function
+subroutine f_GridData_setNumPerEnergy(GridData_ptr, n ) BIND(C,name="GridData_setNumPerEnergy")
+    use,intrinsic :: ISO_C_BINDING
+    implicit none
+    type(C_PTR), value :: GridData_ptr;
+    integer(C_INT) :: n;
+end subroutine
+
 subroutine f_GridData_addImplicitDerivs(GridData_ptr, grid ) BIND(C,name="GridData_addImplicitDerivs")
     use,intrinsic :: ISO_C_BINDING
     implicit none
diff --git a/sammy/src/salmon/interface/fortran/GridData_M.f90 b/sammy/src/salmon/interface/fortran/GridData_M.f90
index ad964fe6613e4f877f960db3344c0b45e7c88a71..feb75c5de470f92e8ce80b67185858d0762c47ce 100644
--- a/sammy/src/salmon/interface/fortran/GridData_M.f90
+++ b/sammy/src/salmon/interface/fortran/GridData_M.f90
@@ -25,6 +25,8 @@ type GridData
     procedure, pass(this) :: clearGrid => GridData_clearGrid
     procedure, pass(this) :: nullify => GridData_nullify
     procedure, pass(this) :: reserve => GridData_reserve
+    procedure, pass(this) :: getNumPerEnergy => GridData_getNumPerEnergy
+    procedure, pass(this) :: setNumPerEnergy => GridData_setNumPerEnergy
     procedure, pass(this) :: addImplicitDerivs => GridData_addImplicitDerivs
     procedure, pass(this) :: getImplicitDerivs => GridData_getImplicitDerivs
     procedure, pass(this) :: addImplicitParCov => GridData_addImplicitParCov
@@ -124,6 +126,18 @@ subroutine GridData_reserve(this, row, col)
     integer(C_INT)::col
     call f_GridData_reserve(this%instance_ptr, row,col)
 end subroutine
+function GridData_getNumPerEnergy(this) result(result2Return)
+    implicit none
+    class(GridData)::this
+    integer(C_INT):: result2Return
+    result2Return=f_GridData_getNumPerEnergy(this%instance_ptr)
+end function
+subroutine GridData_setNumPerEnergy(this, n)
+    implicit none
+    class(GridData)::this
+    integer(C_INT)::n
+    call f_GridData_setNumPerEnergy(this%instance_ptr, n)
+end subroutine
 subroutine GridData_addImplicitDerivs(this, grid)
     implicit none
     class(GridData)::this
diff --git a/sammy/src/salmon/interface/fortran/SammyGridAccess_I.f90 b/sammy/src/salmon/interface/fortran/SammyGridAccess_I.f90
index 346c298f63468cf03ad2f7f46f813b4a21c487ec..ba50151750f9a67a7cf217d0e0ef3ae342555ea8 100644
--- a/sammy/src/salmon/interface/fortran/SammyGridAccess_I.f90
+++ b/sammy/src/salmon/interface/fortran/SammyGridAccess_I.f90
@@ -9,13 +9,6 @@
 module SammyGridAccess_I
 use, intrinsic :: ISO_C_BINDING
 interface
-subroutine f_SammyGridAccess_setParameters(SammyGridAccess_ptr, numcro,ktzero ) BIND(C,name="SammyGridAccess_setParameters")
-    use,intrinsic :: ISO_C_BINDING
-    implicit none
-    type(C_PTR), value :: SammyGridAccess_ptr;
-    integer(C_INT) :: numcro;
-    integer(C_INT) :: ktzero;
-end subroutine
 subroutine f_SammyGridAccess_setToExpGrid(SammyGridAccess_ptr, list ) BIND(C,name="SammyGridAccess_setToExpGrid")
     use,intrinsic :: ISO_C_BINDING
     implicit none
diff --git a/sammy/src/salmon/interface/fortran/SammyGridAccess_M.f90 b/sammy/src/salmon/interface/fortran/SammyGridAccess_M.f90
index 9b9ad4778f02fbf2ec546b6d97355476040aab37..8518ab3088633f096f65177ada8f5036790bd4da 100644
--- a/sammy/src/salmon/interface/fortran/SammyGridAccess_M.f90
+++ b/sammy/src/salmon/interface/fortran/SammyGridAccess_M.f90
@@ -13,7 +13,6 @@ use GridData_M
 type SammyGridAccess
     type(C_PTR) :: instance_ptr=C_NULL_PTR
     contains
-    procedure, pass(this) :: setParameters => SammyGridAccess_setParameters
     procedure, pass(this) :: setToExpGrid => SammyGridAccess_setToExpGrid
     procedure, pass(this) :: setToAuxGrid => SammyGridAccess_setToAuxGrid
     procedure, pass(this) :: getEnergy => SammyGridAccess_getEnergy
@@ -24,13 +23,6 @@ type SammyGridAccess
     procedure, pass(this) :: destroy => SammyGridAccess_destroy
 end type SammyGridAccess
 contains
-subroutine SammyGridAccess_setParameters(this, numcro, ktzero)
-    implicit none
-    class(SammyGridAccess)::this
-    integer(C_INT)::numcro
-    integer(C_INT)::ktzero
-    call f_SammyGridAccess_setParameters(this%instance_ptr, numcro,ktzero)
-end subroutine
 subroutine SammyGridAccess_setToExpGrid(this, list)
     implicit none
     class(SammyGridAccess)::this
diff --git a/sammy/src/salmon/tests/SammyGridAccessTest.cpp b/sammy/src/salmon/tests/SammyGridAccessTest.cpp
index 3c5819684ab1bd95da751d5b0be2076eeb650f91..3652ab39e9fb689f04f14160b30a1781248be0c1 100644
--- a/sammy/src/salmon/tests/SammyGridAccessTest.cpp
+++ b/sammy/src/salmon/tests/SammyGridAccessTest.cpp
@@ -131,7 +131,15 @@ TEST(GridAcccesTest, twoGridsNoOffsetLimits){
           list.getGrid(1)->setRowMax(12);
 
           sammy::SammyGridAccess access;
-          access.setParameters(numcro, ktzero);
+          int nn = numcro;
+          if (nn <= 0) nn = 1;
+          list.getGrid(0)->setNumPerEnergy(nn);
+          list.getGrid(1)->setNumPerEnergy(nn);
+          nn = 1;
+          if (ktzero > 0) nn = 2;
+          if (numcro > 1) nn = 3;
+          list.getGrid(0)->setDataIndex(nn);
+          list.getGrid(1)->setDataIndex(nn);
           access.setToExpGrid(list);
           access.setUseOffset(false);
           testFirstGrid(access, list, ktzero);
@@ -164,7 +172,15 @@ TEST(GridAcccesTest, twoGridsNoOffset){
           list.setAuxGridIndex(1);
 
           sammy::SammyGridAccess access;
-          access.setParameters(numcro, ktzero);
+          int nn = numcro;
+          if (nn <= 0) nn = 1;
+          list.getGrid(0)->setNumPerEnergy(nn);
+          list.getGrid(1)->setNumPerEnergy(nn);
+          nn = 1;
+          if (ktzero > 0) nn = 2;
+          if (numcro > 1) nn = 3;
+          list.getGrid(0)->setDataIndex(nn);
+          list.getGrid(1)->setDataIndex(nn);
           access.setToExpGrid(list);
           testFirstGrid(access, list, ktzero);
 
@@ -198,7 +214,15 @@ TEST(GridAcccesTest, twoGridsOffset){
           list.setAuxGridIndex(1);
 
           sammy::SammyGridAccess access;
-          access.setParameters(numcro, ktzero);
+          int nn = numcro;
+          if (nn <= 0) nn = 1;
+          list.getGrid(0)->setNumPerEnergy(nn);
+          list.getGrid(1)->setNumPerEnergy(nn);
+          nn = 1;
+          if (ktzero > 0) nn = 2;
+          if (numcro > 1) nn = 3;
+          list.getGrid(0)->setDataIndex(nn);
+          list.getGrid(1)->setDataIndex(nn);
           access.setToExpGrid(list);
           testFirstGridOff(access, list, ktzero);
 
@@ -243,7 +267,15 @@ TEST(GridAcccesTest, oneGridsNoOffset){
           list.setAuxGridIndex(1);
 
           sammy::SammyGridAccess access;
-          access.setParameters(numcro, ktzero);
+          int nn = numcro;
+          if (nn <= 0) nn = 1;
+          list.getGrid(0)->setNumPerEnergy(nn);
+          list.getGrid(1)->setNumPerEnergy(nn);
+          nn = 1;
+          if (ktzero > 0) nn = 2;
+          if (numcro > 1) nn = 3;
+          list.getGrid(0)->setDataIndex(nn);
+          list.getGrid(1)->setDataIndex(nn);
           access.setToExpGrid(list);
           testFirstGrid(access, list, ktzero);
 
@@ -278,7 +310,15 @@ TEST(GridAcccesTest, oneGridsNoOffsetLimits){
 
           sammy::SammyGridAccess access;
           access.setUseOffset(false);
-          access.setParameters(numcro, ktzero);
+          int nn = numcro;
+          if (nn <= 0) nn = 1;
+          list.getGrid(0)->setNumPerEnergy(nn);
+          list.getGrid(1)->setNumPerEnergy(nn);
+          nn = 1;
+          if (ktzero > 0) nn = 2;
+          if (numcro > 1) nn = 3;
+          list.getGrid(0)->setDataIndex(nn);
+          list.getGrid(1)->setDataIndex(nn);
           access.setToExpGrid(list);
           testFirstGrid(access, list, ktzero);
 
@@ -311,7 +351,15 @@ TEST(GridAcccesTest, oneGridsOffset){
           list.setAuxGridIndex(1);
 
           sammy::SammyGridAccess access;
-          access.setParameters(numcro, ktzero);
+          int nn = numcro;
+          if (nn <= 0) nn = 1;
+          list.getGrid(0)->setNumPerEnergy(nn);
+          list.getGrid(1)->setNumPerEnergy(nn);
+          nn = 1;
+          if (ktzero > 0) nn = 2;
+          if (numcro > 1) nn = 3;
+          list.getGrid(0)->setDataIndex(nn);
+          list.getGrid(1)->setDataIndex(nn);
           access.setToExpGrid(list);
           testFirstGridOff(access, list, ktzero);
 
diff --git a/sammy/src/smc/msmc1.f b/sammy/src/smc/msmc1.f
index 04ea8814f1f5f10b845765d56f831ab6fa634d64..ec126b5480a9ae0a937339cacdf1db56136bd301 100755
--- a/sammy/src/smc/msmc1.f
+++ b/sammy/src/smc/msmc1.f
@@ -4,9 +4,7 @@ C  -------------------------------------------------------------------
 C
       SUBROUTINE Sigmax_smc (Ee, Ec, Et, Amux, Yield, Y0, Total,
      *   Captur, Ccclll, Poly, Dmu, Sssxxx, Sxxxxx, Xxxsss)
-      use EndfData_common_m
-      use fixedi_m, only : numcro
-      use ifwrit_m, only : ktzero
+      use EndfData_common_m      
       use SammyGridAccess_M
       IMPLICIT DOUBLE PRECISION (A-H,O-Z)
       INCLUDE 'msmc3.f'
@@ -23,8 +21,7 @@ C
       I3 = 1
       I4 = 1
 
-      call grid%initialize()
-      call grid%setParameters(numcro, ktzero)
+      call grid%initialize()     
       call grid%setToExpGrid(expData)
 C
 C *** Initialize random-number-generators
@@ -565,9 +562,7 @@ C
 C  -------------------------------------------------------------------
 C
       SUBROUTINE Output (Yield, Y0, Total, Captur)
-      use EndfData_common_m
-      use fixedi_m, only : numcro
-      use ifwrit_m, only : ktzero
+      use EndfData_common_m      
       use SammyGridAccess_M
       IMPLICIT DOUBLE PRECISION (A-H,O-Z)
       CHARACTER*50 Filees, Filexs, Title
@@ -577,7 +572,6 @@ C
       DIMENSION Yield(*), Y0(*), Total(*), Captur(*)
 
       call grid%initialize()
-      call grid%setParameters(numcro, ktzero)
       call grid%setToExpGrid(expData)
 C
       DO I=1,I2
diff --git a/sammy/src/ssm/mssm00.f90 b/sammy/src/ssm/mssm00.f90
index e4222a62f662e9a508dd6ebd0b6054100f6533e4..4d4cc17aebddd2dd1eb76b070aeea212c2b36590 100644
--- a/sammy/src/ssm/mssm00.f90
+++ b/sammy/src/ssm/mssm00.f90
@@ -15,7 +15,7 @@ module ssm_m
 !  tr090|tr052|tr078|tr076|tr095|tr188|tr046|tr099|tr189|tr045)
 !
       use fixedi_m, only : Jtheta, Jwwwww, K2reso, Kkkdex, Kkkrsl, &
-                           Ktheta, Ntheta, Nudwhi, Numcro, &
+                           Ktheta, Ntheta, Nudwhi,  &
                            Numder, Numorr, Numrpi
       use ifwrit_m, only : Jjjdop
       use exploc_common_m, only  : I_Ixciso
@@ -37,6 +37,7 @@ module ssm_m
       real(8):: Delthe
       integer(4):: Jthhhh, Kdatb, Kphi, Kthhhh, M1, M2, M3, M4, Maxx, Mx, Nd, &
                    Ndbl, Nf, Ng, Nh, Nnx, Nthhhh, Nx
+      type(GridData)::grid
 !
 !
       WRITE (6,99999)
@@ -115,8 +116,7 @@ module ssm_m
 ! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - >
 !
 !
-      Jwwwww = 8
-      Numcro = 1
+      Jwwwww = 8      
       Numder = 1
 
       call multScat%setNumTheta( Nthhhh )
diff --git a/sammy/src/ssm/mssm01.f90 b/sammy/src/ssm/mssm01.f90
index fb21bed0f0a28a6123f59496c30fdd5504969174..cb6f5e776fdaa6d445b3ea1d0611524ee8df4204 100644
--- a/sammy/src/ssm/mssm01.f90
+++ b/sammy/src/ssm/mssm01.f90
@@ -274,7 +274,7 @@ module ssm_1_m
 !
 ! *** Purpose -- Find next cross section, store values in appropriate places
 !
-      use fixedi_m, only : numUsedPar, Lllmax, numcro
+      use fixedi_m, only : numUsedPar, Lllmax
       use ifwrit_m
       use EndfData_common_m
       use SammyGridAccess_M
@@ -296,7 +296,6 @@ module ssm_1_m
       Istop = 0
 
       call grid%initialize()
-      call grid%setParameters(numcro, ktzero)
       call grid%setToAuxGrid(expData)
 
 
diff --git a/sammy/src/ssm/mssm03.f90 b/sammy/src/ssm/mssm03.f90
index 86f393a50d17697c38ff321935c6cf5bbc674917..882ef8e34233745d2abc5d9044e26af149c32de9 100644
--- a/sammy/src/ssm/mssm03.f90
+++ b/sammy/src/ssm/mssm03.f90
@@ -46,7 +46,6 @@ module ssm_3_m
       DATA Zero /0.0d0/, One /1.0d0/
 
       call grid%initialize()
-      call grid%setParameters(numcro, ktzero)
       call grid%setToAuxGrid(expData)
 !
       Itimes = 1
@@ -183,7 +182,6 @@ module ssm_3_m
       DATA Zero /0.0d0/, One /1.0d0/
 
       call grid%initialize()
-      call grid%setParameters(numcro, ktzero)
       call grid%setToAuxGrid(expData)
 !
       Itimes = 1
@@ -360,7 +358,6 @@ module ssm_3_m
       DATA Zero /0.0d0/, One /1.0d0/
 
       call grid%initialize()
-      call grid%setParameters(numcro, ktzero)
       call grid%setToAuxGrid(expData)
 
 !
@@ -540,7 +537,6 @@ module ssm_3_m
       DATA Zero /0.0d0/, One /1.0d0/
 
       call grid%initialize()
-      call grid%setParameters(numcro, ktzero)
       call grid%setToAuxGrid(expData)
 !
       Itimes = 1
@@ -724,7 +720,6 @@ module ssm_3_m
       DATA Zero /0.0d0/, One /1.0d0/
 
       call grid%initialize()
-      call grid%setParameters(numcro, ktzero)
       call grid%setToAuxGrid(expData)
 !
       Itimes = 1
diff --git a/sammy/src/ssm/mssm04.f90 b/sammy/src/ssm/mssm04.f90
index c3b6da90d5b124ef26130a6a9a43f36e430396ca..85a718dfbf068da0ebd20ab3ce95047683363994 100644
--- a/sammy/src/ssm/mssm04.f90
+++ b/sammy/src/ssm/mssm04.f90
@@ -55,7 +55,6 @@ module ssm_4_m
       DATA Zero /0.0d0/, One /1.0d0/
 
       call grid%initialize()
-      call grid%setParameters(numcro, ktzero)
       call grid%setToAuxGrid(expData)
 !
       Itimes = 1
@@ -252,7 +251,6 @@ module ssm_4_m
       DATA Zero /0.0d0/, One /1.0d0/
 
       call grid%initialize()
-      call grid%setParameters(numcro, ktzero)
       call grid%setToAuxGrid(expData)
 !
       Itimes = 1
@@ -451,7 +449,6 @@ module ssm_4_m
       DATA Zero /0.0d0/, One /1.0d0/
 
       call grid%initialize()
-      call grid%setParameters(numcro, ktzero)
       call grid%setToAuxGrid(expData)
 !
       Itimes = 1
@@ -653,7 +650,6 @@ module ssm_4_m
       DATA Zero /0.0d0/, One /1.0d0/
 
       call grid%initialize()
-      call grid%setParameters(numcro, ktzero)
       call grid%setToAuxGrid(expData)
 !
       Itimes = 1
diff --git a/sammy/src/ssm/mssm05.f90 b/sammy/src/ssm/mssm05.f90
index c19742da2268eef678415f612eb39ced2baaa603..35f23444dc1e41b5600804361698efc73f0e84f2 100644
--- a/sammy/src/ssm/mssm05.f90
+++ b/sammy/src/ssm/mssm05.f90
@@ -67,7 +67,6 @@ module ssm_5_m
       srcfile = "mssm05.f"
 
       call grid%initialize()
-      call grid%setParameters(numcro, ktzero)
       call grid%setToAuxGrid(expData)
 !
 !
@@ -385,7 +384,6 @@ module ssm_5_m
       srcfile = "mssm05.f"
 
       call grid%initialize()
-      call grid%setParameters(numcro, ktzero)
       call grid%setToAuxGrid(expData)
 !
 !
diff --git a/sammy/src/ssm/mssm06.f90 b/sammy/src/ssm/mssm06.f90
index 4ae785d8a42391d2215f5440c2c040763da77c3c..f6c6d875529e95bc1515ac76d26bc4537672930d 100644
--- a/sammy/src/ssm/mssm06.f90
+++ b/sammy/src/ssm/mssm06.f90
@@ -70,7 +70,6 @@ module ssm_6_m
       srcfile = "mssm06.f"
 
       call grid%initialize()
-      call grid%setParameters(numcro, ktzero)
       call grid%setToAuxGrid(expData)
 !
 !
@@ -379,7 +378,6 @@ module ssm_6_m
       srcfile = "mssm06.f"
 
       call grid%initialize()
-      call grid%setParameters(numcro, ktzero)
       call grid%setToAuxGrid(expData)
 !
 !
diff --git a/sammy/src/ssm/mssm07.f90 b/sammy/src/ssm/mssm07.f90
index 5a7681cbd21c368d350f7e68d7adf3b59ededc3f..8779855e3b6264e5c4b56cb809c0232e1a58f17b 100644
--- a/sammy/src/ssm/mssm07.f90
+++ b/sammy/src/ssm/mssm07.f90
@@ -72,7 +72,6 @@ module ssm_7_m
       srcfile = "mssm07.f"
 
       call grid%initialize()
-      call grid%setParameters(numcro, ktzero)
       call grid%setToAuxGrid(expData)
 
       Not_Quad = 0
@@ -437,7 +436,6 @@ module ssm_7_m
       srcfile = "mssm07.f"
 
       call grid%initialize()
-      call grid%setParameters(numcro, ktzero)
       call grid%setToAuxGrid(expData)
 !
 !
diff --git a/sammy/src/ssm/mssm08.f90 b/sammy/src/ssm/mssm08.f90
index 6835284089f12c7faee24a1a5201dab412410a24..d184f0f9ad883cb4bd9729d8624d34c3f89369ed 100644
--- a/sammy/src/ssm/mssm08.f90
+++ b/sammy/src/ssm/mssm08.f90
@@ -75,7 +75,6 @@ module ssm_8_m
       srcfile = "mssm08.f"
 
       call grid%initialize()
-      call grid%setParameters(numcro, ktzero)
       call grid%setToAuxGrid(expData)
 
       Non_Quad = 0   ! make sure it is initialized
@@ -416,7 +415,6 @@ module ssm_8_m
       srcfile = "mssm08.f"
 
       call grid%initialize()
-      call grid%setParameters(numcro, ktzero)
       call grid%setToAuxGrid(expData)
 !
 !
diff --git a/sammy/src/ssm/mssm09.f90 b/sammy/src/ssm/mssm09.f90
index 9a00d98b3da3b05aaa534a5b2dc8b374925a6640..05071700ca628e77f819cb5cff909636957eb797 100644
--- a/sammy/src/ssm/mssm09.f90
+++ b/sammy/src/ssm/mssm09.f90
@@ -12,9 +12,7 @@ module ssm_9_m
 ! ***                        I2=grid Number just below E2
 !
       use mdat9_m
-      use EndfData_common_m
-      use fixedi_m, only : numcro
-      use ifwrit_m, only : ktzero
+      use EndfData_common_m      
       use SammyGridAccess_M
       IMPLICIT none
 
@@ -30,7 +28,6 @@ module ssm_9_m
       DATA One /1.0d0/
 !
       call grid%initialize()
-      call grid%setParameters(numcro, ktzero)
       call grid%setToAuxGrid(expData)
 
       E = grid%getEnergy(Iie, expData)
@@ -74,7 +71,6 @@ module ssm_9_m
       DATA Zero /0.0d0/
 
       call grid%initialize()
-      call grid%setParameters(numcro, ktzero)
       call grid%setToAuxGrid(expData)
 !
       IF (Ientrp.NE.0) THEN
@@ -168,7 +164,6 @@ module ssm_9_m
       DATA Zero /0.0d0/, Half /0.5d0/
 
       call grid%initialize()
-      call grid%setParameters(numcro, ktzero)
       call grid%setToAuxGrid(expData)
 !
       Not_Quad = 0
@@ -352,9 +347,7 @@ module ssm_9_m
 ! *** Purpose -- Choose the next value of E' to be included in the
 ! ***            grid for integrating over mu
 !
-      use EndfData_common_m
-      use fixedi_m, only : numcro
-      use ifwrit_m, only : ktzero
+      use EndfData_common_m      
       use SammyGridAccess_M
       IMPLICIT none
 
@@ -368,7 +361,6 @@ module ssm_9_m
       type(SammyGridAccess)::grid
 
       call grid%initialize()
-      call grid%setParameters(numcro, ktzero)
       call grid%setToAuxGrid(expData)
 !
       J2 = 0
@@ -451,9 +443,7 @@ module ssm_9_m
       SUBROUTINE Talk (Kadd, Maxx, Em, Eb, Ea, Cosb, Cosa, Ggg, Gggnew, &
          J1, J3, Csx, Epx, Ggx, Emind, Emins, Eminr, Totsig,    &
          Ns, Niniso, Nnpar, N, Iso, Kwhich)
-      use EndfData_common_m
-      use fixedi_m, only : numcro
-      use ifwrit_m, only : ktzero
+      use EndfData_common_m      
       use SammyGridAccess_M
       IMPLICIT none
 
@@ -469,7 +459,6 @@ module ssm_9_m
       DIMENSION Csx(*), Epx(*), Ggx(*), Totsig(*)
 
       call grid%initialize()
-      call grid%setParameters(numcro, ktzero)
       call grid%setToAuxGrid(expData)
 
       WRITE (6,10100) Kadd, Maxx, Kwhich
diff --git a/sammy/src/ssm/mssm18.f90 b/sammy/src/ssm/mssm18.f90
index 20e9f45d674977a4de7dec81fc4df4919e235e17..d366b380b4db16e8ffd76471da471698a473b995 100644
--- a/sammy/src/ssm/mssm18.f90
+++ b/sammy/src/ssm/mssm18.f90
@@ -189,7 +189,6 @@ module ssm_18_m
       DATA Zero /0.0d0/, One /1.0d0/
 
       call grid%initialize()
-      call grid%setParameters(numcro, ktzero)
       call grid%setToAuxGrid(expData)
 !
       Y2dddd = Zero
@@ -298,7 +297,6 @@ module ssm_18_m
       SUBROUTINE Reorder_Energy (derivs,Kdatmn, Kdatmx, Kkkdat)
       use fixedi_m
       use EndfData_common_m
-      use ifwrit_m, only : ktzero
       use SammyGridAccess_M
       use DerivativeHandler_M
       implicit none
@@ -310,11 +308,9 @@ module ssm_18_m
 
       DATA Thous /1000.0d0/
       call grid%initialize()
-      call grid%setParameters(numcro, ktzero)
       call grid%setToExpGrid(expData)
       maxExp = grid%getNumEnergies(expData)
       call auxGrid%initialize()
-      call auxGrid%setParameters(numcro, ktzero)
       call auxGrid%setToAuxGrid(expData)
 
       Jj = 1
diff --git a/sammy/src/the/SumIsoAndConvertToTrans_M.f90 b/sammy/src/the/SumIsoAndConvertToTrans_M.f90
index c700e32bc7fbb8e4d6edc2037c0899441acbb1bc..bf13ae39b3b9b46d1a1680d6cd1fd196bb78c84e 100644
--- a/sammy/src/the/SumIsoAndConvertToTrans_M.f90
+++ b/sammy/src/the/SumIsoAndConvertToTrans_M.f90
@@ -14,6 +14,7 @@ module SumIsoAndConvertToTrans_M
    procedure, pass(this) :: destroy => SumIsoAndConvertToTrans_destroy
    procedure, pass(this) :: sumAndConvert => SumIsoAndConvertToTrans_sumAndConvert
    procedure, pass(this) :: normalize => SumIsoAndConvertToTrans_normalize
+   procedure, pass(this) :: angPostProcessing => SumIsoAndConvertToTrans_angPostProcessing
    end type
 contains
    subroutine SumIsoAndConvertToTrans_initialize(this, broad, datSelf, hasSelf)
@@ -119,6 +120,7 @@ contains
     real(kind=8)::em
 
     length = this%broadener%getLength()
+    call this%broadener%getData(crossData)
     IF ( this%Another_Process_Will_Happen) THEN
        jj  = 0
        if (this%haveSelf) jj = 1
@@ -127,7 +129,6 @@ contains
        return
     END IF
 
-    call this%broadener%getData(crossData)
     Iwarn = 0
     do Jj = 1, this%broadener%getNumEnergyBroadened()
         if (jj.gt.length) exit
@@ -165,4 +166,31 @@ contains
       END IF
     end subroutine
 
+    subroutine SumIsoAndConvertToTrans_angPostProcessing(this, numPar)
+    use exploc_common_m, only : A_Iprnbk, I_Iflnbk
+    use mxct27_m, only : Write_Cross_Sections
+    use fixedi_m, only : Numnbk
+    use lbro_common_m, only : Ynrmbk
+    use normalize_and_background
+    use AuxGridHelper_M
+    class(SumIsoAndConvertToTrans)::this
+    integer::numPar
+
+    integer::iso, Jdat, bStart
+    type(DerivativeHandler)::crossData
+    real(kind=8)::em
+
+    call this%broadener%getData(crossData)
+    IF (.NOT. this%Another_Process_Will_Happen.or.  &
+        .NOT. this%Need_Isotopes) THEN
+       call crossData%sumOverIsotopes(numPar+1)
+    END IF
+
+     if (.not.this%Another_Process_Will_Happen.and.Numnbk.gt.0.and.Ynrmbk) then
+       do Jdat = 1, this%broadener%getNumEnergyBroadened()          
+          em = this%broadener%getEnergyBroadened(Jdat)
+          CALL Norm (A_Iprnbk , I_Iflnbk, Em, Jdat, crossData, numPar)
+        end do
+     end if
+     end subroutine SumIsoAndConvertToTrans_angPostProcessing
 end module SumIsoAndConvertToTrans_M
diff --git a/sammy/src/the/mthe0.f90 b/sammy/src/the/mthe0.f90
index c3fb39413df1ed0ae21d4e79f19df1abc0a8c621..293486fb2e7e9250a86d4d770d892739ed51bd7a 100644
--- a/sammy/src/the/mthe0.f90
+++ b/sammy/src/the/mthe0.f90
@@ -7,11 +7,11 @@ module mthe0_M
 !
       SUBROUTINE Samthe_0
 !
-      use fixedi_m, only : K2reso, Nangle, Nres, Numiso, numcro, jwwwww
+      use fixedi_m, only : K2reso, Nangle, Nres, Numiso, jwwwww
       use ifwrit_m, only : Kdata, Kdecpl, Kfake, Kkkclq, Krmatx,  &
                            Ksolve, Ndatb, Ndat,                   &
                            Ilzero, Itzero, Kcros, Kssmsc,         &
-                           kwcoul, Kkkdop, Kpoten, ktzero,        &
+                           kwcoul, Kkkdop, Kpoten,                &
                            Ksindi, Kfake, Ks_Res
       use exploc_common_m
       use oopsch_common_m, only : Nowwww, Segmen
@@ -99,11 +99,9 @@ module mthe0_M
       call zeroKCalc%driver%calcData%setNnsig(nnnsig)
 
       ! set up the energy grid on which the data are calculated
-      call grid%initialize()
-      call grid%setParameters(numcro, ktzero)
+      call grid%initialize()      
       call grid%setToAuxGrid(expData)
-      call userGrid%initialize()
-      call userGrid%setParameters(numcro, ktzero)
+      call userGrid%initialize()      
       call userGrid%setToExpGrid(expData)
       call setAuxGridOffset(1) ! reset starting point for auxillary grid
       call setAuxGridRowMax(0)
diff --git a/sammy/src/the/mthe1.f90 b/sammy/src/the/mthe1.f90
index e94ccacaa4444418a86a33bc1d2e905ed9c60ebf..707d44401131e3919ec4f08dec06efc92ccbba9f 100644
--- a/sammy/src/the/mthe1.f90
+++ b/sammy/src/the/mthe1.f90
@@ -8,9 +8,8 @@ module mthe1_m
 !
 ! *** PURPOSE -- GENERATE   Nnpar, and Difmax
 !
-      use fixedi_m, only :  Numcro
       use fixedr_m, only : Emax, Emin
-      use ifwrit_m, only : Kdecpl, Kscut, Ksolve, ktzero, Ndat
+      use ifwrit_m, only : Kdecpl, Kscut, Ksolve, Ndat
       use broad_common_m, only : Dopple, Iesopr
       use EndfData_common_m
       use SammyResonanceInfo_M
@@ -38,8 +37,7 @@ module mthe1_m
       DATA Zero /0.0d0/, One /1.0d0/, Two /2.0d0/, Three /3.0d0/
 !
 !
-      call gridAccess%initialize()
-      call gridAccess%setParameters(numcro, ktzero)
+      call gridAccess%initialize()      
       call gridAccess%setToExpGrid(expData)
       call covData%clearIrrelevant()
 
diff --git a/sammy/src/udr/mudr1.f b/sammy/src/udr/mudr1.f
index 8fe30aaf5e4361440b0fd3d1b2fbedaa39ce11a4..e645e49a5affc886026aec4a33dc996597563d8e 100644
--- a/sammy/src/udr/mudr1.f
+++ b/sammy/src/udr/mudr1.f
@@ -11,9 +11,9 @@ C ***            AND DERIVATIVES
 C
       use fixedi_m, only : Nudeng, Nudtim,
      *                     Numbgf, Numbgf,
-     *                     Numnbk, Nudwhi, numcro, Ntepnt,
+     *                     Numnbk, Nudwhi, Ntepnt,
      *                     numUsedPar
-      use ifwrit_m, only : ktzero, Jjjdop, Kdebug
+      use ifwrit_m, only : Jjjdop, Kdebug
       use brdd_common_m, only : Ipk, Ipnts, Kc, Iup
       use mxct27_m
       use rsl3_m
@@ -38,8 +38,7 @@ C
       integer::I, Ienpk, Igbpk, Itime, J, Jcro, nauxMax
       integer::Jwhich, Minudr, Mndets, Now, numEl, Ipar, ns
 
-      call grid%initialize()
-      call grid%setParameters(numcro, ktzero)
+      call grid%initialize()      
       call grid%setToExpGrid(expData)
       numEl = grid%getNumEnergies(expData)
 
diff --git a/sammy/src/udr/mudr4.f b/sammy/src/udr/mudr4.f
index bb5d491f7ba32ccbd4fd037bb77101d203bddf05..a45b273275311f6f56ee1bdb59dfe3bb5b7511d4 100644
--- a/sammy/src/udr/mudr4.f
+++ b/sammy/src/udr/mudr4.f
@@ -10,13 +10,12 @@ C ***               grid  plus all the grid-points of the
 C ***               user-defined functions
 C *** Output  -- Array UdT_x of Dimension NudT_x
 C
-      use fixedi_m, only : Nudtim, Nudmax, Nudwhi, numcro, Numudr
+      use fixedi_m, only : Nudtim, Nudmax, Nudwhi, Numudr
       use fixedr_m, only : Dist
       use brdd_common_m, only : Ipnts, Kc
       use constn_common_m, only : Sm2
       use EndfData_common_m, only : expData
       use AuxGridHelper_M, only : getNumAuxGridPoints
-      use ifwrit_m, only : ktzero
       use SammyGridAccess_M
       use rsl6_m
       use Udreso_m, only : Ccc, Tlow, Tup, Www
@@ -33,8 +32,7 @@ C
       DATA Zero /0.0d0/, Half /0.5d0/, Four /4.0d0/      
 C
       T0 = Sm2*Dist/Dsqrt(Em)
-      call grid%initialize()
-      call grid%setParameters(numcro, ktzero)
+      call grid%initialize()      
       call grid%setToAuxGrid(expData)
 C *** First, find max & min t needed for broadening
       Tmin = T0
diff --git a/sammy/src/xct/mxct0.f90 b/sammy/src/xct/mxct0.f90
index e7011c0d1c97408a4430cc953fc6f97c3bb22ad1..3a007cb9a5e272686b731e9db5886ac48a8c7cb5 100644
--- a/sammy/src/xct/mxct0.f90
+++ b/sammy/src/xct/mxct0.f90
@@ -56,8 +56,6 @@ module xct_m
 ! --------------------------------------------------------------
 !
       SUBROUTINE Newdat (derivs)
-      use fixedi_m, only : numcro
-      use ifwrit_m, only : ktzero
       use SammyGridAccess_M
       use EndfData_common_m
       use DerivativeHandler_M
@@ -69,7 +67,6 @@ module xct_m
 
 !
       call grid%initialize()
-      call grid%setParameters(numcro, ktzero)
       call grid%setToAuxGrid(expData)
       numEl = grid%getNumEnergies(expData)
       X = 0.010
diff --git a/sammy/src/xct/mxct27.f90 b/sammy/src/xct/mxct27.f90
index 74bfab950d837142c909edbc4f7ef69c9c385503..e13a483822a2ca7bfa522213614de1b3384b8a03 100644
--- a/sammy/src/xct/mxct27.f90
+++ b/sammy/src/xct/mxct27.f90
@@ -36,8 +36,8 @@ module mxct27_m
 !
       SUBROUTINE Write_Cross_Sections (derivs, &
                       Kkkkkk, Kkkmin, If_W_Selfin, derivsSelf)
-      use fixedi_m, only : Montec, Ndasig,  numcro, numUsedPar
-      use ifwrit_m, only : Kksave, Kmsave, ktzero
+      use fixedi_m, only : Montec, Ndasig,  numUsedPar
+      use ifwrit_m, only : Kksave, Kmsave
       use cbro_common_m, only : Filein, Filout
       use SammyGridAccess_M
       use EndfData_common_m, only : expData
@@ -51,8 +51,7 @@ module mxct27_m
 !
       optional derivsSelf
       IF (Montec.EQ.1) THEN
-          call grid%initialize()
-          call grid%setParameters(numcro, ktzero)
+          call grid%initialize()          
           call grid%setToExpGrid(expData)
           niso = derivs%getUsedIsotopes()
 ! ***    Here to write files for use in Monte Carlo simulations
diff --git a/sammy/src/xxx/mxxx4.f90 b/sammy/src/xxx/mxxx4.f90
index afbe4e24547fd6c4f5d7559d801a6ad0fb8746fd..1ee7e2694b766ed53b03bbe1a908f0b8e20c64fc 100644
--- a/sammy/src/xxx/mxxx4.f90
+++ b/sammy/src/xxx/mxxx4.f90
@@ -60,7 +60,6 @@ module xxx4
 ! *** Pi90 = 28.647, Pi180=57.296
 !
       call grid%initialize()
-      call grid%setParameters(numcro, ktzero)
       call grid%setToExpGrid(expData)
       e1 = grid%getEnergy(1, expData)
       numEl = grid%getNumEnergies(expData)