This is my current thinking on how this mess should all work