diff --git a/question_answer.install b/question_answer.install
index 4084082..d5c0f39 100644
--- a/question_answer.install
+++ b/question_answer.install
@@ -20,4 +20,5 @@ function question_answer_uninstall() {
   variable_del('question_answer_fieldtype');
   variable_del('question_answer_duration');
   variable_del('question_answer_maxlength');
+  variable_del('question_answer_toplevel_comments');
 }
diff --git a/question_answer.module b/question_answer.module
index ef5dc8b..fdbc5e4 100644
--- a/question_answer.module
+++ b/question_answer.module
@@ -103,14 +103,29 @@ function question_answer_link($type, $object = NULL, $teaser = FALSE) {
 
   if ($type == 'comment') {
     $node = node_load($object->nid);
-    if (question_answer_action_access('deselect', $object, $node)) {
-      $links['question_answer_action'] = question_answer_build_link('deselect', $object);
-    }
-    elseif (question_answer_action_access('select', $object, $node)) {
-      $links['question_answer_action'] = question_answer_build_link('select', $object);
+    // Let's select "top level comments" only (that is to say comments with "pid == 0") as "best answer".
+    if (variable_get('question_answer_toplevel_comments') == 'yes') {
+      if (question_answer_action_access('deselect', $object, $node) && $object->pid == 0) {
+        $links['question_answer_action'] = question_answer_build_link('deselect', $object);
+      }
+      elseif (question_answer_action_access('select', $object, $node) && $object->pid == 0) {
+        $links['question_answer_action'] = question_answer_build_link('select', $object);
+      }
+      elseif (question_answer_action_access('change', $object, $node) && $object->pid == 0) {
+        $links['question_answer_action'] = question_answer_build_link('change', $object);
+      }
     }
-    elseif (question_answer_action_access('change', $object, $node)) {
-      $links['question_answer_action'] = question_answer_build_link('change', $object);
+    // Else we default to "any comments" available as possible "best answer".
+    else {
+      if (question_answer_action_access('deselect', $object, $node)) {
+        $links['question_answer_action'] = question_answer_build_link('deselect', $object);
+      }
+      elseif (question_answer_action_access('select', $object, $node)) {
+        $links['question_answer_action'] = question_answer_build_link('select', $object);
+      }
+      elseif (question_answer_action_access('change', $object, $node)) {
+        $links['question_answer_action'] = question_answer_build_link('change', $object);
+      }
     }
   }
   return $links;
@@ -196,7 +211,15 @@ function theme_question_answer_formatter_duration($element) {
       if ($remain < 0 && module_exists('votingapi')) {
         if ($node->{$qtype[$node->type]['answer']}[0]['value'] === NULL) {
           $selected = array('cid' => 0, 'value' => 0);
-          $result = db_query('SELECT cid FROM {comments} WHERE nid=%d ORDER BY timestamp', $node->nid);
+
+          // We also need to take care of the "top level comments" only here
+          if (variable_get('question_answer_toplevel_comments') == 'yes') {
+            $result = db_query('SELECT cid FROM {comments} WHERE nid=%d AND pid=0 ORDER BY timestamp', $node->nid);
+          }
+          else {
+            $result = db_query('SELECT cid FROM {comments} WHERE nid=%d ORDER BY timestamp', $node->nid);
+          }
+
           while ($row = db_fetch_object($result)) {
             $votes = votingapi_select_results(array('content_id' => $row->cid, 'content_type' => 'comment', 'function' => 'sum'));
             if (count($votes) > 0 && $votes[0]['value'] > $selected['value']) {
diff --git a/question_answer.pages.inc b/question_answer.pages.inc
index 099bf7d..357d809 100644
--- a/question_answer.pages.inc
+++ b/question_answer.pages.inc
@@ -108,5 +108,18 @@ function question_answer_settings() {
     '#description' => t('Maxlength of the question title. Default is 0 (unlimited)'),
   );
 
+  $form['question_answer_toplevel_comments'] = array(
+    '#type' => 'select',
+    '#title' => t('Top level comments only'),
+    '#required' => false,
+    // For compatibility issue with the previous version the default is set to "No".
+    '#default_value' => variable_get('question_answer_toplevel_comments', no),
+    '#options' => array(
+      'no' => t('No'),
+      'yes' => t('Yes'),
+    ),
+    '#description' => t('Choose "Yes" if you only want <em>top level comments</em> to be available for being selected as <em>best answer</em>. The default behaviour is "No" that is to say that all comments can be selected as <em>best answer</em>. For consistency reason, when your choice is made and some <em>best answer</em> are already selected you should not change your mind on a production website.'),
+  );
+
   return system_settings_form($form);
 }
