Index: url_profile_technorati/url_profile_technorati.module
===================================================================
--- url_profile_technorati/url_profile_technorati.module	(revision 22)
+++ url_profile_technorati/url_profile_technorati.module	(working copy)
@@ -22,17 +22,20 @@
 define('UPT_LIMITUSERWARNINGS', false);
 
 /**
- * Implementation of hook_help().
+ * Implementation of hook_menu()
  */
-function url_profile_technorati_help($section) {
-  switch ($section) {
-    case 'admin/help#url_profile_technorati':
-      return t('Retrieves information about URLs from Technorati. <em>Requires leech and url_profile module</em>.');
-    case 'admin/modules#description':
-      return t('Retrieves information about URLs from Technorati. <em>Requires leech and url_profile module</em>.');
+function url_profile_technorati_menu($may_cache) {
+  if ($may_cache) {
+    $items[] = array(
+      'path' => 'admin/settings/url_profile/technorati',
+      'title' => t('Technorati'),
+      'callback' => 'drupal_get_form',
+      'callback arguments' => array('url_profile_technorati_settings'),
+      'access' => user_access('administer site configuration'),
+    );
   }
+  return $items;
 }
-
 /**
  * Implementation of hook_perm().
  */
Index: url_profile.module
===================================================================
--- url_profile.module	(revision 22)
+++ url_profile.module	(working copy)
@@ -76,8 +76,6 @@
                 This is particularly helpful if you subscribe to keyword feeds from sites such as http://news.google.com
                 and you want to know where the articles coming in from it do actually come from. Also check out the plug in modules
                 url_profile_alexa and url_profile_technorati for retrieving Alexa and Technorati data for URLs.');
-    case 'admin/modules#description':
-    return t('Deduces base URL from leech feed item URLs. <em>Requires leech module.</em>');
   }
 }
 
@@ -117,6 +115,14 @@
     'title' => t('Manage custom URL profile'),
     'callback' => 'url_profile_page_list_manual',
     'access' => user_access('administer url profiles'));
+    $items[] = array(
+      'path' => 'admin/settings/url_profile',
+      'description' => t('Select URL Profile Settings'),
+      'title' => t('URL Profile'),
+      'callback' => 'drupal_get_form',
+      'callback arguments' => array('url_profile_settings'),
+      'access' => user_access('administer site configuration'),
+    );
   }
   else {
     $items[] = array('path' => 'url_profile/cron_now',
@@ -181,8 +187,6 @@
  * Implementation of hook_settings().
  */
 function url_profile_settings() {
-  $form = array();
-
   $form['cron'] = array(
   '#type' => 'fieldset',
   '#title' => t('Cron settings'),
@@ -255,7 +259,7 @@
     '#weight' => $list['weight'][$name] ? $list['weight'][$name] : 10,
     );
   }
-  return $form;
+  return system_settings_form($form);
 }
 
 /**
@@ -416,12 +420,15 @@
 function url_profile_manual_edit($upid) {
   $result = db_query("SELECT * FROM {url_profile_url} WHERE upid = %d", $upid);
   $source = db_fetch_array($result);
-  $form = _url_profile_source_form($source);
   drupal_set_title(t('Edit custom URL profile'));
-  return drupal_get_form('url_profile_manual_edit', $form);
+  return drupal_get_form('url_profile_manual_edit', $source);
 
 }
 
+function url_profile_manual_edit_form($source) {
+  return _url_profile_source_form($source);
+}
+
 /**
  * lists only custom URL profiles
  */
@@ -495,9 +502,13 @@
  * @return string The created form
  */
 function url_profile_manual_add() {
-  return drupal_get_form('url_profile_manual_add', _url_profile_source_form());
+  return drupal_get_form('url_profile_manual_add');
 }
 
+function url_profile_manual_add_form() {
+  return _url_profile_source_form();
+}
+
 function url_profile_manual_add_validate($form_id, $form_values) {
   $url = trim($form_values['url'], "/");
   $title = trim(check_plain($form_values['title']));
@@ -631,7 +642,7 @@
   static $css_done = FALSE;
   if (!$css_done) {
     $css_done = TRUE;
-    theme_add_style(drupal_get_path('module', 'url_profile').'/url_profile.css');
+    drupal_add_css(drupal_get_path('module', 'url_profile').'/url_profile.css', 'module');
   }
 
   $output_arr = array();
@@ -1253,7 +1264,10 @@
  * creates a form for setting the threshold for sources on the block
  */
 function _url_profile_show_source_threshold_form() {
+  return drupal_get_form('url_profile_show_threshold');
+}
 
+function url_profile_show_threshold_form() {
   $form['url_profile_show_source_threshold'] = array(
   '#type' => 'select',
   '#title' => t('Posts / profile minimum'),
@@ -1265,8 +1279,7 @@
   '#type' => 'submit',
   '#value' => t('Submit'),
   );
-
-  return drupal_get_form('url_profile_show_threshold', $form);
+  return $form;
 }
 
 function url_profile_show_threshold_submit($form_id, $form) {
Index: url_profile_alexa/url_profile_alexa.module
===================================================================
--- url_profile_alexa/url_profile_alexa.module	(revision 22)
+++ url_profile_alexa/url_profile_alexa.module	(working copy)
@@ -20,6 +20,7 @@
  * Implementation of hook_menu()
  */
 function url_profile_alexa_menu($may_cache) {
+  if ($may_cache) {
   $items[] =   array('path' => 'url_profile_alexa/show_image',
   'title' => t('Show alexa thumbnail'),
   'callback' => 'alexa_show_thumbnail',
@@ -30,6 +31,14 @@
   'callback' => 'alexa_refresh_feed',
   'access' => TRUE,
   'type' => MENU_CALLBACK);
+  $items[] = array(
+    'path' => 'admin/settings/url_profile/alexa',
+    'title' => t('Alexa'),
+    'callback' => 'drupal_get_form',
+    'callback arguments' => array('url_profile_alexa_settings'),
+    'access' => user_access('administer site configuration') || user_access('administer Alexa data'),
+  );
+  }
   return $items;
 }
 
@@ -75,22 +84,7 @@
   fclose($img_fp);
 }
 
-/**
- * Implementation of hook_help().
- */
-function url_profile_alexa_help($section) {
-  switch ($section) {
-    case 'admin/help#url_profile_alexa':
-      return t('Gathers information about URLs from Alexa.  <em>Requires leech and url_profile module.</em>.');
-    case 'admin/modules#description':
-      return t('Gathers information about URLs from Alexa. <em>Requires leech and url_profile module</em>.');
-  }
-}
-
 function url_profile_alexa_settings() {
-  if (!user_access('administer Alexa data')) {
-    return;
-  }
   $form['url_profile_alexa_accesskey'] = array(
   '#type' => 'textfield',
   '#title' => t('Amazon Access key'),
@@ -631,4 +625,4 @@
   return $result;
 }
 
-?>
\ No newline at end of file
+?>
