more progress on lexer