add a `val first = buf(start)` ?