diff --git a/question_types/quiz_question/quiz_question.module b/question_types/quiz_question/quiz_question.module
index 540429d..224fa88 100644
--- a/question_types/quiz_question/quiz_question.module
+++ b/question_types/quiz_question/quiz_question.module
@@ -198,7 +198,7 @@ function quiz_question_answering_form($form_state, $node, $include_nid_in_id = F
     '#type' => 'submit',
     '#value' => $is_last ? t('Finish') : t('Next'),
   );
-  if ($node->allow_skipping) {
+  if (isset($node->allow_skipping) && $node->allow_skipping) {
     $form['navigation']['op']  = array(
       '#type' => 'submit',
       '#value' => $is_last ? t('Skip and finish') : t('Skip'),
@@ -268,8 +268,11 @@ function quiz_question_evaluate_question($question, $result_id, $answer = NULL)
     $response->saveResult();
   }
 
-  // Convert the response to a bare object.
-  return $response->toBareObject();
+  // Convert the response to a bare object if there is a result
+  if ($result_id) {
+    return $response->toBareObject();
+  }
+  return $response;
 }
 
 /**
@@ -497,8 +500,43 @@ function quiz_question_view($node, $teaser = FALSE, $page = FALSE) {
   }
   else {
     // normal node view
-    $question = _quiz_question_get_instance($node, TRUE);
-    $content = $question->getNodeView();
+    // If the question is not part of a quiz, let it be available on its own
+    $result = db_result(db_query("SELECT COUNT(*) as n FROM {quiz_node_relationship} r WHERE child_vid = %d", $node->vid));
+
+    if (!$result) {
+      // not part of a quiz so can be accessed by normal users
+      if (!isset($_POST['op']) || $_POST['op'] != t('Finish')) {
+        // show the question form
+        $form_markup = drupal_get_form('quiz_question_answering_form', $node);
+      }
+      else {
+        // user has submitted the question form, mark it and show the result (which is not saved)
+        module_load_include('inc', 'quiz', 'quiz.pages');
+        $types = _quiz_get_question_types();
+        $module = $types[$node->type]['module'];
+        $result = module_invoke($module, 'evaluate_question', $node, FALSE);
+        $report = $result->getReport();
+        $result->question->answers[$report['answer_id']] = $report;
+        $result->question->correct = $report['is_correct'];
+        $result->question->is_standalone = TRUE;
+        //dvm($result->question);
+        $form_markup = drupal_get_form('quiz_report_form', array($result->question));
+
+        // hook to indicate to other modules the orphaned quiz question was answered
+        module_invoke_all('quiz_question_finished', $node, $result->question->correct);
+      }
+    }
+    else {
+      // This question is a part of at least one quiz so cannot be accessed by normal users
+      if (user_access('administer quiz configuration')) {
+        drupal_set_message(t('This quiz question is a member of a quiz. Users will not be allowed to access it except when taking the quiz. This is to keep assessed questions separate from non-assessed ones.'), 'warning');
+        $question = _quiz_question_get_instance($node, TRUE);
+        $content = $question->getNodeView();
+      }
+      else {
+        drupal_set_message(t("The quiz question you are trying to access '%question_name' can only be accessed as part of a quiz.", array('%question_name' => $node->title)), 'error');
+      }
+    }
   }
 
   // put it into the node->content
@@ -836,29 +874,32 @@ function quiz_question_report_form($question, $showpoints, $showfeedback, $allow
   $response_instance = _quiz_question_response_get_instance($answer['result_id'], $question, $answer);
   // If need to specify the score weight if it isn't already specified.
   if (!isset($response_instance->question->score_weight)) {
-    $sql = 'SELECT qnr.max_score
-            FROM {quiz_node_relationship} qnr
-            WHERE qnr.child_vid = %d
-            AND qnr.parent_vid = (
-              SELECT vid
-              FROM {quiz_node_results}
-              WHERE result_id = %d
-            )';
-    $qnr_max_score = db_result(db_query($sql, $question->vid, $answer['result_id']));
-    if ($qnr_max_score === FALSE) {
-      $qnr_max_score = db_result(db_query(
-        'SELECT qt.max_score
-         FROM {quiz_node_results} qnr
-         JOIN {quiz_node_results_answers} qnra ON (qnr.result_id = qnra.result_id)
-         JOIN {quiz_terms} qt ON (qt.vid = qnr.vid AND qt.tid = qnra.tid)
-         WHERE qnr.result_id = %d AND qnra.question_nid = %d AND qnra.question_vid = %d',
-        $answer['result_id'], $question->nid, $question->vid
-      ));
+    $weight = 1;
+    if (!isset($question->is_standalone) || !$question->is_standalone) {
+      $sql = 'SELECT qnr.max_score
+        FROM {quiz_node_relationship} qnr
+        WHERE qnr.child_vid = %d
+        AND qnr.parent_vid = (
+          SELECT vid
+          FROM {quiz_node_results}
+          WHERE result_id = %d
+        )';
+      $qnr_max_score = db_result(db_query($sql, $question->vid, $answer['result_id']));
+      if ($qnr_max_score === FALSE) {
+        $qnr_max_score = db_result(db_query(
+          'SELECT qt.max_score
+          FROM {quiz_node_results} qnr
+          JOIN {quiz_node_results_answers} qnra ON (qnr.result_id = qnra.result_id)
+          JOIN {quiz_terms} qt ON (qt.vid = qnr.vid AND qt.tid = qnra.tid)
+          WHERE qnr.result_id = %d AND qnra.question_nid = %d AND qnra.question_vid = %d',
+          $answer['result_id'], $question->nid, $question->vid
+        ));
+      }
+      if ($qnr_max_score == 0) $weight = 0;
+      else $weight = $qnr_max_score / $response_instance->question->max_score;
     }
-    if ($qnr_max_score == 0) $weight = 0;
-    else $weight = $qnr_max_score / $response_instance->question->max_score;
     $response_instance->question->score_weight = $weight;
   }
 
   return $response_instance->getReportForm($showpoints, $showfeedback, $allow_scoring);
-}
\ No newline at end of file
+}
