move objects if possible
diff --git a/src/cpc_sketch_c_adapter.cpp b/src/cpc_sketch_c_adapter.cpp
index 0972ba2..c61ddd8 100644
--- a/src/cpc_sketch_c_adapter.cpp
+++ b/src/cpc_sketch_c_adapter.cpp
@@ -138,7 +138,7 @@
 
 void cpc_union_update(void* unionptr, const void* sketchptr) {
   try {
-    static_cast<cpc_union_pg*>(unionptr)->update(*static_cast<const cpc_sketch_pg*>(sketchptr));
+    static_cast<cpc_union_pg*>(unionptr)->update(std::move(*static_cast<const cpc_sketch_pg*>(sketchptr)));
   } catch (std::exception& e) {
     pg_error(e.what());
   }
diff --git a/src/frequent_strings_sketch_c_adapter.cpp b/src/frequent_strings_sketch_c_adapter.cpp
index edffc4f..b77e49c 100644
--- a/src/frequent_strings_sketch_c_adapter.cpp
+++ b/src/frequent_strings_sketch_c_adapter.cpp
@@ -115,7 +115,7 @@
 
 void frequent_strings_sketch_merge(void* sketchptr1, const void* sketchptr2) {
   try {
-    static_cast<frequent_strings_sketch*>(sketchptr1)->merge(*static_cast<const frequent_strings_sketch*>(sketchptr2));
+    static_cast<frequent_strings_sketch*>(sketchptr1)->merge(std::move(*static_cast<const frequent_strings_sketch*>(sketchptr2)));
   } catch (std::exception& e) {
     pg_error(e.what());
   }
diff --git a/src/hll_sketch_c_adapter.cpp b/src/hll_sketch_c_adapter.cpp
index 9d580ad..0010260 100644
--- a/src/hll_sketch_c_adapter.cpp
+++ b/src/hll_sketch_c_adapter.cpp
@@ -143,7 +143,7 @@
 
 void hll_union_update(void* unionptr, const void* sketchptr) {
   try {
-    static_cast<hll_union_pg*>(unionptr)->update(*static_cast<const hll_sketch_pg*>(sketchptr));
+    static_cast<hll_union_pg*>(unionptr)->update(std::move(*static_cast<const hll_sketch_pg*>(sketchptr)));
   } catch (std::exception& e) {
     pg_error(e.what());
   }
diff --git a/src/kll_float_sketch_c_adapter.cpp b/src/kll_float_sketch_c_adapter.cpp
index 7228b0d..721c359 100644
--- a/src/kll_float_sketch_c_adapter.cpp
+++ b/src/kll_float_sketch_c_adapter.cpp
@@ -55,7 +55,7 @@
 
 void kll_float_sketch_merge(void* sketchptr1, const void* sketchptr2) {
   try {
-    static_cast<kll_float_sketch*>(sketchptr1)->merge(*static_cast<const kll_float_sketch*>(sketchptr2));
+    static_cast<kll_float_sketch*>(sketchptr1)->merge(std::move(*static_cast<const kll_float_sketch*>(sketchptr2)));
   } catch (std::exception& e) {
     pg_error(e.what());
   }
diff --git a/src/theta_sketch_c_adapter.cpp b/src/theta_sketch_c_adapter.cpp
index 5622c48..0eb2185 100644
--- a/src/theta_sketch_c_adapter.cpp
+++ b/src/theta_sketch_c_adapter.cpp
@@ -177,7 +177,7 @@
 
 void theta_union_update(void* unionptr, const void* sketchptr) {
   try {
-    static_cast<theta_union_pg*>(unionptr)->update(*static_cast<const theta_sketch_pg*>(sketchptr));
+    static_cast<theta_union_pg*>(unionptr)->update(std::move(*static_cast<const theta_sketch_pg*>(sketchptr)));
   } catch (std::exception& e) {
     pg_error(e.what());
   }