Card new function can optionally return a DMA handler struct, backplane stores it in an array. After every IO/memory access, backplane loops through and calls each DMA handler struct with a mutable reference to itself and a card accessor struct. The card accessor struct takes a reference (mut/immut) and returns a reference (mut/immut respectively) to the main DMA card for that handler struct.