Recieving messages needs its to happen on another thread - maybe add a local buffer?