Initial, very rough, comm-based backend

DO NOT MERGE.  This is a rough draft.  I'm creating a pull request just to make commenting on it easier.