fixed read()