This is an initial version that likely requires much polishing. I'm adding it lay out the structure and so we have something to start working from.
(cherry picked from commit 98d50cb8f5)
Co-authored-by: Eric V. Smith <ericvsmith@users.noreply.github.com>