Add EventQueue and refactor router frontend to use client/cache

I think the detail is great, I just was questioning whether the stated behavior was the appropriate behavior for the known use cases.