Refactor project structure, refactor out lexer, add file mode, add test-cli