diff --git a/summit/multiview_platform/monoview_classifiers/bagged_spkm.py b/summit/multiview_platform/monoview_classifiers/bagged_spkm.py
index ebf32547b66d3ab0ceddfd5727ce6c716f71ea2e..44a0cd4b3ed2fe6f7bcac88a17056fbe2c354996 100644
--- a/summit/multiview_platform/monoview_classifiers/bagged_spkm.py
+++ b/summit/multiview_platform/monoview_classifiers/bagged_spkm.py
@@ -3,7 +3,7 @@ from sklearn.preprocessing import LabelBinarizer
 
 from imblearn.under_sampling import RandomUnderSampler
 
-from spkm.spkm_wrapper import SPKMlikeSklearn
+from spkm.spkm_wrapper import SPKMl2l1likeSklearn
 from spkm.kernels_and_gradients import RBFKernel, PolyKernel
 
 from ..monoview.monoview_utils import BaseMonoviewClassifier
@@ -13,28 +13,30 @@ from ..monoview_classifiers.spkm import SPKM
 classifier_class_name = "BaggedSPKM"
 proto=True
 
-class BaggedSPKM(BaseMonoviewClassifier, SPKMlikeSklearn):
+class BaggedSPKM(BaseMonoviewClassifier, SPKMl2l1likeSklearn):
 
     def __init__(self, random_state=42, n_u=2, kernel=RBFKernel(0.5),
-                 spkmregP=1, spkminit="randn",
-                 nspkminits=10, preprocessinglist=[0,1,2], **kwargs):
+                 spkmregP_01=1, spkminit="randn",
+                 nspkminits=10, preprocessinglist=[0,1,2],
+                 spkm_l1_regstyle="l1ball", **kwargs):
 
         SPKM.__init__(self, random_state=random_state,
                                          n_u=n_u,
                                          kernel=kernel,
-                                         spkmregP=spkmregP,
+                                         spkmregP_01=spkmregP_01,
                                          spkminit=spkminit,
                                          nspkminits=nspkminits,
-                                         preprocessinglist=preprocessinglist)
+                                         preprocessinglist=preprocessinglist,
+                                         spkm_l1_regstyle=spkm_l1_regstyle)
         self.rus = RandomUnderSampler(random_state=random_state)
 
     def fit(self, X, y):
         self.lb =  LabelBinarizer(pos_label=1, neg_label=-1)
         y = self.lb.fit_transform(y)
-        return SPKMlikeSklearn.fit(self, X, y[:,0],)
+        return SPKMl2l1likeSklearn.fit(self, X, y[:,0],)
 
     def predict(self, X, preprocess=True):
-        return self.lb.inverse_transform(np.sign(SPKMlikeSklearn.predict(self, X)))
+        return self.lb.inverse_transform(np.sign(SPKMl2l1likeSklearn.predict(self, X)))
 
     def get_interpretation(self, directory, base_file_name, labels, multiclass=False):
         u = self.feature_interpretability()
diff --git a/summit/multiview_platform/monoview_classifiers/scmboost.py b/summit/multiview_platform/monoview_classifiers/scmboost.py
index 2ed86500437228e54bff26bc1b93111b9b9a9fab..89f1e4b7a501d1de89b01351070cd6e999457d56 100644
--- a/summit/multiview_platform/monoview_classifiers/scmboost.py
+++ b/summit/multiview_platform/monoview_classifiers/scmboost.py
@@ -25,20 +25,22 @@ class SCMboost(AdaBoostClassifier, BaseMonoviewClassifier):
     """
 
     def __init__(self, random_state=None, n_estimators=50,
-                 base_estimator=SCM(p=0.49, max_rules=10, model_type="conjunction"),
+                 base_estimator=SCM(p=0.49, max_rules=1, model_type="conjunction"),
                   **kwargs):
         if "base_estimator__p" in kwargs:
             base_estimator.p = kwargs["base_estimator__p"]
         if "base_estimator__model_type" in kwargs:
             base_estimator.model_type = kwargs["base_estimator__model_type"]
+        if "base_estimator__max_rules" in kwargs:
+            base_estimator.max_rules = kwargs["base_estimator__max_rules"]
         AdaBoostClassifier.__init__(self,
                                     random_state=random_state,
                                     n_estimators=n_estimators,
                                     base_estimator=base_estimator,
                                     algorithm="SAMME",)
-        self.param_names = ["n_estimators", "base_estimator__p", "base_estimator__model_type"]
+        self.param_names = ["n_estimators", "base_estimator__p", "base_estimator__model_type", "base_estimator__max_rules"]
         self.classed_params = []
-        self.distribs = [CustomRandint(low=1, high=100), CustomUniform(loc=0, state=1), ["conjunction", "disjunction"]]
+        self.distribs = [CustomRandint(low=1, high=100), CustomUniform(loc=0, state=1), ["conjunction", "disjunction"], CustomRandint(low=1, high=20)]
         self.weird_strings = {}
 
 
diff --git a/summit/multiview_platform/monoview_classifiers/spkm.py b/summit/multiview_platform/monoview_classifiers/spkm.py
index 7c6f4c7ce1f59cdc8a0fc5819680d37c5216c74b..3d710131036be886411a69122d4787e438f3550c 100644
--- a/summit/multiview_platform/monoview_classifiers/spkm.py
+++ b/summit/multiview_platform/monoview_classifiers/spkm.py
@@ -1,36 +1,39 @@
 import numpy as np
 from sklearn.preprocessing import LabelBinarizer
 
-from spkm.spkm_wrapper import SPKMlikeSklearn
+from spkm.spkm_wrapper import SPKMl2l1likeSklearn
 from spkm.kernels_and_gradients import RBFKernel, PolyKernel
 
 from ..monoview.monoview_utils import BaseMonoviewClassifier
-from ..utils.hyper_parameter_search import CustomRandint
+from ..utils.hyper_parameter_search import CustomUniform
 from ..utils.dataset import get_samples_views_indices
 
 classifier_class_name = "SPKM"
 proto=True
 
-class SPKM(BaseMonoviewClassifier, SPKMlikeSklearn):
+class SPKM(BaseMonoviewClassifier, SPKMl2l1likeSklearn):
 
     def __init__(self, random_state=42, n_u=2, kernel=RBFKernel(0.5),
-                 spkmregP=1, spkminit="randn",
-                 nspkminits=10, preprocessinglist=[0,1,2], **kwargs):
+                 spkmregP_01=1, spkminit="randn",
+                 nspkminits=10, preprocessinglist=[0,1,2],
+                 spkm_l1_regstyle="l1ball",**kwargs):
 
-        SPKMlikeSklearn.__init__(self, random_state=random_state,
+        SPKMl2l1likeSklearn.__init__(self, random_state=random_state,
                                          n_u=n_u,
                                          kernel=kernel,
-                                         spkmregP=spkmregP,
+                                         spkmregP_01=spkmregP_01,
                                          spkminit=spkminit,
                                          nspkminits=nspkminits,
-                                         preprocessinglist=preprocessinglist)
-        self.param_names = ["n_u", "kernel", "spkmregP",
+                                         preprocessinglist=preprocessinglist,
+                                         spkm_l1_regstyle=spkm_l1_regstyle)
+        self.param_names = ["n_u", "kernel", "spkmregP_01",
                             "spkminit", "nspkminits", "preprocessinglist",
+                            "spkm_l1_regstyle",
                             "random_state"]
         self.distribs = [[2], [PolyKernel({"d":3, "r":1}), RBFKernel(0.5)],
-                         CustomRandint(-4,4, multiplier='e'),
+                         CustomUniform(),
                          ["data"],  [10],
-                         [[0,1],],
+                         [[0,1],], ["l1ball", "proxgd"]
                          [random_state],]
         self.more_than_two_views = False
         self.weird_strings = []
@@ -39,10 +42,10 @@ class SPKM(BaseMonoviewClassifier, SPKMlikeSklearn):
     def fit(self, X, y):
         self.lb =  LabelBinarizer(pos_label=1, neg_label=-1)
         y = self.lb.fit_transform(y)
-        return SPKMlikeSklearn.fit(self, X, y[:,0],)
+        return SPKMl2l1likeSklearn.fit(self, X, y[:,0],)
 
     def predict(self, X, preprocess=True):
-        return self.lb.inverse_transform(np.sign(SPKMlikeSklearn.predict(self, X)))
+        return self.lb.inverse_transform(np.sign(SPKMl2l1likeSklearn.predict(self, X)))
 
     def get_interpretation(self, directory, base_file_name, labels, multiclass=False):
         u = self.feature_interpretability()
diff --git a/summit/multiview_platform/multiview_classifiers/bagged_spkm_pw.py b/summit/multiview_platform/multiview_classifiers/bagged_spkm_pw.py
index 507984138f7d18e54b25b33e89771ed0aa3464a1..1541d33189b7584401e2d3c1047d6916a0f337f1 100644
--- a/summit/multiview_platform/multiview_classifiers/bagged_spkm_pw.py
+++ b/summit/multiview_platform/multiview_classifiers/bagged_spkm_pw.py
@@ -3,7 +3,7 @@ from sklearn.preprocessing import LabelBinarizer
 
 from imblearn.under_sampling import RandomUnderSampler
 
-from spkm.spkm_wrapper import pairwiseSPKMlikeSklearn
+from spkm.spkm_wrapper import pairwiseSPKMl2l1likeSklearn
 from spkm.kernels_and_gradients import RBFKernel, PolyKernel
 
 from ..multiview.multiview_utils import BaseMultiviewClassifier
@@ -16,16 +16,18 @@ classifier_class_name = "SampledPWSPKM"
 class SampledPWSPKM(PWSPKM,):
 
     def __init__(self, random_state=42, n_u=2, kernel1=RBFKernel(0.5),
-                 kernel2=RBFKernel(0.5), spkmregP=1, spkminit="randn",
-                 nspkminits=10, preprocessinglist=[0,1,2], **kwargs):
+                 kernel2=RBFKernel(0.5), spkmregP_01=1, spkminit="randn",
+                 nspkminits=10, preprocessinglist=[0,1,2], spkm_l1_regstyle="l1ball",
+                 **kwargs):
         PWSPKM.__init__(self, random_state=random_state,
                                          n_u=n_u,
                                          kernel1=kernel1,
                                          kernel2=kernel2,
-                                         spkmregP=spkmregP,
+                                         spkmregP_01=spkmregP_01,
                                          spkminit=spkminit,
                                          nspkminits=nspkminits,
-                                         preprocessinglist=preprocessinglist)
+                                         preprocessinglist=preprocessinglist,
+                                         spkm_l1_regstyle=spkm_l1_regstyle)
         self.rus = RandomUnderSampler(random_state=random_state)
 
     def fit(self, X, y, train_indices=None, view_indices=None):
@@ -46,4 +48,4 @@ class SampledPWSPKM(PWSPKM,):
                      for view_index in view_indices]
         self.rus.fit_resample(view_list[0], y[train_indices])
         resampled_list = [X[self.rus.sample_indices_, :] for X in view_list]
-        return pairwiseSPKMlikeSklearn.fit(self, resampled_list, y[train_indices,0][self.rus.sample_indices_],)
+        return pairwiseSPKMl2l1likeSklearn.fit(self, resampled_list, y[train_indices,0][self.rus.sample_indices_],)
diff --git a/summit/multiview_platform/multiview_classifiers/spkm_pw.py b/summit/multiview_platform/multiview_classifiers/spkm_pw.py
index 10ddd635b4e15399a74acf278100f5b3cc97f69d..1d791e79cd1fba0b104deb751d33d3248821534e 100644
--- a/summit/multiview_platform/multiview_classifiers/spkm_pw.py
+++ b/summit/multiview_platform/multiview_classifiers/spkm_pw.py
@@ -1,38 +1,41 @@
 import numpy as np
 from sklearn.preprocessing import LabelBinarizer
 
-from spkm.spkm_wrapper import pairwiseSPKMlikeSklearn
+from spkm.spkm_wrapper import pairwiseSPKMl2l1likeSklearn
 from spkm.kernels_and_gradients import RBFKernel, PolyKernel
 
 from ..multiview.multiview_utils import BaseMultiviewClassifier
-from ..utils.hyper_parameter_search import CustomRandint
+from ..utils.hyper_parameter_search import CustomUniform
 from ..utils.dataset import get_samples_views_indices
 
 classifier_class_name = "PWSPKM"
 
-class PWSPKM(BaseMultiviewClassifier, pairwiseSPKMlikeSklearn):
+class PWSPKM(BaseMultiviewClassifier, pairwiseSPKMl2l1likeSklearn):
 
     def __init__(self, random_state=42, n_u=2, kernel1=RBFKernel(0.5),
-                 kernel2=RBFKernel(0.5), spkmregP=1, spkminit="randn",
-                 nspkminits=10, preprocessinglist=[0,1,2], **kwargs):
+                 kernel2=RBFKernel(0.5), spkmregP_01=1, spkminit="randn",
+                 nspkminits=10, preprocessinglist=[0,1,2],
+                 spkm_l1_regstyle="l1ball", **kwargs):
         BaseMultiviewClassifier.__init__(self, random_state)
 
-        pairwiseSPKMlikeSklearn.__init__(self, random_state=random_state,
+        pairwiseSPKMl2l1likeSklearn.__init__(self, random_state=random_state,
                                          n_u=n_u,
                                          kernel1=kernel1,
                                          kernel2=kernel2,
-                                         spkmregP=spkmregP,
+                                         spkmregP_01=spkmregP_01,
                                          spkminit=spkminit,
                                          nspkminits=nspkminits,
-                                         preprocessinglist=preprocessinglist)
-        self.param_names = ["n_u", "kernel1", "kernel2", "spkmregP",
+                                         preprocessinglist=preprocessinglist,
+                                         spkm_l1_regstyle=spkm_l1_regstyle)
+        self.param_names = ["n_u", "kernel1", "kernel2", "spkmregP_01",
                             "spkminit", "nspkminits", "preprocessinglist",
+                            "spkm_l1_regstyle",
                             "random_state"]
         self.distribs = [[2], [PolyKernel({"d":3, "r":1}), RBFKernel(0.5)],
                          [PolyKernel({"d":3, "r":1}), RBFKernel(0.5)],
-                         CustomRandint(-4,4, multiplier='e'),
+                         CustomUniform(),
                          ["data"],  [10],
-                         [[0,1],],
+                         [[0,1],], ["l1ball", "proxgd"]
                          [random_state],]
         self.more_than_two_views = False
         self.random_state = random_state
@@ -40,7 +43,6 @@ class PWSPKM(BaseMultiviewClassifier, pairwiseSPKMlikeSklearn):
     def fit(self, X, y, train_indices=None, view_indices=None):
         self.lb =  LabelBinarizer(pos_label=1, neg_label=-1)
         y = self.lb.fit_transform(y)
-        print(np.unique(y))
         train_indices, view_indices = get_samples_views_indices(X,
                                                                  train_indices,
                                                                  view_indices)
@@ -53,7 +55,7 @@ class PWSPKM(BaseMultiviewClassifier, pairwiseSPKMlikeSklearn):
                            for view_index in view_indices]
         view_list = [X.get_v(view_index)[train_indices, :]
                      for view_index in view_indices]
-        return pairwiseSPKMlikeSklearn.fit(self, view_list, y[train_indices,0],)
+        return pairwiseSPKMl2l1likeSklearn.fit(self, view_list, y[train_indices,0],)
 
     def predict(self, X, sample_indices=None, view_indices=None):
         if self.more_than_two_views:
@@ -65,7 +67,7 @@ class PWSPKM(BaseMultiviewClassifier, pairwiseSPKMlikeSklearn):
 
         view_list = [X.get_v(view_index)[sample_indices, :]
                      for view_index in view_indices]
-        return self.lb.inverse_transform(np.sign(pairwiseSPKMlikeSklearn.predict(self, view_list)))
+        return self.lb.inverse_transform(np.sign(pairwiseSPKMl2l1likeSklearn.predict(self, view_list)))
 
     def get_interpretation(self, directory, base_file_name, labels, multiclass=False):
         u, v = self.feature_interpretability()