make lexer not need a running go-routine