bikeshed comment: 500ms seems like a bit of a long time. This isn't something that the user is going to be doing frequently in the real world, so 100ms would seem like a reasonable compromise between "we need to batch" and "this needs to appear interactive"