added docs, asynchronous io