diff --git a/src/main/java/de/prob2/jupyter/BsymbCommand.java b/src/main/java/de/prob2/jupyter/BsymbCommand.java
index ab782cdc77fb02d7c13963a22296fde1d577a23b..c22ad93056583ea935f81d06ea996f247ac2f826 100644
--- a/src/main/java/de/prob2/jupyter/BsymbCommand.java
+++ b/src/main/java/de/prob2/jupyter/BsymbCommand.java
@@ -16,6 +16,11 @@ public final class BsymbCommand implements Command {
 		super();
 	}
 	
+	@Override
+	public @NotNull String getName() {
+		return ":bsymb";
+	}
+	
 	@Override
 	public @NotNull String getSyntax() {
 		return ":bsymb";
diff --git a/src/main/java/de/prob2/jupyter/ProBKernel.java b/src/main/java/de/prob2/jupyter/ProBKernel.java
index 86b60b554dfcc8a0e71a63b6c2167eef797b1281..53a6b243d4b3288a5f44e5c7fdb415ce017aeda6 100644
--- a/src/main/java/de/prob2/jupyter/ProBKernel.java
+++ b/src/main/java/de/prob2/jupyter/ProBKernel.java
@@ -4,6 +4,7 @@ import java.nio.file.Path;
 import java.nio.file.Paths;
 import java.util.ArrayList;
 import java.util.Arrays;
+import java.util.Collection;
 import java.util.Collections;
 import java.util.HashMap;
 import java.util.List;
@@ -75,6 +76,38 @@ public final class ProBKernel extends BaseKernel {
 	private static final @NotNull Pattern BSYMB_COMMAND_PATTERN = Pattern.compile("\\\\([a-z]+)");
 	private static final @NotNull Pattern LATEX_FORMULA_PATTERN = Pattern.compile("(\\$\\$?)([^\\$]+)\\1");
 	
+	private static final @NotNull Collection<@NotNull Class<? extends Command>> COMMAND_CLASSES = Collections.unmodifiableList(Arrays.asList(
+		HelpCommand.class,
+		VersionCommand.class,
+		EvalCommand.class,
+		TypeCommand.class,
+		TableCommand.class,
+		SolveCommand.class,
+		LetCommand.class,
+		UnletCommand.class,
+		LoadFileCommand.class,
+		LoadCellCommand.class,
+		PrefCommand.class,
+		BrowseCommand.class,
+		TraceCommand.class,
+		StatsCommand.class,
+		ExecCommand.class,
+		ConstantsCommand.class,
+		InitialiseCommand.class,
+		GotoCommand.class,
+		FindCommand.class,
+		ShowCommand.class,
+		DotCommand.class,
+		AssertCommand.class,
+		CheckCommand.class,
+		TimeCommand.class,
+		GroovyCommand.class,
+		RenderCommand.class,
+		BsymbCommand.class,
+		PrettyPrintCommand.class,
+		ModelCheckCommand.class
+	));
+	
 	private static final @NotNull Map<@NotNull String, @NotNull String> BSYMB_COMMAND_DEFINITIONS;
 	static {
 		final Map<String, String> map = new HashMap<>();
@@ -151,36 +184,9 @@ public final class ProBKernel extends BaseKernel {
 		
 		this.animationSelector = animationSelector;
 		
-		this.commands = new HashMap<>();
-		this.commands.put(":help", injector.getInstance(HelpCommand.class));
-		this.commands.put(":version", injector.getInstance(VersionCommand.class));
-		this.commands.put(":eval", injector.getInstance(EvalCommand.class));
-		this.commands.put(":type", injector.getInstance(TypeCommand.class));
-		this.commands.put(":table", injector.getInstance(TableCommand.class));
-		this.commands.put(":solve", injector.getInstance(SolveCommand.class));
-		this.commands.put(":let", injector.getInstance(LetCommand.class));
-		this.commands.put(":unlet", injector.getInstance(UnletCommand.class));
-		this.commands.put(":load", injector.getInstance(LoadFileCommand.class));
-		this.commands.put("::load", injector.getInstance(LoadCellCommand.class));
-		this.commands.put(":pref", injector.getInstance(PrefCommand.class));
-		this.commands.put(":browse", injector.getInstance(BrowseCommand.class));
-		this.commands.put(":trace", injector.getInstance(TraceCommand.class));
-		this.commands.put(":stats", injector.getInstance(StatsCommand.class));
-		this.commands.put(":exec", injector.getInstance(ExecCommand.class));
-		this.commands.put(":constants", injector.getInstance(ConstantsCommand.class));
-		this.commands.put(":init", injector.getInstance(InitialiseCommand.class));
-		this.commands.put(":goto", injector.getInstance(GotoCommand.class));
-		this.commands.put(":find", injector.getInstance(FindCommand.class));
-		this.commands.put(":show", injector.getInstance(ShowCommand.class));
-		this.commands.put(":dot", injector.getInstance(DotCommand.class));
-		this.commands.put(":assert", injector.getInstance(AssertCommand.class));
-		this.commands.put(":check", injector.getInstance(CheckCommand.class));
-		this.commands.put(":time", injector.getInstance(TimeCommand.class));
-		this.commands.put(":groovy", injector.getInstance(GroovyCommand.class));
-		this.commands.put("::render", injector.getInstance(RenderCommand.class));
-		this.commands.put(":bsymb", injector.getInstance(BsymbCommand.class));
-		this.commands.put(":prettyprint", injector.getInstance(PrettyPrintCommand.class));
-		this.commands.put(":modelcheck", injector.getInstance(ModelCheckCommand.class));
+		this.commands = COMMAND_CLASSES.stream()
+			.map(injector::getInstance)
+			.collect(Collectors.toMap(Command::getName, cmd -> cmd));
 		
 		this.variables = new HashMap<>();
 		
diff --git a/src/main/java/de/prob2/jupyter/commands/AssertCommand.java b/src/main/java/de/prob2/jupyter/commands/AssertCommand.java
index ba2d64814fee7139e029dc166532e6197e4cbc24..f4fe97ded7beb7c7fe1a21892db7994e7135638e 100644
--- a/src/main/java/de/prob2/jupyter/commands/AssertCommand.java
+++ b/src/main/java/de/prob2/jupyter/commands/AssertCommand.java
@@ -29,6 +29,11 @@ public final class AssertCommand implements Command {
 		this.animationSelector = animationSelector;
 	}
 	
+	@Override
+	public @NotNull String getName() {
+		return ":assert";
+	}
+	
 	@Override
 	public @NotNull String getSyntax() {
 		return ":assert PREDICATE";
diff --git a/src/main/java/de/prob2/jupyter/commands/BrowseCommand.java b/src/main/java/de/prob2/jupyter/commands/BrowseCommand.java
index a26229b4bc218b4c4e318ea510e386cdcae9f16f..f65282fadabf0029779a94268507b599135bc8ba 100644
--- a/src/main/java/de/prob2/jupyter/commands/BrowseCommand.java
+++ b/src/main/java/de/prob2/jupyter/commands/BrowseCommand.java
@@ -32,6 +32,11 @@ public final class BrowseCommand implements Command {
 		this.animationSelector = animationSelector;
 	}
 	
+	@Override
+	public @NotNull String getName() {
+		return ":browse";
+	}
+	
 	@Override
 	public @NotNull String getSyntax() {
 		return ":browse";
diff --git a/src/main/java/de/prob2/jupyter/commands/CheckCommand.java b/src/main/java/de/prob2/jupyter/commands/CheckCommand.java
index e8cdcdb55a7063efb4dcdae781e31b48b4769c10..38970442b97282da5c54457fc63881bac83bbfd8 100644
--- a/src/main/java/de/prob2/jupyter/commands/CheckCommand.java
+++ b/src/main/java/de/prob2/jupyter/commands/CheckCommand.java
@@ -47,6 +47,11 @@ public final class CheckCommand implements Command {
 		this.animationSelector = animationSelector;
 	}
 	
+	@Override
+	public @NotNull String getName() {
+		return ":check";
+	}
+	
 	@Override
 	public @NotNull String getSyntax() {
 		return ":check WHAT";
diff --git a/src/main/java/de/prob2/jupyter/commands/Command.java b/src/main/java/de/prob2/jupyter/commands/Command.java
index 1e9471c8be38fbbc8a0b4c98179290e2ff8d14a5..35526770e4e6e0b6dbc137baa6a93f920879de09 100644
--- a/src/main/java/de/prob2/jupyter/commands/Command.java
+++ b/src/main/java/de/prob2/jupyter/commands/Command.java
@@ -7,6 +7,8 @@ import org.jetbrains.annotations.NotNull;
 import org.jetbrains.annotations.Nullable;
 
 public interface Command {
+	public abstract @NotNull String getName();
+	
 	public abstract @NotNull String getSyntax();
 	
 	public abstract @NotNull String getShortHelp();
diff --git a/src/main/java/de/prob2/jupyter/commands/ConstantsCommand.java b/src/main/java/de/prob2/jupyter/commands/ConstantsCommand.java
index 85e7b395e0f01165fdf08f352d6184f4be3b437b..c541c4e543cf657059019c93dd2d62ac1f4fa1c7 100644
--- a/src/main/java/de/prob2/jupyter/commands/ConstantsCommand.java
+++ b/src/main/java/de/prob2/jupyter/commands/ConstantsCommand.java
@@ -30,6 +30,11 @@ public final class ConstantsCommand implements Command {
 		this.animationSelector = animationSelector;
 	}
 	
+	@Override
+	public @NotNull String getName() {
+		return ":constants";
+	}
+	
 	@Override
 	public @NotNull String getSyntax() {
 		return ":constants [PREDICATE]";
diff --git a/src/main/java/de/prob2/jupyter/commands/DotCommand.java b/src/main/java/de/prob2/jupyter/commands/DotCommand.java
index a287991aa069bb32ca815cfaef17ad58ee493ed1..e42637c9e086baca4bc817fbac55f0ea0976f3c7 100644
--- a/src/main/java/de/prob2/jupyter/commands/DotCommand.java
+++ b/src/main/java/de/prob2/jupyter/commands/DotCommand.java
@@ -40,6 +40,11 @@ public final class DotCommand implements Command {
 		this.animationSelector = animationSelector;
 	}
 	
+	@Override
+	public @NotNull String getName() {
+		return ":dot";
+	}
+	
 	@Override
 	public @NotNull String getSyntax() {
 		return ":dot COMMAND [FORMULA]";
diff --git a/src/main/java/de/prob2/jupyter/commands/EvalCommand.java b/src/main/java/de/prob2/jupyter/commands/EvalCommand.java
index 7999d76d702df77b2ba4373159e95739a6dcca2c..3e639832e26089837f10611fc63139567c18a7c7 100644
--- a/src/main/java/de/prob2/jupyter/commands/EvalCommand.java
+++ b/src/main/java/de/prob2/jupyter/commands/EvalCommand.java
@@ -25,6 +25,11 @@ public final class EvalCommand implements Command {
 		this.animationSelector = animationSelector;
 	}
 	
+	@Override
+	public @NotNull String getName() {
+		return ":eval";
+	}
+	
 	@Override
 	public @NotNull String getSyntax() {
 		return ":eval FORMULA";
diff --git a/src/main/java/de/prob2/jupyter/commands/ExecCommand.java b/src/main/java/de/prob2/jupyter/commands/ExecCommand.java
index 941383095dba2fffdb7417f70e95d6f118c8a526..e41a07e7f03fe4207c14c050a77218808c6a751b 100644
--- a/src/main/java/de/prob2/jupyter/commands/ExecCommand.java
+++ b/src/main/java/de/prob2/jupyter/commands/ExecCommand.java
@@ -31,6 +31,11 @@ public final class ExecCommand implements Command {
 		this.animationSelector = animationSelector;
 	}
 	
+	@Override
+	public @NotNull String getName() {
+		return ":exec";
+	}
+	
 	@Override
 	public @NotNull String getSyntax() {
 		return ":exec OPERATION [PREDICATE]";
diff --git a/src/main/java/de/prob2/jupyter/commands/FindCommand.java b/src/main/java/de/prob2/jupyter/commands/FindCommand.java
index c85a972e86280726d85e652846b0f921743762e6..d9ee3c6c43016c63fa0c3894705a7d4bfb47c652 100644
--- a/src/main/java/de/prob2/jupyter/commands/FindCommand.java
+++ b/src/main/java/de/prob2/jupyter/commands/FindCommand.java
@@ -27,6 +27,11 @@ public final class FindCommand implements Command {
 		this.animationSelector = animationSelector;
 	}
 	
+	@Override
+	public @NotNull String getName() {
+		return ":find";
+	}
+	
 	@Override
 	public @NotNull String getSyntax() {
 		return ":find PREDICATE";
diff --git a/src/main/java/de/prob2/jupyter/commands/GotoCommand.java b/src/main/java/de/prob2/jupyter/commands/GotoCommand.java
index c2478168b64954facf7741b99a18118dcfae1d9c..497202edfaf978ecad1dd65cc09b9a2186e6faec 100644
--- a/src/main/java/de/prob2/jupyter/commands/GotoCommand.java
+++ b/src/main/java/de/prob2/jupyter/commands/GotoCommand.java
@@ -23,6 +23,11 @@ public final class GotoCommand implements Command {
 		this.animationSelector = animationSelector;
 	}
 	
+	@Override
+	public @NotNull String getName() {
+		return ":goto";
+	}
+	
 	@Override
 	public @NotNull String getSyntax() {
 		return ":goto INDEX";
diff --git a/src/main/java/de/prob2/jupyter/commands/GroovyCommand.java b/src/main/java/de/prob2/jupyter/commands/GroovyCommand.java
index 8a0a1e46c64c7520f16d9dc1cccfef024945df52..e8fc3e812ab28ddbbbbfd1b6cc74925bc8b87991 100644
--- a/src/main/java/de/prob2/jupyter/commands/GroovyCommand.java
+++ b/src/main/java/de/prob2/jupyter/commands/GroovyCommand.java
@@ -30,6 +30,11 @@ public final class GroovyCommand implements Command {
 		this.groovyScriptEngine = scriptEngineProvider.get();
 	}
 	
+	@Override
+	public @NotNull String getName() {
+		return ":groovy";
+	}
+	
 	@Override
 	public @NotNull String getSyntax() {
 		return ":groovy EXPRESSION";
diff --git a/src/main/java/de/prob2/jupyter/commands/HelpCommand.java b/src/main/java/de/prob2/jupyter/commands/HelpCommand.java
index 31badb3aa333b95dd04f721660f24b6da3b9ac91..51213685c787d9a98c58995a571c6397a376fa70 100644
--- a/src/main/java/de/prob2/jupyter/commands/HelpCommand.java
+++ b/src/main/java/de/prob2/jupyter/commands/HelpCommand.java
@@ -26,6 +26,11 @@ public final class HelpCommand implements Command {
 		this.injector = injector;
 	}
 	
+	@Override
+	public @NotNull String getName() {
+		return ":help";
+	}
+	
 	@Override
 	public @NotNull String getSyntax() {
 		return ":help [COMMAND]";
diff --git a/src/main/java/de/prob2/jupyter/commands/InitialiseCommand.java b/src/main/java/de/prob2/jupyter/commands/InitialiseCommand.java
index 3e91bb6446347eac4e20f9d0acc9c739cddb8082..f67f808210634cc2b9a0598a283581a7e8ec11aa 100644
--- a/src/main/java/de/prob2/jupyter/commands/InitialiseCommand.java
+++ b/src/main/java/de/prob2/jupyter/commands/InitialiseCommand.java
@@ -30,6 +30,11 @@ public final class InitialiseCommand implements Command {
 		this.animationSelector = animationSelector;
 	}
 	
+	@Override
+	public @NotNull String getName() {
+		return ":init";
+	}
+	
 	@Override
 	public @NotNull String getSyntax() {
 		return ":init [PREDICATE]";
diff --git a/src/main/java/de/prob2/jupyter/commands/LetCommand.java b/src/main/java/de/prob2/jupyter/commands/LetCommand.java
index f71d3bc66dca90de3761e4c3aa1ca638b0ec0927..35669d31443b76b3123aca9b31cd42c9644e886e 100644
--- a/src/main/java/de/prob2/jupyter/commands/LetCommand.java
+++ b/src/main/java/de/prob2/jupyter/commands/LetCommand.java
@@ -30,6 +30,11 @@ public final class LetCommand implements Command {
 		this.animationSelector = animationSelector;
 	}
 	
+	@Override
+	public @NotNull String getName() {
+		return ":let";
+	}
+	
 	@Override
 	public @NotNull String getSyntax() {
 		return ":let NAME EXPR";
diff --git a/src/main/java/de/prob2/jupyter/commands/LoadCellCommand.java b/src/main/java/de/prob2/jupyter/commands/LoadCellCommand.java
index c8a482beda80cd7c699404fd9facc011f125e5e1..08ee240eae2763504aedede5233ed37fb6c92d69 100644
--- a/src/main/java/de/prob2/jupyter/commands/LoadCellCommand.java
+++ b/src/main/java/de/prob2/jupyter/commands/LoadCellCommand.java
@@ -37,6 +37,11 @@ public final class LoadCellCommand implements Command {
 		this.proBKernelProvider = proBKernelProvider;
 	}
 	
+	@Override
+	public @NotNull String getName() {
+		return "::load";
+	}
+	
 	@Override
 	public @NotNull String getSyntax() {
 		return "::load [PREF=VALUE ...]\nMACHINE\n...\nEND";
diff --git a/src/main/java/de/prob2/jupyter/commands/LoadFileCommand.java b/src/main/java/de/prob2/jupyter/commands/LoadFileCommand.java
index a9ab6615f9ec92ca94e3e1cbdd64f13e984b890f..04fb3859d9c48d1fc8f286b755e376b7020c4aab 100644
--- a/src/main/java/de/prob2/jupyter/commands/LoadFileCommand.java
+++ b/src/main/java/de/prob2/jupyter/commands/LoadFileCommand.java
@@ -49,6 +49,11 @@ public final class LoadFileCommand implements Command {
 		this.proBKernelProvider = proBKernelProvider;
 	}
 	
+	@Override
+	public @NotNull String getName() {
+		return ":load";
+	}
+	
 	@Override
 	public @NotNull String getSyntax() {
 		return ":load FILENAME [PREF=VALUE ...]";
diff --git a/src/main/java/de/prob2/jupyter/commands/ModelCheckCommand.java b/src/main/java/de/prob2/jupyter/commands/ModelCheckCommand.java
index 1c49d6efb27feba790b7c9e76b83f1b228f1ec41..e29022de38e93506d9ee46e2d9913adb2960d299 100644
--- a/src/main/java/de/prob2/jupyter/commands/ModelCheckCommand.java
+++ b/src/main/java/de/prob2/jupyter/commands/ModelCheckCommand.java
@@ -39,6 +39,11 @@ public final class ModelCheckCommand implements Command {
 		this.animationSelector = animationSelector;
 	}
 	
+	@Override
+	public @NotNull String getName() {
+		return ":modelcheck";
+	}
+	
 	@Override
 	public @NotNull String getSyntax() {
 		return ":modelcheck";
diff --git a/src/main/java/de/prob2/jupyter/commands/PrefCommand.java b/src/main/java/de/prob2/jupyter/commands/PrefCommand.java
index ff9eb3834837486e2afa45394e8bb0cc074fcda2..28df02a872c6a3a0671853b8df8dccd1846698fb 100644
--- a/src/main/java/de/prob2/jupyter/commands/PrefCommand.java
+++ b/src/main/java/de/prob2/jupyter/commands/PrefCommand.java
@@ -30,6 +30,11 @@ public final class PrefCommand implements Command {
 		this.animationSelector = animationSelector;
 	}
 	
+	@Override
+	public @NotNull String getName() {
+		return ":pref";
+	}
+	
 	@Override
 	public @NotNull String getSyntax() {
 		return ":pref [NAME ...]\n:pref NAME=VALUE [NAME=VALUE ...]";
diff --git a/src/main/java/de/prob2/jupyter/commands/PrettyPrintCommand.java b/src/main/java/de/prob2/jupyter/commands/PrettyPrintCommand.java
index 118eed3c5da9c34c9a4555e69475adb391489108..9df978386846da3d82dd289d5fc030c1cdabca50 100644
--- a/src/main/java/de/prob2/jupyter/commands/PrettyPrintCommand.java
+++ b/src/main/java/de/prob2/jupyter/commands/PrettyPrintCommand.java
@@ -23,6 +23,11 @@ public final class PrettyPrintCommand implements Command {
 		this.animationSelector = animationSelector;
 	}
 	
+	@Override
+	public @NotNull String getName() {
+		return ":prettyprint";
+	}
+	
 	@Override
 	public @NotNull String getSyntax() {
 		return ":prettyprint PREDICATE";
diff --git a/src/main/java/de/prob2/jupyter/commands/RenderCommand.java b/src/main/java/de/prob2/jupyter/commands/RenderCommand.java
index aa5b8719cab60bae16ab8e14dabb77d37fff2811..3b46ff320c582aa92fa3015bb5cc3bb9fcdb6b8c 100644
--- a/src/main/java/de/prob2/jupyter/commands/RenderCommand.java
+++ b/src/main/java/de/prob2/jupyter/commands/RenderCommand.java
@@ -16,6 +16,11 @@ public final class RenderCommand implements Command {
 		super();
 	}
 	
+	@Override
+	public @NotNull String getName() {
+		return "::render";
+	}
+	
 	@Override
 	public @NotNull String getSyntax() {
 		return "::render MIMETYPE\nCONTENT";
diff --git a/src/main/java/de/prob2/jupyter/commands/ShowCommand.java b/src/main/java/de/prob2/jupyter/commands/ShowCommand.java
index e849cdc933da610341aaec10eaa0037b84b68b9a..0c8a2e6ac1d455d36e2a177a611da8851d2e48fd 100644
--- a/src/main/java/de/prob2/jupyter/commands/ShowCommand.java
+++ b/src/main/java/de/prob2/jupyter/commands/ShowCommand.java
@@ -36,6 +36,11 @@ public final class ShowCommand implements Command {
 		this.proBKernelProvider = proBKernelProvider;
 	}
 	
+	@Override
+	public @NotNull String getName() {
+		return ":show";
+	}
+	
 	@Override
 	public @NotNull String getSyntax() {
 		return ":show";
diff --git a/src/main/java/de/prob2/jupyter/commands/SolveCommand.java b/src/main/java/de/prob2/jupyter/commands/SolveCommand.java
index 1e6887d51c20d76e32c2eb71dc61a13ae856132a..31f2d10e696e3086acdf5de43157a04492b35a75 100644
--- a/src/main/java/de/prob2/jupyter/commands/SolveCommand.java
+++ b/src/main/java/de/prob2/jupyter/commands/SolveCommand.java
@@ -38,6 +38,11 @@ public final class SolveCommand implements Command {
 		this.animationSelector = animationSelector;
 	}
 	
+	@Override
+	public @NotNull String getName() {
+		return ":solve";
+	}
+	
 	@Override
 	public @NotNull String getSyntax() {
 		return ":solve SOLVER PREDICATE";
diff --git a/src/main/java/de/prob2/jupyter/commands/StatsCommand.java b/src/main/java/de/prob2/jupyter/commands/StatsCommand.java
index a693fb9f0d67a010e7924abda3ada852311b0820..c26f7c13fe923d3885402f75c2d1acb3adb36eac 100644
--- a/src/main/java/de/prob2/jupyter/commands/StatsCommand.java
+++ b/src/main/java/de/prob2/jupyter/commands/StatsCommand.java
@@ -24,6 +24,11 @@ public final class StatsCommand implements Command {
 		this.animationSelector = animationSelector;
 	}
 	
+	@Override
+	public @NotNull String getName() {
+		return ":stats";
+	}
+	
 	@Override
 	public @NotNull String getSyntax() {
 		return ":stats";
diff --git a/src/main/java/de/prob2/jupyter/commands/TableCommand.java b/src/main/java/de/prob2/jupyter/commands/TableCommand.java
index 0e335fbbe198c5a593eb3c5ea55f541d083a6533..fca1b6f1de0458c5f4b27d08736357dc9869d7f1 100644
--- a/src/main/java/de/prob2/jupyter/commands/TableCommand.java
+++ b/src/main/java/de/prob2/jupyter/commands/TableCommand.java
@@ -36,6 +36,11 @@ public final class TableCommand implements Command {
 		this.animationSelector = animationSelector;
 	}
 	
+	@Override
+	public @NotNull String getName() {
+		return ":table";
+	}
+	
 	@Override
 	public @NotNull String getSyntax() {
 		return ":table EXPRESSION";
diff --git a/src/main/java/de/prob2/jupyter/commands/TimeCommand.java b/src/main/java/de/prob2/jupyter/commands/TimeCommand.java
index 7aee70f7092d1ad7db2c290f15d5bab8d98eafc3..c9270d891b10aeb46d6693887d9514272fdec983 100644
--- a/src/main/java/de/prob2/jupyter/commands/TimeCommand.java
+++ b/src/main/java/de/prob2/jupyter/commands/TimeCommand.java
@@ -25,6 +25,11 @@ public final class TimeCommand implements Command {
 		this.injector = injector;
 	}
 	
+	@Override
+	public @NotNull String getName() {
+		return ":time";
+	}
+	
 	@Override
 	public @NotNull String getSyntax() {
 		return ":time COMMAND [ARGS ...]";
diff --git a/src/main/java/de/prob2/jupyter/commands/TraceCommand.java b/src/main/java/de/prob2/jupyter/commands/TraceCommand.java
index 4d61435a3886dee006362fb1e8b39b938fb4fde2..773f1bc9676fc802cf4f238d9ddd7a57be6a720a 100644
--- a/src/main/java/de/prob2/jupyter/commands/TraceCommand.java
+++ b/src/main/java/de/prob2/jupyter/commands/TraceCommand.java
@@ -26,6 +26,11 @@ public final class TraceCommand implements Command {
 		this.animationSelector = animationSelector;
 	}
 	
+	@Override
+	public @NotNull String getName() {
+		return ":trace";
+	}
+	
 	@Override
 	public @NotNull String getSyntax() {
 		return ":trace";
diff --git a/src/main/java/de/prob2/jupyter/commands/TypeCommand.java b/src/main/java/de/prob2/jupyter/commands/TypeCommand.java
index 4a444af9564a4a83da7ae99bdd6e327f14e2dc32..8c0de732081f206952e380c7b483ad8237316e76 100644
--- a/src/main/java/de/prob2/jupyter/commands/TypeCommand.java
+++ b/src/main/java/de/prob2/jupyter/commands/TypeCommand.java
@@ -29,6 +29,11 @@ public final class TypeCommand implements Command {
 		this.animationSelector = animationSelector;
 	}
 	
+	@Override
+	public @NotNull String getName() {
+		return ":type";
+	}
+	
 	@Override
 	public @NotNull String getSyntax() {
 		return ":type FORMULA";
diff --git a/src/main/java/de/prob2/jupyter/commands/UnletCommand.java b/src/main/java/de/prob2/jupyter/commands/UnletCommand.java
index cae424e0a29ba1384db344cf15801454fd8ad0b4..3c90e9f1c67267653528af31e34a461b59cf4d19 100644
--- a/src/main/java/de/prob2/jupyter/commands/UnletCommand.java
+++ b/src/main/java/de/prob2/jupyter/commands/UnletCommand.java
@@ -24,6 +24,11 @@ public final class UnletCommand implements Command {
 		this.injector = injector;
 	}
 	
+	@Override
+	public @NotNull String getName() {
+		return ":unlet";
+	}
+	
 	@Override
 	public @NotNull String getSyntax() {
 		return ":unlet NAME";
diff --git a/src/main/java/de/prob2/jupyter/commands/VersionCommand.java b/src/main/java/de/prob2/jupyter/commands/VersionCommand.java
index 82af3da6f727f6801925500d71745455884ec69b..c71915fa4dec9bc581182b1e521542561bc27990 100644
--- a/src/main/java/de/prob2/jupyter/commands/VersionCommand.java
+++ b/src/main/java/de/prob2/jupyter/commands/VersionCommand.java
@@ -22,6 +22,11 @@ public final class VersionCommand implements Command {
 		this.animationSelector = animationSelector;
 	}
 	
+	@Override
+	public @NotNull String getName() {
+		return ":version";
+	}
+	
 	@Override
 	public @NotNull String getSyntax() {
 		return ":version";