diff --git a/moskito-core/src/main/java/net/anotheria/moskito/core/calltrace/TraceStep.java b/moskito-core/src/main/java/net/anotheria/moskito/core/calltrace/TraceStep.java
index <HASH>..<HASH> 100644
--- a/moskito-core/src/main/java/net/anotheria/moskito/core/calltrace/TraceStep.java
+++ b/moskito-core/src/main/java/net/anotheria/moskito/core/calltrace/TraceStep.java
@@ -121,12 +121,16 @@ public class TraceStep implements Serializable{
 
 	/**
 	 * Returns the last step in this execution.
+	 *
 	 * @return this step if it has no chidlren or the last step from the children.
 	 */
-	public TraceStep getLastStep(){
-		if (children==null || children.size()==0)
-			return this;
-		return children.get(children.size()-1).getLastStep();
+	public TraceStep getLastStep() {
+		TraceStep result = this;
+		while (true) {
+			if (result.children == null || result.children.size() == 0)
+				return result;
+			result = result.children.get(result.children.size() - 1);
+		}
 	}
 
 	@Override
Removed tail recursion (a method calls itself as its last action before returning). Tail recursion can always be replaced by looping, which will be considerably faster.