diff --git a/RELEASE-NOTES.txt b/RELEASE-NOTES.txt
index 8429c16..5a89ebe 100644
--- a/RELEASE-NOTES.txt
+++ b/RELEASE-NOTES.txt
@@ -60,6 +60,7 @@
 IMPROVEMENTS OVER PREVIOUS RELEASE
 ===================================
 
+ * [DIGESTER-156] Make (Nested|Set)PropertiesBuilder#addAlias() fluent.
  * [DIGESTER-152] The DigesterLoader doesn't allow binding a default Locator
  * [DIGESTER-151] The DigesterLoader doesn't allow binding a default ErrorHandler.
 
diff --git a/src/changes/changes.xml b/src/changes/changes.xml
index b7fd5b8..39343b3 100644
--- a/src/changes/changes.xml
+++ b/src/changes/changes.xml
@@ -23,6 +23,9 @@
   </properties>
   <body>
   <release version="3.2" date="201?-??-??" description="Maintenance release.">
+    <action dev="simonetripodi" type="fix" issue="DIGESTER-156">
+      Make (Nested|Set)PropertiesBuilder#addAlias() fluent.
+    </action>
     <action dev="simonetripodi" type="fix" issue="DIGESTER-155">
       ClassLoader reference set to DigesterLoader not set in produced Digester instances
     </action>
diff --git a/src/main/java/org/apache/commons/digester3/annotations/handlers/SetPropertiesHandler.java b/src/main/java/org/apache/commons/digester3/annotations/handlers/SetPropertiesHandler.java
index ed6307e..c3e6b17 100644
--- a/src/main/java/org/apache/commons/digester3/annotations/handlers/SetPropertiesHandler.java
+++ b/src/main/java/org/apache/commons/digester3/annotations/handlers/SetPropertiesHandler.java
@@ -48,7 +48,7 @@
         if ( annotation.attributeName() != null && annotation.attributeName().length() > 0
             && !element.getName().equals( annotation.attributeName() ) )
         {
-            builder.addAlias( annotation.attributeName(), element.getName() );
+            builder.addAlias( annotation.attributeName() ).forProperty( element.getName() );
         }
     }
 
diff --git a/src/main/java/org/apache/commons/digester3/binder/NestedPropertiesBuilder.java b/src/main/java/org/apache/commons/digester3/binder/NestedPropertiesBuilder.java
index c719fcf..f2c021d 100644
--- a/src/main/java/org/apache/commons/digester3/binder/NestedPropertiesBuilder.java
+++ b/src/main/java/org/apache/commons/digester3/binder/NestedPropertiesBuilder.java
@@ -57,11 +57,7 @@
         {
             reportError( "setNestedProperties().ignoreElement( String )", "empty 'elementName' not allowed" );
         }
-        else
-        {
-            addAlias( elementName, null );
-        }
-        return this;
+        return addAlias( elementName ).forProperty( null );
     }
 
     /**
@@ -70,18 +66,28 @@
      * @param elementName The child xml element to match
      * @param propertyName The java bean property to be assigned the value
      * @return this builder instance
+     * @deprecated
      */
+    @Deprecated
     public NestedPropertiesBuilder addAlias( String elementName, String propertyName )
     {
+        return addAlias( elementName ).forProperty( propertyName );
+    }
+
+    /**
+     * Allows element2property mapping to be overridden.
+     *
+     * @param elementName
+     * @return the property alias builder
+     * @since 3.2
+     */
+    public AddAliasBuilder<NestedPropertiesBuilder> addAlias( String elementName )
+    {
         if ( elementName == null )
         {
-            reportError( "setNestedProperties().addAlias( String,String )", "empty 'elementName' not allowed" );
+            reportError( "setProperties().addAlias( String )", "empty 'elementName' not allowed" );
         }
-        else
-        {
-            elementNames.put( elementName, propertyName );
-        }
-        return this;
+        return new AddAliasBuilder<NestedPropertiesBuilder>( this, elementNames, elementName );
     }
 
     /**
diff --git a/src/main/java/org/apache/commons/digester3/binder/SetPropertiesBuilder.java b/src/main/java/org/apache/commons/digester3/binder/SetPropertiesBuilder.java
index 6f33b01..c392315 100644
--- a/src/main/java/org/apache/commons/digester3/binder/SetPropertiesBuilder.java
+++ b/src/main/java/org/apache/commons/digester3/binder/SetPropertiesBuilder.java
@@ -47,18 +47,28 @@
      * @param attributeName The attribute to match
      * @param propertyName The java bean property to be assigned the value
      * @return this builder instance
+     * @deprecated
      */
+    @Deprecated
     public SetPropertiesBuilder addAlias( String attributeName, String propertyName )
     {
+        return addAlias( attributeName ).forProperty( propertyName );
+    }
+
+    /**
+     * Add an additional attribute name to property name mapping.
+     *
+     * @param attributeName The attribute to match
+     * @return the property alias builder
+     * @since 3.2
+     */
+    public AddAliasBuilder<SetPropertiesBuilder> addAlias( String attributeName )
+    {
         if ( attributeName == null )
         {
-            reportError( "setProperties().addAlias( String,String )", "empty 'attributeName' not allowed" );
+            reportError( "setProperties().addAlias( String )", "empty 'attributeName' not allowed" );
         }
-        else
-        {
-            aliases.put( attributeName, propertyName );
-        }
-        return this;
+        return new AddAliasBuilder<SetPropertiesBuilder>( this, aliases, attributeName );
     }
 
     /**
@@ -73,16 +83,12 @@
         {
             reportError( "setProperties().ignoreAttribute( String )", "empty 'attributeName' not allowed" );
         }
-        else
-        {
-            addAlias( attributeName, null );
-        }
-        return this;
+        return addAlias( attributeName ).forProperty( null );
     }
 
     /**
      * Sets whether attributes found in the XML without matching properties should be ignored.
-     * 
+     *
      * If set to false, the parsing will throw an {@code NoSuchMethodException}
      * if an unmatched attribute is found.
      * This allows to trap misspellings in the XML file.
diff --git a/src/main/java/org/apache/commons/digester3/xmlrules/SetNestedPropertiesAliasRule.java b/src/main/java/org/apache/commons/digester3/xmlrules/SetNestedPropertiesAliasRule.java
index 572d238..e3a3d6d 100644
--- a/src/main/java/org/apache/commons/digester3/xmlrules/SetNestedPropertiesAliasRule.java
+++ b/src/main/java/org/apache/commons/digester3/xmlrules/SetNestedPropertiesAliasRule.java
@@ -24,7 +24,7 @@
 import org.xml.sax.Attributes;
 
 /**
- * 
+ *
  */
 final class SetNestedPropertiesAliasRule
     extends AbstractXmlRule
@@ -45,7 +45,7 @@
         String elementName = attributes.getValue( "attr-name" );
         String propertyName = attributes.getValue( "prop-name" );
 
-        linkedRuleBuilder.setNestedProperties().addAlias( elementName, propertyName );
+        linkedRuleBuilder.setNestedProperties().addAlias( elementName ).forProperty( propertyName );
     }
 
 }
diff --git a/src/main/java/org/apache/commons/digester3/xmlrules/SetPropertiesAliasRule.java b/src/main/java/org/apache/commons/digester3/xmlrules/SetPropertiesAliasRule.java
index 531798a..a61f4f5 100644
--- a/src/main/java/org/apache/commons/digester3/xmlrules/SetPropertiesAliasRule.java
+++ b/src/main/java/org/apache/commons/digester3/xmlrules/SetPropertiesAliasRule.java
@@ -24,7 +24,7 @@
 import org.xml.sax.Attributes;
 
 /**
- * 
+ *
  */
 final class SetPropertiesAliasRule
     extends AbstractXmlRule
@@ -45,7 +45,7 @@
         String attributeName = attributes.getValue( "attr-name" );
         String propertyName = attributes.getValue( "prop-name" );
 
-        linkedRuleBuilder.setProperties().addAlias( attributeName, propertyName );
+        linkedRuleBuilder.setProperties().addAlias( attributeName ).forProperty( propertyName );
     }
 
 }
diff --git a/src/test/java/org/apache/commons/digester3/SetNestedPropertiesRuleTestCase.java b/src/test/java/org/apache/commons/digester3/SetNestedPropertiesRuleTestCase.java
index 4c416df..eedf40a 100644
--- a/src/test/java/org/apache/commons/digester3/SetNestedPropertiesRuleTestCase.java
+++ b/src/test/java/org/apache/commons/digester3/SetNestedPropertiesRuleTestCase.java
@@ -142,9 +142,9 @@
                 forPattern( "root" ).createObject().ofType( "org.apache.commons.digester3.SimpleTestBean" )
                     .then()
                     .setNestedProperties()
-                        .addAlias( "alpha", null )
-                        .addAlias( "gamma-alt", "gamma" )
-                        .addAlias( "delta", null );
+                        .addAlias( "alpha" ).forProperty( null )
+                        .addAlias( "gamma-alt" ).forProperty( "gamma" )
+                        .addAlias( "delta" ).forProperty(  null );
             }
 
         }).newDigester();
@@ -184,7 +184,7 @@
                 forPattern( "root" ).createObject().ofType( "org.apache.commons.digester3.SimpleTestBean" )
                     .then()
                     .setNestedProperties()
-                        .addAlias( "alpha", null );
+                        .addAlias( "alpha" ).forProperty( null );
             }
 
         }).newDigester();
@@ -224,7 +224,7 @@
                 forPattern( "root" ).createObject().ofType( "org.apache.commons.digester3.SimpleTestBean" )
                     .then()
                     .setNestedProperties()
-                        .addAlias( "alpha-alt", "alpha" );
+                        .addAlias( "alpha-alt" ).forProperty( "alpha" );
             }
 
         }).newDigester();
diff --git a/src/test/java/org/apache/commons/digester3/SetPropertiesRuleTestCase.java b/src/test/java/org/apache/commons/digester3/SetPropertiesRuleTestCase.java
index 412eb7b..aa0a60f 100644
--- a/src/test/java/org/apache/commons/digester3/SetPropertiesRuleTestCase.java
+++ b/src/test/java/org/apache/commons/digester3/SetPropertiesRuleTestCase.java
@@ -198,7 +198,7 @@
                 forPattern( "root" ).createObject().ofType( "org.apache.commons.digester3.SimpleTestBean" )
                     .then()
                     .setProperties()
-                        .addAlias( "ignore", null )
+                        .addAlias( "ignore" ).forProperty( null )
                         .ignoreMissingProperty( false );
             }
 
