minimize API surface by introducing LineStreamCompiler exposing only onLine
and done