diff --git README.txt README.txt
index 64c7992..74afc9b 100644
--- README.txt
+++ README.txt
@@ -97,7 +97,8 @@ Double check your permissions before getting started:
 * add time tracker entries	
 	Permission to allow users to track time
 	
-* view time tracker entries
+* view all time tracker entries
+* view own time tracker entries
   Allow users to view time entries
 	
 * edit time entries	
diff --git time_sheet/time_sheet.module time_sheet/time_sheet.module
index 9f9ac1e..2535900 100644
--- time_sheet/time_sheet.module
+++ time_sheet/time_sheet.module
@@ -22,6 +22,25 @@ function time_sheet_perm() {
   }
 }
 
+/**
+ * Custom Access Control
+ */
+function time_sheet_view_access($account) {
+  // The user is not blocked and logged in at least once.
+  if (!$account->access || !$account->status) {
+    return false;
+  }
+  if ($account && $account->uid) {
+    if ((user_access('view all time tracker entries') && user_access('view time sheet entries')) || user_access('administer users')) {
+      return true;
+    }
+    if ((user_access('view own time tracker entries') && user_access('view time sheet entries')) && $GLOBALS['user']->uid == $account->uid) {
+      return true;
+    }
+  }
+  return false;
+}
+
 /*
  * Implementation of hook_menu().
  *
@@ -35,12 +54,14 @@ function time_sheet_menu() {
     'description' => 'My Time Sheet',
     'page callback' => 'time_sheet_page',
     'page arguments' => array(1),
-    'access arguments' => array('view time sheet entries'),
+    'access callback' => 'time_sheet_view_access',
+    'access arguments' => array(1),
     'type' => MENU_LOCAL_TASK,
   );
-  $items['time_sheet/add_time'] = array(
+  $items['time_sheet/add_time/%user'] = array(
     'page callback' => 'time_sheet_add_time',
-    'access arguments' => array('view time sheet entries'),
+    'access callback' => 'time_sheet_view_access',
+    'access arguments' => array(2),
     'type' => MENU_CALLBACK,
   );
   $items['admin/settings/time_tracker/time_sheets'] = array(
@@ -286,13 +307,13 @@ function time_sheet_case_list_form($form_state, $user, $day, $stamp) {
   );
 
   $options = _time_sheet_case_list_options($user);
-
+  
   $form['time_sheet'][$day]['case_list'] = array(
     '#type' => 'select',
     '#title' => t('Select a case'),
     '#options' => $options,
     '#ahah' => array(
-      'path' => 'time_sheet/add_time',
+      'path' => 'time_sheet/add_time/'. $user->uid,
       'wrapper' => 'case-form-' . $day,
       'event' => 'change',
     ),
diff --git time_tracker.module time_tracker.module
index 814f84c..81de101 100644
--- time_tracker.module
+++ time_tracker.module
@@ -23,7 +23,7 @@ define('TIME_TRACKER_DEFAULT_DATE_FORMAT', 'Y-m-d h:i A');
  */
 function time_tracker_perm() {
   return array('administer time tracker', 'add time tracker entries',
-    'view time tracker entries', 'edit time tracker entries', 
+    'view all time tracker entries', 'view own time tracker entries', 'edit time tracker entries',
     'delete time tracker entires', 'administer time entries');
 }
 
@@ -96,8 +96,8 @@ function time_tracker_settings_form(&$form_state) {
   );
   $form['time_tracker_settings']['hide_comments'] = array(
     '#type' => 'checkbox',
-    '#title' => t("Hide comments with time tracker data entirely if user does not have 'view time tracker entries' permission"),
-    '#description' => t("Checking this setting will hide any comments that have time tracking data on them from any users without the 'view time tracker entries' permission"),
+    '#title' => t("Hide comments with time tracker data entirely if user does not have 'view all time tracker entries' or 'view own time tracker entries' permission"),
+    '#description' => t("Checking this setting will hide any comments that have time tracking data on them from any users without the 'view all time tracker entries' or 'view own time tracker entries' permission"),
     '#default_value' => variable_get('hide_comments', 0),
   );
   $form['time_tracker_settings']['allow_locked_time_entries'] = array(
@@ -389,7 +389,7 @@ function time_tracker_form_alter(&$form, $form_state, $form_id) {
 function time_tracker_nodeapi(&$node, $op) {
   switch ($op) {
     case 'view':
-      if (user_access('view time tracker entries')) {
+      if (user_access('view all time tracker entries') || (user_access('view own time tracker entries') && $GLOBALS['user']->uid == $comment->uid)) {
         // If case tracker exists then we can check if it's a project
         if (module_exists('casetracker') && casetracker_is_project($node->type)) {
           $case_results = db_query("SELECT * FROM {casetracker_case} WHERE pid = %d", $node->nid);
@@ -468,7 +468,7 @@ function time_tracker_comment(&$comment, $op) {
   switch ($op) {
     case 'view':
     // We only want to show time tracker data if user has permission
-      if (user_access('view time tracker entries')) {
+      if (user_access('view all time tracker entries') || (user_access('view own time tracker entries') && $GLOBALS['user']->uid == $comment->uid)) {
         // If this is a preview we won't have a cid yet.
         if (empty($comment->cid)) {
           $time_tracker_data = (object)$comment->time_tracker;
@@ -1105,7 +1105,7 @@ function theme_time_tracker_project_summary($total_time) {
  */
 function time_tracker_preprocess_comment(&$vars) {
   $comment = $vars['comment'];
-  if ($comment->status == 2 && variable_get('hide_comments', 0) && !user_access('view time tracker entries')) {
+  if ($comment->status == 2 && variable_get('hide_comments', 0) && !user_access('view all time tracker entries')) {
     $vars['hide'] = TRUE;
   }
 }
