diff --git a/src/trapping/cfrfme.cpp b/src/trapping/cfrfme.cpp
index e1a5f84d089ae7ac1299a3022f741431e17b6b30..0f7370e96d2d09d363e5218fbed9d2d39b572ffa 100644
--- a/src/trapping/cfrfme.cpp
+++ b/src/trapping/cfrfme.cpp
@@ -129,19 +129,19 @@ void frfme(string data_file, string output_path) {
       if (tt2 != NULL) {
 	vkv = tt2->get_vector();
 	vkzm = tt2->get_matrix();
-	apfafa = tt2->get_param("apfafa");
-	pmf = tt2->get_param("pmf");
-	spd = tt2->get_param("spd");
-	rir = tt2->get_param("rir");
-	ftcn = tt2->get_param("ftcn");
-	fshmx = tt2->get_param("fshmx");
-	vxyzmx = tt2->get_param("vxyzmx");
-	delxyz = tt2->get_param("delxyz");
-	vknmx = tt2->get_param("vknmx");
-	delk = tt2->get_param("delk");
-	delks = tt2->get_param("delks");
-	nlmmt = (int)tt2->get_param("nlmmt");
-	nrvc = (int)tt2->get_param("nrvc");
+	apfafa = tt2->apfafa;
+	pmf = tt2->pmf;
+	spd = tt2->spd;
+	rir = tt2->rir;
+	ftcn = tt2->ftcn;
+	fshmx = tt2->fshmx;
+	vxyzmx = tt2->vxyzmx;
+	delxyz = tt2->delxyz;
+	vknmx = tt2->vknmx;
+	delk = tt2->delk;
+	delks = tt2->delks;
+	nlmmt = tt2->nlmmt;
+	nrvc = tt2->nrvc;
       } else {
 	printf("ERROR: could not open TEMPTAPE2 file.\n");
       }
@@ -273,10 +273,10 @@ void frfme(string data_file, string output_path) {
 	long swap1_size, swap2_size, tfrfme_size;
 	double size_mb;
 	printf("INFO: calculating memory requirements\n");
-	swap1_size = Swap1::get_memory_requirement(lm, nkv);
+	swap1_size = Swap1::get_size(lm, nkv);
 	size_mb = 1.0 * swap1_size / 1024.0 / 1024.0;
 	printf("Swap 1: %.2lg MB\n", size_mb);
-	swap2_size = Swap2::get_memory_requirement(nkv);
+	swap2_size = Swap2::get_size(nkv);
 	size_mb = 1.0 * swap2_size / 1024.0 / 1024.0;
 	printf("Swap 2: %.2lg MB\n", size_mb);
 	tt2 = new Swap2(nkv);
@@ -374,13 +374,14 @@ void frfme(string data_file, string output_path) {
 #ifdef USE_NVTX
 	  nvtxRangePop();
 #endif
-	  dcomplex *vec_w = new dcomplex[nkv * nkv]();
-	  dcomplex **w = new dcomplex*[nkv];
-	  for (int wi = 0; wi < nkv; wi++) w[wi] = vec_w + wi * nkv;
 #ifdef USE_NVTX
 	  nvtxRangePush("j80 loop");
 #endif
+#pragma omp parallel for
 	  for (int j80 = jlmf; j80 <= jlml; j80++) {
+	    dcomplex *vec_w = new dcomplex[nkv * nkv]();
+	    dcomplex **w = new dcomplex*[nkv];
+	    for (int wi = 0; wi < nkv; wi++) w[wi] = vec_w + wi * nkv;
 	    int wk_index = 0;
 	    for (int jy50 = 0; jy50 < nkv; jy50++) {
 	      for (int jx50 = 0; jx50 < nkv; jx50++) {
@@ -419,9 +420,9 @@ void frfme(string data_file, string output_path) {
 		} // ix65 loop
 	      } // iy70 loop
 	    } // iz75 loop
+	    delete[] vec_w;
+	    delete[] w;
 	  } // j80 loop
-	  delete[] vec_w;
-	  delete[] w;
 #ifdef USE_NVTX
 	  nvtxRangePop();
 #endif