Use ByteStream for reading to get bounds checking