diff --git a/src/main/java/de/prob2/jupyter/ProBKernel.java b/src/main/java/de/prob2/jupyter/ProBKernel.java
index 580a7cbb7d397932cce4e7c48bf1a9949790b1d0..31ad1a0ce55cd18c84a9cad34db5323961403b79 100644
--- a/src/main/java/de/prob2/jupyter/ProBKernel.java
+++ b/src/main/java/de/prob2/jupyter/ProBKernel.java
@@ -45,6 +45,7 @@ import io.github.spencerpark.jupyter.kernel.display.DisplayData;
 import io.github.spencerpark.jupyter.kernel.display.mime.MIMEType;
 
 import org.jetbrains.annotations.NotNull;
+import org.jetbrains.annotations.Nullable;
 
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -168,7 +169,7 @@ public final class ProBKernel extends BaseKernel {
 		return Collections.singletonList(new LanguageInfo.Help("ProB User Manual", "https://www3.hhu.de/stups/prob/index.php/User_Manual"));
 	}
 	
-	private @NotNull DisplayData executeCommand(final @NotNull String name, final @NotNull String argString) {
+	private @Nullable DisplayData executeCommand(final @NotNull String name, final @NotNull String argString) {
 		final Command command = this.getCommands().get(name);
 		if (command == null) {
 			throw new NoSuchCommandException(name);
@@ -180,7 +181,7 @@ public final class ProBKernel extends BaseKernel {
 			throw new CommandExecutionException(name, e);
 		}
 		
-		if (result.hasDataForType(MARKDOWN_MIME_TYPE)) {
+		if (result != null && result.hasDataForType(MARKDOWN_MIME_TYPE)) {
 			// Add definitions for any used bsymb LaTeX commands to Markdown output.
 			final String markdown = (String)result.getData(MARKDOWN_MIME_TYPE);
 			final StringBuilder defs = new StringBuilder();
@@ -197,7 +198,7 @@ public final class ProBKernel extends BaseKernel {
 	}
 	
 	@Override
-	public @NotNull DisplayData eval(final String expr) {
+	public @Nullable DisplayData eval(final String expr) {
 		assert expr != null;
 		
 		final Matcher commandMatcher = COMMAND_PATTERN.matcher(expr);
diff --git a/src/main/java/de/prob2/jupyter/commands/Command.java b/src/main/java/de/prob2/jupyter/commands/Command.java
index 662e0a921e912b630749af3a9fc594e0d28228ec..c55ed79bf7ff9168b067d70a2cdbf2bb57c2ce87 100644
--- a/src/main/java/de/prob2/jupyter/commands/Command.java
+++ b/src/main/java/de/prob2/jupyter/commands/Command.java
@@ -5,11 +5,12 @@ import de.prob2.jupyter.ProBKernel;
 import io.github.spencerpark.jupyter.kernel.display.DisplayData;
 
 import org.jetbrains.annotations.NotNull;
+import org.jetbrains.annotations.Nullable;
 
 public interface Command {
 	public abstract @NotNull String getSyntax();
 	
 	public abstract @NotNull String getShortHelp();
 	
-	public abstract @NotNull DisplayData run(final @NotNull ProBKernel kernel, final @NotNull String argString);
+	public abstract @Nullable DisplayData run(final @NotNull ProBKernel kernel, final @NotNull String argString);
 }
diff --git a/src/main/java/de/prob2/jupyter/commands/TimeCommand.java b/src/main/java/de/prob2/jupyter/commands/TimeCommand.java
index 29e38ee4adf9bad24b03231804a34b0c521a3593..e9afce88c2450128c10a4ba629e7766f7fbddbc6 100644
--- a/src/main/java/de/prob2/jupyter/commands/TimeCommand.java
+++ b/src/main/java/de/prob2/jupyter/commands/TimeCommand.java
@@ -7,6 +7,7 @@ import de.prob2.jupyter.ProBKernel;
 import io.github.spencerpark.jupyter.kernel.display.DisplayData;
 
 import org.jetbrains.annotations.NotNull;
+import org.jetbrains.annotations.Nullable;
 
 public final class TimeCommand implements Command {
 	private static final long NANOSECONDS_PER_SECOND = 1000000000L;
@@ -27,7 +28,7 @@ public final class TimeCommand implements Command {
 	}
 	
 	@Override
-	public @NotNull DisplayData run(final @NotNull ProBKernel kernel, final @NotNull String argString) {
+	public @Nullable DisplayData run(final @NotNull ProBKernel kernel, final @NotNull String argString) {
 		final long startTime = System.nanoTime();
 		final DisplayData result = kernel.eval(argString);
 		final long stopTime = System.nanoTime();