diff --git a/menu_example/menu_example.module b/menu_example/menu_example.module
index b77dbd3..2c82096 100644
--- a/menu_example/menu_example.module
+++ b/menu_example/menu_example.module
@@ -31,8 +31,8 @@ function menu_example_menu() {
   // Menu items are defined by placing them in an $items array. The array key
   // (in this case 'menu_example') is the path that defines the menu router
   // entry, so the page will be accessible from the URL
-  // example.com/menu_example.
-  $items['menu_example'] = array(
+  // example.com/examples/menu_example.
+  $items['examples/menu_example'] = array(
     // We are using the default menu type, so this can be omitted.
     // 'type' => MENU_NORMAL_ITEM,
 
@@ -71,7 +71,7 @@ function menu_example_menu() {
 
   // Show a menu link in a menu other than the default "Navigation" menu.
   // The menu must already exist.
-  $items['menu_example_alternate_menu'] = array(
+  $items['examples/menu_example_alternate_menu'] = array(
     'title' => 'Menu Example: Menu in alternate menu',
 
     // Machine name of the menu in which the link should appear.
@@ -86,16 +86,16 @@ function menu_example_menu() {
 
   // First, provide a courtesy menu item that mentions the existence of the
   // permissioned item.
-  $items['menu_example/permissioned'] = array(
+  $items['examples/menu_example/permissioned'] = array(
     'title' => 'Permissioned Example',
     'page callback' => '_menu_example_menu_page',
-    'page arguments' => array(t('A menu item that requires the "access protected menu example" permission is at <a href="!link">menu_example/permissioned/controlled</a>', array('!link' => url('menu_example/permissioned/controlled')))),
+    'page arguments' => array(t('A menu item that requires the "access protected menu example" permission is at <a href="!link">examples/menu_example/permissioned/controlled</a>', array('!link' => url('examples/menu_example/permissioned/controlled')))),
     'access callback' => TRUE,
     'expanded' => TRUE,
   );
 
   // Now provide the actual permissioned menu item.
-  $items['menu_example/permissioned/controlled'] = array(
+  $items['examples/menu_example/permissioned/controlled'] = array(
 
     // The title - do NOT use t() as t() is called automatically.
     'title' => 'Permissioned Menu Item',
@@ -118,6 +118,34 @@ function menu_example_menu() {
     // Higher weights are "heavier", dropping to the bottom of the menu.
     'weight' => 10,
   );
+ 
+  /*
+   * We will define our own "access callback" function i.e is "menu_example_custom_access",
+   * rather than the default 'user_access'.
+   *
+   * The function takes multiple permissions and user id as arguments.
+   * 
+   * The permissions are set using hook_permisions().
+   *
+   * This is just an example the permissions are set according to our need and convenience.
+   */
+  $items['examples/menu_example/custom_access'] = array(
+    'title' => 'Custom Access Example',
+     'page callback' => '_menu_example_menu_page',
+    'page arguments' => array(t('A menu item that requires the "access protected menu example" and "custom access" permission is at <a href="!link">examples/menu_example/custom_access/page</a>', array('!link' => url('examples/menu_example/custom_access/page')))),
+    'access callback' => TRUE,
+    'expanded' => TRUE,
+    'weight' => -5,
+  );
+
+  $items['examples/menu_example/custom_access/page'] = array(
+    'title' => 'Custom Access Menu Item',
+    'description' => 'This menu entry will not show and the page will not be accessible without the "access protected menu example" and "custom access" permission.',
+    'page callback' => '_menu_example_menu_page',
+    'page arguments' => array(t('This menu entry will not show and the page will not be accessible without the "access protected menu example" and "custom access" permission and another interesting thing is that we used a self-defined "access callback" function rather than "user_access".')),
+    'access callback' => 'menu_example_custom_access',
+    'access arguments' => array('access protected menu example','custom access'),
+    );
 
   // A menu router entry with no menu link. This could be used any time we
   // don't want the user to see a link in the menu. Otherwise, it's the same
@@ -126,14 +154,14 @@ function menu_example_menu() {
   // that may be linked to but are not intended to be accessed directly.
 
   // First, provide a courtesy link in the menu so people can find this.
-  $items['menu_example/path_only'] = array(
+  $items['examples/menu_example/path_only'] = array(
     'title' => 'MENU_CALLBACK example',
     'page callback' => '_menu_example_menu_page',
-    'page arguments' => array(t('A menu entry with no menu link (MENU_CALLBACK) is at <a href="!link">!link</a>', array('!link' => url('menu_example/path_only/callback')))),
+    'page arguments' => array(t('A menu entry with no menu link (MENU_CALLBACK) is at <a href="!link">!link</a>', array('!link' => url('examples/menu_example/path_only/callback')))),
     'access callback' => TRUE,
     'weight' => 20,
   );
-  $items['menu_example/path_only/callback'] = array(
+  $items['examples/menu_example/path_only/callback'] = array(
 
     // A type of MENU_CALLBACK means leave the path completely out of the menu
     // links.
@@ -156,7 +184,7 @@ function menu_example_menu() {
   // 2. A primary tab (the one that is active when we land on the base menu).
   //    This tab is of type MENU_DEFAULT_LOCAL_TASK.
   // 3. Some other menu entries for the other tabs, of type MENU_LOCAL_TASK.
-  $items['menu_example/tabs'] = array(
+  $items['examples/menu_example/tabs'] = array(
     // 'type' => MENU_NORMAL_ITEM,  // Not necessary since this is the default.
     'title' => 'Tabs',
     'description' => 'Shows how to create primary and secondary tabs',
@@ -168,14 +196,14 @@ function menu_example_menu() {
 
   // For the default local task, we need very little configuration, as the
   // callback and other conditions are handled by the parent callback.
-  $items['menu_example/tabs/default'] = array(
+  $items['examples/menu_example/tabs/default'] = array(
     'type' => MENU_DEFAULT_LOCAL_TASK,
     'title' => 'Default primary tab',
     'weight' => 1,
   );
   // Now add the rest of the tab entries.
   foreach (array(t('second') => 2, t('third') => 3, t('fourth') => 4) as $tabname => $weight) {
-    $items["menu_example/tabs/$tabname"] = array(
+    $items["examples/menu_example/tabs/$tabname"] = array(
       'type' => MENU_LOCAL_TASK,
       'title' => $tabname,
       'page callback' => '_menu_example_menu_page',
@@ -191,14 +219,14 @@ function menu_example_menu() {
   // Finally, we'll add secondary tabs to the default tab of the tabs entry.
 
   // The default local task needs very little information.
-  $items['menu_example/tabs/default/first'] = array(
+  $items['examples/menu_example/tabs/default/first'] = array(
     'type' => MENU_DEFAULT_LOCAL_TASK,
     'title' => 'Default secondary tab',
     // The additional page callback and related items are handled by the
     // parent menu item.
   );
   foreach (array(t('second'), t('third')) as $tabname) {
-    $items["menu_example/tabs/default/$tabname"] = array(
+    $items["examples/menu_example/tabs/default/$tabname"] = array(
       'type' => MENU_LOCAL_TASK,
       'title' => $tabname,
       'page callback' => '_menu_example_menu_page',
@@ -211,11 +239,11 @@ function menu_example_menu() {
   // callback as separate arguments, and can be captured by the page callback
   // in its argument list. Our _menu_example_menu_page() function captures
   // arguments in its function signature and can output them.
-  $items['menu_example/use_url_arguments'] = array(
+  $items['examples/menu_example/use_url_arguments'] = array(
     'title' => 'Extra Arguments',
     'description' => 'The page callback can use the arguments provided after the path used as key',
     'page callback' => '_menu_example_menu_page',
-    'page arguments' => array(t('This page demonstrates using arguments in the path (portions of the path after "menu_example/url_arguments". For example, access it with <a href="!link1">!link1</a> or <a href="!link2">!link2</a>).', array('!link1' => url('menu_example/use_url_arguments/one/two'), '!link2' => url('menu_example/use_url_arguments/firstarg/secondarg')))),
+    'page arguments' => array(t('This page demonstrates using arguments in the path (portions of the path after "menu_example/url_arguments". For example, access it with <a href="!link1">!link1</a> or <a href="!link2">!link2</a>).', array('!link1' => url('examples/menu_example/use_url_arguments/one/two'), '!link2' => url('examples/menu_example/use_url_arguments/firstarg/secondarg')))),
     'access callback' => TRUE,
     'weight' => 40,
   );
@@ -223,7 +251,7 @@ function menu_example_menu() {
   // The menu title can be dynamically created by using the 'title callback'
   // which by default is t(). Here we provide a title callback which adjusts
   // the menu title based on the current user's username.
-  $items['menu_example/title_callbacks'] = array(
+  $items['examples/menu_example/title_callbacks'] = array(
     'title callback' => '_menu_example_simple_title_callback',
     'title arguments' => array(t('Dynamic title: username=')),
     'description' => 'The title of this menu item is dynamically generated',
@@ -243,24 +271,24 @@ function menu_example_menu() {
 
   // First we provide a courtesy link with information on how to access
   // an item with a placeholder.
-  $items['menu_example/placeholder_argument'] = array(
+  $items['examples/menu_example/placeholder_argument'] = array(
     'title' => 'Placeholder Arguments',
     'page callback' => '_menu_example_menu_page',
-    'page arguments' => array(t('Demonstrate placeholders by visiting <a href="!link">menu_example/placeholder_argument/3343/display</a>', array('!link' => url('menu_example/placeholder_argument/3343/display')))),
+    'page arguments' => array(t('Demonstrate placeholders by visiting <a href="!link">examples/menu_example/placeholder_argument/3343/display</a>', array('!link' => url('examples/menu_example/placeholder_argument/3343/display')))),
     'access callback' => TRUE,
     'weight' => 60,
   );
 
   // Now the actual entry.
-  $items['menu_example/placeholder_argument/%/display'] = array(
+  $items['examples/menu_example/placeholder_argument/%/display'] = array(
     'title' => 'Placeholder Arguments',
     'page callback' => '_menu_example_menu_page',
 
-    // Pass the value of '%', which is zero-based argument 2, to the
+    // Pass the value of '%', which is zero-based argument 3, to the
     // 'page callback'. So if the URL is
-    // 'menu_example/placeholder_argument/333/display' then the value 333
+    // 'examples/menu_example/placeholder_argument/333/display' then the value 333
     // will be passed into the 'page callback'.
-    'page arguments' => array(2),
+    'page arguments' => array(3),
     'access callback' => TRUE,
   );
 
@@ -273,18 +301,18 @@ function menu_example_menu() {
   // In addition, if (in this case) menu_example_arg_optional_to_arg() exists,
   // then a menu link can be created using the results of that function as a
   // default for %menu_example_arg_optional.
-  $items['menu_example/default_arg/%menu_example_arg_optional'] = array(
+  $items['examples/menu_example/default_arg/%menu_example_arg_optional'] = array(
     'title' => 'Processed Placeholder Arguments',
     'page callback' => '_menu_example_menu_page',
-    'page arguments' => array(2),  // arg 2 (3rd arg) is the one we want.
+    'page arguments' => array(3),  // arg 3 (4rd arg) is the one we want.
     'access callback' => TRUE,
     'weight' => 70,
   );
 
-  $items['menu_example/menu_original_path'] = array(
+  $items['examples/menu_example/menu_original_path'] = array(
     'title' => 'Menu path that will be altered by hook_menu_alter()',
     'page callback' => '_menu_example_menu_page',
-    'page arguments' => array(t('This menu item was created strictly to allow the hook_menu_alter() function to have something to operate on. hook_menu defined the path as menu_example/menu_original_path. The hook_menu_alter() changes it to menu_example/menu_altered_path. You can try navigating to both paths and see what happens!')),
+    'page arguments' => array(t('This menu item was created strictly to allow the hook_menu_alter() function to have something to operate on. hook_menu defined the path as examples/menu_example/menu_original_path. The hook_menu_alter() changes it to examples/menu_example/menu_altered_path. You can try navigating to both paths and see what happens!')),
     'access callback' => TRUE,
     'weight' => 80,
   );
@@ -336,10 +364,34 @@ function menu_example_permission() {
     'access protected menu example' =>  array(
       'title' => t('Access the protected menu example'),
     ),
+    'custom access' => array(
+      'title' => t('Custom Access'),
+    )
   );
 
 }
 
+/*
+ * Access callback that checks multiple permissions. 
+ *
+ * Takes a list of permissions and requires that all return
+ * TRUE.
+ * One more interesting thing to observe is that "user_access()" cannot take
+ * multiple permissions. Here we created a function that can take multiple
+ * arguments NOT NECESSARILY PERMISSIONS as our arguments to crete our own 
+ * criteria to view the page.
+ */
+
+function menu_example_custom_access(){
+  $arguments = func_get_args();
+  foreach($arguments as $permission){
+    if(!user_access($permission)){
+      return FALSE;
+    }
+  }
+  return TRUE;
+}
+
 /**
  * Utility function to provide mappings from integers to some strings.
  * This would normally be some database lookup to get an object or array from
@@ -406,10 +458,10 @@ function menu_example_menu_alter(&$items) {
   // Change the path 'menu_example/menu_original_path' to 'menu_example/menu_altered_path'. This change will
   // prevent the page from appearing at the original path (since the item is being unset).
   // You will need to go to menu_example/menu_altered_path manually to see the page.
-  if (!empty($items['menu_example/menu_original_path'])) {
-    $items['menu_example/menu_altered_path'] = $items['menu_example/menu_original_path'];
-    $items['menu_example/menu_altered_path']['title'] = 'Menu item altered by hook_menu_alter()';
-    unset($items['menu_example/menu_original_path']);
+  if (!empty($items['examples/menu_example/menu_original_path'])) {
+    $items['examples/menu_example/menu_altered_path'] = $items['examples/menu_example/menu_original_path'];
+    $items['examples/menu_example/menu_altered_path']['title'] = 'Menu item altered by hook_menu_alter()';
+    unset($items['examples/menu_example/menu_original_path']);
   }
 
   // Here we will change the title callback to our own function, changing the
