added manual lexer