diff --git a/src/shared/drivers/canbus/CanProtocol/CanProtocol.cpp b/src/shared/drivers/canbus/CanProtocol/CanProtocol.cpp
index a58beed636eede8a6ca3be391db3033ccb0dd14d..c17b89b1e73b5396993a64215c1c8a34bd7384cd 100644
--- a/src/shared/drivers/canbus/CanProtocol/CanProtocol.cpp
+++ b/src/shared/drivers/canbus/CanProtocol/CanProtocol.cpp
@@ -32,7 +32,7 @@ namespace Canbus
 
 CanProtocol::CanProtocol(CanbusDriver* can, MsgHandler onReceive,
                          miosix::Priority threadPriority)
-    : can(can), onReceive(onReceive), threadPriority(threadPriority)
+    : can(can), onReceive(std::move(onReceive)), threadPriority(threadPriority)
 {
 }
 
diff --git a/src/shared/drivers/canbus/CanProtocol/CanProtocol.h b/src/shared/drivers/canbus/CanProtocol/CanProtocol.h
index 0f437a53d53025922eaa34ec4de3224736d7c17a..128d23a6ea0eb27d8344d722693ba12ca13d1a04 100644
--- a/src/shared/drivers/canbus/CanProtocol/CanProtocol.h
+++ b/src/shared/drivers/canbus/CanProtocol/CanProtocol.h
@@ -47,7 +47,7 @@ namespace Canbus
  */
 class CanProtocol
 {
-    using MsgHandler = std::function<void(CanMessage data)>;
+    using MsgHandler = std::function<void(const CanMessage& data)>;
 
 public:
     /**