def __init__(self, recorder=None, config=None, relative=""):
        ''' initialization '''
        self.config = config

        ''' general settings '''
        self.subdirs = self.config['used_gestures'].split(',')
        self.nClasses = int(self.config['used_classes'])
        self.samples_per_frame = int(self.config['samples_per_frame'])

        ''' preprocessing settings '''
        self.slice_left = int(self.config['slice_left'])
        self.slice_right = int(self.config['slice_right'])
        self.wanted_frames = self.samples_per_frame - self.slice_left - self.slice_right
        self.framerange = int(self.config['framerange'])
        self.timeout = int(self.config['timeout'])
        self.smooth = float(self.config['smooth'])
        self.use_each_second = int(self.config['use_each_second'])
        self.threshold = float(self.config['threshold'])
        self.new_preprocess = self.config['new_preprocess'] in ["True", "true", "1"]

        ''' svm settings '''
        self.kernel = self.config['kernel']
        self.c = float(self.config['c'])
        self.gamma = float(self.config['gamma'])
        self.degree = int(self.config['degree'])
        self.coef0 = float(self.config['coef0'])

        ''' static settings '''
        self.gestures_path = os.path.join(os.path.dirname(__file__), '..', '..', '..', 'gestures')
        self.path = os.path.join(os.path.dirname(__file__), 'svm_trained.pkl')

        self.datalist = []
        self.datanum = 0
        self.gesturefound = 0
        self.gestureindex = 0

        self.X_train, self.Y_train = None, None

        ''' initialization methods '''
        self.classifier = self.load(self.path)

        # create dataloader instance
        self.dataloader = Dataloader(self.config)
        self.ref_frequency_frame = self.dataloader.load_ref_frequency_frame()
        self.dataloader.updatePreprocessorInstance(self.ref_frequency_frame)

        # create preprocessor instance
        self.preprocessor = Preprocessor(self.config, self.ref_frequency_frame)

        # create appstarter instance
        self.appstarter = Starter()