complete SPI library