Improve the DMAs a bit

There’s still the problem of priority not being done correctly, which
could cause big issues. This will require a rewrite.