communication & error refactor