refactoring IPC