a better version of the SPI funktion