changed to asynchronous enhancement and added/released write locks accordingly