diff --git a/servers/slapd/extended.c b/servers/slapd/extended.c
index 9aa6f11201d2a37021b9e82640cd7057906e69a6..55620e6109fa68fbc1af76f5e266a03ad1041054 100644
--- a/servers/slapd/extended.c
+++ b/servers/slapd/extended.c
@@ -54,6 +54,7 @@ struct {
 #ifdef HAVE_TLS
 		{ LDAP_EXOP_START_TLS, starttls_extop },
 #endif
+		{ LDAP_EXOP_X_MODIFY_PASSWD, passwd_extop },
 		{ NULL, NULL }
 	};
 
diff --git a/servers/slapd/init.c b/servers/slapd/init.c
index f9020726bced8d235c9fe8c20b59a51371ceea5d..510816798af8ee3491da3c4eb3a6b582ae0a265d 100644
--- a/servers/slapd/init.c
+++ b/servers/slapd/init.c
@@ -137,8 +137,6 @@ int slap_startup( Backend *be )
 		rc = sasl_init();
 	}
 
-	slap_passwd_init();
-
 	return rc;
 }
 
diff --git a/servers/slapd/passwd.c b/servers/slapd/passwd.c
index bfeec38bf92a4ebb2f994da9ca1de60a0fa02c44..875bdf6fd0ac6454308234fb2d7d5ec5c061af9d 100644
--- a/servers/slapd/passwd.c
+++ b/servers/slapd/passwd.c
@@ -18,7 +18,7 @@
 
 #include <lutil.h>
 
-static int passwd_main(
+int passwd_extop(
 	SLAP_EXTOP_CALLBACK_FN ext_callback,
 	Connection *conn, Operation *op, char *oid,
 	struct berval *reqdata, struct berval **rspdata, char **text )
@@ -175,12 +175,6 @@ done:
 	return rc;
 }
 
-int
-slap_passwd_init( void )
-{
-	return load_extop( LDAP_EXOP_X_MODIFY_PASSWD, passwd_main );
-}
-
 int
 slap_passwd_check(
 	Attribute *a,
diff --git a/servers/slapd/proto-slap.h b/servers/slapd/proto-slap.h
index 3f3723fcb5a52ee7961b2743f46d9a6733da824f..33d608892fb7a9957e22b2b27c7bec6f42121e7e 100644
--- a/servers/slapd/proto-slap.h
+++ b/servers/slapd/proto-slap.h
@@ -459,7 +459,13 @@ LIBSLAPD_F (int) dscompare LDAP_P(( const char *s1, const char *s2del, char deli
  * starttls.c
  */
 
-LIBSLAPD_F (int) starttls_extop LDAP_P(( SLAP_EXTOP_CALLBACK_FN, Connection *conn, Operation *op, char * oid, struct berval * reqdata, struct berval ** rspdata, char ** text ));
+LIBSLAPD_F (int) starttls_extop LDAP_P((
+	SLAP_EXTOP_CALLBACK_FN,
+	Connection *conn, Operation *op,
+	char * oid,
+	struct berval * reqdata,
+	struct berval ** rspdata,
+	char ** text ));
 
 
 /*
@@ -493,7 +499,13 @@ LIBSLAPD_F (void) slap_init_user LDAP_P(( char *username, char *groupname ));
 /*
  * passwd.c
  */
-LIBSLAPD_F (int) slap_passwd_init( void );
+LIBSLAPD_F (int) passwd_extop LDAP_P((
+	SLAP_EXTOP_CALLBACK_FN,
+	Connection *conn, Operation *op,
+	char * oid,
+	struct berval * reqdata,
+	struct berval ** rspdata,
+	char ** text ));
 
 LIBSLAPD_F (int) slap_passwd_check(
 	Attribute			*attr,