modify read logic