decoupling interfaces for IO and memory mapped registers