more DMA functionality, added buffers, polling, interrupt handling