diff --git a/include/maxwell_interface.h b/include/maxwell_interface.h
index f5485d59b49ea33f544f9933f25d2be531b9dab1..2e7af8af5c06e062ac36944f1bf8dc5415840fc8 100644
--- a/include/maxwell_interface.h
+++ b/include/maxwell_interface.h
@@ -295,11 +295,11 @@ struct solver_state_gpu
     device_vector<double>               Jy_src_gpu_buf;
     device_vector<double>               Jz_src_gpu_buf;
 
-    field_gpu                           bndsrcs;
-    field_gpu                           bndsrcs_buf;
+    field_gpu                           bndsrcs;        /* Not compressed */
+    field_gpu                           bndsrcs_buf;    /* Compressed */
 
-    field                               bndsrcs_decomp_cpu;
-    pinned_field                        bndsrcs_cpu;
+    field                               bndsrcs_decomp_cpu; /* Not compressed */
+    pinned_field                        bndsrcs_cpu;        /* Compressed */
 
     std::vector<size_t>                 bndsrcs_decomp_table_cpu;
     device_vector<size_t>               bndsrcs_decomp_table;
@@ -317,7 +317,7 @@ void export_fields_to_silo(const model&, const solver_state&, const parameter_lo
 void timestep(solver_state&, const parameter_loader&, time_integrator_type);
 void prepare_sources(const model&, maxwell::solver_state&, maxwell::parameter_loader&);
 void do_sources(const model&, maxwell::solver_state&, maxwell::parameter_loader&);
-void swap(maxwell::solver_state&);
+void swap(maxwell::solver_state&, const parameter_loader&);
 
 #ifdef ENABLE_GPU_SOLVER
 void init_from_model(const model&, solver_state_gpu&);
@@ -327,7 +327,7 @@ void export_fields_to_silo(const model&, const solver_state_gpu&, const paramete
 void timestep(solver_state_gpu&, const parameter_loader&, time_integrator_type);
 void prepare_sources(const model&, maxwell::solver_state_gpu&, maxwell::parameter_loader&);
 void do_sources(const model&, maxwell::solver_state_gpu&, maxwell::parameter_loader&);
-void swap(maxwell::solver_state_gpu&);
+void swap(maxwell::solver_state_gpu&, const parameter_loader&);
 #endif /* ENABLE_GPU_SOLVER */
 
 void init_boundary_conditions(const model&, const parameter_loader&, vecxd&);
diff --git a/src/maxwell_cpu.cpp b/src/maxwell_cpu.cpp
index 4adfdecb5bfe840d586f9a69d6f5cd6927f13edb..f826dbb290d819cc107880f637d37338f5d51518 100644
--- a/src/maxwell_cpu.cpp
+++ b/src/maxwell_cpu.cpp
@@ -585,7 +585,7 @@ prepare_sources(const model& mod, maxwell::solver_state& state,
 }
 
 void
-swap(maxwell::solver_state& state)
+swap(maxwell::solver_state& state, const parameter_loader&)
 {
     std::swap(state.emf_curr, state.emf_next);
 }
diff --git a/src/maxwell_gpu.cpp b/src/maxwell_gpu.cpp
index df2409056898526477370ed1c13c0373da9fa769..390cbbc31b3ed102dd1f3fb4399e52d5c0a1dc66 100644
--- a/src/maxwell_gpu.cpp
+++ b/src/maxwell_gpu.cpp
@@ -540,13 +540,13 @@ do_sources(const model& mod, maxwell::solver_state_gpu& state,
 }
 
 void
-swap(solver_state_gpu& state)
+swap(solver_state_gpu& state, const parameter_loader& mpl)
 {
     checkGPU( gpuDeviceSynchronize() );
 
-    //auto be = mpl.boundary_sources_enabled();
-    //auto ie = mpl.interface_sources_enabled()
-    //if ( be or ie )
+    auto be = mpl.boundary_sources_enabled();
+    auto ie = mpl.interface_sources_enabled();
+    if ( be or ie )
         decompress_bndsrc(state, state.bndsrcs_buf, state.bndsrcs);
     
     std::swap(state.Jx_src_gpu, state.Jx_src_gpu_buf);
diff --git a/src/maxwell_solver.cpp b/src/maxwell_solver.cpp
index 78c09f6c7d4164897e9e0513c29d42c8f1e35070..fcd32d4e217562a5676ae73679441ca7909f5da1 100644
--- a/src/maxwell_solver.cpp
+++ b/src/maxwell_solver.cpp
@@ -100,7 +100,7 @@ void test_it(const model& mod, State& state, maxwell::parameter_loader& mpl)
         if (i%silo_output_rate == 0)
             export_fields_to_silo(mod, state, mpl);
 
-        swap(state);
+        swap(state, mpl);
 
         if (i%cycle_print_rate == 0)
         {