diff --git a/src/Application.java b/src/Application.java
index 8f0b93c8202b4b61dc85fd2a8d69dcde1e3e5e5c..b8e4e45f08075ed7b365333a687d6bd7d50829ba 100644
--- a/src/Application.java
+++ b/src/Application.java
@@ -3,7 +3,7 @@ import java.util.List;
 
 public class Application {
     public static void main(String[] args) {
-        List<String> test = Arrays.asList("1 + x^2 - (31 * x)");
+        List<String> test = Arrays.asList("1 + xy^2 - (31 * x)y");
         for (String value: test) {
             List<Lexer.Token> tokens = Lexer.lex(value);
             for(Lexer.Token singleToken: tokens) {
diff --git a/src/Lexer.java b/src/Lexer.java
index 5cc07ddb68f4fe8735fd46d2fd66adbbd1a9f7f3..250e8631aa081571ccc743481aa0197dda98b97d 100644
--- a/src/Lexer.java
+++ b/src/Lexer.java
@@ -48,15 +48,16 @@ public class Lexer {
                 index++;
             }
             else if(Character.isLetter(current)){
-                int endIndex = index+1;
-                if(endIndex<input.length()) {
-                    while(Character.isLetter(input.charAt(endIndex)) && endIndex<input.length()) {
-                        endIndex += 1;
+                int iterator = index;
+                while(Character.isLetter(input.charAt(iterator)) && iterator<input.length()) {
+                    Token token = new Token(TokenType.VARIABLE, String.valueOf(input.charAt(iterator)));
+                    result.add(token);
+                    iterator += 1;
+                    if(!(iterator<input.length())) {
+                        break;
                     }
                 }
-                Token token = new Token(TokenType.VARIABLE, input.substring(index,endIndex));
-                result.add(token);
-                index += endIndex - index;
+                index += iterator - index;
             }
             else {
                 Token token = new Token(TokenType.SPECIAL, String.valueOf(current));