cleanup and selective read returns