diff -ruP rpx.old/rpx.module rpx/rpx.module
--- rpx.old/rpx.module	2010-02-01 13:33:26.000000000 +0000
+++ rpx/rpx.module	2010-02-11 23:41:48.000000000 +0000
@@ -121,9 +121,17 @@
     
   $form['submit'] = array(
       '#type' => 'submit',
-      '#value' => t('Submit')
+      '#value' => t('Submit'),
+      '#weight' => 99
     );
-  
+
+  // Add other stuff that needs to go to registration page.
+  $null = NULL;
+  $extra = _user_forms($null, NULL, NULL, 'register');
+  if ($extra) {
+    $form = array_merge($form, $extra);
+  }
+ 
   return $form;
 }
 
@@ -233,7 +241,7 @@
  */
 function _rpx_blind_registration() {
   // check if users are allowed to register on their own
-  if (variable_get('user_register', 1)) {
+  if (variable_get('user_register', 1) && !variable_get('rpx_force_registration_form', 0)) {
     // the person isn't registered, and they can register, so they should!
     
     // fill in the default data
@@ -255,7 +263,8 @@
 function rpx_user( $op, &$edit, &$account, $category = NULL ) {
   switch( $op ) {
     case 'register': // account registration form is about to be displayed
-      return _rpx_user_register();
+      if ($_GET['q'] != 'rpx/registration') return _rpx_user_register();
+      break;
   }
 }
 
@@ -437,6 +446,13 @@
     '#description' => t('Enable extra user profile fields'),
   );
 
+  $form['rpx_force_registration_form'] = array(
+    '#type' => 'checkbox',
+    '#title' => t('Force registration form'),
+    '#default_value' => variable_get('rpx_force_registration_form', 0) ? 1 : 0,
+    '#description' => t('Always show RPX registration form, in case there is additional data to be captured then'),
+  );
+
   if (module_exists('openid')) {
     $form['rpx_openid_override'] = array(
       '#type' => 'checkbox',
@@ -1068,4 +1084,4 @@
     }
   }
   return $account;
-}
\ No newline at end of file
+}
