SPI Refactoring

Continue the refactor by cleaning up the SPI interface.