Maybe these could all be covered by the same gate (e.g. called `quote`)?