diff --git a/flag_friend_access/flag_friend_access.module b/flag_friend_access/flag_friend_access.module
index 1b4653d..7a36452 100644
--- a/flag_friend_access/flag_friend_access.module
+++ b/flag_friend_access/flag_friend_access.module
@@ -24,7 +24,7 @@ function flag_friend_access_node_grants($account, $op) {
  * Implements hook_node_access_records().
  */
 function flag_friend_access_node_access_records($node) {
-  if (!empty($node->flag_friend_access)) {
+  if (property_exists($node, 'flag_friend_access')) {
     return array(
       array(
         'realm' => 'flag_friend',
@@ -42,6 +42,8 @@ function flag_friend_access_node_access_records($node) {
  * Implements hook_form_alter().
  */
 function flag_friend_access_form_alter(&$form, &$form_state, $form_id) {
+  global $user;
+
   // add in a checkbox only if the
   if (isset($form['#node']) && $form['#node']->type . '_node_form' == $form_id) {
     // We have a node form alter in our stuff.
@@ -50,13 +52,48 @@ function flag_friend_access_form_alter(&$form, &$form_state, $form_id) {
       '#title' => t('Friend Access Control'),
       '#collapsable' => FALSE,
     );
-    $access_value = isset($form['#node']->nid) ? flag_friend_access_value($form['#node']->nid) : FALSE;
+
+    // Get the node's friend visibility.
+    if (isset($form['#node']->nid)) {
+      // If we're updating the node, get the node's visibility value.
+      $access_value = flag_friend_access_value($form['#node']->nid);
+    }
+    else {
+      // If this is a new node, get the user's visibility preference.
+      $access_value = flag_friend_access_default($user);
+    }
+
     $form['flag_friend_control']['flag_friend_access'] = array(
       '#type' => 'checkbox',
       '#title' => t('Only My Friends'),
       '#default_value' => !empty($access_value),
     );
   }
+  else if (($form_id == 'user_register_form' || $form_id == 'user_profile_form') && $form['#user_category'] == 'account') {
+     $form['flag_friend_access'] = array(
+      '#type' => 'fieldset',
+      '#title' => t('Friend Access Control'),
+      '#collapsable' => TRUE,
+    );
+    $form['flag_friend_access']['flag_friend_access_default'] = array(
+      '#type' => 'select',
+      '#options' => array(
+        '0' => t('All Users (default)'),
+        '1' => t('Only My Friends'),
+      ),
+      '#default_value' => flag_friend_access_default($form_state['user']),
+      '#description' => t('Choose who can see your content by default. You can change this on each post.'),
+    );
+  }
+}
+
+/**
+ * Implements hook_user_presave().
+ */
+function flag_friend_access_user_presave(&$edit, $account, $category) {
+  if (isset($edit['flag_friend_access_default'])) {
+    $edit['data']['flag_friend_access_default'] = $edit['flag_friend_access_default'];
+  }
 }
 
 /**
@@ -99,7 +136,7 @@ function flag_friend_access_node_load($nodes, $types) {
  * Implements hook_node_insert().
  */
 function flag_friend_access_node_insert($node) {
-  if (isset($node->flag_friend_access) && ($node->flag_friend_access == 1)) {
+  if (property_exists($node, 'flag_friend_access')) {
     $id = db_insert('flag_friend_access')
   ->fields(array(
     'uid' => $node->uid,
@@ -130,3 +167,20 @@ function flag_friend_access_node_update($node) {
     node_access_acquire_grants($node);
   }
 }
+
+/**
+ * Helper function to get the user's node visibility default.
+ *
+ * @param $account
+ *  The user account to check.
+ * @return
+ *  The user default node visibility preference. 
+ */
+function flag_friend_access_default($account) {
+  $access_default = 0;
+  if (isset($account->data['flag_friend_access_default'])) {
+    $access_default = $account->data['flag_friend_access_default'];
+  }
+
+  return $access_default;
+}
