lots of changes to memory-mapped IO