@amaitland should we add the `mode` enum now or just merge what we have and leave `mode` for another future PR?