diff --git a/examples/scikit-learn/configs/voting_classifier.json b/examples/scikit-learn/configs/voting_classifier.json
index 612d519..48efa90 100644
--- a/examples/scikit-learn/configs/voting_classifier.json
+++ b/examples/scikit-learn/configs/voting_classifier.json
@@ -1,8 +1,10 @@
 {
-    "@type": "sklearn-model",
-    "@model": "ensemble.VotingClassifier",
-    "estimators": [
-        ["rfc", {"@type": "sklearn-model", "@model": "ensemble.RandomForestClassifier", "n_estimators": 10}],
-        ["svc", {"@type": "sklearn-model", "@model": "svm.SVC", "gamma": "scale"}]
-    ]
+    "model": {
+        "@type": "sklearn-model",
+        "@model": "ensemble.VotingClassifier",
+        "estimators": [
+            ["rfc", {"@type": "sklearn-model", "@model": "ensemble.RandomForestClassifier", "n_estimators": 10}],
+            ["svc", {"@type": "sklearn-model", "@model": "svm.SVC", "gamma": "scale"}]
+        ]
+    }
 }
diff --git a/examples/scikit-learn/iris.py b/examples/scikit-learn/iris.py
index 1aad17f..b254b37 100644
--- a/examples/scikit-learn/iris.py
+++ b/examples/scikit-learn/iris.py
@@ -1,4 +1,5 @@
 import typing as tp
+import copy
 import importlib
 
 import colt
@@ -15,27 +16,24 @@ ex = logexp.Experiment("sklearn-iris")
 
 
 @colt.register("sklearn-model")
-class SklearnModelBuilder:
+class SklearnModelWrapper(sklearn.base.BaseEstimator):
     def __init__(self, **kwargs) -> None:
-        model_path = kwargs.pop("@model")
-        self._model = self._get_model_from_sklearn(model_path)
-        self._params = kwargs
+        print(kwargs)
+        kwargs = copy.deepcopy(kwargs)
 
-    def get_model(self):
-        return self._model(**self._params)
-
-    @staticmethod
-    def _get_model_from_sklearn(model_path: str) -> tp.Any:
-        model_path = "sklearn." + model_path
+        model_path = "sklearn." + kwargs.pop("@model")
         module_path, model_name = model_path.rsplit(".", 1)
 
         module = importlib.import_module(module_path)
-        model = getattr(module, model_name)
+        model_cls = getattr(module, model_name)
 
-        if isinstance(model, sklearn.base.BaseEstimator):
+        if not issubclass(model_cls, sklearn.base.BaseEstimator):
             raise ValueError(f"{model_path} is not an estimator.")
 
-        return model
+        self._model = model_cls(**kwargs)
+
+    def __getattr__(self, key: str) -> tp.Any:
+        return getattr(self._model, key)
 
 
 @ex.worker("sklearn-trainer")
@@ -51,6 +49,9 @@ class TrainSklearnModel(logexp.BaseWorker):
 
     def run(self):
         logger.info("load iris dataset")
+        print(self.model)
+
+        model = colt.build(self.model)
 
         iris = load_iris()
         X, y = iris.data, iris.target
@@ -60,8 +61,6 @@ class TrainSklearnModel(logexp.BaseWorker):
 
         logger.info(f"dataset size: train={len(X_train)}, valid={len(X_valid)}")
 
-        model = colt.build(self.model).get_model()
-
         logger.info("start training")
 
         model.fit(X_train, y_train)