diff --git a/src/main/java/de/prob2/jupyter/commands/BrowseCommand.java b/src/main/java/de/prob2/jupyter/commands/BrowseCommand.java
index d7b7448d45b3aa85569ab87dda81742fc361ba46..c95f78d9c3dc17e9c8ba4e593afd234ce411fd28 100644
--- a/src/main/java/de/prob2/jupyter/commands/BrowseCommand.java
+++ b/src/main/java/de/prob2/jupyter/commands/BrowseCommand.java
@@ -3,17 +3,12 @@ package de.prob2.jupyter.commands;
 import java.util.ArrayList;
 import java.util.Comparator;
 import java.util.List;
-import java.util.function.Function;
-import java.util.stream.Collectors;
 
 import com.google.inject.Inject;
 
 import de.prob.animator.domainobjects.FormulaExpand;
-import de.prob.model.representation.AbstractElement;
-import de.prob.model.representation.Constant;
-import de.prob.model.representation.Set;
-import de.prob.model.representation.Variable;
 import de.prob.statespace.AnimationSelector;
+import de.prob.statespace.LoadedMachine;
 import de.prob.statespace.Trace;
 import de.prob.statespace.Transition;
 
@@ -52,13 +47,8 @@ public final class BrowseCommand implements Command {
 		return "The output shows the names of all sets, constants, and variables defined by the current machine, as well as a list of transitions that are available in the current state. Each transition has a numeric ID, which can be passed to `:exec` to execute that transition.";
 	}
 	
-	private static <T extends AbstractElement> @NotNull String elementsToString(
-		final @NotNull AbstractElement element,
-		final @NotNull Class<T> clazz,
-		final @NotNull Function<@NotNull T, @NotNull String> func
-	) {
-		final String elements = element.getChildrenOfType(clazz).stream().map(func).collect(Collectors.joining(", "));
-		return elements.isEmpty() ? "(none)" : elements;
+	private static @NotNull String listToString(final List<String> list) {
+		return list.isEmpty() ? "(none)" : String.join(", ", list);
 	}
 	
 	@Override
@@ -69,14 +59,14 @@ public final class BrowseCommand implements Command {
 		
 		final Trace trace = this.animationSelector.getCurrentTrace();
 		final StringBuilder sb = new StringBuilder("Machine: ");
-		final AbstractElement mainComponent = trace.getStateSpace().getMainComponent();
-		sb.append(mainComponent);
+		sb.append(trace.getStateSpace().getMainComponent());
+		final LoadedMachine lm = trace.getStateSpace().getLoadedMachine();
 		sb.append("\nSets: ");
-		sb.append(elementsToString(mainComponent, Set.class, Set::getName));
+		sb.append(listToString(lm.getSetNames()));
 		sb.append("\nConstants: ");
-		sb.append(elementsToString(mainComponent, Constant.class, Object::toString));
+		sb.append(listToString(lm.getConstantNames()));
 		sb.append("\nVariables: ");
-		sb.append(elementsToString(mainComponent, Variable.class, Variable::getName));
+		sb.append(listToString(lm.getVariableNames()));
 		sb.append("\nOperations: ");
 		final List<Transition> sortedTransitions = new ArrayList<>(trace.getNextTransitions(true, FormulaExpand.TRUNCATE));
 		// Transition IDs are strings, but they almost always contain numbers.