def load_and_append(instrument_dict, instruments=None, raise_errors=False):
        if instruments is None:
            instruments = {}
        updated_instruments = {}
        updated_instruments.update(instruments)
        loaded_failed = {}
        for instrument_name, instrument_class_name in instrument_dict.items():
            instrument_settings = None
            module = None
            if instrument_name in list(instruments.keys()) \
                    and instrument_class_name == instruments[instrument_name].__name__:
                print(('WARNING: instrument {:s} already exists. Did not load!'.format(instrument_name)))
                loaded_failed[instrument_name] = instrument_name
            else:
                instrument_instance = None
                if isinstance(instrument_class_name, dict):
                    if 'settings' in instrument_class_name:
                        instrument_settings = instrument_class_name['settings']
                    instrument_filepath = str(instrument_class_name['filepath'])
                    instrument_class_name = str(instrument_class_name['class'])
                    path_to_module, _ = module_name_from_path(instrument_filepath)
                    module = import_module(path_to_module)
                    class_of_instrument = getattr(module, instrument_class_name)
                    try:
                        if instrument_settings is None:
                            instrument_instance = class_of_instrument(name=instrument_name)
                        else:
                            instrument_instance = class_of_instrument(name=instrument_name, settings=instrument_settings)
                    except Exception as e:
                        loaded_failed[instrument_name] = e
                        if raise_errors:
                            raise e
                        continue
                elif isinstance(instrument_class_name, Instrument):
                    instrument_class_name = instrument_class_name.__class__
                    instrument_filepath = os.path.dirname(inspect.getfile(instrument_class_name))
                    raise NotImplementedError
                elif issubclass(instrument_class_name, Instrument):
                    class_of_instrument = instrument_class_name
                    if instrument_settings is None:
                        instrument_instance = class_of_instrument(name=instrument_name)
                    else:
                        instrument_instance = class_of_instrument(name=instrument_name,  settings=instrument_settings)
                updated_instruments[instrument_name] = instrument_instance
        return updated_instruments, loaded_failed