Separated IPC implementation from usage