diff --git a/gshell-application/src/main/java/org/apache/geronimo/gshell/application/model/ApplicationModel.java b/gshell-application/src/main/java/org/apache/geronimo/gshell/application/model/ApplicationModel.java
index e37c192..0fd1045 100644
--- a/gshell-application/src/main/java/org/apache/geronimo/gshell/application/model/ApplicationModel.java
+++ b/gshell-application/src/main/java/org/apache/geronimo/gshell/application/model/ApplicationModel.java
@@ -24,7 +24,6 @@
 
 import java.util.ArrayList;
 import java.util.List;
-import java.util.Properties;
 
 /**
  * Application model root element.
@@ -33,6 +32,10 @@
  */
 public class ApplicationModel
 {
+    //
+    // FIXME: Merge with Application
+    //
+
     private String groupId;
 
     private String artifactId;
@@ -43,8 +46,6 @@
 
     private String description;
 
-    private Properties properties;
-
     private List<Artifact> dependencies;
 
     private List<Artifact> plugins;
@@ -109,19 +110,7 @@
         this.description = description;
     }
 
-    public Properties getProperties() {
-        if (properties == null) {
-            properties = new Properties();
-        }
-
-        return properties;
-    }
-
-    public void setProperties(final Properties properties) {
-        this.properties = properties;
-    }
-
-    // DependencyArtifact
+    // Dependencies
 
     public List<Artifact> getDependencies() {
         if (dependencies == null) {
@@ -141,7 +130,7 @@
         getDependencies().add(dependency);
     }
 
-    // PluginArtifact
+    // Plugins
 
     public List<Artifact> getPlugins() {
         if (plugins == null) {
diff --git a/gshell-application/src/main/java/org/apache/geronimo/gshell/application/model/Branding.java b/gshell-application/src/main/java/org/apache/geronimo/gshell/application/model/Branding.java
index 72a7f19..441c590 100644
--- a/gshell-application/src/main/java/org/apache/geronimo/gshell/application/model/Branding.java
+++ b/gshell-application/src/main/java/org/apache/geronimo/gshell/application/model/Branding.java
@@ -22,7 +22,6 @@
 import org.apache.geronimo.gshell.yarn.Yarn;
 
 import java.io.File;
-import java.util.Properties;
 
 /**
  * Branding configuration element.
@@ -31,14 +30,12 @@
  */
 public class Branding
 {
-    private transient ApplicationModel parent;
-
-    private Properties properties;
-
     //
-    // FIXME: Probably need to move some of these up to the Application descriptor?
+    // FIXME: Merge with Application
     //
     
+    private transient ApplicationModel parent;
+
     private String name;
 
     private String displayName;
@@ -230,16 +227,4 @@
     public void setPrompt(final String prompt) {
         this.prompt = prompt;
     }
-
-    public Properties getProperties() {
-        if (properties == null) {
-            properties = new Properties();
-        }
-        
-        return properties;
-    }
-
-    public void setProperties(final Properties properties) {
-        this.properties = properties;
-    }
 }
\ No newline at end of file
