Non blocking hardware serial

Hi All,
I have a similar problem. My Arduino program (running on Arduino Due) sends some short information packet every second to a PC through serial port, at 9600 baud, using command "Serial.write(...)" on the main loop. I measured the time required to complete the "write" command: it is nearly the same than the transfer time of the bytes over serial port at 9600 baud (so 1 ms for every sent byte). If I send - for example - a 16 bytes packet, then the main loop blocks for about 16 ms. It is too long for me, as the main loop meanwhile should do some other important tasks on some GPIO ports, requiring fast response time (under 1 ms). So, it seems, that Serial.Write command does not copy the sent bytes to a bigger buffer, that is drained by interrupts later. Instead, it waits for all bytes to be transferred by the USART. (According my timing test, probably there is a software and/or hardware FIFO buffer for 1-2 bytes, but this is too low.) If this is the case, then the real-time nature of the Arduino system is lost if someone uses Serial.Write (at least in the main loop). There is no way to implement a non-blocking, interrupt driven serial port transmit function? I think this can be useful for other users as well.