ipc: add generic data i/o and use it for _init()
ipc: implement most of the remaining api
TODO: planning update for the ipc code