Use `Promise.all` instead of `groupPromises`
Reorganize source a bit; add docs