Refactor comm interface

- Rebased my comm refactor against master and fixed all merge conflicts
- Just about ready to merge in.