separate message handler thread from render thread