Make writing asynchronous, transparent to caller