initial lexer impl