finished cat, but relies on proper implmentation of read