bf08c13e9b
(edit: simplified backends merged into previous commits to make history clearer)
(edit: simplified backends merged into previous commits to make history clearer)