diff --git a/alib2data/src/label/LabelPairLabel.cpp b/alib2data/src/label/LabelPairLabel.cpp
index 965950b5897339abe22d5be6bc0d93d56147ec61..50dd7391a7cdc1b0afcf8be10a8596e2cdbbbedd 100644
--- a/alib2data/src/label/LabelPairLabel.cpp
+++ b/alib2data/src/label/LabelPairLabel.cpp
@@ -11,7 +11,11 @@
 
 namespace label {
 
-LabelPairLabel::LabelPairLabel(std::pair<Label, Label> label) : label(label) {
+LabelPairLabel::LabelPairLabel(const std::pair<Label, Label>& label) : label(std::move(label)) {
+
+}
+
+LabelPairLabel::LabelPairLabel(std::pair<Label, Label>&& label) : label(std::move(label)) {
 
 }
 
diff --git a/alib2data/src/label/LabelPairLabel.h b/alib2data/src/label/LabelPairLabel.h
index 3eab974e0296dc04c7cb0fbc11bd8faaf4e29048..eed88ccdce137cee81a78721b3174205207c0f2f 100644
--- a/alib2data/src/label/LabelPairLabel.h
+++ b/alib2data/src/label/LabelPairLabel.h
@@ -32,7 +32,8 @@ public:
 	 * Creates new symbol with given name.
 	 * @param symbol name of the symbol
 	 */
-	explicit LabelPairLabel(std::pair<Label, Label> label);
+	explicit LabelPairLabel(const std::pair<Label, Label>& label);
+	explicit LabelPairLabel(std::pair<Label, Label>&& label);
 
 	virtual bool operator<(const alib::ObjectBase& other) const;
 
diff --git a/alib2data/src/label/LabelSetLabel.cpp b/alib2data/src/label/LabelSetLabel.cpp
index 3ee80e4b4931a9eece77053c1f5e408d4b002a22..45e00debe492680de95b89be5d215399121c799b 100644
--- a/alib2data/src/label/LabelSetLabel.cpp
+++ b/alib2data/src/label/LabelSetLabel.cpp
@@ -11,7 +11,11 @@
 
 namespace label {
 
-LabelSetLabel::LabelSetLabel(std::set<Label> label) : label(label) {
+LabelSetLabel::LabelSetLabel(const std::set<Label>& label) : label(label) {
+
+}
+
+LabelSetLabel::LabelSetLabel(std::set<Label>&& label) : label(std::move(label)) {
 
 }
 
diff --git a/alib2data/src/label/LabelSetLabel.h b/alib2data/src/label/LabelSetLabel.h
index 51281a7a14d1d427f62c40e8acfd20c358e5a10b..d8866ea19726083693d1406b0badadcd519a0ce9 100644
--- a/alib2data/src/label/LabelSetLabel.h
+++ b/alib2data/src/label/LabelSetLabel.h
@@ -32,7 +32,8 @@ public:
 	 * Creates new symbol with given name.
 	 * @param symbol name of the symbol
 	 */
-	explicit LabelSetLabel(std::set<Label> label);
+	explicit LabelSetLabel(const std::set<Label>& label);
+	explicit LabelSetLabel(std::set<Label>&& label);
 
 	virtual bool operator<(const alib::ObjectBase& other) const;