diff --git a/core/api/src/main/java/org/onosproject/core/DefaultApplication.java b/core/api/src/main/java/org/onosproject/core/DefaultApplication.java
index c351563..8d63600 100644
--- a/core/api/src/main/java/org/onosproject/core/DefaultApplication.java
+++ b/core/api/src/main/java/org/onosproject/core/DefaultApplication.java
@@ -35,6 +35,10 @@
     private final ApplicationId appId;
     private final Version version;
     private final String description;
+    private final String category;
+    private final String url;
+    private final String readme;
+    private final byte[] icon;
     private final String origin;
     private final ApplicationRole role;
     private final Set<Permission> permissions;
@@ -49,6 +53,10 @@
      * @param version      application version
      * @param description  application description
      * @param origin       origin company
+     * @param category     application category
+     * @param url          application URL
+     * @param readme       application readme
+     * @param icon         application icon
      * @param role         application role
      * @param permissions  requested permissions
      * @param featuresRepo optional features repo URI
@@ -56,7 +64,8 @@
      * @param requiredApps list of required application names
      */
     public DefaultApplication(ApplicationId appId, Version version,
-                              String description, String origin,
+                              String description, String origin, String category,
+                              String url, String readme, byte[] icon,
                               ApplicationRole role, Set<Permission> permissions,
                               Optional<URI> featuresRepo, List<String> features,
                               List<String> requiredApps) {
@@ -64,6 +73,10 @@
         this.version = checkNotNull(version, "Version cannot be null");
         this.description = checkNotNull(description, "Description cannot be null");
         this.origin = checkNotNull(origin, "Origin cannot be null");
+        this.category = checkNotNull(category, "Category cannot be null");
+        this.url = checkNotNull(url, "URL cannot be null");
+        this.readme = readme;
+        this.icon = icon;
         this.role = checkNotNull(role, "Role cannot be null");
         this.permissions = checkNotNull(permissions, "Permissions cannot be null");
         this.featuresRepo = checkNotNull(featuresRepo, "Features repo cannot be null");
@@ -88,6 +101,26 @@
     }
 
     @Override
+    public String category() {
+        return category;
+    }
+
+    @Override
+    public String url() {
+        return url;
+    }
+
+    @Override
+    public String readme() {
+        return readme;
+    }
+
+    @Override
+    public byte[] icon() {
+        return icon;
+    }
+
+    @Override
     public String origin() {
         return origin;
     }
@@ -119,8 +152,8 @@
 
     @Override
     public int hashCode() {
-        return Objects.hash(appId, version, description, origin, role, permissions,
-                            featuresRepo, features, requiredApps);
+        return Objects.hash(appId, version, description, origin, category, url,
+                            readme, role, permissions, featuresRepo, features, requiredApps);
     }
 
     @Override
@@ -136,6 +169,9 @@
                 Objects.equals(this.version, other.version) &&
                 Objects.equals(this.description, other.description) &&
                 Objects.equals(this.origin, other.origin) &&
+                Objects.equals(this.category, other.category) &&
+                Objects.equals(this.url, other.url) &&
+                Objects.equals(this.readme, other.readme) &&
                 Objects.equals(this.role, other.role) &&
                 Objects.equals(this.permissions, other.permissions) &&
                 Objects.equals(this.featuresRepo, other.featuresRepo) &&
@@ -150,6 +186,9 @@
                 .add("version", version)
                 .add("description", description)
                 .add("origin", origin)
+                .add("category", category)
+                .add("url", url)
+                .add("readme", readme)
                 .add("role", role)
                 .add("permissions", permissions)
                 .add("featuresRepo", featuresRepo)
