diff --git a/src/THcCherenkov.cxx b/src/THcCherenkov.cxx
index cd3d90001c7963bbceaf96a3ab7de8c1b1f67a67..33960c9a7a4b3f6d2650c44481843586581945fd 100644
--- a/src/THcCherenkov.cxx
+++ b/src/THcCherenkov.cxx
@@ -173,9 +173,11 @@ Int_t THcCherenkov::ReadDatabase( const TDatime& date )
   string prefix = string(GetApparatus()->GetName()).substr(0, 1) + GetName();
   std::transform(prefix.begin(), prefix.end(), prefix.begin(), ::tolower);
 
-  string parname = prefix + "_tot_pmts";
-
-  fNelem = (Int_t)gHcParms->Find(parname.c_str())->GetValue(); // class.
+  DBRequest list_1[] = {
+    {"_tot_pmts", &fNelem, kInt},
+    {0}
+  };
+  gHcParms->LoadParmValues(list_1, prefix.c_str());
 
   //    fNelem = 2;      // Default if not defined
   fCerNRegions = 3;
diff --git a/src/THcRaster.cxx b/src/THcRaster.cxx
index 54e3bf637c6c6fba5782530d6af2c760ab7355a3..9df716e717f2c7ae5fa39510e190ef60be17aec2 100644
--- a/src/THcRaster.cxx
+++ b/src/THcRaster.cxx
@@ -283,7 +283,13 @@ Int_t THcRaster::Decode( const THaEvData& evdata )
 //_____________________________________________________________________________
 Int_t THcRaster::Process( ){
 
-  Double_t eBeam = 0.001;
+	Double_t eBeam = 0.001;
+  DBRequest list[] = {
+    {"gpbeam", &eBeam, kDouble, 0, 1},
+    {0}
+  };
+  gHcParms->LoadParmValues(list);
+
   /*
     calculate raster position from ADC value.
     From ENGINE/g_analyze_misc.f -
@@ -304,9 +310,6 @@ Int_t THcRaster::Process( ){
     gfry = (gfry_adc/gfry_adcpercm)*(gfr_cal_mom/ebeam)
   */
 
-  if(gHcParms->Find("gpbeam")){
-    eBeam=*(Double_t *)gHcParms->Find("gpbeam")->GetValuePointer();
-  }
   fXpos = (fXADC/fFrXADCperCM)*(fFrCalMom/eBeam);
   fYpos = (fYADC/fFrYADCperCM)*(fFrCalMom/eBeam);
 
diff --git a/src/THcScintillatorPlane.cxx b/src/THcScintillatorPlane.cxx
index fb9a24dc50688b1e12e44e4e56230cf893fc8d9e..9018575e1ca9c64c520189a569a5558f8c9901fc 100644
--- a/src/THcScintillatorPlane.cxx
+++ b/src/THcScintillatorPlane.cxx
@@ -175,18 +175,18 @@ Int_t THcScintillatorPlane::ReadDatabase( const TDatime& date )
 
   //  static const char* const here = "ReadDatabase()";
   char prefix[2];
-  char parname[100];
 
   prefix[0]=tolower(GetParent()->GetPrefix()[0]);
   prefix[1]='\0';
 
   // need this further down so read them first! GN
-  strcpy(parname,prefix);
-  strcat(parname,"scin_");
-  strcat(parname,GetName());
-  strcat(parname,"_nr");
-  fNelem = *(Int_t *)gHcParms->Find(parname)->GetValuePointer();
-  //
+  string parname = "scin_" + string(GetName()) + "_nr";
+  DBRequest list_1[] = {
+    {parname.c_str(), &fNelem, kInt},
+    {0}
+  };
+  gHcParms->LoadParmValues(list_1, prefix);
+
   // Based on the signs of these quantities in the .pos file the correspondence
   // should be bot=>left  and top=>right when comparing x and y-type scintillators
   char tmpleft[6], tmpright[6];