and Theo for help and optimizations. (without which this driver would never have achieved speeds of 1010KB/sec)