updated lexer a lot