Added initial asynchronous support
Added timeout support