diff --git a/de.prob.core/src/de/prob/eventb/translator/internal/ModelTranslator.java b/de.prob.core/src/de/prob/eventb/translator/internal/ModelTranslator.java
index 6e142b451def60c525bd468e036ae9fd1a41476b..e4ffa726cbd08f0026873634c97655888f7d1ec7 100644
--- a/de.prob.core/src/de/prob/eventb/translator/internal/ModelTranslator.java
+++ b/de.prob.core/src/de/prob/eventb/translator/internal/ModelTranslator.java
@@ -7,66 +7,17 @@
 package de.prob.eventb.translator.internal; // NOPMD by bendisposto
 // High coupling to the ast is ok
 
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.LinkedList;
-import java.util.List;
+import java.util.*;
 
 import org.apache.commons.lang.StringUtils;
 import org.eventb.core.IConvergenceElement.Convergence;
-import org.eventb.core.ILabeledElement;
-import org.eventb.core.IMachineRoot;
-import org.eventb.core.IPOSequent;
-import org.eventb.core.IPOSource;
-import org.eventb.core.IPSRoot;
-import org.eventb.core.IPSStatus;
-import org.eventb.core.ISCAction;
-import org.eventb.core.ISCEvent;
-import org.eventb.core.ISCGuard;
-import org.eventb.core.ISCInternalContext;
-import org.eventb.core.ISCInvariant;
-import org.eventb.core.ISCMachineRoot;
-import org.eventb.core.ISCParameter;
-import org.eventb.core.ISCPredicateElement;
-import org.eventb.core.ISCRefinesEvent;
-import org.eventb.core.ISCRefinesMachine;
-import org.eventb.core.ISCVariable;
-import org.eventb.core.ISCVariant;
-import org.eventb.core.ISCWitness;
-import org.eventb.core.ITraceableElement;
-import org.eventb.core.ast.Assignment;
-import org.eventb.core.ast.FormulaFactory;
-import org.eventb.core.ast.ITypeEnvironment;
-import org.eventb.core.basis.Event;
-import org.eventb.core.basis.Guard;
+import org.eventb.core.*;
+import org.eventb.core.ast.*;
+import org.eventb.core.basis.*;
 import org.eventb.core.seqprover.IConfidence;
-import org.rodinp.core.IElementType;
-import org.rodinp.core.IRodinElement;
-import org.rodinp.core.RodinDBException;
-
-import de.be4.classicalb.core.parser.node.AAnticipatedEventstatus;
-import de.be4.classicalb.core.parser.node.AConvergentEventstatus;
-import de.be4.classicalb.core.parser.node.AEvent;
-import de.be4.classicalb.core.parser.node.AEventBModelParseUnit;
-import de.be4.classicalb.core.parser.node.AEventsModelClause;
-import de.be4.classicalb.core.parser.node.AIdentifierExpression;
-import de.be4.classicalb.core.parser.node.AInvariantModelClause;
-import de.be4.classicalb.core.parser.node.AOrdinaryEventstatus;
-import de.be4.classicalb.core.parser.node.ARefinesModelClause;
-import de.be4.classicalb.core.parser.node.ASeesModelClause;
-import de.be4.classicalb.core.parser.node.ATheoremsModelClause;
-import de.be4.classicalb.core.parser.node.AVariablesModelClause;
-import de.be4.classicalb.core.parser.node.AVariantModelClause;
-import de.be4.classicalb.core.parser.node.AWitness;
-import de.be4.classicalb.core.parser.node.Node;
-import de.be4.classicalb.core.parser.node.PEvent;
-import de.be4.classicalb.core.parser.node.PEventstatus;
-import de.be4.classicalb.core.parser.node.PExpression;
-import de.be4.classicalb.core.parser.node.PModelClause;
-import de.be4.classicalb.core.parser.node.PPredicate;
-import de.be4.classicalb.core.parser.node.PSubstitution;
-import de.be4.classicalb.core.parser.node.PWitness;
-import de.be4.classicalb.core.parser.node.TIdentifierLiteral;
+import org.rodinp.core.*;
+
+import de.be4.classicalb.core.parser.node.*;
 import de.prob.core.translator.TranslationFailedException;
 import de.prob.eventb.translator.AbstractComponentTranslator;
 import de.prob.logging.Logger;
@@ -198,15 +149,26 @@ public class ModelTranslator extends AbstractComponentTranslator {
 
 					IRodinElement srcElement = source.getSource();
 					if (!srcElement.exists()
-							|| !(srcElement instanceof ILabeledElement)) {
+							|| (!(srcElement instanceof ILabeledElement) && !(srcElement instanceof IVariant))) {
 						bugs.add(status.getElementName());
 						break;
 					}
 
-					ILabeledElement le = (ILabeledElement) srcElement;
-					IElementType<? extends IRodinElement> type = srcElement
-							.getElementType();
-					s.add(new SequentSource(type, le.getLabel()));
+					if (srcElement instanceof ILabeledElement) {
+						ILabeledElement le = (ILabeledElement) srcElement;
+						IElementType<? extends IRodinElement> type = srcElement
+								.getElementType();
+						s.add(new SequentSource(type, le.getLabel()));
+					} else if (srcElement instanceof IVariant) {
+						/*
+						 * Variants are not ILabeledElements, hence we need to
+						 * find another "label"
+						 */
+						IElementType<? extends IRodinElement> type = srcElement
+								.getElementType();
+						s.add(new SequentSource(type, machine
+								.getComponentName()));
+					}
 
 					if (srcElement instanceof Guard) {
 						Event srcEvent = (Event) srcElement.getParent();