recursive read working