diff --git a/src/classification/SVMWrapper.cpp b/src/classification/SVMWrapper.cpp
index 7a0c98a86ca49bfcd2ebcfc9180218130ea2785d..271c7be36d7eaff564eb273e7b0e3f167dc5f89a 100644
--- a/src/classification/SVMWrapper.cpp
+++ b/src/classification/SVMWrapper.cpp
@@ -64,6 +64,29 @@ SVMWrapper::SVMWrapper(const double C, const int n_class, const int n_dim, const
     SVMWrapper(C, n_class, n_dim, prop.size(), prop.data())
 {}
 
+SVMWrapper::SVMWrapper(const SVMWrapper& o):
+    _model(nullptr),
+    _y(o._y),
+    _y_est(o._y_est),
+    _coefs(o._coefs),
+    _intercept(o._intercept),
+    _w_remap(o._w_remap),
+    _b_remap(o._b_remap),
+    _map_prop_vals(o._map_prop_vals),
+    _C(o._C),
+    _n_dim(o._n_dim),
+    _n_samp(o._n_samp),
+    _n_class(o._n_class),
+    _n_misclassified(o._n_misclassified)
+{
+    setup_parameter_obj(_C);
+    setup_x_space();
+
+    _prob.l = _n_samp;
+    _prob.y = _y.data();
+    _prob.x = _x.data();
+}
+
 SVMWrapper::~SVMWrapper()
 {
     svm_destroy_param(&_param);
diff --git a/src/classification/SVMWrapper.hpp b/src/classification/SVMWrapper.hpp
index 8f412797b51625c2d954182fe192e0025162c150..038dc345ccd5bae4eb43f89b49803f56f0b10bcb 100644
--- a/src/classification/SVMWrapper.hpp
+++ b/src/classification/SVMWrapper.hpp
@@ -106,14 +106,14 @@ public:
      *
      * @param o The object to be copied
      */
-    SVMWrapper(const SVMWrapper& o) = default;
+    SVMWrapper(const SVMWrapper& o);
 
     /**
      * @brief The move constructor
      *
      * @param o The object to be moved
      */
-    SVMWrapper(SVMWrapper&& o) = default;
+    SVMWrapper(SVMWrapper&& o) = delete;
 
     /**
      * @brief The destructor for the SVMWrapper
diff --git a/src/loss_function/LossFunctionConvexHull.cpp b/src/loss_function/LossFunctionConvexHull.cpp
index 01ab3fe0784b407bcd95366809987777597ef2f7..6327408d942ded34eee4ad3d35534290c6462b24 100644
--- a/src/loss_function/LossFunctionConvexHull.cpp
+++ b/src/loss_function/LossFunctionConvexHull.cpp
@@ -261,7 +261,7 @@ double LossFunctionConvexHull::operator()(const std::vector<int>& inds)
     {
         n_convex_overlap += static_cast<double>(lp.get_n_overlap(inds));
     }
-    return n_convex_overlap;
+    return n_convex_overlap * _n_samp * _n_class;
 }
 
 double LossFunctionConvexHull::operator()(const std::vector<model_node_ptr>& feats)