diff --git a/design/src/android/support/design/internal/NavigationSubMenu.java b/design/src/android/support/design/internal/NavigationSubMenu.java
index ae59412..4e0f228 100644
--- a/design/src/android/support/design/internal/NavigationSubMenu.java
+++ b/design/src/android/support/design/internal/NavigationSubMenu.java
@@ -35,35 +35,9 @@
     }
 
     @Override
-    public MenuItem add(CharSequence title) {
-        MenuItem item = super.add(title);
-        notifyParent();
-        return item;
-    }
-
-    @Override
-    public MenuItem add(int titleRes) {
-        MenuItem item = super.add(titleRes);
-        notifyParent();
-        return item;
-    }
-
-    @Override
-    public MenuItem add(int groupId, int itemId, int order, CharSequence title) {
-        MenuItem item = super.add(groupId, itemId, order, title);
-        notifyParent();
-        return item;
-    }
-
-    @Override
-    public MenuItem add(int groupId, int itemId, int order, int titleRes) {
-        MenuItem item = super.add(groupId, itemId, order, titleRes);
-        notifyParent();
-        return item;
-    }
-
-    private void notifyParent() {
-        ((MenuBuilder) getParentMenu()).onItemsChanged(true);
+    public void onItemsChanged(boolean structureChanged) {
+        super.onItemsChanged(structureChanged);
+        ((MenuBuilder) getParentMenu()).onItemsChanged(structureChanged);
     }
 
 }
