finalized UART comms

isrs need to be implemented externally so that I2C and UART can share
the same ISRs