diff --git a/scrplugin/scrtask/changelog.txt b/scrplugin/scrtask/changelog.txt
index fbc7ac1..482012b 100644
--- a/scrplugin/scrtask/changelog.txt
+++ b/scrplugin/scrtask/changelog.txt
@@ -1,3 +1,10 @@
+Changes from 1.8.0 to 1.7.0
+---------------------------
+** Improvement
+    * [FELIX-4101] - Create metatype.properties file when description and label are inlined
+    * [FELIX-4126] - Discontinue creation of single XML descriptor files 
+
+
 Changes from 1.7.0 to 1.6.0
 ---------------------------
 ** Bug
diff --git a/scrplugin/scrtask/src/main/java/org/apache/felix/scrplugin/ant/SCRDescriptorTask.java b/scrplugin/scrtask/src/main/java/org/apache/felix/scrplugin/ant/SCRDescriptorTask.java
index f55fda6..74e0cb7 100644
--- a/scrplugin/scrtask/src/main/java/org/apache/felix/scrplugin/ant/SCRDescriptorTask.java
+++ b/scrplugin/scrtask/src/main/java/org/apache/felix/scrplugin/ant/SCRDescriptorTask.java
@@ -49,16 +49,6 @@
     private Path classpath;
 
     /**
-     * Name of the generated descriptor.
-     */
-    private String finalName = "serviceComponents.xml";
-
-    /**
-     * Name of the generated meta type file.
-     */
-    private String metaTypeName = "metatype.xml";
-
-    /**
      * This flag controls the generation of the bind/unbind methods.
      */
     private boolean generateAccessors = true;
@@ -92,8 +82,6 @@
         scrLog.debug( "  implicitFileset: " + getImplicitFileSet() );
         scrLog.debug( "  outputDirectory: " + destdir );
         scrLog.debug( "  classpath: " + classpath );
-        scrLog.debug( "  finalName: " + finalName );
-        scrLog.debug( "  metaTypeName: " + metaTypeName );
         scrLog.debug( "  generateAccessors: " + generateAccessors );
         scrLog.debug( "  strictMode: " + strictMode );
         scrLog.debug( "  specVersion: " + specVersion );
@@ -110,8 +98,6 @@
             // create options
             final Options options = new Options();
             options.setOutputDirectory(destdir);
-            options.setSCRName(finalName);
-            options.setMetaTypeName(metaTypeName);
             options.setGenerateAccessors(generateAccessors);
             options.setStrictMode(strictMode);
             options.setProperties(new HashMap<String, String>());
@@ -196,24 +182,20 @@
         return this.classpath;
     }
 
-
     public void setClasspath( Path classPath ) {
         createClasspath().add( classPath );
     }
 
-
     public void setClasspathRef( Reference classpathRef ) {
         if ( classpathRef != null && classpathRef.getReferencedObject() instanceof Path ) {
             createClasspath().add( ( Path ) classpathRef.getReferencedObject() );
         }
     }
 
-
     public void setSrcdir( File srcdir )  {
         getImplicitFileSet().setDir( srcdir );
     }
 
-
     public void setDestdir( File outputDirectory ) {
         this.destdir = outputDirectory;
         if ( destdir != null ) {
@@ -223,22 +205,10 @@
         }
     }
 
-
-    public void setFinalName( String finalName ) {
-        this.finalName = finalName;
-    }
-
-
-    public void setMetaTypeName( String metaTypeName ) {
-        this.metaTypeName = metaTypeName;
-    }
-
-
     public void setGenerateAccessors( boolean generateAccessors ) {
         this.generateAccessors = generateAccessors;
     }
 
-
     public void setStrictMode( boolean strictMode ) {
         this.strictMode = strictMode;
     }
