Read features into application
diff --git a/src/main/java/org/apache/sling/feature/io/json/ApplicationJSONReader.java b/src/main/java/org/apache/sling/feature/io/json/ApplicationJSONReader.java
index 05382ca..c8e49b2 100644
--- a/src/main/java/org/apache/sling/feature/io/json/ApplicationJSONReader.java
+++ b/src/main/java/org/apache/sling/feature/io/json/ApplicationJSONReader.java
@@ -25,6 +25,7 @@
 import java.io.Reader;
 import java.io.StringReader;
 import java.util.Collections;
+import java.util.List;
 import java.util.Map;
 
 import javax.json.Json;
@@ -112,6 +113,7 @@
             variables.put(entry.getKey(), entry.getValue());
         }
 
+        this.readFeatures(map, app.getFeatureIds());
         this.readBundles(map, app.getBundles(), app.getConfigurations());
         this.readFrameworkProperties(map, app.getFrameworkProperties());
         this.readConfigurations(map, app.getConfigurations());
@@ -121,6 +123,16 @@
                 this.app.getExtensions(), this.app.getConfigurations());
     }
 
+    private void readFeatures(Map<String, Object> map, List<ArtifactId> featureIds) {
+        Object fids = map.get(JSONConstants.APP_FEATURES);
+        if (fids instanceof List) {
+            for (Object fid : (List<?>) fids) {
+                ArtifactId aid = ArtifactId.parse(fid.toString());
+                featureIds.add(aid);
+            }
+        }
+    }
+
     @Override
     protected Object handleResolveVars(Object val) {
         return handleVars(val, variables);