diff --git a/legal.module b/legal.module
index 3e184d0..af330ad 100644
--- a/legal.module
+++ b/legal.module
@@ -17,7 +17,7 @@ function legal_help($section = 'admin/help#legal') {
 }
 
 function legal_perm() {
-  return array('administer Terms and Conditions', 'view Terms and Conditions');
+  return array('administer Terms and Conditions', 'view Terms and Conditions', 'skip content terms and conditions');
 }
 
 function legal_access($op, $node) {
@@ -38,6 +38,23 @@ function legal_menu($may_cache) {
         'access' => user_access('administer Terms and Conditions'),
         'description' => t('Display Terms and Conditions statement on the registration page.')
         );
+    // Top level tabs
+    $items[] = array(
+      'path' => 'admin/settings/legal/site',
+      'title' => t('Site'),
+      'description' => t('Legal site settings'),
+      'access' => user_access('administer Terms and Conditions'),
+      'weight' => -10,
+      'type' => MENU_DEFAULT_LOCAL_TASK,
+    );
+    $items[] = array(
+      'path' => 'admin/settings/legal/content',
+      'title' => t('Content Submission'),
+      'callback' => 'drupal_get_form',
+      'callback arguments' => array('legal_admin_content'),
+      'access' => user_access('administer Terms and Conditions'),
+      'type' => MENU_LOCAL_TASK,
+    );
     $items[] = array('path' => 'legal',
         'title' => t('Terms and Conditions'),
         'callback' => 'legal_page',
@@ -242,6 +259,143 @@ function legal_administration() {
     return $form;
 }
 
+function legal_admin_content() {
+  $form['legal_content_conditions'] = array(
+    '#type' => 'textarea',
+    '#title' => t('Terms & Conditions'),
+    '#default_value' => variable_get('legal_content_conditions', ''),
+    '#description' => t('Your Terms & Conditions for content submissions'),
+    '#required' => TRUE,
+  );
+  // overide display setting
+  $form['legal_content_display'] = array(
+    '#type' => 'radios',
+    '#title' => t('Display Style'),
+    '#default_value' => variable_get('legal_content_display', 'scroll_box'),
+    '#options' => array(
+      'scroll_box' => t('Scroll Box'),
+      'scroll_box_css' => t('Scroll Box (CSS)'),
+      'html_text' => t('HTML Text'),
+    ),
+    '#description' => t('How terms & conditions should be displayed to users.'),
+    '#required' => TRUE,
+  );
+  return system_settings_form($form);
+}
+
+function legal_form_alter($form_id, &$form) {
+  if (isset($form['type']) && $form['type']['#value'] .'_node_form' == $form_id) {
+    return legal_fa_node_edit_form($form);
+  }
+  if ($form_id == 'node_type_form' && isset($form['identity']['type'])) {
+    return legal_fa_node_type_form($form);
+  }
+}
+
+function legal_fa_node_edit_form(&$form) {
+  $nt = $form['type']['#value'];
+  $v = variable_get("legal_ct_$nt", false);
+  if (!$v) return;
+  // permission to skip this ?
+  if (user_access('skip content terms and conditions')) return;
+
+  $form['legal'] = array(
+    '#type' => 'fieldset',
+    '#title' => t('Terms and Conditions of Use'),
+    '#weight' => 29,
+  );
+
+  $conds = variable_get("legal_ct_terms_$nt", null);
+  if (empty($conds)) {
+    $conds = variable_get('legal_content_conditions', 'Conditions');
+  }
+
+  switch (variable_get('legal_content_display', 'scroll_box')) {
+
+  case 'scroll_box': // scroll box (CSS)
+    $form['legal']['conditions'] = array(
+      '#value' => filter_xss_admin($conds),
+    );
+    break;
+
+  case 'scroll_box_css': // HTML
+    $path = base_path() . drupal_get_path('module', 'legal');
+    drupal_add_css(drupal_get_path('module', 'legal') .'/legal.css');
+    $form['legal']['conditions'] = array(
+      '#value' => filter_xss_admin($conds),
+      '#prefix' => '<div class="legal-terms">',
+      '#suffix' => '</div>',
+    );
+    break;
+
+  default: // scroll box (HTML)
+    $form['legal']['conditions'] = array(
+      '#type' => 'textarea',
+      '#title' => t('Terms & Conditions'),
+      '#default_value' => $conds,
+      '#value' => $conds,
+      '#rows' => 10,
+      '#weight' => 0,
+      '#attributes' => array('readonly' => ''),
+    );
+  }
+
+  $form['legal']['legal_accept'] = array(
+    '#type' => 'checkbox',
+    '#title' => t('<strong>Accept</strong> Terms & Conditions of Use'),
+    '#default_value' => 0,
+    '#weight' => 50,
+    '#required' => TRUE,
+  );
+}
+
+function legal_fa_node_type_form(&$form) {
+  $nt = $form['#node_type']->type;
+  $fs = array(
+    '#type' => 'fieldset',
+    '#title' => t('Terms & Conditions'),
+    '#description' => t('Legal settings for this content type'),
+    '#collapsible' => false,
+    '#collapsed' => false,
+  );
+  $fs['legal_ct'] = array( // content_type postfix is added automatically for variable
+    '#type' => 'checkbox',
+    '#title' => t('Require Terms & Conditions'),
+    '#default_value' => variable_get("legal_ct_$nt", 0),
+    '#return_value' => 1
+  );
+  $fs['legal_ct_terms'] = array( // ct postfix is added automatically for variable
+    '#type' => 'textarea',
+    '#rows' => 5,
+    '#title' => t('Terms & Conditions for content type'),
+    '#default_value' => variable_get("legal_ct_terms_$nt", ''),
+    '#description' => t('Leave empty to use default conditions'),
+  );
+  $form['workflow']['legal_4ct'] = $fs;
+}
+
+function legal_node_type($op, $info) {
+  switch ($op){
+  case 'delete':
+    variable_del('legal_ct_'. $info->type);
+    variable_del('legal_ct_terms_'. $info->type);
+    break;
+  case 'update':
+    if (!empty($info->old_type) && $info->old_type != $info->type) {
+      $setting = variable_get('legal_ct_'. $info->old_type, NULL);
+      if ($setting) {
+        variable_del('legal_ct_'. $info->old_type);
+        variable_set('legal_ct_'. $info->type, $setting);
+      }
+      $terms = variable_get('legal_ct_terms_'. $info->old_type, NULL);
+      if ($terms) {
+        variable_del('legal_ct_terms_'. $info->old_type);
+        variable_set('legal_ct_terms_'. $info->type, $terms);
+      }
+    }
+    break;
+  }
+}
 
 function legal_preview($form, $form_values) {
 
@@ -335,7 +489,7 @@ function theme_legal_administration($form) {
     return $output;
 }
 
-function theme_legal_display($form) {
+function theme_legal_display(&$form) {
 
     if (empty($form['legal']['conditions']['#value'])) return;
         
