read procedure