def load(filename, instruments = None):
        """
        loads an script instance using pickle
        Args:
            filename: source filename
            instruments:
                optional - only needed if script requires instruments
                dictionary of form

                instruments = {
                name_of_instrument_1 : instance_of_instrument_1,
                name_of_instrument_2 : instance_of_instrument_2,
                ...
                }
        Returns:
            script_instance
            updated_instruments
        """
        with open(filename, 'r') as infile:
            dataPickle = infile.read()

        script_as_dict = pickle.loads(dataPickle)
        script_class = script_as_dict['_script_class']

        script_instance, _, updated_instruments = Script.load_and_append({'script': script_class}, instruments = instruments)
        script_instance = script_instance['script']

        # save references to instruments
        instruments = script_instance._instruments

        # update the script instance
        script_instance.__dict__ = script_as_dict

        # update references to instruments
        script_instance._instruments = instruments

        return script_instance, updated_instruments