def __init__(
        self,
        data,
        name="test",
        workdir="analysis-raxml", 
        *args, 
        **kwargs):

        # path attributes
        self._kwargs = {
            "f": "a", 
            "T": 4,  # <- change to zero !?
            "m": "GTRGAMMA",
            "N": 100,
            "x": 12345,
            "p": 54321,
            "o": None,
            "binary": "",
            }

        # update kwargs for user args and drop key if value is None
        self._kwargs.update(kwargs)
        self._kwargs = {i: j for (i, j) in self._kwargs.items() if j is not None}

        # check workdir
        if workdir:
            workdir = os.path.abspath(os.path.expanduser(workdir))
        else:
            workdir = os.path.abspath(os.path.curdir)
        if not os.path.exists(workdir):
            os.makedirs(workdir)

        # store entered args in params object
        self.params = Params()
        self.params.n = name
        self.params.w = workdir
        self.params.s = os.path.abspath(os.path.expanduser(data))

        # if arg append kwargs to top of list of binaries to search for
        binaries = _get_binary_paths()
        if self._kwargs["binary"]:
            binaries = [self._kwargs["binary"]] + binaries

        # sefind a binary from the list
        self.params.binary = _check_binaries(binaries)

        # set params 
        notparams = set(["workdir", "name", "data", "binary"])
        for key in set(self._kwargs.keys()) - notparams:
            self.params[key] = self._kwargs[key]

        # attributesx
        self.rasync = None
        self.stdout = None
        self.stderr = None

        # results files        
        self.trees = Params()
        self.trees.bestTree = OPJ(workdir, "RAxML_bestTree." + name)
        self.trees.bipartitionsBranchLabels = OPJ(workdir, "RAxML_bipartitionsBranchLabels." + name)
        self.trees.bipartitions = OPJ(workdir, "RAxML_bipartitions." + name)
        self.trees.bootstrap = OPJ(workdir, "RAxML_bootstrap." + name)
        self.trees.info = OPJ(workdir, "RAxML_info." + name)