Sets up intermediates and specifies whether it's an electrochemical step.
        Either provide individual contributions or net contributions. If both are given,
        only the net contributions are used.

        intermediate_list: list of basestrings
        transition_states: list of True and False
        electrochemical_steps: list of True and False
        betas = list of charge transfer coefficients
        net_corrections: A sum of all contributions per intermediate.

def set_intermediates(self, intermediates, betas=None, transition_states=None):
        """Sets up intermediates and specifies whether it's an electrochemical step.
        Either provide individual contributions or net contributions. If both are given,
        only the net contributions are used.

        intermediate_list: list of basestrings
        transition_states: list of True and False
        electrochemical_steps: list of True and False
        betas = list of charge transfer coefficients
        net_corrections: A sum of all contributions per intermediate.
        """
        self.intermediates = intermediates
        self.betas = betas
        self.transition_states = transition_states

        if self.corrections is None:
            self.net_corrections = [0.0 for _ in intermediates]

        if not self.betas:
            self.betas = [0.0 for _ in intermediates]

        if not self.transition_states:
            self.transition_states = [False for _ in intermediates]

        # check if all lists have same length:
        props = [len(self.intermediates), len(self.net_corrections), len(self.transition_states),
                 len(self.betas)]
        if not len(set(props)) <= 1:
            raise ValueError('intermediate, net_corrections, transition_states and , '
                             'betas all have to have the same length')

        self.get_corrections()
        return(True)