added AsyncReader