rework SPI interface