diff --git a/resources/soil.jar b/resources/soil.jar
index ed0c51981d14b3cdd1d7cf59990d457b7bc3b343..b58015cff6ea1d6402ae490afd6e9bea3b6d574e 100644
Binary files a/resources/soil.jar and b/resources/soil.jar differ
diff --git a/src/main.py b/src/main.py
index f3ef87cc7114dd1a1ba72ecc7a7a02ba90b0578e..491e73fec5bd35f4e329deddac6f9b79c1c6d1bb 100644
--- a/src/main.py
+++ b/src/main.py
@@ -98,7 +98,7 @@ async def validate(model: str, files: list[UploadFile], semantic: bool = False):
                     outfile.write(content)
 
         # execute monticore
-        command = f'java -jar ../resources/soil.jar soil.MainSoilTool -ng -i {main_file}'
+        command = f'java -jar ../resources/soil.jar soil.SOILWorkbench -ng -i {main_file}'
         if semantic:
             command = f'{command} -s'
 
@@ -194,7 +194,7 @@ async def generate(target: Target, model: str, files: list[UploadFile], backgrou
 
         # initialize generation command
         os.mkdir(out_path)
-        command = f'java -jar ../resources/soil.jar soil.MainSoilTool -i {main_file} -t {target} -d {out_path}'
+        command = f'java -jar ../resources/soil.jar soil.SOILWorkbench -i {main_file} -t {target} -d {out_path}'
         if semantic:
             command = f'{command} -s'
 
@@ -272,7 +272,7 @@ async def translate_to_visual(text_models: Dict, background_tasks: BackgroundTas
         background_tasks.add_task(clean_up_generation, identifier)
 
         # Execute monticore
-        command = f'java -jar ../resources/soil.jar soil.MainSoilTool -t visual -i {os.path.join(in_path, main_file)}.soil -d {out_path}'
+        command = f'java -jar ../resources/soil.jar soil.SOILWorkbench -t visual -i {os.path.join(in_path, main_file)}.soil -d {out_path}'
         result = subprocess.run(command.split(), stdout=subprocess.PIPE, stderr=subprocess.PIPE, cwd='.')
         print('Stdout of generation process:')
         print(result.stdout.decode('utf-8'))