@staticmethod
def _organize_model(cls, model):
    """
        Instantiate the model with all hyper-parameters,
        set all model parameters and then return the model.

        Do not use directly. Use the designated classmethod to load a model.

        Parameters
        ----------
        cls : instance of model that inherits from `BaseModelPackage`
            a model instance

        model : dict
            Model dict containing hyper-parameters and model-parameters

        Returns
        -------
        model: instance of model that inherits from `BaseModelPackage`
            instance of the model class with hyper-parameters and
            model parameters set from the passed model dict
        """
    model_params = model.pop('model_params')
    hyper_params = model.pop('hyper_params')
    inst = cls(**hyper_params)
    for p in model_params.keys():
        setattr(inst, p, model_params[p])
    return inst
