diff --git a/ldap/model/src/main/java/org/apache/directory/shared/ldap/model/entry/DefaultModification.java b/ldap/model/src/main/java/org/apache/directory/shared/ldap/model/entry/DefaultModification.java
index 3281952..5640b34 100644
--- a/ldap/model/src/main/java/org/apache/directory/shared/ldap/model/entry/DefaultModification.java
+++ b/ldap/model/src/main/java/org/apache/directory/shared/ldap/model/entry/DefaultModification.java
@@ -72,6 +72,94 @@
         this.attribute = attribute;
     }
 
+
+    /**
+     * Creates a new instance of DefaultModification.
+     *
+     * @param operation The modification operation
+     * @param attributeId The associated attribute ID
+     * @param values the associated values
+     */
+    public DefaultModification( ModificationOperation operation, String attributeId, String... values )
+    {
+        this.operation = operation;
+        this.attribute = new DefaultAttribute( attributeId, values );
+    }
+
+
+    /**
+     * Creates a new instance of DefaultModification.
+     *
+     * @param operation The modification operation
+     * @param attributeId The associated attribute ID
+     * @param values the associated values
+     */
+    public DefaultModification( ModificationOperation operation, String attributeId, byte[]... values )
+    {
+        this.operation = operation;
+        this.attribute = new DefaultAttribute( attributeId, values );
+    }
+
+
+    /**
+     * Creates a new instance of DefaultModification.
+     *
+     * @param operation The modification operation
+     * @param attributeId The associated attribute ID
+     * @param values the associated values
+     */
+    public DefaultModification( ModificationOperation operation, String attributeId, Value<?>... values )
+    {
+        this.operation = operation;
+        this.attribute = new DefaultAttribute( attributeId, values );
+    }
+
+
+    /**
+     * Creates a new instance of DefaultModification.
+     *
+     * @param operation The modification operation
+     * @param attributeType The associated attributeType
+     * @param values the associated values
+     */
+    public DefaultModification( ModificationOperation operation, AttributeType attributeType, String... values ) 
+        throws LdapInvalidAttributeValueException
+    {
+        this.operation = operation;
+        this.attribute = new DefaultAttribute( attributeType, values );
+    }
+
+
+    /**
+     * Creates a new instance of DefaultModification.
+     *
+     * @param operation The modification operation
+     * @param attributeType The associated attributeType
+     * @param values the associated values
+     */
+    public DefaultModification( ModificationOperation operation, AttributeType attributeType, byte[]... values )
+    throws LdapInvalidAttributeValueException
+    {
+        this.operation = operation;
+        this.attribute = new DefaultAttribute( attributeType, values );
+    }
+
+
+    /**
+     * Creates a new instance of DefaultModification.
+     *
+     * @param operation The modification operation
+     * @param attributeType The associated attributeType
+     * @param values the associated values
+     */
+    public DefaultModification( ModificationOperation operation, AttributeType attributeType, Value<?>... values )
+    throws LdapInvalidAttributeValueException
+    {
+        this.operation = operation;
+        this.attribute = new DefaultAttribute( attributeType, values );
+    }
+
+
     /**
      * Creates a new instance of DefaultModification.
      *
