moved lexer into its own importable, useable package