slight restructure of the lexer