Completely new Lexer with support classes