intermediate copy just for records
improved lexer