diff --git a/question_answer.module b/question_answer.module
index 9e69370..8ede49f 100644
--- a/question_answer.module
+++ b/question_answer.module
@@ -18,6 +18,8 @@ function question_answer_init() {
 function question_answer_perm() {
   $perms = array(
     'select best answer for any question',
+    'deselect best answer on own question',
+    'deselect best answer on any question',
   );
   return $perms;
 }
@@ -30,7 +32,15 @@ function question_answer_menu() {
     'title' => 'Select answer',
     'page callback' => 'question_answer_select',
     'page arguments' => array(2,3),
-    'access callback' => 'user_is_logged_in', 
+    'access callback' => 'user_is_logged_in',
+    'type' => MENU_CALLBACK,
+    'file' => 'question_answer.pages.inc',
+  );
+  $items['question_answer/deselect'] = array(
+    'title' => 'Deselect answer',
+    'page callback' => 'question_answer_deselect',
+    'page arguments' => array(2,3),
+    'access callback' => 'user_is_logged_in',
     'type' => MENU_CALLBACK,
     'file' => 'question_answer.pages.inc',
   );
@@ -54,7 +64,7 @@ function question_answer_form_alter(&$form, &$form_state, $form_id) {
     if (in_array($form['type']['#value'], array_keys($qtype))) {
       $form['title']['#maxlength'] = $maxlength;
     }
-  } 
+  }
 }
 
 /**
@@ -110,6 +120,20 @@ function question_answer_link($type, $object = NULL, $teaser = FALSE) {
       );
       ctools_add_js('ajax-responder');
     }
+    // here the author with "deselect best answer on own question" perm
+    // or others with "deselect best answer on any question" perm
+    // can deselect the best answer if there is one already selected
+    if (in_array($node->type, array_keys($qtype)) && (($node->uid == $user->uid && user_access('deselect best answer on own question')) || user_access('deselect best answer on any question')) && $node->{$qtype[$node->type]['answer']}[0]['value'] == $object->cid) {
+      $links['question_answer_deselect'] = array(
+        'title' => t('deselect'),
+        'href' => 'question_answer/deselect/'. $object->cid .'/'. drupal_get_token('question_answer/deselect/'. $object->cid),
+        'attributes' => array(
+          'title' => t('Deselect this comment.'),
+          'class' => 'ctools-use-ajax',
+        ),
+      );
+      ctools_add_js('ajax-responder');
+    }
   }
   return $links;
 }
diff --git a/question_answer.pages.inc b/question_answer.pages.inc
index 407ec9a..d7e48af 100644
--- a/question_answer.pages.inc
+++ b/question_answer.pages.inc
@@ -41,6 +41,49 @@ function question_answer_select($cid, $token) {
 }
 
 /**
+ * Menu callback; deselect a previous answer.
+ *
+ * @param $cid
+ *
+ */
+function question_answer_deselect($cid, $token) {
+  if (is_numeric($cid) && drupal_valid_token($token, "question_answer/deselect/$cid")) {
+    $nid = db_result(db_query('SELECT nid FROM {comments} WHERE cid=%d', $cid));
+    if (is_numeric($nid)) {
+      $node = node_load($nid);
+      $qtype = _question_answer_nodetypes();
+      if (! empty($node->{$qtype[$node->type]['answer']}[0]['value'])) {
+        $node->{$qtype[$node->type]['answer']}[0]['value'] = "";
+        node_save($node);
+        // let's add some feedback to the user
+        drupal_set_message(t("The previous <em>best answer</em> with id #!cid is now removed. You can choose an other comment as your new current <em>best answer</em>.", array('!cid' => $cid)), 'status');
+      }
+    }
+  }
+
+  if (! $node) {
+    drupal_set_message(t("Oops! There was an error in deselecting your previous answer"), 'warning');
+  }
+
+  if (isset($_SERVER['HTTP_X_REQUESTED_WITH']) && $_SERVER['HTTP_X_REQUESTED_WITH'] == 'XMLHttpRequest') {
+    ctools_include('ajax');
+    $commands = array();
+    $commands[] = ctools_ajax_command_remove('a[href^='. url('question_answer/deselect') .']');
+    //should be some "addClass" command, not supported now, but will (at least will be D7)
+    //$commands[] = ctools_ajax_command_attr('#comment-'. $cid.' + div', 'class', 'question_answer-selected');
+
+    // it looks like we need this to have the feedback displayed
+    // without the user having to relaod the page him/herself
+    $commands[] = ctools_ajax_command_reload();
+
+    ctools_ajax_render($commands);
+  }
+  else {
+    drupal_goto($_SERVER['HTTP_REFERER']);
+  }
+}
+
+/**
  * Settings form
  */
 function question_answer_settings() {
