use buffered reading, support crude continuation

yeah, whatever, non-standard, this is not for anyone but me to use so suck it