adapter: split adapter into input/output adapter