diff --git a/ajax_comments.admin.inc b/ajax_comments.admin.inc
index ce3f343..5bd7fe2 100644
--- a/ajax_comments.admin.inc
+++ b/ajax_comments.admin.inc
@@ -8,19 +8,48 @@
 /**
  * AJAX comments settings form.
  */
-function ajax_comments_settings() {
-  $form['ajax_comments_node_types'] = array(
-    '#title' => t('Content types'),
-    '#type' => 'checkboxes',
-    '#description' => t('Select node types you want to activate ajax comments on. If you select nothing, AJAX Comments will be enabled everywhere.'),
-    '#default_value' => variable_get('ajax_comments_node_types', array()),
-    '#options' => node_type_get_names(),
+function ajax_comments_settings_form($form, $form_state) {
+  $types = node_type_get_types();
+  $options = array(
+    AJAX_COMMENTS_DISABLED => t('disabled'),
+    AJAX_COMMENTS_NEW_ON_TOP => t('placed at the top'),
+    AJAX_COMMENTS_NEW_ON_BOTTOM => t('placed at the bottom'),
   );
+  $values = variable_get('ajax_comments_node_types', array());
+  $form['description'] = array('#markup' => t('You can configure node type specific settings below.'));
+  $form['tabs'] = array('#type' => 'vertical_tabs');
+  foreach ($types as $name=>$type) {
+    $form['types'][$name] = array(
+      '#type' => 'fieldset',
+      '#title' => $type->name,
+      '#group' => 'tabs',
+    );
+    $form['types'][$name]['enabled_' . $name] = array(
+      '#type' => 'radios',
+      '#title' => t('New ajax comments for node type <em>!type</em> are', array('!type' => $type->name)),
+      '#options' => $options,
+      '#default_value' => isset($values[$name]) ? $values[$name] : AJAX_COMMENTS_DISABLED,
+    );
+  }
   $form['ajax_comments_notify'] = array(
     '#title' => t('Notification Message'),
     '#type' => 'checkbox',
     '#description' => t('Add notification message to comment when posted.'),
     '#default_value' => variable_get('ajax_comments_notify', ''),
   );
-  return system_settings_form($form);
+  $form['actions']['#type'] = 'actions';
+  $form['actions']['submit'] = array('#type' => 'submit', '#value' => t('Save configuration'));
+  return $form;
+}
+
+function ajax_comments_settings_form_submit(&$form, &$form_state) {
+  $values = array();
+  foreach ($form_state['values'] as $key => $value) {
+    if (substr($key, 0, 7) == 'enabled') {
+      $type = substr($key, 8, strlen($key) - 8);
+      $values[$type] = $value;
+    }
+  }
+  variable_set('ajax_comments_notify', $form_state['values']['ajax_comments_notify']);
+  variable_set('ajax_comments_node_types', $values);
 }
diff --git a/ajax_comments.install b/ajax_comments.install
index 97c36d7..ecb3e37 100644
--- a/ajax_comments.install
+++ b/ajax_comments.install
@@ -7,3 +7,15 @@ function ajax_comments_uninstall() {
   variable_del('ajax_comments_node_types');
   variable_del('ajax_comments_notify');
 }
+
+/**
+ * Update node type specific settings
+ */
+function ajax_comments_update_7001() {
+  $values = variable_get('ajax_comments_node_types', array());
+  foreach ($values as $type=>$value) {
+    // If ajax_comments are enabled then choose placing new comments to the bottom
+    if (!empty($value)) $values[$type] = AJAX_COMMENTS_NEW_ON_BOTTOM;
+  }
+  variable_set('ajax_comments_node_types', $values);
+}
\ No newline at end of file
diff --git a/ajax_comments.module b/ajax_comments.module
index 5de3605..1bd4528 100644
--- a/ajax_comments.module
+++ b/ajax_comments.module
@@ -5,6 +5,10 @@
  * AJAX comments module file.
  */
 
+define('AJAX_COMMENTS_DISABLED', 0);
+define('AJAX_COMMENTS_NEW_ON_TOP', 1);
+define('AJAX_COMMENTS_NEW_ON_BOTTOM', 2);
+
 /**
  * Implements hook_init().
  * See README.txt for why this is necessary.
@@ -57,7 +61,7 @@ function ajax_comments_menu() {
     'title' => 'AJAX comments',
     'description' => 'AJAXifies comments on site.',
     'page callback' => 'drupal_get_form',
-    'page arguments' => array('ajax_comments_settings'),
+    'page arguments' => array('ajax_comments_settings_form'),
     'access arguments' => array('administer site configuration'),
     'file' => 'ajax_comments.admin.inc',
   );

@@ -224,6 +229,7 @@ function ajax_comments_submit_js($form, &$form_state) {
   $comment = $form_state['comment'];
   $node = $form['#node'];
   $notify_text = variable_get('ajax_comments_notify', '') ? theme('ajax_comments_notify_text') : '';
+  $place = ajax_comments_node_type_active($node->type);
 
   $comment_build = comment_view($comment, $node);
 
@@ -258,7 +264,14 @@ function ajax_comments_submit_js($form, &$form_state) {
   else {
     // Append comment to root comment wrapper.
     $comment_output = drupal_render($comment_build);
-    $commands[] = ajax_command_append('#comment-wrapper-nid-' . $node->nid, $notify_text . $comment_output);
+    if ($place == AJAX_COMMENTS_NEW_ON_TOP) {
+      // Add comment to the top
+      $commands[] = ajax_command_prepend('#comment-wrapper-nid-' . $node->nid, $notify_text . $comment_output);
+    }
+    else {
+      // Add comment to the bottom
+      $commands[] = ajax_command_append('#comment-wrapper-nid-' . $node->nid, $notify_text . $comment_output);
+    }
 
     // If we have a default form, update it with a new one.
     if (variable_get('comment_form_location_' . $node->type, COMMENT_FORM_BELOW) == COMMENT_FORM_BELOW) {
@@ -549,12 +566,12 @@ function ajax_comments_remove_status(&$_SESSION) {
  * Returns TRUE if this node uses ajax comments or if no nodes are selected.
  */
 function ajax_comments_node_type_active($node_type) {
-  $types = variable_get('ajax_comments_node_types');
+  $types = variable_get('ajax_comments_node_types', array());
   if (!$types || !array_filter($types)) {
     return TRUE;
   }
   else {
-    return isset($types[$node_type]) ? $types[$node_type] : NULL;
+    return !empty($types[$node_type]) ? $types[$node_type] : NULL;
   }
 }
 
