better error handling
try a possibly more mem efficient stream read
should these end?