some modification. add Instrument