better stream error checking, more descriptive errors, more informative info screen