cleaned up communicator a bit, still work to do