diff --git a/core/src/net/sf/openrocket/file/openrocket/importt/MotorMountHandler.java b/core/src/net/sf/openrocket/file/openrocket/importt/MotorMountHandler.java
index 67383b299..93b51fd08 100644
--- a/core/src/net/sf/openrocket/file/openrocket/importt/MotorMountHandler.java
+++ b/core/src/net/sf/openrocket/file/openrocket/importt/MotorMountHandler.java
@@ -64,14 +64,13 @@ class MotorMountHandler extends AbstractElementHandler {
 		// System.err.println("closing MotorMount element: "+ element);
 		
 		if (element.equals("motor")) {
-			// yes, this is confirmed to be the FLIGHT config id == motor instance id.
 			FlightConfigurationId fcid = new FlightConfigurationId(attributes.get("configid"));
 			if (!fcid.isValid()) {
 				warnings.add(Warning.fromString("Illegal motor specification, ignoring."));
 				return;
 			}
 			Motor motor = motorHandler.getMotor(warnings);
-			MotorConfiguration motorConfig = new MotorConfiguration( mount, fcid);
+			MotorConfiguration motorConfig = new MotorConfiguration( mount, fcid, mount.getDefaultMotorConfig());
 			motorConfig.setMotor(motor);
 			motorConfig.setEjectionDelay(motorHandler.getDelay(warnings));
 			
diff --git a/core/src/net/sf/openrocket/motor/MotorConfiguration.java b/core/src/net/sf/openrocket/motor/MotorConfiguration.java
index 8793d372d..5248caa93 100644
--- a/core/src/net/sf/openrocket/motor/MotorConfiguration.java
+++ b/core/src/net/sf/openrocket/motor/MotorConfiguration.java
@@ -14,7 +14,7 @@ import net.sf.openrocket.util.Inertia;
  */
 public class MotorConfiguration implements FlightConfigurableParameter<MotorConfiguration> {
 	
-	public static final String EMPTY_DESCRIPTION = "Empty Configuration".intern();
+	public static final String EMPTY_DESCRIPTION = "Empty Motor Configuration".intern();
 
 	protected final MotorMount mount;
 	protected final FlightConfigurationId fcid;
@@ -44,18 +44,30 @@ public class MotorConfiguration implements FlightConfigurableParameter<MotorConf
 		
 		this.motor = null;
 		ejectionDelay = 0.0;
-		ignitionEvent = IgnitionEvent.LAUNCH;
+		ignitionEvent = IgnitionEvent.NEVER;
 		ignitionDelay = 0.0;
+		
+
 		modID++;
 	}
 	
+	public MotorConfiguration( final MotorMount _mount, final FlightConfigurationId _fcid, final MotorConfiguration _template ) {
+		this( _mount, _fcid);
+		
+		if( null != _template){
+			ejectionDelay = _template.getEjectionDelay();
+			ignitionEvent = _template.getIgnitionEvent();
+			ignitionDelay = _template.getIgnitionDelay();
+		}
+	}
+	
 	public boolean hasIgnitionOverride() {
 		return ignitionOveride;
 	}
-	
-	public String getDescription(){
+
+	public String toMotorDescription(){
 		if( motor == null ){
-			return EMPTY_DESCRIPTION;
+			return "<Empty>";
 		}else{
 			return this.motor.getDesignation() + "-" + (int)this.getEjectionDelay();
 		}
@@ -67,7 +79,6 @@ public class MotorConfiguration implements FlightConfigurableParameter<MotorConf
 		
 	public void setMotor(Motor motor){
 		this.motor = motor;
-		updateName();
 	}
 	
 	public Motor getMotor() {
@@ -119,6 +130,16 @@ public class MotorConfiguration implements FlightConfigurableParameter<MotorConf
 		this.ignitionOveride = true;
 	}
 	
+
+	public int getMotorCount() {
+		if( mount instanceof InnerTube ){
+			InnerTube inner = (InnerTube) mount;
+			return inner.getClusterConfiguration().getClusterCount();
+		}else{
+			 return 1;
+		}
+	}
+
 	public Coordinate getOffset( ){
 		RocketComponent comp = (RocketComponent) mount;
 		double delta_x = comp.getLength() + mount.getMotorOverhang() - this.motor.getLength();
@@ -195,19 +216,26 @@ public class MotorConfiguration implements FlightConfigurableParameter<MotorConf
 	public void update(){
 	}
 
-	private void updateName(){
-		if( null != motor ){
-			this.name = this.mount.getID() + "-"+ getDescription();
-		}
+	public String toDescription(){
+		return ( this.toMotorDescription()+
+				" in: "+mount.getDebugName()+
+				" ign@: "+this.toIgnitionDescription() );
 	}
 	
-	public int getMotorCount() {
-		if( mount instanceof InnerTube ){
-			InnerTube inner = (InnerTube) mount;
-			return inner.getClusterConfiguration().getClusterCount();
-		}else{
-			 return 1;
-		}
+	public String toIgnitionDescription(){
+		return this.ignitionEvent.getName()+" + "+this.ignitionDelay+"s ";
+	}
+	
+	public String toDebugDetail( ) {
+		StringBuilder buf = new StringBuilder();
+		
+		buf.append(String.format(">> in: %28s::%10s    %8s ign@: %12s ",
+				mount.getDebugName(),
+				fcid.toShortKey(),
+				toMotorDescription(),
+				toIgnitionDescription() ));
+		
+		return buf.toString();
 	}
 	
 
diff --git a/core/src/net/sf/openrocket/motor/MotorConfigurationSet.java b/core/src/net/sf/openrocket/motor/MotorConfigurationSet.java
index bb18f8165..16bf1cf2e 100644
--- a/core/src/net/sf/openrocket/motor/MotorConfigurationSet.java
+++ b/core/src/net/sf/openrocket/motor/MotorConfigurationSet.java
@@ -36,27 +36,16 @@ public class MotorConfigurationSet extends FlightConfigurableParameterSet<MotorC
 	@Override
 	public String toDebug(){
 		StringBuilder buffer = new StringBuilder();
-		buffer.append("====== Dumping MotorConfigurationSet for mount ("+this.size()+ " motors)\n");
-		MotorConfiguration defaultConfig = this.getDefault();
-		buffer.append("          (Ignition@ "+ defaultConfig.getIgnitionEvent().name +"  +"+defaultConfig.getIgnitionDelay()+"sec )\n");
+		final MotorMount mnt = this.getDefault().getMount();
+		buffer.append("====== Dumping MotorConfigurationSet: "+this.size()+ " motors in "+mnt.getDebugName()+" \n");
 		
 		for( FlightConfigurationId loopFCID : this.map.keySet()){
-			String shortKey = loopFCID.toShortKey();
-			
-			MotorConfiguration curInstance = this.map.get(loopFCID);
-			String designation;
-			if( null == curInstance.getMotor() ){
-				designation = "<EMPTY>";
+			MotorConfiguration curConfig = this.map.get(loopFCID);
+			if( this.isDefault(loopFCID)){
+				buffer.append( " [DEFAULT] "+curConfig.toDebugDetail()+"\n");
 			}else{
-				designation = curInstance.getMotor().getDesignation(curInstance.getEjectionDelay());
+				buffer.append( "           "+curConfig.toDebugDetail() +"\n");
 			}
-			String ignition = curInstance.getIgnitionEvent().name;
-			double delay = curInstance.getIgnitionDelay();
-			if( 0 != delay ){
-				ignition += " +"+delay;
-			}
-			buffer.append(String.format("              >> [%10s]= %6s  @ %4s\n",
-					shortKey, designation, ignition  ));
 		}
 		return buffer.toString();
 	}
diff --git a/core/src/net/sf/openrocket/rocketcomponent/FlightConfiguration.java b/core/src/net/sf/openrocket/rocketcomponent/FlightConfiguration.java
index 0beb16675..0d2328691 100644
--- a/core/src/net/sf/openrocket/rocketcomponent/FlightConfiguration.java
+++ b/core/src/net/sf/openrocket/rocketcomponent/FlightConfiguration.java
@@ -316,7 +316,7 @@ public class FlightConfiguration implements FlightConfigurableParameter<FlightCo
 				}
 				
 				if( ! motorConfig.isEmpty()){
-					buff.append( motorConfig.getDescription());
+					buff.append( motorConfig.toMotorDescription());
 					++activeMotorCount;
 				}
 			}
@@ -397,6 +397,7 @@ public class FlightConfiguration implements FlightConfigurableParameter<FlightCo
 				this.motors.put( motorConfig.getID(), motorConfig);
 			}
 		}
+		
 	}
 
 	@Override
@@ -522,7 +523,6 @@ public class FlightConfiguration implements FlightConfigurableParameter<FlightCo
 		return this.fcid.hashCode();
 	}
 	
-	
 	public String toDebug() {
 		return this.fcid.toDebug()+" (#"+instanceNumber+") "+ getOneLineMotorDescription();
 	}
@@ -544,23 +544,11 @@ public class FlightConfiguration implements FlightConfigurableParameter<FlightCo
 	// DEBUG / DEVEL
 	public String toMotorDetail(){
 		StringBuilder buf = new StringBuilder();
-		buf.append(String.format("\nDumping %2d Motors for configuration %s: (#: %s)\n", 
-				this.motors.size(), this.getFlightConfigurationID().toFullKey(), this.instanceNumber));
-		final String fmt = "    ..[%-8s]    %-12s %-20s\n";
-		buf.append(String.format(fmt, "Motor Id", "Mtr Desig","Mount"));
+		buf.append(String.format("\nDumping %2d Motors for configuration %s (%s)(#: %s)\n", 
+				this.motors.size(), this.getName(), this.getFlightConfigurationID().toFullKey(), this.instanceNumber));
+		
 		for( MotorConfiguration curConfig : this.motors.values() ){
-			MotorMount mount = curConfig.getMount();
-			
-			String motorId = curConfig.getID().toString();
-			String motorDesig;
-			if( curConfig.isEmpty() ){
-				motorDesig = "(empty)";
-			}else{
-				motorDesig = curConfig.getMotor().getDesignation();
-			}
-			String mountName = ((RocketComponent)mount).getName();
-			
-			buf.append(String.format( fmt, motorId, motorDesig, mountName));
+			buf.append("    "+curConfig.toDebugDetail()+"\n");
 		}
 		buf.append("\n");
 		return buf.toString();
diff --git a/core/src/net/sf/openrocket/rocketcomponent/MotorMount.java b/core/src/net/sf/openrocket/rocketcomponent/MotorMount.java
index 3676ea11e..f96c8d7f2 100644
--- a/core/src/net/sf/openrocket/rocketcomponent/MotorMount.java
+++ b/core/src/net/sf/openrocket/rocketcomponent/MotorMount.java
@@ -63,7 +63,7 @@ public interface MotorMount extends ChangeSource, FlightConfigurableComponent {
 
 	// duplicate of RocketComponent
 	public String getID();
-	public String getName();
+	public String getDebugName();
 	
 	// duplicate of RocketComponent 
 	public AxialStage getStage();
diff --git a/core/src/net/sf/openrocket/rocketcomponent/RocketComponent.java b/core/src/net/sf/openrocket/rocketcomponent/RocketComponent.java
index 7e577e4e5..cc429ae87 100644
--- a/core/src/net/sf/openrocket/rocketcomponent/RocketComponent.java
+++ b/core/src/net/sf/openrocket/rocketcomponent/RocketComponent.java
@@ -847,6 +847,10 @@ public abstract class RocketComponent implements ChangeSource, Cloneable, Iterab
 		return id;
 	}
 	
+	public final String getDebugName() {
+		return (name + "/" + id.substring(0,8));
+	}
+	
 	/**
 	 * Generate a new ID for this component.
 	 */
diff --git a/core/src/net/sf/openrocket/simulation/MotorClusterState.java b/core/src/net/sf/openrocket/simulation/MotorClusterState.java
index 2a918999f..47228cd3e 100644
--- a/core/src/net/sf/openrocket/simulation/MotorClusterState.java
+++ b/core/src/net/sf/openrocket/simulation/MotorClusterState.java
@@ -145,7 +145,7 @@ public class MotorClusterState {
 	
 	public String toDescription(){
 		return String.format("%32s / %4s - %s",
-							getMount().getName(), this.motor.getDesignation(), this.currentState.getName());
+							getMount().getDebugName(), this.motor.getDesignation(), this.currentState.getName());
 	}