SPI works....
TODO: refactoring