diff --git a/Build.PL b/Build.PL
index 874c288..79e0967 100644
--- a/Build.PL
+++ b/Build.PL
@@ -1,64 +1,65 @@
+
+# This file was automatically generated by Dist::Zilla::Plugin::ModuleBuild v6.012.
 use strict;
 use warnings;
 
-use File::Spec;
-use lib File::Spec->catdir(File::Spec->curdir(), "inc");
+use Module::Build 0.28;
 
-use Test::Run::Builder;
 
-my $build = Test::Run::Builder->new(
-    'module_name' => "HTML::Widgets::NavMenu",
-    configure_requires =>
-    {
-        'Module::Build' => '0.36',
-    },
-    'requires' =>
-    {
-        'Test::More' => 0,
-        'Class::XSAccessor' => 0,
-        'perl' => "5.6.1",
-        'IO::Scalar' => 0,
-    },
-    'license' => "mit",
-    meta_merge =>
-    {
-        resources =>
-        {
-            repository => "https://bitbucket.org/shlomif/perl-html-widgets-navmenu",
-            homepage => "http://web-cpan.shlomifish.org/modules/HTML-Widgets-NavMenu/",
-        },
-        keywords =>
-        [
-            "arrows",
-            "bar",
-            "breadcrumbs",
-            "css",
-            "expand",
-            "hidden",
-            "html",
-            "menu",
-            "menus",
-            "nav-bar",
-            "navbar",
-            "navigation",
-            "navigation aids",
-            "nav-menu",
-            "navmenu",
-            "next",
-            "prev",
-            "previous",
-            "pure-perl",
-            "site-map",
-            "skipped",
-            "trail",
-            "tree",
-            "unexpand",
-            "up",
-            "widget",
-            "widgets",
-            "xhtml",
-        ],
-    },
-    create_makefile_pl => 'traditional',
+my %module_build_args = (
+  "build_requires" => {
+    "Module::Build" => "0.28"
+  },
+  "configure_requires" => {
+    "ExtUtils::MakeMaker" => 0,
+    "Module::Build" => "0.28"
+  },
+  "dist_abstract" => "A Perl Module for Generating HTML Navigation Menus",
+  "dist_author" => [
+    "Shlomi Fish <shlomif\@cpan.org>"
+  ],
+  "dist_name" => "HTML-Widgets-NavMenu",
+  "dist_version" => "1.0704",
+  "license" => "mit",
+  "module_name" => "HTML::Widgets::NavMenu",
+  "recursive_test_files" => 1,
+  "requires" => {
+    "Class::XSAccessor" => 0,
+    "Exporter" => 0,
+    "base" => 0,
+    "perl" => "5.012",
+    "strict" => 0,
+    "vars" => 0,
+    "warnings" => 0
+  },
+  "test_requires" => {
+    "File::Spec" => 0,
+    "IO::Handle" => 0,
+    "IO::Scalar" => 0,
+    "IPC::Open3" => 0,
+    "Test::More" => "0.88",
+    "lib" => 0
+  }
 );
+
+
+my %fallback_build_requires = (
+  "File::Spec" => 0,
+  "IO::Handle" => 0,
+  "IO::Scalar" => 0,
+  "IPC::Open3" => 0,
+  "Module::Build" => "0.28",
+  "Test::More" => "0.88",
+  "lib" => 0
+);
+
+
+unless ( eval { Module::Build->VERSION(0.4004) } ) {
+  delete $module_build_args{test_requires};
+  $module_build_args{build_requires} = \%fallback_build_requires;
+}
+
+my $build = Module::Build->new(%module_build_args);
+
+
 $build->create_build_script;
diff --git a/Changes b/Changes
index cf032b5..6af0527 100644
--- a/Changes
+++ b/Changes
@@ -1,5 +1,10 @@
 Revision history for Perl extension HTML::Widgets::NavMenu.
 
+1.0704  2019-03-11
+    - Convert to dzil.
+    - Try to fix broken provides (e.g:
+    https://metacpan.org/search?q=HTML%3A%3AWidgets%3A%3ANavMenu%3A%3AObject )
+
 1.0703  2015-06-10
     - Fix broken links to the examples' version control repositories.
         - Thanks to Anne for inspiring it.
diff --git a/LICENSE b/LICENSE
new file mode 100644
index 0000000..4f3c2d2
--- /dev/null
+++ b/LICENSE
@@ -0,0 +1,32 @@
+This software is Copyright (c) 2014 by Shlomi Fish.
+
+This is free software, licensed under:
+
+  The MIT (X11) License
+
+The MIT License
+
+Permission is hereby granted, free of charge, to any person
+obtaining a copy of this software and associated
+documentation files (the "Software"), to deal in the Software
+without restriction, including without limitation the rights to
+use, copy, modify, merge, publish, distribute, sublicense,
+and/or sell copies of the Software, and to permit persons to
+whom the Software is furnished to do so, subject to the
+following conditions:
+
+The above copyright notice and this permission notice shall
+be included in all copies or substantial portions of the
+Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT
+WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,
+INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR
+PURPOSE AND NONINFRINGEMENT. IN NO EVENT
+SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
+TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR
+OTHER DEALINGS IN THE SOFTWARE.
diff --git a/MANIFEST b/MANIFEST
index 7e4462e..368c1f6 100644
--- a/MANIFEST
+++ b/MANIFEST
@@ -1,13 +1,17 @@
+# This file was automatically generated by Dist::Zilla::Plugin::Manifest v6.012.
 Build.PL
 COPYING
 Changes
+LICENSE
 MANIFEST
+MANIFEST.SKIP
 META.json
-META.yml                                 Module meta-data (added by MakeMaker)
+META.yml
 Makefile.PL
 README
 TODO
 TODO-Rejects
+dist.ini
 examples/README
 examples/article-examples/cgi-script/H-W-NM-serve.pl
 examples/article-examples/complex/H-W-NM-complex.pl
@@ -37,6 +41,7 @@ lib/HTML/Widgets/NavMenu/Tree/Node.pm
 lib/HTML/Widgets/NavMenu/Url.pm
 scripts/bump-version-number.pl
 scripts/tag-release.pl
+t/00-compile.t
 t/00use.t
 t/01unit.t
 t/02site-map.t
@@ -60,6 +65,11 @@ t/cpan-changes.t
 t/lib/HTML/Widgets/NavMenu/Test/Data.pm
 t/lib/HTML/Widgets/NavMenu/Test/Stdout.pm
 t/lib/HTML/Widgets/NavMenu/Test/Util.pm
-t/pod-coverage.t
-t/pod.t
-t/style-trailing-space.t
+weaver.ini
+xt/author/eol.t
+xt/author/no-tabs.t
+xt/author/pod-coverage.t
+xt/author/pod-syntax.t
+xt/author/tidyall.t
+xt/release/cpan-changes.t
+xt/release/trailing-space.t
diff --git a/MANIFEST.SKIP b/MANIFEST.SKIP
new file mode 100644
index 0000000..7eb84e7
--- /dev/null
+++ b/MANIFEST.SKIP
@@ -0,0 +1,2 @@
+~$
+^\.tidyall\.d/
diff --git a/META.json b/META.json
index ee99dff..01aa4e4 100644
--- a/META.json
+++ b/META.json
@@ -1,10 +1,10 @@
 {
    "abstract" : "A Perl Module for Generating HTML Navigation Menus",
    "author" : [
-      "Shlomi Fish, E<lt>shlomif@cpan.orgE<gt>, L<http://www.shlomifish.org/> ."
+      "Shlomi Fish <shlomif@cpan.org>"
    ],
-   "dynamic_config" : 1,
-   "generated_by" : "Module::Build version 0.421",
+   "dynamic_config" : 0,
+   "generated_by" : "Dist::Zilla version 6.012, CPAN::Meta::Converter version 2.150010",
    "keywords" : [
       "arrows",
       "bar",
@@ -18,7 +18,8 @@
       "nav-bar",
       "navbar",
       "navigation",
-      "navigation aids",
+      "navigation",
+      "aids",
       "nav-menu",
       "navmenu",
       "next",
@@ -40,111 +41,634 @@
    ],
    "meta-spec" : {
       "url" : "http://search.cpan.org/perldoc?CPAN::Meta::Spec",
-      "version" : "2"
+      "version" : 2
    },
    "name" : "HTML-Widgets-NavMenu",
    "prereqs" : {
+      "build" : {
+         "requires" : {
+            "Module::Build" : "0.28"
+         }
+      },
       "configure" : {
          "requires" : {
-            "Module::Build" : "0.36"
+            "ExtUtils::MakeMaker" : "0",
+            "Module::Build" : "0.28"
+         }
+      },
+      "develop" : {
+         "requires" : {
+            "Pod::Coverage::TrustPod" : "0",
+            "Test::CPAN::Changes" : "0.19",
+            "Test::Code::TidyAll" : "0.50",
+            "Test::EOL" : "0",
+            "Test::More" : "0.96",
+            "Test::NoTabs" : "0",
+            "Test::Pod" : "1.41",
+            "Test::Pod::Coverage" : "1.08",
+            "Test::TrailingSpace" : "0.0203"
          }
       },
       "runtime" : {
          "requires" : {
             "Class::XSAccessor" : "0",
+            "Exporter" : "0",
+            "base" : "0",
+            "perl" : "5.012",
+            "strict" : "0",
+            "vars" : "0",
+            "warnings" : "0"
+         }
+      },
+      "test" : {
+         "requires" : {
+            "File::Spec" : "0",
+            "IO::Handle" : "0",
             "IO::Scalar" : "0",
-            "Test::More" : "0",
-            "perl" : "v5.6.1"
+            "IPC::Open3" : "0",
+            "Test::More" : "0.88",
+            "lib" : "0"
          }
       }
    },
    "provides" : {
       "HTML::Widgets::NavMenu" : {
          "file" : "lib/HTML/Widgets/NavMenu.pm",
-         "version" : "1.0703"
+         "version" : "1.0704"
       },
       "HTML::Widgets::NavMenu::Error" : {
-         "file" : "lib/HTML/Widgets/NavMenu.pm"
+         "file" : "lib/HTML/Widgets/NavMenu.pm",
+         "version" : "1.0704"
       },
       "HTML::Widgets::NavMenu::Error::Redirect" : {
-         "file" : "lib/HTML/Widgets/NavMenu.pm"
+         "file" : "lib/HTML/Widgets/NavMenu.pm",
+         "version" : "1.0704"
       },
       "HTML::Widgets::NavMenu::EscapeHtml" : {
-         "file" : "lib/HTML/Widgets/NavMenu/EscapeHtml.pm"
+         "file" : "lib/HTML/Widgets/NavMenu/EscapeHtml.pm",
+         "version" : "1.0704"
       },
       "HTML::Widgets::NavMenu::ExpandVal" : {
-         "file" : "lib/HTML/Widgets/NavMenu/ExpandVal.pm"
+         "file" : "lib/HTML/Widgets/NavMenu/ExpandVal.pm",
+         "version" : "1.0704"
       },
       "HTML::Widgets::NavMenu::HeaderRole" : {
-         "file" : "lib/HTML/Widgets/NavMenu/HeaderRole.pm"
+         "file" : "lib/HTML/Widgets/NavMenu/HeaderRole.pm",
+         "version" : "1.0704"
       },
       "HTML::Widgets::NavMenu::Iterator::Base" : {
-         "file" : "lib/HTML/Widgets/NavMenu/Iterator/Base.pm"
+         "file" : "lib/HTML/Widgets/NavMenu/Iterator/Base.pm",
+         "version" : "1.0704"
       },
       "HTML::Widgets::NavMenu::Iterator::GetCurrentlyActive" : {
-         "file" : "lib/HTML/Widgets/NavMenu.pm"
+         "file" : "lib/HTML/Widgets/NavMenu.pm",
+         "version" : "1.0704"
       },
       "HTML::Widgets::NavMenu::Iterator::Html" : {
-         "file" : "lib/HTML/Widgets/NavMenu/Iterator/Html.pm"
+         "file" : "lib/HTML/Widgets/NavMenu/Iterator/Html.pm",
+         "version" : "1.0704"
       },
       "HTML::Widgets::NavMenu::Iterator::Html::Item" : {
-         "file" : "lib/HTML/Widgets/NavMenu/Iterator/Html.pm"
+         "file" : "lib/HTML/Widgets/NavMenu/Iterator/Html.pm",
+         "version" : "1.0704"
       },
       "HTML::Widgets::NavMenu::Iterator::JQTreeView" : {
-         "file" : "lib/HTML/Widgets/NavMenu/Iterator/JQTreeView.pm"
+         "file" : "lib/HTML/Widgets/NavMenu/Iterator/JQTreeView.pm",
+         "version" : "1.0704"
       },
       "HTML::Widgets::NavMenu::Iterator::NavMenu" : {
-         "file" : "lib/HTML/Widgets/NavMenu/Iterator/NavMenu.pm"
+         "file" : "lib/HTML/Widgets/NavMenu/Iterator/NavMenu.pm",
+         "version" : "1.0704"
       },
       "HTML::Widgets::NavMenu::Iterator::NavMenu::HeaderRole" : {
-         "file" : "lib/HTML/Widgets/NavMenu/Iterator/NavMenu/HeaderRole.pm"
+         "file" : "lib/HTML/Widgets/NavMenu/Iterator/NavMenu/HeaderRole.pm",
+         "version" : "1.0704"
       },
       "HTML::Widgets::NavMenu::Iterator::SiteMap" : {
-         "file" : "lib/HTML/Widgets/NavMenu/Iterator/SiteMap.pm"
+         "file" : "lib/HTML/Widgets/NavMenu/Iterator/SiteMap.pm",
+         "version" : "1.0704"
       },
       "HTML::Widgets::NavMenu::JQueryTreeView" : {
-         "file" : "lib/HTML/Widgets/NavMenu/JQueryTreeView.pm"
+         "file" : "lib/HTML/Widgets/NavMenu/JQueryTreeView.pm",
+         "version" : "1.0704"
       },
       "HTML::Widgets::NavMenu::LeadingPath::Component" : {
-         "file" : "lib/HTML/Widgets/NavMenu.pm"
+         "file" : "lib/HTML/Widgets/NavMenu.pm",
+         "version" : "1.0704"
       },
       "HTML::Widgets::NavMenu::NodeDescription" : {
-         "file" : "lib/HTML/Widgets/NavMenu.pm"
+         "file" : "lib/HTML/Widgets/NavMenu.pm",
+         "version" : "1.0704"
       },
       "HTML::Widgets::NavMenu::Object" : {
-         "file" : "lib/HTML/Widgets/NavMenu/Object.pm"
+         "file" : "lib/HTML/Widgets/NavMenu/Object.pm",
+         "version" : "1.0704"
       },
       "HTML::Widgets::NavMenu::Predicate" : {
-         "file" : "lib/HTML/Widgets/NavMenu/Predicate.pm"
+         "file" : "lib/HTML/Widgets/NavMenu/Predicate.pm",
+         "version" : "1.0704"
       },
       "HTML::Widgets::NavMenu::TagGen" : {
-         "file" : "lib/HTML/Widgets/NavMenu/TagGen.pm"
+         "file" : "lib/HTML/Widgets/NavMenu/TagGen.pm",
+         "version" : "1.0704"
       },
       "HTML::Widgets::NavMenu::Tree::Iterator" : {
-         "file" : "lib/HTML/Widgets/NavMenu/Tree/Iterator.pm"
+         "file" : "lib/HTML/Widgets/NavMenu/Tree/Iterator.pm",
+         "version" : "1.0704"
       },
       "HTML::Widgets::NavMenu::Tree::Iterator::Item" : {
-         "file" : "lib/HTML/Widgets/NavMenu/Tree/Iterator/Item.pm"
+         "file" : "lib/HTML/Widgets/NavMenu/Tree/Iterator/Item.pm",
+         "version" : "1.0704"
       },
       "HTML::Widgets::NavMenu::Tree::Iterator::Stack" : {
-         "file" : "lib/HTML/Widgets/NavMenu/Tree/Iterator/Stack.pm"
+         "file" : "lib/HTML/Widgets/NavMenu/Tree/Iterator/Stack.pm",
+         "version" : "1.0704"
       },
       "HTML::Widgets::NavMenu::Tree::Node" : {
-         "file" : "lib/HTML/Widgets/NavMenu/Tree/Node.pm"
+         "file" : "lib/HTML/Widgets/NavMenu/Tree/Node.pm",
+         "version" : "1.0704"
       },
       "HTML::Widgets::NavMenu::Url" : {
-         "file" : "lib/HTML/Widgets/NavMenu/Url.pm"
+         "file" : "lib/HTML/Widgets/NavMenu/Url.pm",
+         "version" : "1.0704"
       }
    },
    "release_status" : "stable",
    "resources" : {
+      "bugtracker" : {
+         "web" : "https://github.com/shlomif/perl-HTML-Widgets-NavMenu/issues"
+      },
       "homepage" : "http://web-cpan.shlomifish.org/modules/HTML-Widgets-NavMenu/",
-      "license" : [
-         "http://www.opensource.org/licenses/mit-license.php"
-      ],
       "repository" : {
-         "url" : "https://bitbucket.org/shlomif/perl-html-widgets-navmenu"
+         "type" : "git",
+         "url" : "git://github.com/shlomif/perl-HTML-Widgets-NavMenu.git",
+         "web" : "https://github.com/shlomif/perl-HTML-Widgets-NavMenu"
+      }
+   },
+   "version" : "1.0704",
+   "x_Dist_Zilla" : {
+      "perl" : {
+         "version" : "5.028001"
+      },
+      "plugins" : [
+         {
+            "class" : "Dist::Zilla::Plugin::Prereqs",
+            "config" : {
+               "Dist::Zilla::Plugin::Prereqs" : {
+                  "phase" : "test",
+                  "type" : "requires"
+               }
+            },
+            "name" : "@Filter/TestMoreDoneTesting",
+            "version" : "6.012"
+         },
+         {
+            "class" : "Dist::Zilla::Plugin::AutoPrereqs",
+            "name" : "@Filter/AutoPrereqs",
+            "version" : "6.012"
+         },
+         {
+            "class" : "Dist::Zilla::Plugin::ExecDir",
+            "name" : "@Filter/ExecDir",
+            "version" : "6.012"
+         },
+         {
+            "class" : "Dist::Zilla::Plugin::GatherDir",
+            "config" : {
+               "Dist::Zilla::Plugin::GatherDir" : {
+                  "exclude_filename" : [],
+                  "exclude_match" : [],
+                  "follow_symlinks" : 0,
+                  "include_dotfiles" : 0,
+                  "prefix" : "",
+                  "prune_directory" : [],
+                  "root" : "."
+               }
+            },
+            "name" : "@Filter/GatherDir",
+            "version" : "6.012"
+         },
+         {
+            "class" : "Dist::Zilla::Plugin::License",
+            "name" : "@Filter/License",
+            "version" : "6.012"
+         },
+         {
+            "class" : "Dist::Zilla::Plugin::ManifestSkip",
+            "name" : "@Filter/ManifestSkip",
+            "version" : "6.012"
+         },
+         {
+            "class" : "Dist::Zilla::Plugin::MetaYAML",
+            "name" : "@Filter/MetaYAML",
+            "version" : "6.012"
+         },
+         {
+            "class" : "Dist::Zilla::Plugin::PruneCruft",
+            "name" : "@Filter/PruneCruft",
+            "version" : "6.012"
+         },
+         {
+            "class" : "Dist::Zilla::Plugin::Readme",
+            "name" : "@Filter/Readme",
+            "version" : "6.012"
+         },
+         {
+            "class" : "Dist::Zilla::Plugin::RunExtraTests",
+            "config" : {
+               "Dist::Zilla::Role::TestRunner" : {
+                  "default_jobs" : 1
+               }
+            },
+            "name" : "@Filter/RunExtraTests",
+            "version" : "0.029"
+         },
+         {
+            "class" : "Dist::Zilla::Plugin::ShareDir",
+            "name" : "@Filter/ShareDir",
+            "version" : "6.012"
+         },
+         {
+            "class" : "Dist::Zilla::Plugin::MakeMaker",
+            "config" : {
+               "Dist::Zilla::Role::TestRunner" : {
+                  "default_jobs" : 1
+               }
+            },
+            "name" : "@Filter/MakeMaker",
+            "version" : "6.012"
+         },
+         {
+            "class" : "Dist::Zilla::Plugin::CheckChangesHasContent",
+            "name" : "@Filter/CheckChangesHasContent",
+            "version" : "0.011"
+         },
+         {
+            "class" : "Dist::Zilla::Plugin::ConfirmRelease",
+            "name" : "@Filter/ConfirmRelease",
+            "version" : "6.012"
+         },
+         {
+            "class" : "Dist::Zilla::Plugin::Manifest",
+            "name" : "@Filter/Manifest",
+            "version" : "6.012"
+         },
+         {
+            "class" : "Dist::Zilla::Plugin::MetaConfig",
+            "name" : "@Filter/MetaConfig",
+            "version" : "6.012"
+         },
+         {
+            "class" : "Dist::Zilla::Plugin::MetaJSON",
+            "name" : "@Filter/MetaJSON",
+            "version" : "6.012"
+         },
+         {
+            "class" : "Dist::Zilla::Plugin::MetaProvides::Package",
+            "config" : {
+               "Dist::Zilla::Plugin::MetaProvides::Package" : {
+                  "finder_objects" : [
+                     {
+                        "class" : "Dist::Zilla::Plugin::FinderCode",
+                        "name" : "@Filter/MetaProvides::Package/AUTOVIV/:InstallModulesPM",
+                        "version" : "6.012"
+                     }
+                  ],
+                  "include_underscores" : 0
+               },
+               "Dist::Zilla::Role::MetaProvider::Provider" : {
+                  "$Dist::Zilla::Role::MetaProvider::Provider::VERSION" : "2.002004",
+                  "inherit_missing" : 1,
+                  "inherit_version" : 1,
+                  "meta_noindex" : 1
+               },
+               "Dist::Zilla::Role::ModuleMetadata" : {
+                  "Module::Metadata" : "1.000033",
+                  "version" : "0.006"
+               }
+            },
+            "name" : "@Filter/MetaProvides::Package",
+            "version" : "2.004003"
+         },
+         {
+            "class" : "Dist::Zilla::Plugin::MetaResources",
+            "name" : "@Filter/MetaResources",
+            "version" : "6.012"
+         },
+         {
+            "class" : "Dist::Zilla::Plugin::ModuleBuild",
+            "config" : {
+               "Dist::Zilla::Role::TestRunner" : {
+                  "default_jobs" : 1
+               }
+            },
+            "name" : "@Filter/ModuleBuild",
+            "version" : "6.012"
+         },
+         {
+            "class" : "Dist::Zilla::Plugin::PkgVersion",
+            "name" : "@Filter/PkgVersion",
+            "version" : "6.012"
+         },
+         {
+            "class" : "Dist::Zilla::Plugin::PodCoverageTests",
+            "name" : "@Filter/PodCoverageTests",
+            "version" : "6.012"
+         },
+         {
+            "class" : "Dist::Zilla::Plugin::PodSyntaxTests",
+            "name" : "@Filter/PodSyntaxTests",
+            "version" : "6.012"
+         },
+         {
+            "class" : "Dist::Zilla::Plugin::PodVersion",
+            "name" : "@Filter/PodVersion",
+            "version" : "6.012"
+         },
+         {
+            "class" : "Dist::Zilla::Plugin::Test::Compile",
+            "config" : {
+               "Dist::Zilla::Plugin::Test::Compile" : {
+                  "bail_out_on_fail" : 0,
+                  "fail_on_warning" : "author",
+                  "fake_home" : 0,
+                  "filename" : "t/00-compile.t",
+                  "module_finder" : [
+                     ":InstallModules"
+                  ],
+                  "needs_display" : 0,
+                  "phase" : "test",
+                  "script_finder" : [
+                     ":PerlExecFiles"
+                  ],
+                  "skips" : [],
+                  "switch" : []
+               }
+            },
+            "name" : "@Filter/Test::Compile",
+            "version" : "2.058"
+         },
+         {
+            "class" : "Dist::Zilla::Plugin::Test::CPAN::Changes",
+            "config" : {
+               "Dist::Zilla::Plugin::Test::CPAN::Changes" : {
+                  "changelog" : "Changes"
+               }
+            },
+            "name" : "@Filter/Test::CPAN::Changes",
+            "version" : "0.012"
+         },
+         {
+            "class" : "Dist::Zilla::Plugin::Test::EOL",
+            "config" : {
+               "Dist::Zilla::Plugin::Test::EOL" : {
+                  "filename" : "xt/author/eol.t",
+                  "finder" : [
+                     ":ExecFiles",
+                     ":InstallModules",
+                     ":TestFiles"
+                  ],
+                  "trailing_whitespace" : 1
+               }
+            },
+            "name" : "@Filter/Test::EOL",
+            "version" : "0.19"
+         },
+         {
+            "class" : "Dist::Zilla::Plugin::Test::NoTabs",
+            "config" : {
+               "Dist::Zilla::Plugin::Test::NoTabs" : {
+                  "filename" : "xt/author/no-tabs.t",
+                  "finder" : [
+                     ":InstallModules",
+                     ":ExecFiles",
+                     ":TestFiles"
+                  ]
+               }
+            },
+            "name" : "@Filter/Test::NoTabs",
+            "version" : "0.15"
+         },
+         {
+            "class" : "Dist::Zilla::Plugin::Test::TrailingSpace",
+            "name" : "@Filter/Test::TrailingSpace",
+            "version" : "0.2.0"
+         },
+         {
+            "class" : "Dist::Zilla::Plugin::TestRelease",
+            "name" : "@Filter/TestRelease",
+            "version" : "6.012"
+         },
+         {
+            "class" : "Dist::Zilla::Plugin::PodWeaver",
+            "config" : {
+               "Dist::Zilla::Plugin::PodWeaver" : {
+                  "finder" : [
+                     ":InstallModules",
+                     ":ExecFiles"
+                  ],
+                  "plugins" : [
+                     {
+                        "class" : "Pod::Weaver::Plugin::EnsurePod5",
+                        "name" : "@CorePrep/EnsurePod5",
+                        "version" : "4.015"
+                     },
+                     {
+                        "class" : "Pod::Weaver::Plugin::H1Nester",
+                        "name" : "@CorePrep/H1Nester",
+                        "version" : "4.015"
+                     },
+                     {
+                        "class" : "Pod::Weaver::Section::Generic",
+                        "name" : "NAME",
+                        "version" : "4.015"
+                     },
+                     {
+                        "class" : "Pod::Weaver::Section::Version",
+                        "name" : "Version",
+                        "version" : "4.015"
+                     },
+                     {
+                        "class" : "Pod::Weaver::Section::Region",
+                        "name" : "prelude",
+                        "version" : "4.015"
+                     },
+                     {
+                        "class" : "Pod::Weaver::Section::Generic",
+                        "name" : "SYNOPSIS",
+                        "version" : "4.015"
+                     },
+                     {
+                        "class" : "Pod::Weaver::Section::Generic",
+                        "name" : "DESCRIPTION",
+                        "version" : "4.015"
+                     },
+                     {
+                        "class" : "Pod::Weaver::Section::Generic",
+                        "name" : "OVERVIEW",
+                        "version" : "4.015"
+                     },
+                     {
+                        "class" : "Pod::Weaver::Section::Collect",
+                        "name" : "ATTRIBUTES",
+                        "version" : "4.015"
+                     },
+                     {
+                        "class" : "Pod::Weaver::Section::Collect",
+                        "name" : "METHODS",
+                        "version" : "4.015"
+                     },
+                     {
+                        "class" : "Pod::Weaver::Section::Leftovers",
+                        "name" : "Leftovers",
+                        "version" : "4.015"
+                     },
+                     {
+                        "class" : "Pod::Weaver::Section::Region",
+                        "name" : "postlude",
+                        "version" : "4.015"
+                     },
+                     {
+                        "class" : "Pod::Weaver::Section::Authors",
+                        "name" : "Authors",
+                        "version" : "4.015"
+                     },
+                     {
+                        "class" : "Pod::Weaver::Section::Legal",
+                        "name" : "Legal",
+                        "version" : "4.015"
+                     },
+                     {
+                        "class" : "Pod::Weaver::Section::Bugs",
+                        "name" : "Bugs",
+                        "version" : "4.015"
+                     },
+                     {
+                        "class" : "Pod::Weaver::Section::Support",
+                        "name" : "Support",
+                        "version" : "1.010"
+                     }
+                  ]
+               }
+            },
+            "name" : "@Filter/PodWeaver",
+            "version" : "4.008"
+         },
+         {
+            "class" : "Dist::Zilla::Plugin::UploadToCPAN",
+            "name" : "@Filter/UploadToCPAN",
+            "version" : "6.012"
+         },
+         {
+            "class" : "Dist::Zilla::Plugin::Keywords",
+            "config" : {
+               "Dist::Zilla::Plugin::Keywords" : {
+                  "keywords" : [
+                     "arrows",
+                     "bar",
+                     "breadcrumbs",
+                     "css",
+                     "expand",
+                     "hidden",
+                     "html",
+                     "menu",
+                     "menus",
+                     "nav-bar",
+                     "navbar",
+                     "navigation",
+                     "navigation",
+                     "aids",
+                     "nav-menu",
+                     "navmenu",
+                     "next",
+                     "prev",
+                     "previous",
+                     "pure-perl",
+                     "site-map",
+                     "skipped",
+                     "trail",
+                     "tree",
+                     "unexpand",
+                     "up",
+                     "widget",
+                     "widgets",
+                     "xhtml"
+                  ]
+               }
+            },
+            "name" : "Keywords",
+            "version" : "0.007"
+         },
+         {
+            "class" : "Dist::Zilla::Plugin::Test::TidyAll",
+            "name" : "Test::TidyAll",
+            "version" : "0.04"
+         },
+         {
+            "class" : "Dist::Zilla::Plugin::FinderCode",
+            "name" : ":InstallModules",
+            "version" : "6.012"
+         },
+         {
+            "class" : "Dist::Zilla::Plugin::FinderCode",
+            "name" : ":IncModules",
+            "version" : "6.012"
+         },
+         {
+            "class" : "Dist::Zilla::Plugin::FinderCode",
+            "name" : ":TestFiles",
+            "version" : "6.012"
+         },
+         {
+            "class" : "Dist::Zilla::Plugin::FinderCode",
+            "name" : ":ExtraTestFiles",
+            "version" : "6.012"
+         },
+         {
+            "class" : "Dist::Zilla::Plugin::FinderCode",
+            "name" : ":ExecFiles",
+            "version" : "6.012"
+         },
+         {
+            "class" : "Dist::Zilla::Plugin::FinderCode",
+            "name" : ":PerlExecFiles",
+            "version" : "6.012"
+         },
+         {
+            "class" : "Dist::Zilla::Plugin::FinderCode",
+            "name" : ":ShareFiles",
+            "version" : "6.012"
+         },
+         {
+            "class" : "Dist::Zilla::Plugin::FinderCode",
+            "name" : ":MainModule",
+            "version" : "6.012"
+         },
+         {
+            "class" : "Dist::Zilla::Plugin::FinderCode",
+            "name" : ":AllFiles",
+            "version" : "6.012"
+         },
+         {
+            "class" : "Dist::Zilla::Plugin::FinderCode",
+            "name" : ":NoFiles",
+            "version" : "6.012"
+         },
+         {
+            "class" : "Dist::Zilla::Plugin::FinderCode",
+            "name" : "@Filter/MetaProvides::Package/AUTOVIV/:InstallModulesPM",
+            "version" : "6.012"
+         }
+      ],
+      "zilla" : {
+         "class" : "Dist::Zilla::Dist::Builder",
+         "config" : {
+            "is_trial" : 0
+         },
+         "version" : "6.012"
       }
    },
-   "version" : "1.0703"
+   "x_generated_by_perl" : "v5.28.1",
+   "x_serialization_backend" : "Cpanel::JSON::XS version 4.09"
 }
+
diff --git a/META.yml b/META.yml
index e6119f4..7b31e12 100644
--- a/META.yml
+++ b/META.yml
@@ -1,12 +1,20 @@
 ---
 abstract: 'A Perl Module for Generating HTML Navigation Menus'
 author:
-  - 'Shlomi Fish, E<lt>shlomif@cpan.orgE<gt>, L<http://www.shlomifish.org/> .'
-build_requires: {}
+  - 'Shlomi Fish <shlomif@cpan.org>'
+build_requires:
+  File::Spec: '0'
+  IO::Handle: '0'
+  IO::Scalar: '0'
+  IPC::Open3: '0'
+  Module::Build: '0.28'
+  Test::More: '0.88'
+  lib: '0'
 configure_requires:
-  Module::Build: '0.36'
-dynamic_config: 1
-generated_by: 'Module::Build version 0.421, CPAN::Meta::Converter version 2.142060'
+  ExtUtils::MakeMaker: '0'
+  Module::Build: '0.28'
+dynamic_config: 0
+generated_by: 'Dist::Zilla version 6.012, CPAN::Meta::Converter version 2.150010'
 keywords:
   - arrows
   - bar
@@ -20,7 +28,8 @@ keywords:
   - nav-bar
   - navbar
   - navigation
-  - 'navigation aids'
+  - navigation
+  - aids
   - nav-menu
   - navmenu
   - next
@@ -44,62 +53,452 @@ name: HTML-Widgets-NavMenu
 provides:
   HTML::Widgets::NavMenu:
     file: lib/HTML/Widgets/NavMenu.pm
-    version: '1.0703'
+    version: '1.0704'
   HTML::Widgets::NavMenu::Error:
     file: lib/HTML/Widgets/NavMenu.pm
+    version: '1.0704'
   HTML::Widgets::NavMenu::Error::Redirect:
     file: lib/HTML/Widgets/NavMenu.pm
+    version: '1.0704'
   HTML::Widgets::NavMenu::EscapeHtml:
     file: lib/HTML/Widgets/NavMenu/EscapeHtml.pm
+    version: '1.0704'
   HTML::Widgets::NavMenu::ExpandVal:
     file: lib/HTML/Widgets/NavMenu/ExpandVal.pm
+    version: '1.0704'
   HTML::Widgets::NavMenu::HeaderRole:
     file: lib/HTML/Widgets/NavMenu/HeaderRole.pm
+    version: '1.0704'
   HTML::Widgets::NavMenu::Iterator::Base:
     file: lib/HTML/Widgets/NavMenu/Iterator/Base.pm
+    version: '1.0704'
   HTML::Widgets::NavMenu::Iterator::GetCurrentlyActive:
     file: lib/HTML/Widgets/NavMenu.pm
+    version: '1.0704'
   HTML::Widgets::NavMenu::Iterator::Html:
     file: lib/HTML/Widgets/NavMenu/Iterator/Html.pm
+    version: '1.0704'
   HTML::Widgets::NavMenu::Iterator::Html::Item:
     file: lib/HTML/Widgets/NavMenu/Iterator/Html.pm
+    version: '1.0704'
   HTML::Widgets::NavMenu::Iterator::JQTreeView:
     file: lib/HTML/Widgets/NavMenu/Iterator/JQTreeView.pm
+    version: '1.0704'
   HTML::Widgets::NavMenu::Iterator::NavMenu:
     file: lib/HTML/Widgets/NavMenu/Iterator/NavMenu.pm
+    version: '1.0704'
   HTML::Widgets::NavMenu::Iterator::NavMenu::HeaderRole:
     file: lib/HTML/Widgets/NavMenu/Iterator/NavMenu/HeaderRole.pm
+    version: '1.0704'
   HTML::Widgets::NavMenu::Iterator::SiteMap:
     file: lib/HTML/Widgets/NavMenu/Iterator/SiteMap.pm
+    version: '1.0704'
   HTML::Widgets::NavMenu::JQueryTreeView:
     file: lib/HTML/Widgets/NavMenu/JQueryTreeView.pm
+    version: '1.0704'
   HTML::Widgets::NavMenu::LeadingPath::Component:
     file: lib/HTML/Widgets/NavMenu.pm
+    version: '1.0704'
   HTML::Widgets::NavMenu::NodeDescription:
     file: lib/HTML/Widgets/NavMenu.pm
+    version: '1.0704'
   HTML::Widgets::NavMenu::Object:
     file: lib/HTML/Widgets/NavMenu/Object.pm
+    version: '1.0704'
   HTML::Widgets::NavMenu::Predicate:
     file: lib/HTML/Widgets/NavMenu/Predicate.pm
+    version: '1.0704'
   HTML::Widgets::NavMenu::TagGen:
     file: lib/HTML/Widgets/NavMenu/TagGen.pm
+    version: '1.0704'
   HTML::Widgets::NavMenu::Tree::Iterator:
     file: lib/HTML/Widgets/NavMenu/Tree/Iterator.pm
+    version: '1.0704'
   HTML::Widgets::NavMenu::Tree::Iterator::Item:
     file: lib/HTML/Widgets/NavMenu/Tree/Iterator/Item.pm
+    version: '1.0704'
   HTML::Widgets::NavMenu::Tree::Iterator::Stack:
     file: lib/HTML/Widgets/NavMenu/Tree/Iterator/Stack.pm
+    version: '1.0704'
   HTML::Widgets::NavMenu::Tree::Node:
     file: lib/HTML/Widgets/NavMenu/Tree/Node.pm
+    version: '1.0704'
   HTML::Widgets::NavMenu::Url:
     file: lib/HTML/Widgets/NavMenu/Url.pm
+    version: '1.0704'
 requires:
   Class::XSAccessor: '0'
-  IO::Scalar: '0'
-  Test::More: '0'
-  perl: v5.6.1
+  Exporter: '0'
+  base: '0'
+  perl: '5.012'
+  strict: '0'
+  vars: '0'
+  warnings: '0'
 resources:
+  bugtracker: https://github.com/shlomif/perl-HTML-Widgets-NavMenu/issues
   homepage: http://web-cpan.shlomifish.org/modules/HTML-Widgets-NavMenu/
-  license: http://www.opensource.org/licenses/mit-license.php
-  repository: https://bitbucket.org/shlomif/perl-html-widgets-navmenu
-version: '1.0703'
+  repository: git://github.com/shlomif/perl-HTML-Widgets-NavMenu.git
+version: '1.0704'
+x_Dist_Zilla:
+  perl:
+    version: '5.028001'
+  plugins:
+    -
+      class: Dist::Zilla::Plugin::Prereqs
+      config:
+        Dist::Zilla::Plugin::Prereqs:
+          phase: test
+          type: requires
+      name: '@Filter/TestMoreDoneTesting'
+      version: '6.012'
+    -
+      class: Dist::Zilla::Plugin::AutoPrereqs
+      name: '@Filter/AutoPrereqs'
+      version: '6.012'
+    -
+      class: Dist::Zilla::Plugin::ExecDir
+      name: '@Filter/ExecDir'
+      version: '6.012'
+    -
+      class: Dist::Zilla::Plugin::GatherDir
+      config:
+        Dist::Zilla::Plugin::GatherDir:
+          exclude_filename: []
+          exclude_match: []
+          follow_symlinks: 0
+          include_dotfiles: 0
+          prefix: ''
+          prune_directory: []
+          root: .
+      name: '@Filter/GatherDir'
+      version: '6.012'
+    -
+      class: Dist::Zilla::Plugin::License
+      name: '@Filter/License'
+      version: '6.012'
+    -
+      class: Dist::Zilla::Plugin::ManifestSkip
+      name: '@Filter/ManifestSkip'
+      version: '6.012'
+    -
+      class: Dist::Zilla::Plugin::MetaYAML
+      name: '@Filter/MetaYAML'
+      version: '6.012'
+    -
+      class: Dist::Zilla::Plugin::PruneCruft
+      name: '@Filter/PruneCruft'
+      version: '6.012'
+    -
+      class: Dist::Zilla::Plugin::Readme
+      name: '@Filter/Readme'
+      version: '6.012'
+    -
+      class: Dist::Zilla::Plugin::RunExtraTests
+      config:
+        Dist::Zilla::Role::TestRunner:
+          default_jobs: 1
+      name: '@Filter/RunExtraTests'
+      version: '0.029'
+    -
+      class: Dist::Zilla::Plugin::ShareDir
+      name: '@Filter/ShareDir'
+      version: '6.012'
+    -
+      class: Dist::Zilla::Plugin::MakeMaker
+      config:
+        Dist::Zilla::Role::TestRunner:
+          default_jobs: 1
+      name: '@Filter/MakeMaker'
+      version: '6.012'
+    -
+      class: Dist::Zilla::Plugin::CheckChangesHasContent
+      name: '@Filter/CheckChangesHasContent'
+      version: '0.011'
+    -
+      class: Dist::Zilla::Plugin::ConfirmRelease
+      name: '@Filter/ConfirmRelease'
+      version: '6.012'
+    -
+      class: Dist::Zilla::Plugin::Manifest
+      name: '@Filter/Manifest'
+      version: '6.012'
+    -
+      class: Dist::Zilla::Plugin::MetaConfig
+      name: '@Filter/MetaConfig'
+      version: '6.012'
+    -
+      class: Dist::Zilla::Plugin::MetaJSON
+      name: '@Filter/MetaJSON'
+      version: '6.012'
+    -
+      class: Dist::Zilla::Plugin::MetaProvides::Package
+      config:
+        Dist::Zilla::Plugin::MetaProvides::Package:
+          finder_objects:
+            -
+              class: Dist::Zilla::Plugin::FinderCode
+              name: '@Filter/MetaProvides::Package/AUTOVIV/:InstallModulesPM'
+              version: '6.012'
+          include_underscores: 0
+        Dist::Zilla::Role::MetaProvider::Provider:
+          $Dist::Zilla::Role::MetaProvider::Provider::VERSION: '2.002004'
+          inherit_missing: '1'
+          inherit_version: '1'
+          meta_noindex: '1'
+        Dist::Zilla::Role::ModuleMetadata:
+          Module::Metadata: '1.000033'
+          version: '0.006'
+      name: '@Filter/MetaProvides::Package'
+      version: '2.004003'
+    -
+      class: Dist::Zilla::Plugin::MetaResources
+      name: '@Filter/MetaResources'
+      version: '6.012'
+    -
+      class: Dist::Zilla::Plugin::ModuleBuild
+      config:
+        Dist::Zilla::Role::TestRunner:
+          default_jobs: 1
+      name: '@Filter/ModuleBuild'
+      version: '6.012'
+    -
+      class: Dist::Zilla::Plugin::PkgVersion
+      name: '@Filter/PkgVersion'
+      version: '6.012'
+    -
+      class: Dist::Zilla::Plugin::PodCoverageTests
+      name: '@Filter/PodCoverageTests'
+      version: '6.012'
+    -
+      class: Dist::Zilla::Plugin::PodSyntaxTests
+      name: '@Filter/PodSyntaxTests'
+      version: '6.012'
+    -
+      class: Dist::Zilla::Plugin::PodVersion
+      name: '@Filter/PodVersion'
+      version: '6.012'
+    -
+      class: Dist::Zilla::Plugin::Test::Compile
+      config:
+        Dist::Zilla::Plugin::Test::Compile:
+          bail_out_on_fail: '0'
+          fail_on_warning: author
+          fake_home: 0
+          filename: t/00-compile.t
+          module_finder:
+            - ':InstallModules'
+          needs_display: 0
+          phase: test
+          script_finder:
+            - ':PerlExecFiles'
+          skips: []
+          switch: []
+      name: '@Filter/Test::Compile'
+      version: '2.058'
+    -
+      class: Dist::Zilla::Plugin::Test::CPAN::Changes
+      config:
+        Dist::Zilla::Plugin::Test::CPAN::Changes:
+          changelog: Changes
+      name: '@Filter/Test::CPAN::Changes'
+      version: '0.012'
+    -
+      class: Dist::Zilla::Plugin::Test::EOL
+      config:
+        Dist::Zilla::Plugin::Test::EOL:
+          filename: xt/author/eol.t
+          finder:
+            - ':ExecFiles'
+            - ':InstallModules'
+            - ':TestFiles'
+          trailing_whitespace: 1
+      name: '@Filter/Test::EOL'
+      version: '0.19'
+    -
+      class: Dist::Zilla::Plugin::Test::NoTabs
+      config:
+        Dist::Zilla::Plugin::Test::NoTabs:
+          filename: xt/author/no-tabs.t
+          finder:
+            - ':InstallModules'
+            - ':ExecFiles'
+            - ':TestFiles'
+      name: '@Filter/Test::NoTabs'
+      version: '0.15'
+    -
+      class: Dist::Zilla::Plugin::Test::TrailingSpace
+      name: '@Filter/Test::TrailingSpace'
+      version: 0.2.0
+    -
+      class: Dist::Zilla::Plugin::TestRelease
+      name: '@Filter/TestRelease'
+      version: '6.012'
+    -
+      class: Dist::Zilla::Plugin::PodWeaver
+      config:
+        Dist::Zilla::Plugin::PodWeaver:
+          finder:
+            - ':InstallModules'
+            - ':ExecFiles'
+          plugins:
+            -
+              class: Pod::Weaver::Plugin::EnsurePod5
+              name: '@CorePrep/EnsurePod5'
+              version: '4.015'
+            -
+              class: Pod::Weaver::Plugin::H1Nester
+              name: '@CorePrep/H1Nester'
+              version: '4.015'
+            -
+              class: Pod::Weaver::Section::Generic
+              name: NAME
+              version: '4.015'
+            -
+              class: Pod::Weaver::Section::Version
+              name: Version
+              version: '4.015'
+            -
+              class: Pod::Weaver::Section::Region
+              name: prelude
+              version: '4.015'
+            -
+              class: Pod::Weaver::Section::Generic
+              name: SYNOPSIS
+              version: '4.015'
+            -
+              class: Pod::Weaver::Section::Generic
+              name: DESCRIPTION
+              version: '4.015'
+            -
+              class: Pod::Weaver::Section::Generic
+              name: OVERVIEW
+              version: '4.015'
+            -
+              class: Pod::Weaver::Section::Collect
+              name: ATTRIBUTES
+              version: '4.015'
+            -
+              class: Pod::Weaver::Section::Collect
+              name: METHODS
+              version: '4.015'
+            -
+              class: Pod::Weaver::Section::Leftovers
+              name: Leftovers
+              version: '4.015'
+            -
+              class: Pod::Weaver::Section::Region
+              name: postlude
+              version: '4.015'
+            -
+              class: Pod::Weaver::Section::Authors
+              name: Authors
+              version: '4.015'
+            -
+              class: Pod::Weaver::Section::Legal
+              name: Legal
+              version: '4.015'
+            -
+              class: Pod::Weaver::Section::Bugs
+              name: Bugs
+              version: '4.015'
+            -
+              class: Pod::Weaver::Section::Support
+              name: Support
+              version: '1.010'
+      name: '@Filter/PodWeaver'
+      version: '4.008'
+    -
+      class: Dist::Zilla::Plugin::UploadToCPAN
+      name: '@Filter/UploadToCPAN'
+      version: '6.012'
+    -
+      class: Dist::Zilla::Plugin::Keywords
+      config:
+        Dist::Zilla::Plugin::Keywords:
+          keywords:
+            - arrows
+            - bar
+            - breadcrumbs
+            - css
+            - expand
+            - hidden
+            - html
+            - menu
+            - menus
+            - nav-bar
+            - navbar
+            - navigation
+            - navigation
+            - aids
+            - nav-menu
+            - navmenu
+            - next
+            - prev
+            - previous
+            - pure-perl
+            - site-map
+            - skipped
+            - trail
+            - tree
+            - unexpand
+            - up
+            - widget
+            - widgets
+            - xhtml
+      name: Keywords
+      version: '0.007'
+    -
+      class: Dist::Zilla::Plugin::Test::TidyAll
+      name: Test::TidyAll
+      version: '0.04'
+    -
+      class: Dist::Zilla::Plugin::FinderCode
+      name: ':InstallModules'
+      version: '6.012'
+    -
+      class: Dist::Zilla::Plugin::FinderCode
+      name: ':IncModules'
+      version: '6.012'
+    -
+      class: Dist::Zilla::Plugin::FinderCode
+      name: ':TestFiles'
+      version: '6.012'
+    -
+      class: Dist::Zilla::Plugin::FinderCode
+      name: ':ExtraTestFiles'
+      version: '6.012'
+    -
+      class: Dist::Zilla::Plugin::FinderCode
+      name: ':ExecFiles'
+      version: '6.012'
+    -
+      class: Dist::Zilla::Plugin::FinderCode
+      name: ':PerlExecFiles'
+      version: '6.012'
+    -
+      class: Dist::Zilla::Plugin::FinderCode
+      name: ':ShareFiles'
+      version: '6.012'
+    -
+      class: Dist::Zilla::Plugin::FinderCode
+      name: ':MainModule'
+      version: '6.012'
+    -
+      class: Dist::Zilla::Plugin::FinderCode
+      name: ':AllFiles'
+      version: '6.012'
+    -
+      class: Dist::Zilla::Plugin::FinderCode
+      name: ':NoFiles'
+      version: '6.012'
+    -
+      class: Dist::Zilla::Plugin::FinderCode
+      name: '@Filter/MetaProvides::Package/AUTOVIV/:InstallModulesPM'
+      version: '6.012'
+  zilla:
+    class: Dist::Zilla::Dist::Builder
+    config:
+      is_trial: '0'
+    version: '6.012'
+x_generated_by_perl: v5.28.1
+x_serialization_backend: 'YAML::Tiny version 1.73'
diff --git a/Makefile.PL b/Makefile.PL
index 97c9cf0..6125bab 100644
--- a/Makefile.PL
+++ b/Makefile.PL
@@ -1,17 +1,72 @@
-# Note: this file was auto-generated by Module::Build::Compat version 0.4210
-require 5.006001;
+# This file was automatically generated by Dist::Zilla::Plugin::MakeMaker v6.012.
+use strict;
+use warnings;
+
+use 5.012;
+
 use ExtUtils::MakeMaker;
-WriteMakefile
-(
-  'NAME' => 'HTML::Widgets::NavMenu',
-  'VERSION_FROM' => 'lib/HTML/Widgets/NavMenu.pm',
-  'PREREQ_PM' => {
-                   'Class::XSAccessor' => 0,
-                   'IO::Scalar' => 0,
-                   'Test::More' => 0
-                 },
-  'INSTALLDIRS' => 'site',
-  'EXE_FILES' => [],
-  'PL_FILES' => {}
-)
-;
+
+my %WriteMakefileArgs = (
+  "ABSTRACT" => "A Perl Module for Generating HTML Navigation Menus",
+  "AUTHOR" => "Shlomi Fish <shlomif\@cpan.org>",
+  "BUILD_REQUIRES" => {
+    "Module::Build" => "0.28"
+  },
+  "CONFIGURE_REQUIRES" => {
+    "ExtUtils::MakeMaker" => 0,
+    "Module::Build" => "0.28"
+  },
+  "DISTNAME" => "HTML-Widgets-NavMenu",
+  "LICENSE" => "mit",
+  "MIN_PERL_VERSION" => "5.012",
+  "NAME" => "HTML::Widgets::NavMenu",
+  "PREREQ_PM" => {
+    "Class::XSAccessor" => 0,
+    "Exporter" => 0,
+    "base" => 0,
+    "strict" => 0,
+    "vars" => 0,
+    "warnings" => 0
+  },
+  "TEST_REQUIRES" => {
+    "File::Spec" => 0,
+    "IO::Handle" => 0,
+    "IO::Scalar" => 0,
+    "IPC::Open3" => 0,
+    "Test::More" => "0.88",
+    "lib" => 0
+  },
+  "VERSION" => "1.0704",
+  "test" => {
+    "TESTS" => "t/*.t"
+  }
+);
+
+
+my %FallbackPrereqs = (
+  "Class::XSAccessor" => 0,
+  "Exporter" => 0,
+  "File::Spec" => 0,
+  "IO::Handle" => 0,
+  "IO::Scalar" => 0,
+  "IPC::Open3" => 0,
+  "Module::Build" => "0.28",
+  "Test::More" => "0.88",
+  "base" => 0,
+  "lib" => 0,
+  "strict" => 0,
+  "vars" => 0,
+  "warnings" => 0
+);
+
+
+unless ( eval { ExtUtils::MakeMaker->VERSION(6.63_03) } ) {
+  delete $WriteMakefileArgs{TEST_REQUIRES};
+  delete $WriteMakefileArgs{BUILD_REQUIRES};
+  $WriteMakefileArgs{PREREQ_PM} = \%FallbackPrereqs;
+}
+
+delete $WriteMakefileArgs{CONFIGURE_REQUIRES}
+  unless eval { ExtUtils::MakeMaker->VERSION(6.52) };
+
+WriteMakefile(%WriteMakefileArgs);
diff --git a/README b/README
index fba1466..972af36 100644
--- a/README
+++ b/README
@@ -1,41 +1,13 @@
-HTML-Widgets-NavMenu
-====================
+This archive contains the distribution HTML-Widgets-NavMenu,
+version 1.0704:
 
-HTML::Widgets::NavMenu generates a navigation menu for a site. It can also
-generate a complete site map, a path of leading components, and also keeps
-track of navigation links ("Next", "Prev", "Up", etc.)
+  A Perl Module for Generating HTML Navigation Menus
 
-It accepts as input a nested tree with the input for the various nodes in
-the site, and generates the HTML as output. It has a detailed API documentation
-in the embedded POD, and many examples in the tests and in sites created
-by the author. Currently, it lacks developer's and extender's information,
-but hopefully one can find his way around the code easily enough.
+This software is Copyright (c) 2014 by Shlomi Fish.
 
-HTML::Widgets::NavMenu is covered by many automated tests.
+This is free software, licensed under:
 
-INSTALLATION
+  The MIT (X11) License
 
-To install this module type the following:
-
-    perl Build.PL
-    ./Build
-    ./Build test
-    ./Build install
-
-after you install all of its dependencies.
-
-Alternatively use the CPAN.pm module:
-
-    # perl -MCPAN -e 'install HTML::Widgets::NavMenu'
-
-Or the new CPANPLUS.pm module
-
-    # perl -MCPANPLUS -e 'install HTML::Widgets::NavMenu'
-
-COPYRIGHT AND LICENCE
-
-Copyright (C) 2004 by Shlomi Fish
-
-This library is free software; you can redistribute it and/or modify
-it under the MIT X11 license. (see the file COPYING for its text.)
 
+This README file was generated by Dist::Zilla::Plugin::Readme v6.012.
diff --git a/TODO-Rejects b/TODO-Rejects
index bc8801d..41a022c 100644
--- a/TODO-Rejects
+++ b/TODO-Rejects
@@ -1,9 +1,9 @@
 * Refactor get_next_coords().
 
-    - I don't see too much point to it. It is working as it is, and it's 
+    - I don't see too much point to it. It is working as it is, and it's
     only one function that doesn't affect the rest of the code.
 
-* Create a base class for classes with 'subs' functionality - like 
+* Create a base class for classes with 'subs' functionality - like
 get_nth_sub, add_sub, num_subs, etc. Both ..::Node and ..::Item share it.
 
     - They have slightly different semantics, and besides - it's not
@@ -12,7 +12,7 @@ get_nth_sub, add_sub, num_subs, etc. Both ..::Node and ..::Item share it.
 * Future direction: generate the tree once and then be able to render
 it for different path_info()/current_host() configurations. (and the
 generated tree re-used by all other members).
-   
+
     - the problem is that the expand() operations and the expanded()
     flag depends on this combination. Thus, the generated tree is
     different for any path_info()/current_host().
diff --git a/debian/changelog b/debian/changelog
index 11ef51d..5c1d4d6 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,4 +1,4 @@
-libhtml-widgets-navmenu-perl (1.0703-2) UNRELEASED; urgency=medium
+libhtml-widgets-navmenu-perl (1.0704-1) UNRELEASED; urgency=medium
 
   [ gregor herrmann ]
   * Rename autopkgtest configuration file(s) as per new pkg-perl-
@@ -18,7 +18,10 @@ libhtml-widgets-navmenu-perl (1.0703-2) UNRELEASED; urgency=medium
   [ Xavier Guimard ]
   * Email change: Xavier Guimard -> yadd@debian.org
 
- -- gregor herrmann <gregoa@debian.org>  Sat, 24 Oct 2015 13:45:35 +0200
+  [ Debian Janitor ]
+  * New upstream release.
+
+ -- Debian Janitor <janitor@jelmer.uk>  Wed, 14 Aug 2019 10:28:27 +0000
 
 libhtml-widgets-navmenu-perl (1.0703-1) unstable; urgency=medium
 
diff --git a/dist.ini b/dist.ini
new file mode 100644
index 0000000..91b86af
--- /dev/null
+++ b/dist.ini
@@ -0,0 +1,42 @@
+name    = HTML-Widgets-NavMenu
+author  = Shlomi Fish <shlomif@cpan.org>
+license = MIT
+copyright_holder = Shlomi Fish
+copyright_year   = 2014
+version = 1.0704
+
+[@Filter]
+-bundle = @SHLOMIF
+dist = HTML-Widgets-NavMenu
+github_name = perl-HTML-Widgets-NavMenu
+homepage = http://web-cpan.shlomifish.org/modules/HTML-Widgets-NavMenu/
+[Keywords]
+keyword = arrows
+keyword = bar
+keyword = breadcrumbs
+keyword = css
+keyword = expand
+keyword = hidden
+keyword = html
+keyword = menu
+keyword = menus
+keyword = nav-bar
+keyword = navbar
+keyword = navigation
+keyword = navigation aids
+keyword = nav-menu
+keyword = navmenu
+keyword = next
+keyword = prev
+keyword = previous
+keyword = pure-perl
+keyword = site-map
+keyword = skipped
+keyword = trail
+keyword = tree
+keyword = unexpand
+keyword = up
+keyword = widget
+keyword = widgets
+keyword = xhtml
+[Test::TidyAll]
diff --git a/examples/article-examples/cgi-script/H-W-NM-serve.pl b/examples/article-examples/cgi-script/H-W-NM-serve.pl
index d6c84b7..5d7b472 100755
--- a/examples/article-examples/cgi-script/H-W-NM-serve.pl
+++ b/examples/article-examples/cgi-script/H-W-NM-serve.pl
@@ -79,45 +79,41 @@ a:hover { background-color : palegreen; }
 }
 EOF
 
-my $nav_menu_tree =
-{
-    'host' => "default",
-    'text' => "HTML-Widgets-NavMenu Example",
+my $nav_menu_tree = {
+    'host'  => "default",
+    'text'  => "HTML-Widgets-NavMenu Example",
     'title' => "HTML-Widgets-NavMenu",
-    'subs' =>
-    [
+    'subs'  => [
         {
             'text' => "Home",
-            'url' => "",
+            'url'  => "",
         },
         {
             'text' => "About Myself",
-            'url' => "me/",
-            'subs' =>
-            [
+            'url'  => "me/",
+            'subs' => [
                 {
-                    'text' => "Bio",
-                    'url' => "personal.html",
+                    'text'  => "Bio",
+                    'url'   => "personal.html",
                     'title' => "A Short Biography of Myself",
                 },
                 {
-                    'text' => "Contact",
-                    'url' => "me/contact-me/",
-                    'title'=> "How to Contact me in Every Conceivable Way",
+                    'text'  => "Contact",
+                    'url'   => "me/contact-me/",
+                    'title' => "How to Contact me in Every Conceivable Way",
                 },
                 {
                     'text' => "My Resum&eacute;s",
-                    'url' => "me/resumes/",
-                    'subs' =>
-                    [
+                    'url'  => "me/resumes/",
+                    'subs' => [
                         {
                             'text' => "English Resum&eacute;",
-                            'url' => "resume.html",
+                            'url'  => "resume.html",
                             'skip' => 1,
                         },
                         {
                             'text' => "Detailed English Resum&eacute;",
-                            'url' => "resume_detailed.html",
+                            'url'  => "resume_detailed.html",
                             'skip' => 1,
                         },
                     ],
@@ -125,265 +121,299 @@ my $nav_menu_tree =
             ],
         },
         {
-            'text' => "Humour",
-            'url' => "humour/",
-            'title' => "My Humorous Creations",
+            'text'        => "Humour",
+            'url'         => "humour/",
+            'title'       => "My Humorous Creations",
             'show_always' => 1,
-            'subs' =>
-            [
+            'subs'        => [
                 {
-                    'text' => "The Enemy",
-                    'url' => "humour/TheEnemy/",
+                    'text'  => "The Enemy",
+                    'url'   => "humour/TheEnemy/",
                     'title' => "The Enemy and How I Helped to Fight It",
                 },
                 {
-                    'text' => "TOWTF",
-                    'url' => "humour/TOWTF/",
+                    'text'  => "TOWTF",
+                    'url'   => "humour/TOWTF/",
                     'title' => "The One with the Fountainhead",
                 },
                 {
-                    'text' => "The Pope",
-                    'url' => "humour/Pope/",
+                    'text'  => "The Pope",
+                    'url'   => "humour/Pope/",
                     'title' => "The Pope Died on Sunday",
                 },
                 {
-                    'text' => "Humour Archive",
+                    'text'  => "Humour Archive",
                     'title' => "Archive of Humorous Bits I came up with",
-                    'url' => "humour.html",
+                    'url'   => "humour.html",
                 },
                 {
                     'text' => "Fortune Cookies Collection",
-                    'title' => "Collection of Files for Input to the UNIX 'fortune' Program",
+                    'title' =>
+"Collection of Files for Input to the UNIX 'fortune' Program",
                     'url' => "humour/fortunes/",
                 },
             ],
         },
         {
-            'text' => "Math-Ventures",
-            'url' => "MathVentures/",
+            'text'  => "Math-Ventures",
+            'url'   => "MathVentures/",
             'title' => "Mathematical Riddles and their Solutions",
         },
         {
-            'text' => "Computer Art",
-            'url' => "art/",
+            'text'  => "Computer Art",
+            'url'   => "art/",
             'title' => "Computer art I created while explaining how.",
-            'subs' =>
-            [
+            'subs'  => [
                 {
                     'text' => "Back to my Homepage",
-                    'url' => "art/bk2hp/",
-                    'title' => "A Back to my Homepage logo not unlike the one from the movie &quot;Back to the Future&quot;",
+                    'url'  => "art/bk2hp/",
+                    'title' =>
+"A Back to my Homepage logo not unlike the one from the movie &quot;Back to the Future&quot;",
                 },
                 {
                     'text' => "Linux Banner",
-                    'url' => "art/linux_banner/",
-                    'title' => "Linux - Because Software Problems should not Cost Money",
+                    'url'  => "art/linux_banner/",
+                    'title' =>
+"Linux - Because Software Problems should not Cost Money",
                 },
             ],
         },
         {
-            'text' => "Software",
-            'url' => "open-source/",
+            'text'   => "Software",
+            'url'    => "open-source/",
             'expand' => { 're' => "^(open-source|perl)/", },
-            'title' => "Pages related to Software (mostly Open-Source)",
-            'subs' =>
-            [
+            'title'  => "Pages related to Software (mostly Open-Source)",
+            'subs'   => [
                 {
                     'text' => "Freecell Solver",
-                    'url' => "open-source/projects/freecell-solver/",
+                    'url'  => "open-source/projects/freecell-solver/",
                 },
                 {
                     'text' => "MikMod for Java",
-                    'title' => "A Player for MOD Files (a type of Music Files) for the Java Environment",
+                    'title' =>
+"A Player for MOD Files (a type of Music Files) for the Java Environment",
                     'url' => "jmikmod/",
                 },
                 {
-                    'text' => "FCFS RWLock",
+                    'text'  => "FCFS RWLock",
                     'title' => "A First-Come First-Served Readers/Writers Lock",
-                    'url' => "rwlock/",
+                    'url'   => "rwlock/",
                 },
                 {
-                    'text' => "Quad-Pres",
+                    'text'  => "Quad-Pres",
                     'title' => "A Tool for Creating HTML Presentations",
-                    'url' => "open-source/projects/quad-pres/",
+                    'url'   => "open-source/projects/quad-pres/",
                 },
                 {
-                    'text' => "Favourite OSS",
+                    'text'  => "Favourite OSS",
                     'title' => "Favourite Open-Source Software",
-                    'url' => "open-source/favourite/",
+                    'url'   => "open-source/favourite/",
                 },
                 {
-                    'text' => "Interviews",
+                    'text'  => "Interviews",
                     'title' => "Interviews with Open-Source People",
-                    'url' => "open-source/interviews/",
+                    'url'   => "open-source/interviews/",
                 },
                 {
                     'text' => "Contributions",
-                    'title' => "Contributions to Other Projects, that I did not Start",
+                    'title' =>
+                        "Contributions to Other Projects, that I did not Start",
                     'url' => "open-source/contributions/",
                 },
                 {
-                    'text' => "Bits and Bobs",
+                    'text'  => "Bits and Bobs",
                     'title' => "Various Small-Scale Open-Source Works",
-                    'url' => "open-source/bits.html",
+                    'url'   => "open-source/bits.html",
                 },
                 {
-                    'text' => "Portability Libraries",
+                    'text'  => "Portability Libraries",
                     'title' => "Cross-Platform Abstraction Libraries",
-                    'url' => "abstraction/",
-                    'hide' => 1,
+                    'url'   => "abstraction/",
+                    'hide'  => 1,
                 },
                 {
-                    'text' => "Software Tools",
+                    'text'  => "Software Tools",
                     'title' => "Software Construction and Management Tools",
-                    'url' => "software-tools/",
-                    'hide' => 1,
+                    'url'   => "software-tools/",
+                    'hide'  => 1,
                 },
             ],
         },
         {
-            'text' => "Lectures",
-            'url' => "lecture/",
+            'text'   => "Lectures",
+            'url'    => "lecture/",
             'expand' => { 're' => "^lecture/", },
-            'title' => "Presentations I Wrote (Mostly Technical)",
-            'subs' =>
-            [
+            'title'  => "Presentations I Wrote (Mostly Technical)",
+            'subs'   => [
                 {
                     'text' => "Perl for Newbies",
-                    'url' => "lecture/Perl/Newbies/",
+                    'url'  => "lecture/Perl/Newbies/",
                 },
                 {
                     'text' => "Freecell Solver",
-                    'url' => "lecture/Freecell-Solver/",
+                    'url'  => "lecture/Freecell-Solver/",
                 },
                 {
                     'text' => "Lambda Calculus",
-                    'title' => "A presentation about a Turing-complete programming environment with only two primitives",
+                    'title' =>
+"A presentation about a Turing-complete programming environment with only two primitives",
                     'url' => "lecture/lc/",
                 },
                 {
                     'text' => "The Gimp",
-                    'title' => "A Presentation about the GNU Image Manipulation Program",
+                    'title' =>
+"A Presentation about the GNU Image Manipulation Program",
                     'url' => "lecture/Gimp/",
                 },
                 {
                     'text' => "GNU Autotools",
-                    'url' => "lecture/Autotools/",
+                    'url'  => "lecture/Autotools/",
                 },
                 {
-                    'text' => "Web Meta Lecture",
+                    'text'  => "Web Meta Lecture",
                     'title' => "A Presentation about the Web Meta Language",
-                    'url' => "lecture/WebMetaLecture/",
+                    'url'   => "lecture/WebMetaLecture/",
                 },
             ],
         },
         {
             'text' => "Essays",
-            'url' => "essays/",
-            'title' => "Various Essays and Articles about Technology and Philosophy in General",
-            'subs' =>
-            [
+            'url'  => "essays/",
+            'title' =>
+"Various Essays and Articles about Technology and Philosophy in General",
+            'subs' => [
                 {
-                    'text' => "Index to Essays",
-                    'url' => "essays/Index/",
+                    'text'  => "Index to Essays",
+                    'url'   => "essays/Index/",
                     'title' => "Index to Essays and Articles I wrote.",
                 },
                 {
-                    'text' => "Open Source",
-                    'url' => "essays/open-source/",
+                    'text'  => "Open Source",
+                    'url'   => "essays/open-source/",
                     'title' => "Essays about Open-Source",
                 },
                 {
-                    'text' => "Life",
-                    'url' => "essays/life/",
+                    'text'  => "Life",
+                    'url'   => "essays/life/",
                     'title' => "Essays about Life, the Universe and Everything",
                 },
             ],
         },
         {
-            'text' => "Cool Links",
-            'url' => "links.html",
+            'text'  => "Cool Links",
+            'url'   => "links.html",
             'title' => "An incomplete list of links I find cool and/or useful.",
         },
         {
-            'text' => "Site Map",
-            'url' => "site-map/",
+            'text'  => "Site Map",
+            'url'   => "site-map/",
             'title' => "A site map for the site with all the pages",
         },
 
     ],
 };
 
-my %hosts =
-(
-    'hosts' =>
-    {
-        'default' =>
-        {
-            'base_url' => ("http://web-cpan.berlios.de/modules/" .
-                "HTML-Widgets-NavMenu/article/examples/simple/dest/"),
+my %hosts = (
+    'hosts' => {
+        'default' => {
+            'base_url' => (
+                      "http://web-cpan.berlios.de/modules/"
+                    . "HTML-Widgets-NavMenu/article/examples/simple/dest/"
+            ),
         },
     },
 );
 
-my @page_paths =
-("", "me/", "personal.html", "me/contact-me/", "me/resumes/", "resume.html",
-"resume_detailed.html", "humour/", "humour/TheEnemy/", "humour/TOWTF/",
-"humour/Pope/", "humour.html", "humour/fortunes/", "MathVentures/",
-"art/", "art/bk2hp/", "art/linux_banner/", "open-source/",
-"open-source/projects/freecell-solver/", "jmikmod/", "rwlock/",
-"open-source/projects/quad-pres/", "open-source/favourite/",
-"open-source/interviews/", "open-source/contributions/",
-"open-source/bits.html", "abstraction/", "software-tools/", "lecture/",
-"lecture/Perl/Newbies/", "lecture/Freecell-Solver/", "lecture/lc/",
-"lecture/Gimp/", "lecture/Autotools/", "lecture/WebMetaLecture/",
-"essays/", "essays/Index/", "essays/open-source/", "essays/life/",
-"links.html");
+my @page_paths = (
+    "",
+    "me/",
+    "personal.html",
+    "me/contact-me/",
+    "me/resumes/",
+    "resume.html",
+    "resume_detailed.html",
+    "humour/",
+    "humour/TheEnemy/",
+    "humour/TOWTF/",
+    "humour/Pope/",
+    "humour.html",
+    "humour/fortunes/",
+    "MathVentures/",
+    "art/",
+    "art/bk2hp/",
+    "art/linux_banner/",
+    "open-source/",
+    "open-source/projects/freecell-solver/",
+    "jmikmod/",
+    "rwlock/",
+    "open-source/projects/quad-pres/",
+    "open-source/favourite/",
+    "open-source/interviews/",
+    "open-source/contributions/",
+    "open-source/bits.html",
+    "abstraction/",
+    "software-tools/",
+    "lecture/",
+    "lecture/Perl/Newbies/",
+    "lecture/Freecell-Solver/",
+    "lecture/lc/",
+    "lecture/Gimp/",
+    "lecture/Autotools/",
+    "lecture/WebMetaLecture/",
+    "essays/",
+    "essays/Index/",
+    "essays/open-source/",
+    "essays/life/",
+    "links.html"
+);
 
-my @pages =
-    (map {
-        +{ 'path' => $_, 'title' => "Title for $_",
-        'content' => "<p>Content for $_</p>" }
-    } @page_paths);
+my @pages = (
+    map {
+        +{
+            'path'    => $_,
+            'title'   => "Title for $_",
+            'content' => "<p>Content for $_</p>"
+        }
+    } @page_paths
+);
 
 # Add the site-map page.
 {
-    my $site_map_path = "site-map/";
-    my $site_map_generator =
-        HTML::Widgets::NavMenu->new(
-            path_info => "/$site_map_path",
-            current_host => "default",
-            hosts => \%hosts,
-            tree_contents => $nav_menu_tree
-        );
+    my $site_map_path      = "site-map/";
+    my $site_map_generator = HTML::Widgets::NavMenu->new(
+        path_info     => "/$site_map_path",
+        current_host  => "default",
+        hosts         => \%hosts,
+        tree_contents => $nav_menu_tree
+    );
     push @pages,
-    {
-        'path' => $site_map_path,
-        'title' => "Site Map",
-        'content' => join("\n", @{$site_map_generator->gen_site_map()}),
-    };
+        {
+        'path'    => $site_map_path,
+        'title'   => "Site Map",
+        'content' => join( "\n", @{ $site_map_generator->gen_site_map() } ),
+        };
 };
 
 push @pages,
-(
+    (
     {
-        'path' => "perl/japhs/",
-        'title' => "Perl JAPHs",
+        'path'    => "perl/japhs/",
+        'title'   => "Perl JAPHs",
         'content' => "<p>JAPHs for fun and profit.</p>",
     },
     {
-        'path' => "open-source/yowza/",
-        'title' => "A Wonderful Yowza",
+        'path'    => "open-source/yowza/",
+        'title'   => "A Wonderful Yowza",
         'content' => "<p>Yowza is da-bomb man!</p>",
     }
-);
+    );
 
-my $cgi = CGI->new();
+my $cgi       = CGI->new();
 my $path_info = $cgi->path_info();
-if ($cgi->param("hi"))
+if ( $cgi->param("hi") )
 {
-    print $cgi->header(-type => "text/plain");
-    print (map { "$_ => $ENV{$_}\n" } keys(%ENV));
+    print $cgi->header( -type => "text/plain" );
+    print( map { "$_ => $ENV{$_}\n" } keys(%ENV) );
     exit;
 }
 
@@ -391,47 +421,45 @@ my $found = 0;
 PAGE_LOOP:
 foreach my $page (@pages)
 {
-    my $path = $page->{'path'};
-    my $title = $page->{'title'};
+    my $path    = $page->{'path'};
+    my $title   = $page->{'title'};
     my $content = $page->{'content'};
-    if ($path_info eq "/$path")
+    if ( $path_info eq "/$path" )
     {
         $found = 1;
-        render_page("/".$path, $title, $content);
+        render_page( "/" . $path, $title, $content );
         last;
     }
 }
 
 sub render_page
 {
-    my ($path, $title, $content) = @_;
-    my $nav_menu =
-        HTML::Widgets::NavMenu->new(
-            path_info => "$path",
-            current_host => "default",
-            hosts => \%hosts,
-            tree_contents => $nav_menu_tree,
-        );
+    my ( $path, $title, $content ) = @_;
+    my $nav_menu = HTML::Widgets::NavMenu->new(
+        path_info     => "$path",
+        current_host  => "default",
+        hosts         => \%hosts,
+        tree_contents => $nav_menu_tree,
+    );
 
     my $nav_menu_results = $nav_menu->render();
 
     print $cgi->header();
 
-    my $template =
-        Template->new(
+    my $template = Template->new(
         {
             'POST_CHOMP' => 1,
         }
-        );
+    );
 
-    my $vars =
-    {
-        'title' => $title,
-        'css_style' => $css_style,
-        'nav_menu_text' => join("\n", @{$nav_menu_results->{'html'}}) . "\n",
-        'content' => $content . "\n",
+    my $vars = {
+        'title'         => $title,
+        'css_style'     => $css_style,
+        'nav_menu_text' => join( "\n", @{ $nav_menu_results->{'html'} } )
+            . "\n",
+        'content'     => $content . "\n",
         'breadcrumbs' => $nav_menu_results->{leading_path},
-        'nav_links' => $nav_menu_results->{'nav_links_obj'},
+        'nav_links'   => $nav_menu_results->{'nav_links_obj'},
     };
 
     my $nav_links_template = <<'EOF';
@@ -455,7 +483,7 @@ title="[% nav_links.$key.title() %]" />
 <body>
 <div class="breadcrumb">
 [% FOREACH c = breadcrumbs %]
-[% UNLESS loop.first %] &rarr; [% END %]
+[% UNLESS loop.first %] → [% END %]
 <a href="[% HTML.escape(c.direct_url) %]"
 [% IF c.title %] title="[% c.title %]"[% END %]
 >[% c.label %]</a>
@@ -479,14 +507,12 @@ title="[% nav_links.$key.title() %]">[% key %]</a>
 </html>
 EOF
 
-    $template->process(\$nav_links_template, $vars);
+    $template->process( \$nav_links_template, $vars );
 }
 
-if (!$found)
+if ( !$found )
 {
-    eval {
-    render_page($path_info, "Not a title", "Page Contents");
-    };
+    eval { render_page( $path_info, "Not a title", "Page Contents" ); };
     if ($@)
     {
         $@->CGIpm_perform_redirect($cgi);
diff --git a/examples/article-examples/complex/H-W-NM-complex.pl b/examples/article-examples/complex/H-W-NM-complex.pl
index b748524..a6627c7 100644
--- a/examples/article-examples/complex/H-W-NM-complex.pl
+++ b/examples/article-examples/complex/H-W-NM-complex.pl
@@ -35,290 +35,320 @@ a:hover { background-color : palegreen; }
 }
 EOF
 
-my $nav_menu_tree =
-{
-    'host' => "default",
-    'text' => "HTML-Widgets-NavMenu Example",
+my $nav_menu_tree = {
+    'host'  => "default",
+    'text'  => "HTML-Widgets-NavMenu Example",
     'title' => "HTML-Widgets-NavMenu",
-    'subs' =>
-    [
+    'subs'  => [
         {
             'text' => "Home",
-            'url' => "",
+            'url'  => "",
         },
         {
             'text' => "About Myself",
-            'url' => "me/",
-            'subs' =>
-            [
+            'url'  => "me/",
+            'subs' => [
                 {
-                    'text' => "Bio",
-                    'url' => "personal.html",
+                    'text'  => "Bio",
+                    'url'   => "personal.html",
                     'title' => "A Short Biography of Myself",
                 },
                 {
-                    'text' => "Contact",
-                    'url' => "me/contact-me/",
-                    'title'=> "How to Contact me in Every Conceivable Way",
+                    'text'  => "Contact",
+                    'url'   => "me/contact-me/",
+                    'title' => "How to Contact me in Every Conceivable Way",
                 },
                 {
                     'text' => "My Resum&eacute;s",
-                    'url' => "me/resumes/",
-                    'subs' =>
-                    [
+                    'url'  => "me/resumes/",
+                    'subs' => [
                         {
                             'text' => "English Resum&eacute;",
-                            'url' => "resume.html",
+                            'url'  => "resume.html",
                         },
                         {
                             'text' => "Detailed English Resum&eacute;",
-                            'url' => "resume_detailed.html",
+                            'url'  => "resume_detailed.html",
                         },
                     ],
                 },
             ],
         },
         {
-            'text' => "Humour",
-            'url' => "humour/",
+            'text'  => "Humour",
+            'url'   => "humour/",
             'title' => "My Humorous Creations",
-            'subs' =>
-            [
+            'subs'  => [
                 {
-                    'text' => "The Enemy",
-                    'url' => "humour/TheEnemy/",
+                    'text'  => "The Enemy",
+                    'url'   => "humour/TheEnemy/",
                     'title' => "The Enemy and How I Helped to Fight It",
                 },
                 {
-                    'text' => "TOWTF",
-                    'url' => "humour/TOWTF/",
+                    'text'  => "TOWTF",
+                    'url'   => "humour/TOWTF/",
                     'title' => "The One with the Fountainhead",
                 },
                 {
-                    'text' => "The Pope",
-                    'url' => "humour/Pope/",
+                    'text'  => "The Pope",
+                    'url'   => "humour/Pope/",
                     'title' => "The Pope Died on Sunday",
                 },
                 {
-                    'text' => "Humour Archive",
+                    'text'  => "Humour Archive",
                     'title' => "Archive of Humorous Bits I came up with",
-                    'url' => "humour.html",
+                    'url'   => "humour.html",
                 },
                 {
                     'text' => "Fortune Cookies Collection",
-                    'title' => "Collection of Files for Input to the UNIX 'fortune' Program",
+                    'title' =>
+"Collection of Files for Input to the UNIX 'fortune' Program",
                     'url' => "humour/fortunes/",
                 },
             ],
         },
         {
-            'text' => "Math-Ventures",
-            'url' => "MathVentures/",
+            'text'  => "Math-Ventures",
+            'url'   => "MathVentures/",
             'title' => "Mathematical Riddles and their Solutions",
         },
         {
-            'text' => "Computer Art",
-            'url' => "art/",
+            'text'  => "Computer Art",
+            'url'   => "art/",
             'title' => "Computer art I created while explaining how.",
-            'subs' =>
-            [
+            'subs'  => [
                 {
                     'text' => "Back to my Homepage",
-                    'url' => "art/bk2hp/",
-                    'title' => "A Back to my Homepage logo not unlike the one from the movie &quot;Back to the Future&quot;",
+                    'url'  => "art/bk2hp/",
+                    'title' =>
+"A Back to my Homepage logo not unlike the one from the movie &quot;Back to the Future&quot;",
                 },
                 {
                     'text' => "Linux Banner",
-                    'url' => "art/linux_banner/",
-                    'title' => "Linux - Because Software Problems should not Cost Money",
+                    'url'  => "art/linux_banner/",
+                    'title' =>
+"Linux - Because Software Problems should not Cost Money",
                 },
             ],
         },
         {
-            'text' => "Software",
-            'url' => "open-source/",
+            'text'  => "Software",
+            'url'   => "open-source/",
             'title' => "Pages related to Software (mostly Open-Source)",
-            'subs' =>
-            [
+            'subs'  => [
                 {
                     'text' => "Freecell Solver",
-                    'url' => "open-source/projects/freecell-solver/",
+                    'url'  => "open-source/projects/freecell-solver/",
                 },
                 {
                     'text' => "MikMod for Java",
-                    'title' => "A Player for MOD Files (a type of Music Files) for the Java Environment",
+                    'title' =>
+"A Player for MOD Files (a type of Music Files) for the Java Environment",
                     'url' => "jmikmod/",
                 },
                 {
-                    'text' => "FCFS RWLock",
+                    'text'  => "FCFS RWLock",
                     'title' => "A First-Come First-Served Readers/Writers Lock",
-                    'url' => "rwlock/",
+                    'url'   => "rwlock/",
                 },
                 {
-                    'text' => "Quad-Pres",
+                    'text'  => "Quad-Pres",
                     'title' => "A Tool for Creating HTML Presentations",
-                    'url' => "open-source/projects/quad-pres/",
+                    'url'   => "open-source/projects/quad-pres/",
                 },
                 {
-                    'text' => "Favourite OSS",
+                    'text'  => "Favourite OSS",
                     'title' => "Favourite Open-Source Software",
-                    'url' => "open-source/favourite/",
+                    'url'   => "open-source/favourite/",
                 },
                 {
-                    'text' => "Interviews",
+                    'text'  => "Interviews",
                     'title' => "Interviews with Open-Source People",
-                    'url' => "open-source/interviews/",
+                    'url'   => "open-source/interviews/",
                 },
                 {
                     'text' => "Contributions",
-                    'title' => "Contributions to Other Projects, that I did not Start",
+                    'title' =>
+                        "Contributions to Other Projects, that I did not Start",
                     'url' => "open-source/contributions/",
                 },
                 {
-                    'text' => "Bits and Bobs",
+                    'text'  => "Bits and Bobs",
                     'title' => "Various Small-Scale Open-Source Works",
-                    'url' => "open-source/bits.html",
+                    'url'   => "open-source/bits.html",
                 },
                 {
-                    'text' => "Portability Libraries",
+                    'text'  => "Portability Libraries",
                     'title' => "Cross-Platform Abstraction Libraries",
-                    'url' => "abstraction/",
+                    'url'   => "abstraction/",
                 },
                 {
-                    'text' => "Software Tools",
+                    'text'  => "Software Tools",
                     'title' => "Software Construction and Management Tools",
-                    'url' => "software-tools/",
+                    'url'   => "software-tools/",
                 },
             ],
         },
         {
-            'text' => "Lectures",
-            'url' => "lecture/",
+            'text'  => "Lectures",
+            'url'   => "lecture/",
             'title' => "Presentations I Wrote (Mostly Technical)",
-            'subs' =>
-            [
+            'subs'  => [
                 {
                     'text' => "Perl for Newbies",
-                    'url' => "lecture/Perl/Newbies/",
+                    'url'  => "lecture/Perl/Newbies/",
                 },
                 {
                     'text' => "Freecell Solver",
-                    'url' => "lecture/Freecell-Solver/",
+                    'url'  => "lecture/Freecell-Solver/",
                 },
                 {
                     'text' => "Lambda Calculus",
-                    'title' => "A presentation about a Turing-complete programming environment with only two primitives",
+                    'title' =>
+"A presentation about a Turing-complete programming environment with only two primitives",
                     'url' => "lecture/lc/",
                 },
                 {
                     'text' => "The Gimp",
-                    'title' => "A Presentation about the GNU Image Manipulation Program",
+                    'title' =>
+"A Presentation about the GNU Image Manipulation Program",
                     'url' => "lecture/Gimp/",
                 },
                 {
                     'text' => "GNU Autotools",
-                    'url' => "lecture/Autotools/",
+                    'url'  => "lecture/Autotools/",
                 },
                 {
-                    'text' => "Web Meta Lecture",
+                    'text'  => "Web Meta Lecture",
                     'title' => "A Presentation about the Web Meta Language",
-                    'url' => "lecture/WebMetaLecture/",
+                    'url'   => "lecture/WebMetaLecture/",
                 },
             ],
         },
         {
             'text' => "Essays",
-            'url' => "essays/",
-            'title' => "Various Essays and Articles about Technology and Philosophy in General",
-            'subs' =>
-            [
+            'url'  => "essays/",
+            'title' =>
+"Various Essays and Articles about Technology and Philosophy in General",
+            'subs' => [
                 {
-                    'text' => "Index to Essays",
-                    'url' => "essays/Index/",
+                    'text'  => "Index to Essays",
+                    'url'   => "essays/Index/",
                     'title' => "Index to Essays and Articles I wrote.",
                 },
                 {
-                    'text' => "Open Source",
-                    'url' => "essays/open-source/",
+                    'text'  => "Open Source",
+                    'url'   => "essays/open-source/",
                     'title' => "Essays about Open-Source",
                 },
                 {
-                    'text' => "Life",
-                    'url' => "essays/life/",
+                    'text'  => "Life",
+                    'url'   => "essays/life/",
                     'title' => "Essays about Life, the Universe and Everything",
                 },
             ],
         },
         {
-            'text' => "Cool Links",
-            'url' => "links.html",
+            'text'  => "Cool Links",
+            'url'   => "links.html",
             'title' => "An incomplete list of links I find cool and/or useful.",
         },
     ],
 };
 
-my %hosts =
-(
-    'hosts' =>
-    {
-        'default' =>
-        {
-            'base_url' => ("http://web-cpan.berlios.de/modules/" .
-                "HTML-Widgets-NavMenu/article/examples/simple/dest/"),
+my %hosts = (
+    'hosts' => {
+        'default' => {
+            'base_url' => (
+                      "http://web-cpan.berlios.de/modules/"
+                    . "HTML-Widgets-NavMenu/article/examples/simple/dest/"
+            ),
         },
     },
 );
 
-my @page_paths =
-("", "me/", "personal.html", "me/contact-me/", "me/resumes/", "resume.html",
-"resume_detailed.html", "humour/", "humour/TheEnemy/", "humour/TOWTF/",
-"humour/Pope/", "humour.html", "humour/fortunes/", "MathVentures/",
-"art/", "art/bk2hp/", "art/linux_banner/", "open-source/",
-"open-source/projects/freecell-solver/", "jmikmod/", "rwlock/",
-"open-source/projects/quad-pres/", "open-source/favourite/",
-"open-source/interviews/", "open-source/contributions/",
-"open-source/bits.html", "abstraction/", "software-tools/", "lecture/",
-"lecture/Perl/Newbies/", "lecture/Freecell-Solver/", "lecture/lc/",
-"lecture/Gimp/", "lecture/Autotools/", "lecture/WebMetaLecture/",
-"essays/", "essays/Index/", "essays/open-source/", "essays/life/",
-"links.html");
-
+my @page_paths = (
+    "",
+    "me/",
+    "personal.html",
+    "me/contact-me/",
+    "me/resumes/",
+    "resume.html",
+    "resume_detailed.html",
+    "humour/",
+    "humour/TheEnemy/",
+    "humour/TOWTF/",
+    "humour/Pope/",
+    "humour.html",
+    "humour/fortunes/",
+    "MathVentures/",
+    "art/",
+    "art/bk2hp/",
+    "art/linux_banner/",
+    "open-source/",
+    "open-source/projects/freecell-solver/",
+    "jmikmod/",
+    "rwlock/",
+    "open-source/projects/quad-pres/",
+    "open-source/favourite/",
+    "open-source/interviews/",
+    "open-source/contributions/",
+    "open-source/bits.html",
+    "abstraction/",
+    "software-tools/",
+    "lecture/",
+    "lecture/Perl/Newbies/",
+    "lecture/Freecell-Solver/",
+    "lecture/lc/",
+    "lecture/Gimp/",
+    "lecture/Autotools/",
+    "lecture/WebMetaLecture/",
+    "essays/",
+    "essays/Index/",
+    "essays/open-source/",
+    "essays/life/",
+    "links.html"
+);
 
-my @pages =
-    (map {
-        +{ 'path' => $_, 'title' => "Title for $_",
-        'content' => "<p>Content for $_</p>" }
-    } @page_paths);
+my @pages = (
+    map {
+        +{
+            'path'    => $_,
+            'title'   => "Title for $_",
+            'content' => "<p>Content for $_</p>"
+        }
+    } @page_paths
+);
 
 foreach my $page (@pages)
 {
-    my $path = $page->{'path'};
-    my $title = $page->{'title'};
-    my $content = $page->{'content'};
-    my $nav_menu =
-        HTML::Widgets::NavMenu->new(
-            path_info => "/$path",
-            current_host => "default",
-            hosts => \%hosts,
-            tree_contents => $nav_menu_tree,
-        );
+    my $path     = $page->{'path'};
+    my $title    = $page->{'title'};
+    my $content  = $page->{'content'};
+    my $nav_menu = HTML::Widgets::NavMenu->new(
+        path_info     => "/$path",
+        current_host  => "default",
+        hosts         => \%hosts,
+        tree_contents => $nav_menu_tree,
+    );
 
     my $nav_menu_results = $nav_menu->render();
 
-    my $nav_menu_text = join("\n", @{$nav_menu_results->{'html'}});
+    my $nav_menu_text = join( "\n", @{ $nav_menu_results->{'html'} } );
 
     my $file_path = $path;
-    if (($file_path =~ m{/$}) || ($file_path eq ""))
+    if ( ( $file_path =~ m{/$} ) || ( $file_path eq "" ) )
     {
         $file_path .= "index.html";
     }
     my $full_path = "dest/$file_path";
     $full_path =~ m{^(.*)/[^/]+$};
+
     # mkpath() throws an exception if it isn't successful, which will cause
     # this program to terminate. This is what we want.
-    mkpath($1, 0, 0755);
-    open my $out, ">", $full_path or
-        die "Could not open \"$full_path\" for writing!";
+    mkpath( $1, 0, 0755 );
+    open my $out, ">", $full_path
+        or die "Could not open \"$full_path\" for writing!";
 
     print {$out} <<"EOF";
 <?xml version="1.0" encoding="iso-8859-1"?>
diff --git a/examples/article-examples/fine-grained-site-flow/H-W-NM-fine-grained-site-flow.pl b/examples/article-examples/fine-grained-site-flow/H-W-NM-fine-grained-site-flow.pl
index 3a2a4c9..0dc8da5 100644
--- a/examples/article-examples/fine-grained-site-flow/H-W-NM-fine-grained-site-flow.pl
+++ b/examples/article-examples/fine-grained-site-flow/H-W-NM-fine-grained-site-flow.pl
@@ -79,45 +79,41 @@ a:hover { background-color : palegreen; }
 }
 EOF
 
-my $nav_menu_tree =
-{
-    'host' => "default",
-    'text' => "HTML-Widgets-NavMenu Example",
+my $nav_menu_tree = {
+    'host'  => "default",
+    'text'  => "HTML-Widgets-NavMenu Example",
     'title' => "HTML-Widgets-NavMenu",
-    'subs' =>
-    [
+    'subs'  => [
         {
             'text' => "Home",
-            'url' => "",
+            'url'  => "",
         },
         {
             'text' => "About Myself",
-            'url' => "me/",
-            'subs' =>
-            [
+            'url'  => "me/",
+            'subs' => [
                 {
-                    'text' => "Bio",
-                    'url' => "personal.html",
+                    'text'  => "Bio",
+                    'url'   => "personal.html",
                     'title' => "A Short Biography of Myself",
                 },
                 {
-                    'text' => "Contact",
-                    'url' => "me/contact-me/",
-                    'title'=> "How to Contact me in Every Conceivable Way",
+                    'text'  => "Contact",
+                    'url'   => "me/contact-me/",
+                    'title' => "How to Contact me in Every Conceivable Way",
                 },
                 {
                     'text' => "My Resum&eacute;s",
-                    'url' => "me/resumes/",
-                    'subs' =>
-                    [
+                    'url'  => "me/resumes/",
+                    'subs' => [
                         {
                             'text' => "English Resum&eacute;",
-                            'url' => "resume.html",
+                            'url'  => "resume.html",
                             'skip' => 1,
                         },
                         {
                             'text' => "Detailed English Resum&eacute;",
-                            'url' => "resume_detailed.html",
+                            'url'  => "resume_detailed.html",
                             'skip' => 1,
                         },
                     ],
@@ -125,300 +121,333 @@ my $nav_menu_tree =
             ],
         },
         {
-            'text' => "Humour",
-            'url' => "humour/",
-            'title' => "My Humorous Creations",
+            'text'        => "Humour",
+            'url'         => "humour/",
+            'title'       => "My Humorous Creations",
             'show_always' => 1,
-            'subs' =>
-            [
+            'subs'        => [
                 {
-                    'text' => "The Enemy",
-                    'url' => "humour/TheEnemy/",
+                    'text'  => "The Enemy",
+                    'url'   => "humour/TheEnemy/",
                     'title' => "The Enemy and How I Helped to Fight It",
                 },
                 {
-                    'text' => "TOWTF",
-                    'url' => "humour/TOWTF/",
+                    'text'  => "TOWTF",
+                    'url'   => "humour/TOWTF/",
                     'title' => "The One with the Fountainhead",
                 },
                 {
-                    'text' => "The Pope",
-                    'url' => "humour/Pope/",
+                    'text'  => "The Pope",
+                    'url'   => "humour/Pope/",
                     'title' => "The Pope Died on Sunday",
                 },
                 {
-                    'text' => "Humour Archive",
+                    'text'  => "Humour Archive",
                     'title' => "Archive of Humorous Bits I came up with",
-                    'url' => "humour.html",
+                    'url'   => "humour.html",
                 },
                 {
                     'text' => "Fortune Cookies Collection",
-                    'title' => "Collection of Files for Input to the UNIX 'fortune' Program",
+                    'title' =>
+"Collection of Files for Input to the UNIX 'fortune' Program",
                     'url' => "humour/fortunes/",
                 },
             ],
         },
         {
-            'text' => "Math-Ventures",
-            'url' => "MathVentures/",
+            'text'  => "Math-Ventures",
+            'url'   => "MathVentures/",
             'title' => "Mathematical Riddles and their Solutions",
         },
         {
-            'text' => "Computer Art",
-            'url' => "art/",
+            'text'  => "Computer Art",
+            'url'   => "art/",
             'title' => "Computer art I created while explaining how.",
-            'subs' =>
-            [
+            'subs'  => [
                 {
                     'text' => "Back to my Homepage",
-                    'url' => "art/bk2hp/",
-                    'title' => "A Back to my Homepage logo not unlike the one from the movie &quot;Back to the Future&quot;",
+                    'url'  => "art/bk2hp/",
+                    'title' =>
+"A Back to my Homepage logo not unlike the one from the movie &quot;Back to the Future&quot;",
                 },
                 {
                     'text' => "Linux Banner",
-                    'url' => "art/linux_banner/",
-                    'title' => "Linux - Because Software Problems should not Cost Money",
+                    'url'  => "art/linux_banner/",
+                    'title' =>
+"Linux - Because Software Problems should not Cost Money",
                 },
             ],
         },
         {
-            'text' => "Software",
-            'url' => "open-source/",
+            'text'   => "Software",
+            'url'    => "open-source/",
             'expand' => { 're' => "^(open-source|perl)/", },
-            'title' => "Pages related to Software (mostly Open-Source)",
-            'subs' =>
-            [
+            'title'  => "Pages related to Software (mostly Open-Source)",
+            'subs'   => [
                 {
                     'text' => "Freecell Solver",
-                    'url' => "open-source/projects/freecell-solver/",
+                    'url'  => "open-source/projects/freecell-solver/",
                 },
                 {
                     'text' => "MikMod for Java",
-                    'title' => "A Player for MOD Files (a type of Music Files) for the Java Environment",
+                    'title' =>
+"A Player for MOD Files (a type of Music Files) for the Java Environment",
                     'url' => "jmikmod/",
                 },
                 {
-                    'text' => "FCFS RWLock",
+                    'text'  => "FCFS RWLock",
                     'title' => "A First-Come First-Served Readers/Writers Lock",
-                    'url' => "rwlock/",
+                    'url'   => "rwlock/",
                 },
                 {
-                    'text' => "Quad-Pres",
+                    'text'  => "Quad-Pres",
                     'title' => "A Tool for Creating HTML Presentations",
-                    'url' => "open-source/projects/quad-pres/",
+                    'url'   => "open-source/projects/quad-pres/",
                 },
                 {
-                    'text' => "Favourite OSS",
+                    'text'  => "Favourite OSS",
                     'title' => "Favourite Open-Source Software",
-                    'url' => "open-source/favourite/",
+                    'url'   => "open-source/favourite/",
                 },
                 {
-                    'text' => "Interviews",
+                    'text'  => "Interviews",
                     'title' => "Interviews with Open-Source People",
-                    'url' => "open-source/interviews/",
+                    'url'   => "open-source/interviews/",
                 },
                 {
                     'text' => "Contributions",
-                    'title' => "Contributions to Other Projects, that I did not Start",
+                    'title' =>
+                        "Contributions to Other Projects, that I did not Start",
                     'url' => "open-source/contributions/",
                 },
                 {
-                    'text' => "Bits and Bobs",
+                    'text'  => "Bits and Bobs",
                     'title' => "Various Small-Scale Open-Source Works",
-                    'url' => "open-source/bits.html",
+                    'url'   => "open-source/bits.html",
                 },
                 {
-                    'text' => "Portability Libraries",
+                    'text'  => "Portability Libraries",
                     'title' => "Cross-Platform Abstraction Libraries",
-                    'url' => "abstraction/",
-                    'hide' => 1,
+                    'url'   => "abstraction/",
+                    'hide'  => 1,
                 },
                 {
-                    'text' => "Software Tools",
+                    'text'  => "Software Tools",
                     'title' => "Software Construction and Management Tools",
-                    'url' => "software-tools/",
-                    'hide' => 1,
+                    'url'   => "software-tools/",
+                    'hide'  => 1,
                 },
             ],
         },
         {
-            'text' => "Lectures",
-            'url' => "lecture/",
+            'text'   => "Lectures",
+            'url'    => "lecture/",
             'expand' => { 're' => "^lecture/", },
-            'title' => "Presentations I Wrote (Mostly Technical)",
-            'subs' =>
-            [
+            'title'  => "Presentations I Wrote (Mostly Technical)",
+            'subs'   => [
                 {
                     'text' => "Perl for Newbies",
-                    'url' => "lecture/Perl/Newbies/",
+                    'url'  => "lecture/Perl/Newbies/",
                 },
                 {
                     'text' => "Freecell Solver",
-                    'url' => "lecture/Freecell-Solver/",
+                    'url'  => "lecture/Freecell-Solver/",
                 },
                 {
                     'text' => "Lambda Calculus",
-                    'title' => "A presentation about a Turing-complete programming environment with only two primitives",
+                    'title' =>
+"A presentation about a Turing-complete programming environment with only two primitives",
                     'url' => "lecture/lc/",
                 },
                 {
                     'text' => "The Gimp",
-                    'title' => "A Presentation about the GNU Image Manipulation Program",
+                    'title' =>
+"A Presentation about the GNU Image Manipulation Program",
                     'url' => "lecture/Gimp/",
                 },
                 {
                     'text' => "GNU Autotools",
-                    'url' => "lecture/Autotools/",
+                    'url'  => "lecture/Autotools/",
                 },
                 {
-                    'text' => "Web Meta Lecture",
+                    'text'  => "Web Meta Lecture",
                     'title' => "A Presentation about the Web Meta Language",
-                    'url' => "lecture/WebMetaLecture/",
+                    'url'   => "lecture/WebMetaLecture/",
                 },
             ],
         },
         {
             'text' => "Essays",
-            'url' => "essays/",
-            'title' => "Various Essays and Articles about Technology and Philosophy in General",
-            'subs' =>
-            [
+            'url'  => "essays/",
+            'title' =>
+"Various Essays and Articles about Technology and Philosophy in General",
+            'subs' => [
                 {
-                    'text' => "Index to Essays",
-                    'url' => "essays/Index/",
+                    'text'  => "Index to Essays",
+                    'url'   => "essays/Index/",
                     'title' => "Index to Essays and Articles I wrote.",
                 },
                 {
-                    'text' => "Open Source",
-                    'url' => "essays/open-source/",
+                    'text'  => "Open Source",
+                    'url'   => "essays/open-source/",
                     'title' => "Essays about Open-Source",
                 },
                 {
-                    'text' => "Life",
-                    'url' => "essays/life/",
+                    'text'  => "Life",
+                    'url'   => "essays/life/",
                     'title' => "Essays about Life, the Universe and Everything",
                 },
             ],
         },
         {
-            'text' => "Cool Links",
-            'url' => "links.html",
+            'text'  => "Cool Links",
+            'url'   => "links.html",
             'title' => "An incomplete list of links I find cool and/or useful.",
         },
         {
-            'text' => "Site Map",
-            'url' => "site-map/",
+            'text'  => "Site Map",
+            'url'   => "site-map/",
             'title' => "A site map for the site with all the pages",
         },
 
     ],
 };
 
-my %hosts =
-(
-    'hosts' =>
-    {
-        'default' =>
-        {
-            'base_url' => ("http://web-cpan.berlios.de/modules/" .
-                "HTML-Widgets-NavMenu/article/examples/simple/dest/"),
+my %hosts = (
+    'hosts' => {
+        'default' => {
+            'base_url' => (
+                      "http://web-cpan.berlios.de/modules/"
+                    . "HTML-Widgets-NavMenu/article/examples/simple/dest/"
+            ),
         },
     },
 );
 
-my @page_paths =
-("", "me/", "personal.html", "me/contact-me/", "me/resumes/", "resume.html",
-"resume_detailed.html", "humour/", "humour/TheEnemy/", "humour/TOWTF/",
-"humour/Pope/", "humour.html", "humour/fortunes/", "MathVentures/",
-"art/", "art/bk2hp/", "art/linux_banner/", "open-source/",
-"open-source/projects/freecell-solver/", "jmikmod/", "rwlock/",
-"open-source/projects/quad-pres/", "open-source/favourite/",
-"open-source/interviews/", "open-source/contributions/",
-"open-source/bits.html", "abstraction/", "software-tools/", "lecture/",
-"lecture/Perl/Newbies/", "lecture/Freecell-Solver/", "lecture/lc/",
-"lecture/Gimp/", "lecture/Autotools/", "lecture/WebMetaLecture/",
-"essays/", "essays/Index/", "essays/open-source/", "essays/life/",
-"links.html");
+my @page_paths = (
+    "",
+    "me/",
+    "personal.html",
+    "me/contact-me/",
+    "me/resumes/",
+    "resume.html",
+    "resume_detailed.html",
+    "humour/",
+    "humour/TheEnemy/",
+    "humour/TOWTF/",
+    "humour/Pope/",
+    "humour.html",
+    "humour/fortunes/",
+    "MathVentures/",
+    "art/",
+    "art/bk2hp/",
+    "art/linux_banner/",
+    "open-source/",
+    "open-source/projects/freecell-solver/",
+    "jmikmod/",
+    "rwlock/",
+    "open-source/projects/quad-pres/",
+    "open-source/favourite/",
+    "open-source/interviews/",
+    "open-source/contributions/",
+    "open-source/bits.html",
+    "abstraction/",
+    "software-tools/",
+    "lecture/",
+    "lecture/Perl/Newbies/",
+    "lecture/Freecell-Solver/",
+    "lecture/lc/",
+    "lecture/Gimp/",
+    "lecture/Autotools/",
+    "lecture/WebMetaLecture/",
+    "essays/",
+    "essays/Index/",
+    "essays/open-source/",
+    "essays/life/",
+    "links.html"
+);
 
-my @pages =
-    (map {
-        +{ 'path' => $_, 'title' => "Title for $_",
-        'content' => "<p>Content for $_</p>" }
-    } @page_paths);
+my @pages = (
+    map {
+        +{
+            'path'    => $_,
+            'title'   => "Title for $_",
+            'content' => "<p>Content for $_</p>"
+        }
+    } @page_paths
+);
 
 # Add the site-map page.
 {
-    my $site_map_path = "site-map/";
-    my $site_map_generator =
-        HTML::Widgets::NavMenu->new(
-            path_info => "/$site_map_path",
-            current_host => "default",
-            hosts => \%hosts,
-            tree_contents => $nav_menu_tree
-        );
+    my $site_map_path      = "site-map/";
+    my $site_map_generator = HTML::Widgets::NavMenu->new(
+        path_info     => "/$site_map_path",
+        current_host  => "default",
+        hosts         => \%hosts,
+        tree_contents => $nav_menu_tree
+    );
     push @pages,
-    {
-        'path' => $site_map_path,
-        'title' => "Site Map",
-        'content' => join("\n", @{$site_map_generator->gen_site_map()}),
-    };
+        {
+        'path'    => $site_map_path,
+        'title'   => "Site Map",
+        'content' => join( "\n", @{ $site_map_generator->gen_site_map() } ),
+        };
 };
 
 push @pages,
-(
+    (
     {
-        'path' => "perl/japhs/",
-        'title' => "Perl JAPHs",
+        'path'    => "perl/japhs/",
+        'title'   => "Perl JAPHs",
         'content' => "<p>JAPHs for fun and profit.</p>",
     },
     {
-        'path' => "open-source/yowza/",
-        'title' => "A Wonderful Yowza",
+        'path'    => "open-source/yowza/",
+        'title'   => "A Wonderful Yowza",
         'content' => "<p>Yowza is da-bomb man!</p>",
     }
-);
+    );
 
 foreach my $page (@pages)
 {
-    my $path = $page->{'path'};
-    my $nav_menu =
-        HTML::Widgets::NavMenu->new(
-            path_info => "/$path",
-            current_host => "default",
-            hosts => \%hosts,
-            tree_contents => $nav_menu_tree,
-        );
+    my $path     = $page->{'path'};
+    my $nav_menu = HTML::Widgets::NavMenu->new(
+        path_info     => "/$path",
+        current_host  => "default",
+        hosts         => \%hosts,
+        tree_contents => $nav_menu_tree,
+    );
 
     my $nav_menu_results = $nav_menu->render();
 
     my $file_path = $path;
-    if (($file_path =~ m{/$}) || ($file_path eq ""))
+    if ( ( $file_path =~ m{/$} ) || ( $file_path eq "" ) )
     {
         $file_path .= "index.html";
     }
     my $full_path = "dest/$file_path";
     $full_path =~ m{^(.*)/[^/]+$};
+
     # mkpath() throws an exception if it isn't successful, which will cause
     # this program to terminate. This is what we want.
-    mkpath($1, 0, 0755);
-    open my $out, ">", $full_path or
-        die "Could not open \"$full_path\" for writing!";
+    mkpath( $1, 0, 0755 );
+    open my $out, ">", $full_path
+        or die "Could not open \"$full_path\" for writing!";
 
-    my $template =
-        Template->new(
+    my $template = Template->new(
         {
             'POST_CHOMP' => 1,
         }
-        );
+    );
 
-    my $vars =
-    {
-        'title' => $page->{'title'},
-        'css_style' => $css_style,
-        'nav_menu_text' => join("\n", @{$nav_menu_results->{'html'}}) . "\n",
-        'content' => $page->{'content'} . "\n",
+    my $vars = {
+        'title'         => $page->{'title'},
+        'css_style'     => $css_style,
+        'nav_menu_text' => join( "\n", @{ $nav_menu_results->{'html'} } )
+            . "\n",
+        'content'     => $page->{'content'} . "\n",
         'breadcrumbs' => $nav_menu_results->{leading_path},
-        'nav_links' => $nav_menu_results->{'nav_links_obj'},
+        'nav_links'   => $nav_menu_results->{'nav_links_obj'},
     };
 
     my $nav_links_template = <<'EOF';
@@ -442,7 +471,7 @@ title="[% nav_links.$key.title() %]" />
 <body>
 <div class="breadcrumb">
 [% FOREACH c = breadcrumbs %]
-[% UNLESS loop.first %] &rarr; [% END %]
+[% UNLESS loop.first %] → [% END %]
 <a href="[% HTML.escape(c.direct_url) %]"
 [% IF c.title %] title="[% c.title %]"[% END %]
 >[% c.label %]</a>
@@ -466,7 +495,7 @@ title="[% nav_links.$key.title() %]">[% key %]</a>
 </html>
 EOF
 
-    $template->process(\$nav_links_template, $vars, $out);
+    $template->process( \$nav_links_template, $vars, $out );
 
     close($out);
 }
diff --git a/examples/article-examples/simple/H-W-NM-simple.pl b/examples/article-examples/simple/H-W-NM-simple.pl
index 6a240df..a05ee0e 100644
--- a/examples/article-examples/simple/H-W-NM-simple.pl
+++ b/examples/article-examples/simple/H-W-NM-simple.pl
@@ -35,47 +35,43 @@ a:hover { background-color : palegreen; }
 }
 EOF
 
-my $nav_menu_tree =
-{
-    'host' => "default",
-    'text' => "Top 1",
+my $nav_menu_tree = {
+    'host'  => "default",
+    'text'  => "Top 1",
     'title' => "T1 Title",
-    'subs' =>
-    [
+    'subs'  => [
         {
             'text' => "Home",
-            'url' => "",
+            'url'  => "",
         },
         {
-            'text' => "About Me",
+            'text'  => "About Me",
             'title' => "About Myself",
-            'url' => "me/",
+            'url'   => "me/",
         },
         {
-            'text' => "Links",
+            'text'  => "Links",
             'title' => "Hyperlinks to other Pages",
-            'url' => "links/",
+            'url'   => "links/",
         },
     ],
 };
 
-my %hosts =
-(
-    'hosts' =>
-    {
-        'default' =>
-        {
-            'base_url' => ("http://web-cpan.berlios.de/modules/" .
-                "HTML-Widgets-NavMenu/article/examples/simple/dest/"),
+my %hosts = (
+    'hosts' => {
+        'default' => {
+            'base_url' => (
+                      "http://web-cpan.berlios.de/modules/"
+                    . "HTML-Widgets-NavMenu/article/examples/simple/dest/"
+            ),
         },
     },
 );
 
-my @pages =
-(
+my @pages = (
     {
-        'path' => "",
-        'title' => "John Doe's Homepage",
+        'path'    => "",
+        'title'   => "John Doe's Homepage",
         'content' => <<'EOF',
 <p>
 Hi! This is the homepage of John Doe. I hope you enjoy your stay here.
@@ -83,8 +79,8 @@ Hi! This is the homepage of John Doe. I hope you enjoy your stay here.
 EOF
     },
     {
-        'path' => "me/",
-        'title' => "About Myself",
+        'path'    => "me/",
+        'title'   => "About Myself",
         'content' => <<'EOF',
 <p>
 My name is John Doe and I've been exploring the art and science of creating
@@ -94,8 +90,8 @@ subject, and think everyone should be interested in them.
 EOF
     },
     {
-        'path' => "links/",
-        'title' => "Cool Links",
+        'path'    => "links/",
+        'title'   => "Cool Links",
         'content' => <<'EOF',
 <h2>Perl-Related Links</h2>
 
@@ -117,33 +113,33 @@ EOF
 
 foreach my $page (@pages)
 {
-    my $path = $page->{'path'};
-    my $title = $page->{'title'};
-    my $content = $page->{'content'};
-    my $nav_menu =
-        HTML::Widgets::NavMenu->new(
-            path_info => "/$path",
-            current_host => "default",
-            hosts => \%hosts,
-            tree_contents => $nav_menu_tree,
-        );
+    my $path     = $page->{'path'};
+    my $title    = $page->{'title'};
+    my $content  = $page->{'content'};
+    my $nav_menu = HTML::Widgets::NavMenu->new(
+        path_info     => "/$path",
+        current_host  => "default",
+        hosts         => \%hosts,
+        tree_contents => $nav_menu_tree,
+    );
 
     my $nav_menu_results = $nav_menu->render();
 
-    my $nav_menu_text = join("\n", @{$nav_menu_results->{'html'}});
+    my $nav_menu_text = join( "\n", @{ $nav_menu_results->{'html'} } );
 
     my $file_path = $path;
-    if (($file_path =~ m{/$}) || ($file_path eq ""))
+    if ( ( $file_path =~ m{/$} ) || ( $file_path eq "" ) )
     {
         $file_path .= "index.html";
     }
     my $full_path = "dest/$file_path";
     $full_path =~ m{^(.*)/[^/]+$};
+
     # mkpath() throws an exception if it isn't successful, which will cause
     # this program to terminate. This is what we want.
-    mkpath($1, 0, 0755);
-    open my $out, ">", $full_path or
-        die "Could not open \"$full_path\" for writing!";
+    mkpath( $1, 0, 0755 );
+    open my $out, ">", $full_path
+        or die "Could not open \"$full_path\" for writing!";
 
     print {$out} <<"EOF";
 <?xml version="1.0" encoding="iso-8859-1"?>
diff --git a/examples/article-examples/with-embellishments/H-W-NM-embellish.pl b/examples/article-examples/with-embellishments/H-W-NM-embellish.pl
index ddc8e40..26099eb 100644
--- a/examples/article-examples/with-embellishments/H-W-NM-embellish.pl
+++ b/examples/article-examples/with-embellishments/H-W-NM-embellish.pl
@@ -79,326 +79,354 @@ a:hover { background-color : palegreen; }
 }
 EOF
 
-my $nav_menu_tree =
-{
-    'host' => "default",
-    'text' => "HTML-Widgets-NavMenu Example",
+my $nav_menu_tree = {
+    'host'  => "default",
+    'text'  => "HTML-Widgets-NavMenu Example",
     'title' => "HTML-Widgets-NavMenu",
-    'subs' =>
-    [
+    'subs'  => [
         {
             'text' => "Home",
-            'url' => "",
+            'url'  => "",
         },
         {
             'text' => "About Myself",
-            'url' => "me/",
-            'subs' =>
-            [
+            'url'  => "me/",
+            'subs' => [
                 {
-                    'text' => "Bio",
-                    'url' => "personal.html",
+                    'text'  => "Bio",
+                    'url'   => "personal.html",
                     'title' => "A Short Biography of Myself",
                 },
                 {
-                    'text' => "Contact",
-                    'url' => "me/contact-me/",
-                    'title'=> "How to Contact me in Every Conceivable Way",
+                    'text'  => "Contact",
+                    'url'   => "me/contact-me/",
+                    'title' => "How to Contact me in Every Conceivable Way",
                 },
                 {
                     'text' => "My Resum&eacute;s",
-                    'url' => "me/resumes/",
-                    'subs' =>
-                    [
+                    'url'  => "me/resumes/",
+                    'subs' => [
                         {
                             'text' => "English Resum&eacute;",
-                            'url' => "resume.html",
+                            'url'  => "resume.html",
                         },
                         {
                             'text' => "Detailed English Resum&eacute;",
-                            'url' => "resume_detailed.html",
+                            'url'  => "resume_detailed.html",
                         },
                     ],
                 },
             ],
         },
         {
-            'text' => "Humour",
-            'url' => "humour/",
+            'text'  => "Humour",
+            'url'   => "humour/",
             'title' => "My Humorous Creations",
-            'subs' =>
-            [
+            'subs'  => [
                 {
-                    'text' => "The Enemy",
-                    'url' => "humour/TheEnemy/",
+                    'text'  => "The Enemy",
+                    'url'   => "humour/TheEnemy/",
                     'title' => "The Enemy and How I Helped to Fight It",
                 },
                 {
-                    'text' => "TOWTF",
-                    'url' => "humour/TOWTF/",
+                    'text'  => "TOWTF",
+                    'url'   => "humour/TOWTF/",
                     'title' => "The One with the Fountainhead",
                 },
                 {
-                    'text' => "The Pope",
-                    'url' => "humour/Pope/",
+                    'text'  => "The Pope",
+                    'url'   => "humour/Pope/",
                     'title' => "The Pope Died on Sunday",
                 },
                 {
-                    'text' => "Humour Archive",
+                    'text'  => "Humour Archive",
                     'title' => "Archive of Humorous Bits I came up with",
-                    'url' => "humour.html",
+                    'url'   => "humour.html",
                 },
                 {
                     'text' => "Fortune Cookies Collection",
-                    'title' => "Collection of Files for Input to the UNIX 'fortune' Program",
+                    'title' =>
+"Collection of Files for Input to the UNIX 'fortune' Program",
                     'url' => "humour/fortunes/",
                 },
             ],
         },
         {
-            'text' => "Math-Ventures",
-            'url' => "MathVentures/",
+            'text'  => "Math-Ventures",
+            'url'   => "MathVentures/",
             'title' => "Mathematical Riddles and their Solutions",
         },
         {
-            'text' => "Computer Art",
-            'url' => "art/",
+            'text'  => "Computer Art",
+            'url'   => "art/",
             'title' => "Computer art I created while explaining how.",
-            'subs' =>
-            [
+            'subs'  => [
                 {
                     'text' => "Back to my Homepage",
-                    'url' => "art/bk2hp/",
-                    'title' => "A Back to my Homepage logo not unlike the one from the movie &quot;Back to the Future&quot;",
+                    'url'  => "art/bk2hp/",
+                    'title' =>
+"A Back to my Homepage logo not unlike the one from the movie &quot;Back to the Future&quot;",
                 },
                 {
                     'text' => "Linux Banner",
-                    'url' => "art/linux_banner/",
-                    'title' => "Linux - Because Software Problems should not Cost Money",
+                    'url'  => "art/linux_banner/",
+                    'title' =>
+"Linux - Because Software Problems should not Cost Money",
                 },
             ],
         },
         {
-            'text' => "Software",
-            'url' => "open-source/",
+            'text'  => "Software",
+            'url'   => "open-source/",
             'title' => "Pages related to Software (mostly Open-Source)",
-            'subs' =>
-            [
+            'subs'  => [
                 {
                     'text' => "Freecell Solver",
-                    'url' => "open-source/projects/freecell-solver/",
+                    'url'  => "open-source/projects/freecell-solver/",
                 },
                 {
                     'text' => "MikMod for Java",
-                    'title' => "A Player for MOD Files (a type of Music Files) for the Java Environment",
+                    'title' =>
+"A Player for MOD Files (a type of Music Files) for the Java Environment",
                     'url' => "jmikmod/",
                 },
                 {
-                    'text' => "FCFS RWLock",
+                    'text'  => "FCFS RWLock",
                     'title' => "A First-Come First-Served Readers/Writers Lock",
-                    'url' => "rwlock/",
+                    'url'   => "rwlock/",
                 },
                 {
-                    'text' => "Quad-Pres",
+                    'text'  => "Quad-Pres",
                     'title' => "A Tool for Creating HTML Presentations",
-                    'url' => "open-source/projects/quad-pres/",
+                    'url'   => "open-source/projects/quad-pres/",
                 },
                 {
-                    'text' => "Favourite OSS",
+                    'text'  => "Favourite OSS",
                     'title' => "Favourite Open-Source Software",
-                    'url' => "open-source/favourite/",
+                    'url'   => "open-source/favourite/",
                 },
                 {
-                    'text' => "Interviews",
+                    'text'  => "Interviews",
                     'title' => "Interviews with Open-Source People",
-                    'url' => "open-source/interviews/",
+                    'url'   => "open-source/interviews/",
                 },
                 {
                     'text' => "Contributions",
-                    'title' => "Contributions to Other Projects, that I did not Start",
+                    'title' =>
+                        "Contributions to Other Projects, that I did not Start",
                     'url' => "open-source/contributions/",
                 },
                 {
-                    'text' => "Bits and Bobs",
+                    'text'  => "Bits and Bobs",
                     'title' => "Various Small-Scale Open-Source Works",
-                    'url' => "open-source/bits.html",
+                    'url'   => "open-source/bits.html",
                 },
                 {
-                    'text' => "Portability Libraries",
+                    'text'  => "Portability Libraries",
                     'title' => "Cross-Platform Abstraction Libraries",
-                    'url' => "abstraction/",
+                    'url'   => "abstraction/",
                 },
                 {
-                    'text' => "Software Tools",
+                    'text'  => "Software Tools",
                     'title' => "Software Construction and Management Tools",
-                    'url' => "software-tools/",
+                    'url'   => "software-tools/",
                 },
             ],
         },
         {
-            'text' => "Lectures",
-            'url' => "lecture/",
+            'text'  => "Lectures",
+            'url'   => "lecture/",
             'title' => "Presentations I Wrote (Mostly Technical)",
-            'subs' =>
-            [
+            'subs'  => [
                 {
                     'text' => "Perl for Newbies",
-                    'url' => "lecture/Perl/Newbies/",
+                    'url'  => "lecture/Perl/Newbies/",
                 },
                 {
                     'text' => "Freecell Solver",
-                    'url' => "lecture/Freecell-Solver/",
+                    'url'  => "lecture/Freecell-Solver/",
                 },
                 {
                     'text' => "Lambda Calculus",
-                    'title' => "A presentation about a Turing-complete programming environment with only two primitives",
+                    'title' =>
+"A presentation about a Turing-complete programming environment with only two primitives",
                     'url' => "lecture/lc/",
                 },
                 {
                     'text' => "The Gimp",
-                    'title' => "A Presentation about the GNU Image Manipulation Program",
+                    'title' =>
+"A Presentation about the GNU Image Manipulation Program",
                     'url' => "lecture/Gimp/",
                 },
                 {
                     'text' => "GNU Autotools",
-                    'url' => "lecture/Autotools/",
+                    'url'  => "lecture/Autotools/",
                 },
                 {
-                    'text' => "Web Meta Lecture",
+                    'text'  => "Web Meta Lecture",
                     'title' => "A Presentation about the Web Meta Language",
-                    'url' => "lecture/WebMetaLecture/",
+                    'url'   => "lecture/WebMetaLecture/",
                 },
             ],
         },
         {
             'text' => "Essays",
-            'url' => "essays/",
-            'title' => "Various Essays and Articles about Technology and Philosophy in General",
-            'subs' =>
-            [
+            'url'  => "essays/",
+            'title' =>
+"Various Essays and Articles about Technology and Philosophy in General",
+            'subs' => [
                 {
-                    'text' => "Index to Essays",
-                    'url' => "essays/Index/",
+                    'text'  => "Index to Essays",
+                    'url'   => "essays/Index/",
                     'title' => "Index to Essays and Articles I wrote.",
                 },
                 {
-                    'text' => "Open Source",
-                    'url' => "essays/open-source/",
+                    'text'  => "Open Source",
+                    'url'   => "essays/open-source/",
                     'title' => "Essays about Open-Source",
                 },
                 {
-                    'text' => "Life",
-                    'url' => "essays/life/",
+                    'text'  => "Life",
+                    'url'   => "essays/life/",
                     'title' => "Essays about Life, the Universe and Everything",
                 },
             ],
         },
         {
-            'text' => "Cool Links",
-            'url' => "links.html",
+            'text'  => "Cool Links",
+            'url'   => "links.html",
             'title' => "An incomplete list of links I find cool and/or useful.",
         },
         {
-            'text' => "Site Map",
-            'url' => "site-map/",
+            'text'  => "Site Map",
+            'url'   => "site-map/",
             'title' => "A site map for the site with all the pages",
         },
 
     ],
 };
 
-my %hosts =
-(
-    'hosts' =>
-    {
-        'default' =>
-        {
-            'base_url' => ("http://web-cpan.berlios.de/modules/" .
-                "HTML-Widgets-NavMenu/article/examples/simple/dest/"),
+my %hosts = (
+    'hosts' => {
+        'default' => {
+            'base_url' => (
+                      "http://web-cpan.berlios.de/modules/"
+                    . "HTML-Widgets-NavMenu/article/examples/simple/dest/"
+            ),
         },
     },
 );
 
-my @page_paths =
-("", "me/", "personal.html", "me/contact-me/", "me/resumes/", "resume.html",
-"resume_detailed.html", "humour/", "humour/TheEnemy/", "humour/TOWTF/",
-"humour/Pope/", "humour.html", "humour/fortunes/", "MathVentures/",
-"art/", "art/bk2hp/", "art/linux_banner/", "open-source/",
-"open-source/projects/freecell-solver/", "jmikmod/", "rwlock/",
-"open-source/projects/quad-pres/", "open-source/favourite/",
-"open-source/interviews/", "open-source/contributions/",
-"open-source/bits.html", "abstraction/", "software-tools/", "lecture/",
-"lecture/Perl/Newbies/", "lecture/Freecell-Solver/", "lecture/lc/",
-"lecture/Gimp/", "lecture/Autotools/", "lecture/WebMetaLecture/",
-"essays/", "essays/Index/", "essays/open-source/", "essays/life/",
-"links.html");
+my @page_paths = (
+    "",
+    "me/",
+    "personal.html",
+    "me/contact-me/",
+    "me/resumes/",
+    "resume.html",
+    "resume_detailed.html",
+    "humour/",
+    "humour/TheEnemy/",
+    "humour/TOWTF/",
+    "humour/Pope/",
+    "humour.html",
+    "humour/fortunes/",
+    "MathVentures/",
+    "art/",
+    "art/bk2hp/",
+    "art/linux_banner/",
+    "open-source/",
+    "open-source/projects/freecell-solver/",
+    "jmikmod/",
+    "rwlock/",
+    "open-source/projects/quad-pres/",
+    "open-source/favourite/",
+    "open-source/interviews/",
+    "open-source/contributions/",
+    "open-source/bits.html",
+    "abstraction/",
+    "software-tools/",
+    "lecture/",
+    "lecture/Perl/Newbies/",
+    "lecture/Freecell-Solver/",
+    "lecture/lc/",
+    "lecture/Gimp/",
+    "lecture/Autotools/",
+    "lecture/WebMetaLecture/",
+    "essays/",
+    "essays/Index/",
+    "essays/open-source/",
+    "essays/life/",
+    "links.html"
+);
 
-my @pages =
-    (map {
-        +{ 'path' => $_, 'title' => "Title for $_",
-        'content' => "<p>Content for $_</p>" }
-    } @page_paths);
+my @pages = (
+    map {
+        +{
+            'path'    => $_,
+            'title'   => "Title for $_",
+            'content' => "<p>Content for $_</p>"
+        }
+    } @page_paths
+);
 
 # Add the site-map page.
 {
-    my $site_map_path = "site-map/";
-    my $site_map_generator =
-        HTML::Widgets::NavMenu->new(
-            path_info => "/$site_map_path",
-            current_host => "default",
-            hosts => \%hosts,
-            tree_contents => $nav_menu_tree
-        );
+    my $site_map_path      = "site-map/";
+    my $site_map_generator = HTML::Widgets::NavMenu->new(
+        path_info     => "/$site_map_path",
+        current_host  => "default",
+        hosts         => \%hosts,
+        tree_contents => $nav_menu_tree
+    );
     push @pages,
-    {
-        'path' => $site_map_path,
-        'title' => "Site Map",
-        'content' => join("\n", @{$site_map_generator->gen_site_map()}),
-    };
+        {
+        'path'    => $site_map_path,
+        'title'   => "Site Map",
+        'content' => join( "\n", @{ $site_map_generator->gen_site_map() } ),
+        };
 };
 
 foreach my $page (@pages)
 {
-    my $path = $page->{'path'};
-    my $nav_menu =
-        HTML::Widgets::NavMenu->new(
-            path_info => "/$path",
-            current_host => "default",
-            hosts => \%hosts,
-            tree_contents => $nav_menu_tree,
-        );
+    my $path     = $page->{'path'};
+    my $nav_menu = HTML::Widgets::NavMenu->new(
+        path_info     => "/$path",
+        current_host  => "default",
+        hosts         => \%hosts,
+        tree_contents => $nav_menu_tree,
+    );
 
     my $nav_menu_results = $nav_menu->render();
 
     my $file_path = $path;
-    if (($file_path =~ m{/$}) || ($file_path eq ""))
+    if ( ( $file_path =~ m{/$} ) || ( $file_path eq "" ) )
     {
         $file_path .= "index.html";
     }
     my $full_path = "dest/$file_path";
     $full_path =~ m{^(.*)/[^/]+$};
+
     # mkpath() throws an exception if it isn't successful, which will cause
     # this program to terminate. This is what we want.
-    mkpath($1, 0, 0755);
-    open my $out, ">", $full_path or
-        die "Could not open \"$full_path\" for writing!";
-
+    mkpath( $1, 0, 0755 );
+    open my $out, ">", $full_path
+        or die "Could not open \"$full_path\" for writing!";
 
-    my $template =
-        Template->new(
+    my $template = Template->new(
         {
             'POST_CHOMP' => 1,
         }
-        );
+    );
 
-    my $vars =
-    {
-        'title' => $page->{'title'},
-        'css_style' => $css_style,
-        'nav_menu_text' => join("\n", @{$nav_menu_results->{'html'}}) . "\n",
-        'content' => $page->{'content'} . "\n",
+    my $vars = {
+        'title'         => $page->{'title'},
+        'css_style'     => $css_style,
+        'nav_menu_text' => join( "\n", @{ $nav_menu_results->{'html'} } )
+            . "\n",
+        'content'     => $page->{'content'} . "\n",
         'breadcrumbs' => $nav_menu_results->{leading_path},
-        'nav_links' => $nav_menu_results->{'nav_links_obj'},
+        'nav_links'   => $nav_menu_results->{'nav_links_obj'},
     };
 
     my $nav_links_template = <<'EOF';
@@ -422,7 +450,7 @@ title="[% nav_links.$key.title() %]" />
 <body>
 <div class="breadcrumb">
 [% FOREACH c = breadcrumbs %]
-[% UNLESS loop.first %] &rarr; [% END %]
+[% UNLESS loop.first %] → [% END %]
 <a href="[% HTML.escape(c.direct_url) %]"
 [% IF c.title %] title="[% c.title %]"[% END %]
 >[% c.label %]</a>
@@ -446,7 +474,7 @@ title="[% nav_links.$key.title() %]">[% key %]</a>
 </html>
 EOF
 
-    $template->process(\$nav_links_template, $vars, $out);
+    $template->process( \$nav_links_template, $vars, $out );
 
     close($out);
 }
diff --git a/examples/output.pl b/examples/output.pl
index 142ef40..ba4457c 100644
--- a/examples/output.pl
+++ b/examples/output.pl
@@ -5,41 +5,36 @@ use warnings;
 
 use HTML::Widgets::NavMenu;
 
-my $nav_menu =
-    HTML::Widgets::NavMenu->new(
-        'path_info' => "/me/",
-        'current_host' => "default",
-        'hosts' =>
-        {
-            'default' =>
+my $nav_menu = HTML::Widgets::NavMenu->new(
+    'path_info'    => "/me/",
+    'current_host' => "default",
+    'hosts'        => {
+        'default' => {
+            'base_url' => "http://www.hello.com/"
+        },
+    },
+    'tree_contents' => {
+        'host'      => "default",
+        'value'     => "Top 1",
+        'title'     => "T1 Title",
+        'expand_re' => "",
+        'subs'      => [
             {
-                'base_url' => "http://www.hello.com/"
+                'value' => "Home",
+                'url'   => "",
             },
-        },
-        'tree_contents' =>
-        {
-            'host' => "default",
-            'value' => "Top 1",
-            'title' => "T1 Title",
-            'expand_re' => "",
-            'subs' =>
-            [
-                {
-                    'value' => "Home",
-                    'url' => "",
-                },
-                {
-                    'value' => "About Me",
-                    'title' => "About Myself",
-                    'url' => "me/",
-                },
-            ],
-        },
-    );
+            {
+                'value' => "About Me",
+                'title' => "About Myself",
+                'url'   => "me/",
+            },
+        ],
+    },
+);
 
 my $results = $nav_menu->render();
 
-my $nav_menu_html = join("\n", @{$results->{'html'}});
+my $nav_menu_html = join( "\n", @{ $results->{'html'} } );
 
 print $nav_menu_html;
 
diff --git a/inc/Test/Run/Builder.pm b/inc/Test/Run/Builder.pm
index 5703d01..1ebf68b 100644
--- a/inc/Test/Run/Builder.pm
+++ b/inc/Test/Run/Builder.pm
@@ -19,29 +19,35 @@ sub ACTION_runtest
     local @INC = @INC;
 
     # Make sure we test the module in blib/
-    unshift @INC, (File::Spec->catdir($p->{base_dir}, $self->blib, 'lib'),
-		 File::Spec->catdir($p->{base_dir}, $self->blib, 'arch'));
+    unshift @INC,
+        (
+        File::Spec->catdir( $p->{base_dir}, $self->blib, 'lib' ),
+        File::Spec->catdir( $p->{base_dir}, $self->blib, 'arch' )
+        );
 
     $self->do_test_run_tests;
 }
 
-sub ACTION_distruntest {
-  my ($self) = @_;
+sub ACTION_distruntest
+{
+    my ($self) = @_;
+
+    $self->depends_on('distdir');
 
-  $self->depends_on('distdir');
+    my $start_dir = $self->cwd;
+    my $dist_dir  = $self->dist_dir;
+    chdir $dist_dir or die "Cannot chdir to $dist_dir: $!";
 
-  my $start_dir = $self->cwd;
-  my $dist_dir = $self->dist_dir;
-  chdir $dist_dir or die "Cannot chdir to $dist_dir: $!";
-  # XXX could be different names for scripts
+    # XXX could be different names for scripts
 
-  $self->run_perl_script('Build.PL') # XXX Should this be run w/ --nouse-rcfile
-      or die "Error executing 'Build.PL' in dist directory: $!";
-  $self->run_perl_script('Build')
-      or die "Error executing 'Build' in dist directory: $!";
-  $self->run_perl_script('Build', [], ['runtest'])
-      or die "Error executing 'Build test' in dist directory";
-  chdir $start_dir;
+    $self->run_perl_script(
+        'Build.PL')    # XXX Should this be run w/ --nouse-rcfile
+        or die "Error executing 'Build.PL' in dist directory: $!";
+    $self->run_perl_script('Build')
+        or die "Error executing 'Build' in dist directory: $!";
+    $self->run_perl_script( 'Build', [], ['runtest'] )
+        or die "Error executing 'Build test' in dist directory";
+    chdir $start_dir;
 }
 
 sub do_test_run_tests
@@ -50,13 +56,13 @@ sub do_test_run_tests
 
     require Test::Run::CmdLine::Iface;
 
-    my $test_run =
-        Test::Run::CmdLine::Iface->new(
-            {
-                'test_files' => [glob("t/*.t")],
-            }
-            # 'backend_params' => $self->_get_backend_params(),
-        );
+    my $test_run = Test::Run::CmdLine::Iface->new(
+        {
+            'test_files' => [ glob("t/*.t") ],
+        }
+
+        # 'backend_params' => $self->_get_backend_params(),
+    );
 
     return $test_run->run();
 }
@@ -64,15 +70,14 @@ sub do_test_run_tests
 sub ACTION_tags
 {
     my $self = shift;
-    return
-        $self->do_system(
-            "ctags",
-            qw(-f tags --recurse --totals
-    		--exclude=blib/** --exclude=t/lib/**
-    		--exclude=**/.svn/** --exclude='*~'),
-            "--exclude=".$self->dist_name()."-*/**",
-            qw(--languages=Perl --langmap=Perl:+.t)
-        );
+    return $self->do_system(
+        "ctags",
+        qw(-f tags --recurse --totals
+            --exclude=blib/** --exclude=t/lib/**
+            --exclude=**/.svn/** --exclude='*~'),
+        "--exclude=" . $self->dist_name() . "-*/**",
+        qw(--languages=Perl --langmap=Perl:+.t)
+    );
 }
 
 1;
diff --git a/lib/HTML/Widgets/NavMenu.pm b/lib/HTML/Widgets/NavMenu.pm
index 7988b77..ca77000 100644
--- a/lib/HTML/Widgets/NavMenu.pm
+++ b/lib/HTML/Widgets/NavMenu.pm
@@ -1,6 +1,8 @@
 use strict;
 use warnings;
 
+use 5.012;
+
 package HTML::Widgets::NavMenu;
 
 our $VERSION = '1.0703';
@@ -13,7 +15,7 @@ package HTML::Widgets::NavMenu::Error::Redirect;
 
 use strict;
 use vars qw(@ISA);
-@ISA=("HTML::Widgets::NavMenu::Error");
+@ISA = ("HTML::Widgets::NavMenu::Error");
 
 sub CGIpm_perform_redirect
 {
@@ -21,7 +23,7 @@ sub CGIpm_perform_redirect
 
     my $cgi = shift;
 
-    print $cgi->redirect($cgi->script_name() . $self->{-redirect_path});
+    print $cgi->redirect( $cgi->script_name() . $self->{-redirect_path} );
     exit;
 }
 
@@ -31,15 +33,13 @@ use strict;
 
 use base qw(HTML::Widgets::NavMenu::Object);
 
-__PACKAGE__->mk_acc_ref([
-    qw(host host_url title label direct_url url_type)]
-    );
+__PACKAGE__->mk_acc_ref( [qw(host host_url title label direct_url url_type)] );
 
 sub _init
 {
-    my ($self, $args) = @_;
+    my ( $self, $args ) = @_;
 
-    while (my ($k, $v) = each(%$args))
+    while ( my ( $k, $v ) = each(%$args) )
     {
         $self->$k($v);
     }
@@ -59,13 +59,17 @@ package HTML::Widgets::NavMenu::Iterator::GetCurrentlyActive;
 
 use base 'HTML::Widgets::NavMenu::Iterator::Base';
 
-__PACKAGE__->mk_acc_ref([qw(
-    _item_found
-    _leading_path_coords
-    _ret_coords
-    _temp_coords
-    _tree
-    )]);
+__PACKAGE__->mk_acc_ref(
+    [
+        qw(
+            _item_found
+            _leading_path_coords
+            _ret_coords
+            _temp_coords
+            _tree
+            )
+    ]
+);
 
 sub _init
 {
@@ -74,7 +78,7 @@ sub _init
 
     $self->SUPER::_init($args);
 
-    $self->_tree($args->{'tree'});
+    $self->_tree( $args->{'tree'} );
 
     $self->_item_found(0);
 
@@ -90,15 +94,12 @@ sub get_initial_node
 
 sub item_matches
 {
-    my $self = shift;
-    my $item = $self->top();
-    my $url = $item->_node()->url();
+    my $self     = shift;
+    my $item     = $self->top();
+    my $url      = $item->_node()->url();
     my $nav_menu = $self->nav_menu();
-    return
-        (
-            ($item->_accum_state()->{'host'} eq $nav_menu->current_host()) &&
-            (defined($url) && ($url eq $nav_menu->path_info()))
-        );
+    return (   ( $item->_accum_state()->{'host'} eq $nav_menu->current_host() )
+            && ( defined($url) && ( $url eq $nav_menu->path_info() ) ) );
 }
 
 sub does_item_expand
@@ -112,37 +113,33 @@ sub node_start
 {
     my $self = shift;
 
-    if ($self->item_matches())
+    if ( $self->item_matches() )
     {
-        my @coords = @{$self->get_coords()};
-        $self->_ret_coords([ @coords ]);
-        $self->_temp_coords([ @coords, (-1) ]);
+        my @coords = @{ $self->get_coords() };
+        $self->_ret_coords( [@coords] );
+        $self->_temp_coords( [ @coords, (-1) ] );
         $self->top()->_node()->mark_as_current();
         $self->_item_found(1);
     }
-    elsif ($self->does_item_expand())
+    elsif ( $self->does_item_expand() )
     {
-        my @coords = @{$self->get_coords()};
-        $self->_leading_path_coords([ @coords]);
+        my @coords = @{ $self->get_coords() };
+        $self->_leading_path_coords( [@coords] );
     }
 }
 
 sub node_end
 {
     my $self = shift;
-    if ($self->_item_found())
+    if ( $self->_item_found() )
     {
         # Skip the first node, because the coords refer
         # to the nodes below it.
-        my $idx = pop(@{$self->_temp_coords()});
-        if ($idx >= 0)
+        my $idx = pop( @{ $self->_temp_coords() } );
+        if ( $idx >= 0 )
         {
             my $node = $self->top()->_node();
-            $node->update_based_on_sub(
-                $node->get_nth_sub(
-                    $idx
-                )
-            );
+            $node->update_based_on_sub( $node->get_nth_sub($idx) );
         }
     }
 }
@@ -150,7 +147,7 @@ sub node_end
 sub node_should_recurse
 {
     my $self = shift;
-    return (! $self->_item_found());
+    return ( !$self->_item_found() );
 }
 
 sub get_final_coords
@@ -164,7 +161,7 @@ sub _get_leading_path_coords
 {
     my $self = shift;
 
-    return ($self->_ret_coords() || $self->_leading_path_coords());
+    return ( $self->_ret_coords() || $self->_leading_path_coords() );
 }
 
 package HTML::Widgets::NavMenu;
@@ -178,17 +175,21 @@ require HTML::Widgets::NavMenu::Iterator::SiteMap;
 require HTML::Widgets::NavMenu::Tree::Node;
 require HTML::Widgets::NavMenu::Predicate;
 
-__PACKAGE__->mk_acc_ref([qw(
-    _current_coords
-    current_host
-    _hosts
-    _no_leading_dot
-    _leading_path_coords
-    path_info
-    _traversed_tree
-    _tree_contents
-    _ul_classes
-    )]);
+__PACKAGE__->mk_acc_ref(
+    [
+        qw(
+            _current_coords
+            current_host
+            _hosts
+            _no_leading_dot
+            _leading_path_coords
+            path_info
+            _traversed_tree
+            _tree_contents
+            _ul_classes
+            )
+    ]
+);
 
 sub _init
 {
@@ -196,19 +197,18 @@ sub _init
 
     my %args = (@_);
 
-    $self->_register_path_info(\%args);
+    $self->_register_path_info( \%args );
 
-    $self->_hosts($args{hosts});
-    $self->_tree_contents($args{tree_contents});
+    $self->_hosts( $args{hosts} );
+    $self->_tree_contents( $args{tree_contents} );
 
-    $self->current_host($args{current_host})
+    $self->current_host( $args{current_host} )
         or die "Current host was not specified.";
 
-    $self->_ul_classes($args{'ul_classes'} || []);
+    $self->_ul_classes( $args{'ul_classes'} || [] );
 
     $self->_no_leading_dot(
-        exists($args{'no_leading_dot'}) ? $args{'no_leading_dot'} : 0
-    );
+        exists( $args{'no_leading_dot'} ) ? $args{'no_leading_dot'} : 0 );
 
     return 0;
 }
@@ -217,9 +217,8 @@ sub _get_nav_menu_traverser_args
 {
     my $self = shift;
 
-    return
-    {
-        'nav_menu' => $self,
+    return {
+        'nav_menu'   => $self,
         'ul_classes' => $self->_ul_classes(),
     };
 }
@@ -228,10 +227,8 @@ sub _get_nav_menu_traverser
 {
     my $self = shift;
 
-    return
-        HTML::Widgets::NavMenu::Iterator::NavMenu->new(
-            $self->_get_nav_menu_traverser_args()
-        );
+    return HTML::Widgets::NavMenu::Iterator::NavMenu->new(
+        $self->_get_nav_menu_traverser_args() );
 }
 
 sub _get_current_coords
@@ -241,7 +238,7 @@ sub _get_current_coords
     # This is to make sure $self->_current_coords() is generated.
     $self->_get_traversed_tree();
 
-    return [ @{$self->_current_coords()} ];
+    return [ @{ $self->_current_coords() } ];
 }
 
 sub _register_path_info
@@ -253,23 +250,23 @@ sub _register_path_info
 
     my $redir_path = undef;
 
-    if ($path_info eq "")
+    if ( $path_info eq "" )
     {
         $redir_path = "";
     }
-    elsif ($path_info =~ m/\/\/$/)
+    elsif ( $path_info =~ m/\/\/$/ )
     {
         my $path = $path_info;
         $path =~ s{\/+$}{};
         $redir_path = $path;
     }
 
-    if (defined($redir_path))
+    if ( defined($redir_path) )
     {
         my $error = HTML::Widgets::NavMenu::Error::Redirect->new();
 
-        $error->{'-redirect_path'} = ($redir_path."/");
-        $error->{'msg'} = "Need to redirect";
+        $error->{'-redirect_path'} = ( $redir_path . "/" );
+        $error->{'msg'}            = "Need to redirect";
 
         die $error;
     }
@@ -284,75 +281,68 @@ sub _register_path_info
 sub _is_slash_terminated
 {
     my $string = shift;
-    return (($string =~ /\/$/) ? 1 : 0);
+    return ( ( $string =~ /\/$/ ) ? 1 : 0 );
 }
 
 sub _text_to_url_obj
 {
     my $text = shift;
     my $url =
-        HTML::Widgets::NavMenu::Url->new(
-            $text,
-            (_is_slash_terminated($text) || ($text eq "")),
-            "server",
-        );
+        HTML::Widgets::NavMenu::Url->new( $text,
+        ( _is_slash_terminated($text) || ( $text eq "" ) ), "server", );
     return $url;
 }
 
 sub _get_relative_url
 {
-    my $from_text = shift;
-    my $to_text = shift(@_);
+    my $from_text      = shift;
+    my $to_text        = shift(@_);
     my $no_leading_dot = shift;
 
     my $from_url = _text_to_url_obj($from_text);
-    my $to_url = _text_to_url_obj($to_text);
+    my $to_url   = _text_to_url_obj($to_text);
     my $ret =
-        $from_url->_get_relative_url(
-            $to_url,
-            _is_slash_terminated($from_text),
-            $no_leading_dot,
-        );
-   return $ret;
+        $from_url->_get_relative_url( $to_url, _is_slash_terminated($from_text),
+        $no_leading_dot, );
+    return $ret;
 }
 
 sub _get_full_abs_url
 {
-    my ($self, $args) = @_;
+    my ( $self, $args ) = @_;
 
-    my $host = $args->{host};
+    my $host     = $args->{host};
     my $host_url = $args->{host_url};
 
-    return ($self->_hosts->{$host}->{base_url} . $host_url);
+    return ( $self->_hosts->{$host}->{base_url} . $host_url );
 }
 
 sub get_cross_host_rel_url_ref
 {
-    my ($self, $args) = @_;
+    my ( $self, $args ) = @_;
 
-    my $host = $args->{host};
-    my $host_url = $args->{host_url};
-    my $url_type = $args->{url_type};
+    my $host       = $args->{host};
+    my $host_url   = $args->{host_url};
+    my $url_type   = $args->{url_type};
     my $url_is_abs = $args->{url_is_abs};
 
     if ($url_is_abs)
     {
         return $host_url;
     }
-    elsif (($host ne $self->current_host()) || ($url_type eq "full_abs"))
+    elsif ( ( $host ne $self->current_host() ) || ( $url_type eq "full_abs" ) )
     {
         return $self->_get_full_abs_url($args);
     }
-    elsif ($url_type eq "rel")
+    elsif ( $url_type eq "rel" )
     {
         # TODO : convert to a method.
-        return _get_relative_url(
-            $self->path_info(), $host_url, $self->_no_leading_dot()
-        );
+        return _get_relative_url( $self->path_info(), $host_url,
+            $self->_no_leading_dot() );
     }
-    elsif ($url_type eq "site_abs")
+    elsif ( $url_type eq "site_abs" )
     {
-        return ($self->_hosts->{$host}->{trailing_url_base} . $host_url);
+        return ( $self->_hosts->{$host}->{trailing_url_base} . $host_url );
     }
     else
     {
@@ -364,7 +354,7 @@ sub get_cross_host_rel_url
 {
     my $self = shift;
 
-    return $self->get_cross_host_rel_url_ref({@_});
+    return $self->get_cross_host_rel_url_ref( {@_} );
 }
 
 sub _get_url_to_item
@@ -374,9 +364,9 @@ sub _get_url_to_item
 
     return $self->get_cross_host_rel_url_ref(
         {
-            'host' => $item->_accum_state()->{'host'},
-            'host_url' => ($item->_node->url() || ""),
-            'url_type' => $item->get_url_type(),
+            'host'       => $item->_accum_state()->{'host'},
+            'host_url'   => ( $item->_node->url() || "" ),
+            'url_type'   => $item->get_url_type(),
             'url_is_abs' => $item->_node->url_is_abs(),
         }
     );
@@ -391,17 +381,14 @@ sub _gen_blank_nav_menu_tree_node
 
 sub _create_predicate
 {
-    my ($self, $args) = @_;
+    my ( $self, $args ) = @_;
 
-    return
-        HTML::Widgets::NavMenu::Predicate->new(
-            'spec' => $args->{'spec'},
-        );
+    return HTML::Widgets::NavMenu::Predicate->new( 'spec' => $args->{'spec'}, );
 }
 
 sub _create_new_nav_menu_item
 {
-    my ($self, $args) = @_;
+    my ( $self, $args ) = @_;
 
     my $sub_contents = $args->{sub_contents};
 
@@ -409,18 +396,16 @@ sub _create_new_nav_menu_item
 
     $new_item->set_values_from_hash_ref($sub_contents);
 
-    if (exists($sub_contents->{'expand'}))
+    if ( exists( $sub_contents->{'expand'} ) )
     {
-        my $expand_val =
-            $self->_create_predicate(
-                {
-                    'spec' => $sub_contents->{'expand'},
-                }
-            )->evaluate(
-                'path_info' => $self->path_info(),
-                'current_host' => $self->current_host(),
-            )
-            ;
+        my $expand_val = $self->_create_predicate(
+            {
+                'spec' => $sub_contents->{'expand'},
+            }
+        )->evaluate(
+            'path_info'    => $self->path_info(),
+            'current_host' => $self->current_host(),
+        );
         if ($expand_val)
         {
             $new_item->expand($expand_val);
@@ -432,25 +417,20 @@ sub _create_new_nav_menu_item
 
 sub _render_tree_contents
 {
-    my $self = shift;
+    my $self         = shift;
     my $sub_contents = shift;
 
     my $path_info = $self->path_info();
 
     my $new_item =
-        $self->_create_new_nav_menu_item(
-            { sub_contents => $sub_contents },
-        );
+        $self->_create_new_nav_menu_item( { sub_contents => $sub_contents }, );
 
-    if (exists($sub_contents->{subs}))
+    if ( exists( $sub_contents->{subs} ) )
     {
-        foreach my $sub_contents_sub (@{$sub_contents->{subs}})
+        foreach my $sub_contents_sub ( @{ $sub_contents->{subs} } )
         {
             $new_item->add_sub(
-                $self->_render_tree_contents(
-                    $sub_contents_sub,
-                )
-            );
+                $self->_render_tree_contents( $sub_contents_sub, ) );
         }
     }
     return $new_item;
@@ -460,12 +440,11 @@ sub gen_site_map
 {
     my $self = shift;
 
-    my $iterator =
-        HTML::Widgets::NavMenu::Iterator::SiteMap->new(
-            {
-               'nav_menu' => $self,
-            }
-        );
+    my $iterator = HTML::Widgets::NavMenu::Iterator::SiteMap->new(
+        {
+            'nav_menu' => $self,
+        }
+    );
 
     $iterator->traverse();
 
@@ -476,36 +455,36 @@ sub _get_next_coords
 {
     my $self = shift;
 
-    my @coords = @{shift || $self->_get_current_coords};
+    my @coords = @{ shift || $self->_get_current_coords };
 
-    my @branches = ($self->_get_traversed_tree());
+    my @branches = ( $self->_get_traversed_tree() );
 
     my @dest_coords;
 
     my $i;
 
-    for($i=0;$i<scalar(@coords);$i++)
+    for ( $i = 0 ; $i < scalar(@coords) ; $i++ )
     {
-        $branches[$i+1] = $branches[$i]->get_nth_sub($coords[$i]);
+        $branches[ $i + 1 ] = $branches[$i]->get_nth_sub( $coords[$i] );
     }
 
-    if ($branches[$i]->_num_subs())
+    if ( $branches[$i]->_num_subs() )
     {
-        @dest_coords = (@coords,0);
+        @dest_coords = ( @coords, 0 );
     }
     else
     {
-        for($i--;$i>=0;$i--)
+        for ( $i-- ; $i >= 0 ; $i-- )
         {
-            if ($branches[$i]->_num_subs() > ($coords[$i]+1))
+            if ( $branches[$i]->_num_subs() > ( $coords[$i] + 1 ) )
             {
-                @dest_coords = (@coords[0 .. ($i-1)], $coords[$i]+1);
+                @dest_coords = ( @coords[ 0 .. ( $i - 1 ) ], $coords[$i] + 1 );
                 last;
             }
         }
-        if ($i == -1)
+        if ( $i == -1 )
         {
-            return undef;
+            return;
         }
     }
 
@@ -516,28 +495,26 @@ sub _get_prev_coords
 {
     my $self = shift;
 
-    my @coords = @{shift || $self->_get_current_coords()};
+    my @coords = @{ shift || $self->_get_current_coords() };
 
-    if (scalar(@coords) == 0)
+    if ( scalar(@coords) == 0 )
     {
-        return undef;
+        return;
     }
-    elsif ($coords[$#coords] > 0)
+    elsif ( $coords[$#coords] > 0 )
     {
         # Get the previous leaf
-	    my @previous_leaf =
-	        (
-                @coords[0 .. ($#coords - 1) ] ,
-                $coords[$#coords]-1
-            );
+        my @previous_leaf =
+            ( @coords[ 0 .. ( $#coords - 1 ) ], $coords[$#coords] - 1 );
+
         # Continue in this leaf to the end.
-        my $new_coords = $self->_get_most_advanced_leaf(\@previous_leaf);
+        my $new_coords = $self->_get_most_advanced_leaf( \@previous_leaf );
 
         return $new_coords;
     }
     else
     {
-        return [ @coords[0 .. ($#coords-1)] ];
+        return [ @coords[ 0 .. ( $#coords - 1 ) ] ];
     }
 }
 
@@ -545,15 +522,15 @@ sub _get_up_coords
 {
     my $self = shift;
 
-    my @coords = @{shift || $self->_get_current_coords};
+    my @coords = @{ shift || $self->_get_current_coords };
 
-    if (scalar(@coords) == 0)
+    if ( scalar(@coords) == 0 )
     {
-        return undef;
+        return;
     }
     else
     {
-        if ((@coords == 1) && ($coords[0] > 0))
+        if ( ( @coords == 1 ) && ( $coords[0] > 0 ) )
         {
             return [0];
         }
@@ -566,11 +543,11 @@ sub _get_top_coords
 {
     my $self = shift;
 
-    my @coords = @{shift || $self->_get_current_coords()};
+    my @coords = @{ shift || $self->_get_current_coords() };
 
-    if ((! @coords) || ((@coords == 1) && ($coords[0] == 0)))
+    if ( ( !@coords ) || ( ( @coords == 1 ) && ( $coords[0] == 0 ) ) )
     {
-        return undef;
+        return;
     }
     else
     {
@@ -580,7 +557,7 @@ sub _get_top_coords
 
 sub _is_skip
 {
-    my $self = shift;
+    my $self   = shift;
     my $coords = shift;
 
     my $iterator = $self->_get_nav_menu_traverser();
@@ -597,17 +574,17 @@ sub _get_coords_while_skipping_skips
     my $self = shift;
 
     my $callback = shift;
-    my $coords = shift(@_);
-    if (!$coords)
+    my $coords   = shift(@_);
+    if ( !$coords )
     {
         $coords = $self->_get_current_coords();
     }
 
     my $do_once = 1;
 
-    while ($do_once || $self->_is_skip($coords))
+    while ( $do_once || $self->_is_skip($coords) )
     {
-        $coords = $callback->($self, $coords);
+        $coords = $callback->( $self, $coords );
     }
     continue
     {
@@ -637,11 +614,13 @@ sub _get_most_advanced_leaf
     }
 
     # As long as there is something deeper
-    while (my $num_subs = $branch->_num_subs())
+    while ( my $num_subs = $branch->_num_subs() )
     {
-        my $index = $num_subs-1;
+        my $index = $num_subs - 1;
+
         # We are going to return it, so store it
         push @coords, $index;
+
         # Recurse into the sub-branch
         $branch = $branch->get_nth_sub($index);
     }
@@ -649,24 +628,6 @@ sub _get_most_advanced_leaf
     return \@coords;
 }
 
-=begin comment
-
-sub get_rel_url_from_coords
-{
-    my $self = shift;
-    my $coords = shift;
-
-    my ($ptr,$host);
-    my $iterator = $self->_get_nav_menu_traverser();
-    my $node_ret = $iterator->find_node_by_coords($coords);
-    my $item = $node_ret->{'item'};
-
-    return $self->_get_url_to_item($item);
-}
-
-=end comment
-
-=cut
 
 # The traversed_tree is the tree that is calculated from the tree given
 # by the user and some other parameters such as the host and path_info.
@@ -675,12 +636,12 @@ sub _get_traversed_tree
 {
     my $self = shift;
 
-    if (! $self->_traversed_tree())
+    if ( !$self->_traversed_tree() )
     {
         my $gen_retval = $self->_gen_traversed_tree();
-        $self->_traversed_tree($gen_retval->{'tree'});
-        $self->_current_coords($gen_retval->{'current_coords'});
-        $self->_leading_path_coords($gen_retval->{'leading_path_coords'});
+        $self->_traversed_tree( $gen_retval->{'tree'} );
+        $self->_current_coords( $gen_retval->{'current_coords'} );
+        $self->_leading_path_coords( $gen_retval->{'leading_path_coords'} );
     }
     return $self->_traversed_tree();
 }
@@ -689,17 +650,14 @@ sub _gen_traversed_tree
 {
     my $self = shift;
 
-    my $tree =
-        $self->_render_tree_contents(
-            $self->_tree_contents(),
-            );
+    my $tree = $self->_render_tree_contents( $self->_tree_contents(), );
 
     my $find_coords_iterator =
         HTML::Widgets::NavMenu::Iterator::GetCurrentlyActive->new(
-            {
-                'nav_menu' => $self,
-                'tree' => $tree,
-            }
+        {
+            'nav_menu' => $self,
+            'tree'     => $tree,
+        }
         );
 
     $find_coords_iterator->traverse();
@@ -715,60 +673,58 @@ sub _gen_traversed_tree
     #    expanded so it will expand.
     $tree->expand();
 
-    return
-        {
-            'tree' => $tree,
-            'current_coords' => $current_coords,
-            'leading_path_coords' => $leading_path_coords,
-        };
+    return {
+        'tree'                => $tree,
+        'current_coords'      => $current_coords,
+        'leading_path_coords' => $leading_path_coords,
+    };
 }
 
 sub _get_leading_path_of_coords
 {
-    my $self = shift;
+    my $self   = shift;
     my $coords = shift;
 
-    if (! @$coords )
+    if ( !@$coords )
     {
-        $coords = [ 0 ];
+        $coords = [0];
     }
 
     my @leading_path;
     my $iterator = $self->_get_nav_menu_traverser();
 
-    COORDS_LOOP:
+COORDS_LOOP:
     while (1)
     {
-        my $ret = $iterator->find_node_by_coords(
-            $coords
-        );
+        my $ret = $iterator->find_node_by_coords($coords);
 
         my $item = $ret->{item};
 
         my $node = $item->_node();
+
         # This is a workaround for the root link.
-        my $host_url = (defined($node->url()) ? ($node->url()) : "");
-        my $host = $item->_accum_state()->{'host'};
+        my $host_url = ( defined( $node->url() ) ? ( $node->url() ) : "" );
+        my $host     = $item->_accum_state()->{'host'};
 
-        my $url_type =
-            ($node->url_is_abs() ?
-                "full_abs" :
-                $item->get_url_type()
-            );
+        my $url_type = (
+            $node->url_is_abs()
+            ? "full_abs"
+            : $item->get_url_type()
+        );
 
         push @leading_path,
             HTML::Widgets::NavMenu::LeadingPath::Component->new(
-                {
-                    'host' => $host,
-                    'host_url' => $host_url,
-                    'title' => $node->title(),
-                    'label' => $node->text(),
-                    'direct_url' => $self->_get_url_to_item($item),
-                    'url_type' => $url_type,
-                }
+            {
+                'host'       => $host,
+                'host_url'   => $host_url,
+                'title'      => $node->title(),
+                'label'      => $node->text(),
+                'direct_url' => $self->_get_url_to_item($item),
+                'url_type'   => $url_type,
+            }
             );
 
-        if ((scalar(@$coords) == 1) && ($coords->[0] == 0))
+        if ( ( scalar(@$coords) == 1 ) && ( $coords->[0] == 0 ) )
         {
             last COORDS_LOOP;
         }
@@ -784,9 +740,7 @@ sub _get_leading_path_of_coords
 sub _get_leading_path
 {
     my $self = shift;
-    return $self->_get_leading_path_of_coords(
-        $self->_leading_path_coords()
-    );
+    return $self->_get_leading_path_of_coords( $self->_leading_path_coords() );
 }
 
 sub render
@@ -795,8 +749,7 @@ sub render
     my %args = (@_);
 
     return $self->_render_generic(
-        { %args , _iter_method => '_get_nav_menu_traverser',}
-    );
+        { %args, _iter_method => '_get_nav_menu_traverser', } );
 }
 
 sub _render_generic
@@ -813,55 +766,58 @@ sub _render_generic
     my %nav_links;
     my %nav_links_obj;
 
-    my %links_proto =
-        (
-            'prev' => $self->_get_coords_while_skipping_skips(
-                        \&_get_prev_coords),
-            'next' => $self->_get_coords_while_skipping_skips(
-                        \&_get_next_coords),
-            'up' => $self->_get_up_coords(),
-            'top' => $self->_get_top_coords(),
-        );
+    my %links_proto = (
+        'prev' => scalar(
+            $self->_get_coords_while_skipping_skips( \&_get_prev_coords )
+        ),
+        'next' => scalar(
+            $self->_get_coords_while_skipping_skips( \&_get_next_coords )
+        ),
+        'up'  => scalar( $self->_get_up_coords() ),
+        'top' => scalar( $self->_get_top_coords() ),
+    );
 
-    while (my ($link_rel, $coords) = each(%links_proto))
+    while ( my ( $link_rel, $coords ) = each(%links_proto) )
     {
         # This is so we would avoid coordinates that point to the
         # root ($coords == []).
-        if (defined($coords) && @$coords == 0)
+        if ( defined($coords) && @$coords == 0 )
         {
             undef($coords);
         }
-        if (defined($coords))
+        if ( defined($coords) )
         {
-            my $obj =
-                $self->_get_leading_path_of_coords(
-                    $coords
-                )->[-1];
+            my $obj = $self->_get_leading_path_of_coords($coords)->[-1];
 
             $nav_links_obj{$link_rel} = $obj;
-            $nav_links{$link_rel} = $obj->direct_url();
+            $nav_links{$link_rel}     = $obj->direct_url();
         }
     }
 
     my $js_code = "";
 
-    return
-        {
-            'html' => $html,
-            'leading_path' => $self->_get_leading_path(),
-            'nav_links' => \%nav_links,
-            'nav_links_obj' => \%nav_links_obj,
-        };
+    return {
+        'html'          => $html,
+        'leading_path'  => $self->_get_leading_path(),
+        'nav_links'     => \%nav_links,
+        'nav_links_obj' => \%nav_links_obj,
+    };
 }
 
 1;
 
 __END__
 
+=pod
+
 =head1 NAME
 
 HTML::Widgets::NavMenu - A Perl Module for Generating HTML Navigation Menus
 
+=head1 VERSION
+
+version 1.0704
+
 =head1 SYNOPSIS
 
     use HTML::Widgets::NavMenu;
@@ -913,6 +869,27 @@ in the version control repositories at
 L<https://bitbucket.org/shlomif/shlomi-fish-homepage>
 and L<https://bitbucket.org/shlomif/perl-begin/>.
 
+=begin comment
+
+sub get_rel_url_from_coords
+{
+    my $self = shift;
+    my $coords = shift;
+
+    my ($ptr,$host);
+    my $iterator = $self->_get_nav_menu_traverser();
+    my $node_ret = $iterator->find_node_by_coords($coords);
+    my $item = $node_ret->{'item'};
+
+    return $self->_get_url_to_item($item);
+}
+
+=end comment
+
+=head1 VERSION
+
+version 1.0704
+
 =head1 USAGE
 
 =head2 my $nav_menu = HTML::Widgets::NavMenu->new(@args)
@@ -1046,7 +1023,6 @@ and its values are Node Description objects. (see "The Node Description
 Class" below). Here's a sample code that renders the links as
 C<E<lt>link rel=...E<gt>> into the page header:
 
-
     my $nav_links = $results->{'nav_links_obj'};
     # Sort the keys so their order will be preserved
     my @keys = (sort { $a cmp $b } keys(%$nav_links));
@@ -1446,15 +1422,143 @@ Shlomi Fish, E<lt>shlomif@cpan.orgE<gt>, L<http://www.shlomifish.org/> .
 
 =head1 THANKS
 
-Thanks to Yosef Meller (L<http://search.cpan.org/~yosefm/>) for writing
-the module HTML::Widget::SideBar on which initial versions of this modules
-were based. (albeit his code is no longer used here).
+Thanks to Yosef Meller (L<https://metacpan.org/author/YOSEFM>) for writing
+the module HTML::Widget::SideBar on which initial versions of these modules
+were based. (Albeit his code is no longer used here.)
 
 =head1 COPYRIGHT AND LICENSE
 
 Copyright 2004, Shlomi Fish. All rights reserved.
 
-You can use, modify and distribute this module under the terms of the MIT X11
+You can use, modify and distribute this module under the terms of the MIT Expat
 license. ( L<http://www.opensource.org/licenses/mit-license.php> ).
 
+=head1 AUTHOR
+
+Shlomi Fish <shlomif@cpan.org>
+
+=head1 COPYRIGHT AND LICENSE
+
+This software is Copyright (c) 2014 by Shlomi Fish.
+
+This is free software, licensed under:
+
+  The MIT (X11) License
+
+=head1 BUGS
+
+Please report any bugs or feature requests on the bugtracker website
+L<https://github.com/shlomif/perl-HTML-Widgets-NavMenu/issues>
+
+When submitting a bug or request, please include a test-file or a
+patch to an existing test-file that illustrates the bug or desired
+feature.
+
+=for :stopwords cpan testmatrix url annocpan anno bugtracker rt cpants kwalitee diff irc mailto metadata placeholders metacpan
+
+=head1 SUPPORT
+
+=head2 Perldoc
+
+You can find documentation for this module with the perldoc command.
+
+  perldoc HTML::Widgets::NavMenu
+
+=head2 Websites
+
+The following websites have more information about this module, and may be of help to you. As always,
+in addition to those websites please use your favorite search engine to discover more resources.
+
+=over 4
+
+=item *
+
+MetaCPAN
+
+A modern, open-source CPAN search engine, useful to view POD in HTML format.
+
+L<https://metacpan.org/release/HTML-Widgets-NavMenu>
+
+=item *
+
+Search CPAN
+
+The default CPAN search engine, useful to view POD in HTML format.
+
+L<http://search.cpan.org/dist/HTML-Widgets-NavMenu>
+
+=item *
+
+RT: CPAN's Bug Tracker
+
+The RT ( Request Tracker ) website is the default bug/issue tracking system for CPAN.
+
+L<https://rt.cpan.org/Public/Dist/Display.html?Name=HTML-Widgets-NavMenu>
+
+=item *
+
+AnnoCPAN
+
+The AnnoCPAN is a website that allows community annotations of Perl module documentation.
+
+L<http://annocpan.org/dist/HTML-Widgets-NavMenu>
+
+=item *
+
+CPAN Ratings
+
+The CPAN Ratings is a website that allows community ratings and reviews of Perl modules.
+
+L<http://cpanratings.perl.org/d/HTML-Widgets-NavMenu>
+
+=item *
+
+CPANTS
+
+The CPANTS is a website that analyzes the Kwalitee ( code metrics ) of a distribution.
+
+L<http://cpants.cpanauthors.org/dist/HTML-Widgets-NavMenu>
+
+=item *
+
+CPAN Testers
+
+The CPAN Testers is a network of smoke testers who run automated tests on uploaded CPAN distributions.
+
+L<http://www.cpantesters.org/distro/H/HTML-Widgets-NavMenu>
+
+=item *
+
+CPAN Testers Matrix
+
+The CPAN Testers Matrix is a website that provides a visual overview of the test results for a distribution on various Perls/platforms.
+
+L<http://matrix.cpantesters.org/?dist=HTML-Widgets-NavMenu>
+
+=item *
+
+CPAN Testers Dependencies
+
+The CPAN Testers Dependencies is a website that shows a chart of the test results of all dependencies for a distribution.
+
+L<http://deps.cpantesters.org/?module=HTML::Widgets::NavMenu>
+
+=back
+
+=head2 Bugs / Feature Requests
+
+Please report any bugs or feature requests by email to C<bug-html-widgets-navmenu at rt.cpan.org>, or through
+the web interface at L<https://rt.cpan.org/Public/Bug/Report.html?Queue=HTML-Widgets-NavMenu>. You will be automatically notified of any
+progress on the request by the system.
+
+=head2 Source Code
+
+The code is open to the world, and available for you to hack on. Please feel free to browse it and play
+with it, or whatever. If you want to contribute patches, please send me a diff or prod me to pull
+from your repository :)
+
+L<https://github.com/shlomif/perl-HTML-Widgets-NavMenu>
+
+  git clone git://github.com/shlomif/perl-HTML-Widgets-NavMenu.git
+
 =cut
diff --git a/lib/HTML/Widgets/NavMenu/EscapeHtml.pm b/lib/HTML/Widgets/NavMenu/EscapeHtml.pm
index 239ccaf..0ffca58 100644
--- a/lib/HTML/Widgets/NavMenu/EscapeHtml.pm
+++ b/lib/HTML/Widgets/NavMenu/EscapeHtml.pm
@@ -1,5 +1,5 @@
 package HTML::Widgets::NavMenu::EscapeHtml;
-
+$HTML::Widgets::NavMenu::EscapeHtml::VERSION = '1.0704';
 use strict;
 use warnings;
 
@@ -7,10 +7,34 @@ use base qw(Exporter);
 
 use vars qw(@EXPORT);
 
+
+@EXPORT = (qw(escape_html));
+
+sub escape_html
+{
+    my $string = shift;
+    $string =~ s{&}{&amp;}gso;
+    $string =~ s{<}{&lt;}gso;
+    $string =~ s{>}{&gt;}gso;
+    $string =~ s{"}{&quot;}gso;
+    return $string;
+}
+
+
+1;
+
+__END__
+
+=pod
+
 =head1 NAME
 
 HTML::Widgets::NavMenu::EscapeHtml - provides a function to escape HTML.
 
+=head1 VERSION
+
+version 1.0704
+
 =head1 SYNOPSIS
 
     use HTML::Widgets::NavMenu::EscapeHtml;
@@ -21,19 +45,9 @@ HTML::Widgets::NavMenu::EscapeHtml - provides a function to escape HTML.
 
 Escapes the HTML.
 
-=cut
+=head1 VERSION
 
-@EXPORT=(qw(escape_html));
-
-sub escape_html
-{
-    my $string = shift;
-    $string =~ s{&}{&amp;}gso;
-    $string =~ s{<}{&lt;}gso;
-    $string =~ s{>}{&gt;}gso;
-    $string =~ s{"}{&quot;}gso;
-    return $string;
-}
+version 1.0704
 
 =head1 COPYRIGHT & LICENSE
 
@@ -41,7 +55,132 @@ Copyright 2006 Shlomi Fish, all rights reserved.
 
 This program is released under the following license: MIT X11.
 
-=cut
+=head1 AUTHOR
 
-1;
+Shlomi Fish <shlomif@cpan.org>
+
+=head1 COPYRIGHT AND LICENSE
+
+This software is Copyright (c) 2014 by Shlomi Fish.
+
+This is free software, licensed under:
+
+  The MIT (X11) License
+
+=head1 BUGS
+
+Please report any bugs or feature requests on the bugtracker website
+L<https://github.com/shlomif/perl-HTML-Widgets-NavMenu/issues>
+
+When submitting a bug or request, please include a test-file or a
+patch to an existing test-file that illustrates the bug or desired
+feature.
+
+=for :stopwords cpan testmatrix url annocpan anno bugtracker rt cpants kwalitee diff irc mailto metadata placeholders metacpan
+
+=head1 SUPPORT
+
+=head2 Perldoc
+
+You can find documentation for this module with the perldoc command.
+
+  perldoc HTML::Widgets::NavMenu::EscapeHtml
+
+=head2 Websites
 
+The following websites have more information about this module, and may be of help to you. As always,
+in addition to those websites please use your favorite search engine to discover more resources.
+
+=over 4
+
+=item *
+
+MetaCPAN
+
+A modern, open-source CPAN search engine, useful to view POD in HTML format.
+
+L<https://metacpan.org/release/HTML-Widgets-NavMenu>
+
+=item *
+
+Search CPAN
+
+The default CPAN search engine, useful to view POD in HTML format.
+
+L<http://search.cpan.org/dist/HTML-Widgets-NavMenu>
+
+=item *
+
+RT: CPAN's Bug Tracker
+
+The RT ( Request Tracker ) website is the default bug/issue tracking system for CPAN.
+
+L<https://rt.cpan.org/Public/Dist/Display.html?Name=HTML-Widgets-NavMenu>
+
+=item *
+
+AnnoCPAN
+
+The AnnoCPAN is a website that allows community annotations of Perl module documentation.
+
+L<http://annocpan.org/dist/HTML-Widgets-NavMenu>
+
+=item *
+
+CPAN Ratings
+
+The CPAN Ratings is a website that allows community ratings and reviews of Perl modules.
+
+L<http://cpanratings.perl.org/d/HTML-Widgets-NavMenu>
+
+=item *
+
+CPANTS
+
+The CPANTS is a website that analyzes the Kwalitee ( code metrics ) of a distribution.
+
+L<http://cpants.cpanauthors.org/dist/HTML-Widgets-NavMenu>
+
+=item *
+
+CPAN Testers
+
+The CPAN Testers is a network of smoke testers who run automated tests on uploaded CPAN distributions.
+
+L<http://www.cpantesters.org/distro/H/HTML-Widgets-NavMenu>
+
+=item *
+
+CPAN Testers Matrix
+
+The CPAN Testers Matrix is a website that provides a visual overview of the test results for a distribution on various Perls/platforms.
+
+L<http://matrix.cpantesters.org/?dist=HTML-Widgets-NavMenu>
+
+=item *
+
+CPAN Testers Dependencies
+
+The CPAN Testers Dependencies is a website that shows a chart of the test results of all dependencies for a distribution.
+
+L<http://deps.cpantesters.org/?module=HTML::Widgets::NavMenu>
+
+=back
+
+=head2 Bugs / Feature Requests
+
+Please report any bugs or feature requests by email to C<bug-html-widgets-navmenu at rt.cpan.org>, or through
+the web interface at L<https://rt.cpan.org/Public/Bug/Report.html?Queue=HTML-Widgets-NavMenu>. You will be automatically notified of any
+progress on the request by the system.
+
+=head2 Source Code
+
+The code is open to the world, and available for you to hack on. Please feel free to browse it and play
+with it, or whatever. If you want to contribute patches, please send me a diff or prod me to pull
+from your repository :)
+
+L<https://github.com/shlomif/perl-HTML-Widgets-NavMenu>
+
+  git clone git://github.com/shlomif/perl-HTML-Widgets-NavMenu.git
+
+=cut
diff --git a/lib/HTML/Widgets/NavMenu/ExpandVal.pm b/lib/HTML/Widgets/NavMenu/ExpandVal.pm
index eb76a24..43b0f49 100644
--- a/lib/HTML/Widgets/NavMenu/ExpandVal.pm
+++ b/lib/HTML/Widgets/NavMenu/ExpandVal.pm
@@ -1,19 +1,17 @@
 package HTML::Widgets::NavMenu::ExpandVal;
-
+$HTML::Widgets::NavMenu::ExpandVal::VERSION = '1.0704';
 use strict;
 use warnings;
 
 use base 'HTML::Widgets::NavMenu::Object';
 
-__PACKAGE__->mk_acc_ref([
-    qw(_capture)],
-    );
+__PACKAGE__->mk_acc_ref( [qw(_capture)], );
 
 sub _init
 {
-    my ($self, $args) = @_;
+    my ( $self, $args ) = @_;
 
-    $self->_capture($args->{'capture'});
+    $self->_capture( $args->{'capture'} );
 
     return 0;
 }
@@ -25,17 +23,32 @@ sub is_capturing
     return $self->_capture();
 }
 
+
+1;
+
+__END__
+
+=pod
+
 =head1 NAME
 
 HTML::Widgets::NavMenu::ExpandVal - an expand value that differentiates among
 different expands
 
-For internal use only.
+=head1 VERSION
+
+version 1.0704
 
 =head1 SYNOPSIS
 
     my $expand_val = HTML::Widgets::NavMenu::ExpandVal->new('capture' => $bool);
 
+=head1 VERSION
+
+version 1.0704
+
+For internal use only.
+
 =head1 FUNCTIONS
 
 =head2 my $expand_val = HTML::Widgets::NavMenu::ExpandVal->new('capture' => $bool);
@@ -52,7 +65,132 @@ Copyright 2006 Shlomi Fish, all rights reserved.
 
 This program is released under the following license: MIT X11.
 
-=cut
+=head1 AUTHOR
 
-1;
+Shlomi Fish <shlomif@cpan.org>
+
+=head1 COPYRIGHT AND LICENSE
+
+This software is Copyright (c) 2014 by Shlomi Fish.
+
+This is free software, licensed under:
+
+  The MIT (X11) License
+
+=head1 BUGS
+
+Please report any bugs or feature requests on the bugtracker website
+L<https://github.com/shlomif/perl-HTML-Widgets-NavMenu/issues>
+
+When submitting a bug or request, please include a test-file or a
+patch to an existing test-file that illustrates the bug or desired
+feature.
+
+=for :stopwords cpan testmatrix url annocpan anno bugtracker rt cpants kwalitee diff irc mailto metadata placeholders metacpan
+
+=head1 SUPPORT
+
+=head2 Perldoc
+
+You can find documentation for this module with the perldoc command.
+
+  perldoc HTML::Widgets::NavMenu::ExpandVal
+
+=head2 Websites
+
+The following websites have more information about this module, and may be of help to you. As always,
+in addition to those websites please use your favorite search engine to discover more resources.
+
+=over 4
+
+=item *
+
+MetaCPAN
+
+A modern, open-source CPAN search engine, useful to view POD in HTML format.
+
+L<https://metacpan.org/release/HTML-Widgets-NavMenu>
+
+=item *
+
+Search CPAN
+
+The default CPAN search engine, useful to view POD in HTML format.
+
+L<http://search.cpan.org/dist/HTML-Widgets-NavMenu>
 
+=item *
+
+RT: CPAN's Bug Tracker
+
+The RT ( Request Tracker ) website is the default bug/issue tracking system for CPAN.
+
+L<https://rt.cpan.org/Public/Dist/Display.html?Name=HTML-Widgets-NavMenu>
+
+=item *
+
+AnnoCPAN
+
+The AnnoCPAN is a website that allows community annotations of Perl module documentation.
+
+L<http://annocpan.org/dist/HTML-Widgets-NavMenu>
+
+=item *
+
+CPAN Ratings
+
+The CPAN Ratings is a website that allows community ratings and reviews of Perl modules.
+
+L<http://cpanratings.perl.org/d/HTML-Widgets-NavMenu>
+
+=item *
+
+CPANTS
+
+The CPANTS is a website that analyzes the Kwalitee ( code metrics ) of a distribution.
+
+L<http://cpants.cpanauthors.org/dist/HTML-Widgets-NavMenu>
+
+=item *
+
+CPAN Testers
+
+The CPAN Testers is a network of smoke testers who run automated tests on uploaded CPAN distributions.
+
+L<http://www.cpantesters.org/distro/H/HTML-Widgets-NavMenu>
+
+=item *
+
+CPAN Testers Matrix
+
+The CPAN Testers Matrix is a website that provides a visual overview of the test results for a distribution on various Perls/platforms.
+
+L<http://matrix.cpantesters.org/?dist=HTML-Widgets-NavMenu>
+
+=item *
+
+CPAN Testers Dependencies
+
+The CPAN Testers Dependencies is a website that shows a chart of the test results of all dependencies for a distribution.
+
+L<http://deps.cpantesters.org/?module=HTML::Widgets::NavMenu>
+
+=back
+
+=head2 Bugs / Feature Requests
+
+Please report any bugs or feature requests by email to C<bug-html-widgets-navmenu at rt.cpan.org>, or through
+the web interface at L<https://rt.cpan.org/Public/Bug/Report.html?Queue=HTML-Widgets-NavMenu>. You will be automatically notified of any
+progress on the request by the system.
+
+=head2 Source Code
+
+The code is open to the world, and available for you to hack on. Please feel free to browse it and play
+with it, or whatever. If you want to contribute patches, please send me a diff or prod me to pull
+from your repository :)
+
+L<https://github.com/shlomif/perl-HTML-Widgets-NavMenu>
+
+  git clone git://github.com/shlomif/perl-HTML-Widgets-NavMenu.git
+
+=cut
diff --git a/lib/HTML/Widgets/NavMenu/HeaderRole.pm b/lib/HTML/Widgets/NavMenu/HeaderRole.pm
index 4268fe7..9d6b9f2 100644
--- a/lib/HTML/Widgets/NavMenu/HeaderRole.pm
+++ b/lib/HTML/Widgets/NavMenu/HeaderRole.pm
@@ -1,5 +1,5 @@
 package HTML::Widgets::NavMenu::HeaderRole;
-
+$HTML::Widgets::NavMenu::HeaderRole::VERSION = '1.0704';
 use strict;
 use warnings;
 
@@ -11,25 +11,24 @@ sub _get_nav_menu_traverser
 {
     my $self = shift;
 
-    return
-        HTML::Widgets::NavMenu::Iterator::NavMenu::HeaderRole->new(
-            $self->_get_nav_menu_traverser_args()
-        );
+    return HTML::Widgets::NavMenu::Iterator::NavMenu::HeaderRole->new(
+        $self->_get_nav_menu_traverser_args() );
 }
 
 1;
 
 __END__
 
+=pod
+
 =head1 NAME
 
 HTML::Widgets::NavMenu::HeaderRole - A Specialized HTML::Widgets::NavMenu
 sub-class
 
-=head1 SYNOPOSIS
+=head1 VERSION
 
-Mostly the same as L<HTML::Widgets::NavMenu> except for the ability to
-specify C<'role' =E<gt> "header"> as one of the node attributes.
+version 1.0704
 
 =head1 DESCRIPTION
 
@@ -49,6 +48,15 @@ C<E<lt>h2E<gt>> header. The HTML will look something like this:
 An example of this use can be found on the Perl Beginners Site
 ( L<http://perl-begin.org/> ).
 
+=head1 VERSION
+
+version 1.0704
+
+=head1 SYNOPOSIS
+
+Mostly the same as L<HTML::Widgets::NavMenu> except for the ability to
+specify C<'role' =E<gt> "header"> as one of the node attributes.
+
 =head1 SEE ALSO
 
 L<HTML::Widgets::NavMenu> for the complete documentation of the super-class.
@@ -57,5 +65,132 @@ L<HTML::Widgets::NavMenu> for the complete documentation of the super-class.
 
 Shlomi Fish, L<http://www.shlomifish.org> .
 
-=cut
+=head1 AUTHOR
+
+Shlomi Fish <shlomif@cpan.org>
+
+=head1 COPYRIGHT AND LICENSE
+
+This software is Copyright (c) 2014 by Shlomi Fish.
+
+This is free software, licensed under:
+
+  The MIT (X11) License
+
+=head1 BUGS
+
+Please report any bugs or feature requests on the bugtracker website
+L<https://github.com/shlomif/perl-HTML-Widgets-NavMenu/issues>
+
+When submitting a bug or request, please include a test-file or a
+patch to an existing test-file that illustrates the bug or desired
+feature.
+
+=for :stopwords cpan testmatrix url annocpan anno bugtracker rt cpants kwalitee diff irc mailto metadata placeholders metacpan
+
+=head1 SUPPORT
+
+=head2 Perldoc
+
+You can find documentation for this module with the perldoc command.
+
+  perldoc HTML::Widgets::NavMenu::HeaderRole
+
+=head2 Websites
+
+The following websites have more information about this module, and may be of help to you. As always,
+in addition to those websites please use your favorite search engine to discover more resources.
+
+=over 4
+
+=item *
+
+MetaCPAN
+
+A modern, open-source CPAN search engine, useful to view POD in HTML format.
+
+L<https://metacpan.org/release/HTML-Widgets-NavMenu>
+
+=item *
+
+Search CPAN
+
+The default CPAN search engine, useful to view POD in HTML format.
+
+L<http://search.cpan.org/dist/HTML-Widgets-NavMenu>
 
+=item *
+
+RT: CPAN's Bug Tracker
+
+The RT ( Request Tracker ) website is the default bug/issue tracking system for CPAN.
+
+L<https://rt.cpan.org/Public/Dist/Display.html?Name=HTML-Widgets-NavMenu>
+
+=item *
+
+AnnoCPAN
+
+The AnnoCPAN is a website that allows community annotations of Perl module documentation.
+
+L<http://annocpan.org/dist/HTML-Widgets-NavMenu>
+
+=item *
+
+CPAN Ratings
+
+The CPAN Ratings is a website that allows community ratings and reviews of Perl modules.
+
+L<http://cpanratings.perl.org/d/HTML-Widgets-NavMenu>
+
+=item *
+
+CPANTS
+
+The CPANTS is a website that analyzes the Kwalitee ( code metrics ) of a distribution.
+
+L<http://cpants.cpanauthors.org/dist/HTML-Widgets-NavMenu>
+
+=item *
+
+CPAN Testers
+
+The CPAN Testers is a network of smoke testers who run automated tests on uploaded CPAN distributions.
+
+L<http://www.cpantesters.org/distro/H/HTML-Widgets-NavMenu>
+
+=item *
+
+CPAN Testers Matrix
+
+The CPAN Testers Matrix is a website that provides a visual overview of the test results for a distribution on various Perls/platforms.
+
+L<http://matrix.cpantesters.org/?dist=HTML-Widgets-NavMenu>
+
+=item *
+
+CPAN Testers Dependencies
+
+The CPAN Testers Dependencies is a website that shows a chart of the test results of all dependencies for a distribution.
+
+L<http://deps.cpantesters.org/?module=HTML::Widgets::NavMenu>
+
+=back
+
+=head2 Bugs / Feature Requests
+
+Please report any bugs or feature requests by email to C<bug-html-widgets-navmenu at rt.cpan.org>, or through
+the web interface at L<https://rt.cpan.org/Public/Bug/Report.html?Queue=HTML-Widgets-NavMenu>. You will be automatically notified of any
+progress on the request by the system.
+
+=head2 Source Code
+
+The code is open to the world, and available for you to hack on. Please feel free to browse it and play
+with it, or whatever. If you want to contribute patches, please send me a diff or prod me to pull
+from your repository :)
+
+L<https://github.com/shlomif/perl-HTML-Widgets-NavMenu>
+
+  git clone git://github.com/shlomif/perl-HTML-Widgets-NavMenu.git
+
+=cut
diff --git a/lib/HTML/Widgets/NavMenu/Iterator/Base.pm b/lib/HTML/Widgets/NavMenu/Iterator/Base.pm
index df2b89d..2e37b6a 100644
--- a/lib/HTML/Widgets/NavMenu/Iterator/Base.pm
+++ b/lib/HTML/Widgets/NavMenu/Iterator/Base.pm
@@ -1,30 +1,19 @@
 package HTML::Widgets::NavMenu::Iterator::Base;
-
+$HTML::Widgets::NavMenu::Iterator::Base::VERSION = '1.0704';
 use strict;
 use warnings;
 
 use base qw(HTML::Widgets::NavMenu::Tree::Iterator);
 
-__PACKAGE__->mk_acc_ref([qw(
-    _html
-    nav_menu
-    )]);
-
-=head1 NAME
-
-HTML::Widgets::NavMenu::Iterator::Base - base class for the iterator.
-
-=head1 SYNOPSIS
-
-For internal use only.
-
-=head1 METHODS
+__PACKAGE__->mk_acc_ref(
+    [
+        qw(
+            _html
+            nav_menu
+            )
+    ]
+);
 
-=head2 nav_menu
-
-Internal use.
-
-=cut
 
 sub _init
 {
@@ -33,10 +22,10 @@ sub _init
 
     $self->SUPER::_init($args);
 
-    $self->nav_menu($args->{'nav_menu'}) or
-        die "nav_menu not specified!";
+    $self->nav_menu( $args->{'nav_menu'} )
+        or die "nav_menu not specified!";
 
-    $self->_html([]);
+    $self->_html( [] );
 
     return 0;
 }
@@ -44,14 +33,14 @@ sub _init
 sub _add_tags
 {
     my $self = shift;
-    push (@{$self->_html()}, @_);
+    push( @{ $self->_html() }, @_ );
 }
 
 sub _is_root
 {
     my $self = shift;
 
-    return ($self->stack->len() == 1);
+    return ( $self->stack->len() == 1 );
 }
 
 sub _is_top_separator
@@ -61,11 +50,6 @@ sub _is_top_separator
     return $self->top->_node->separator;
 }
 
-=head2 $self->get_initial_node()
-
-Gets the initial node.
-
-=cut
 
 sub get_initial_node
 {
@@ -73,38 +57,27 @@ sub get_initial_node
     return $self->nav_menu->_get_traversed_tree();
 }
 
-=head2 $self->get_node_subs({ node => $node})
-
-Gets the subs of the node.
-
-=cut
-
 
 sub get_node_subs
 {
-    my ($self, $args) = @_;
+    my ( $self, $args ) = @_;
 
     my $node = $args->{'node'};
 
-    return [ @{$node->subs()} ];
+    return [ @{ $node->subs() } ];
 }
 
-=head2 $self->get_new_accum_state( { item => $item, node => $node } )
-
-Gets the new accumulated state.
-
-=cut
 
 # TODO : This method is too long - refactor.
 sub get_new_accum_state
 {
-    my ($self, $args) = @_;
+    my ( $self, $args ) = @_;
 
     my $parent_item = $args->{'item'};
-    my $node = $args->{'node'};
+    my $node        = $args->{'node'};
 
     my $prev_state;
-    if (defined($parent_item))
+    if ( defined($parent_item) )
     {
         $prev_state = $parent_item->_accum_state();
     }
@@ -114,52 +87,216 @@ sub get_new_accum_state
     }
 
     my $show_always = 0;
-    if (exists($prev_state->{'show_always'}))
+    if ( exists( $prev_state->{'show_always'} ) )
     {
         $show_always = $prev_state->{'show_always'};
     }
-    if (defined($node->show_always()))
+    if ( defined( $node->show_always() ) )
     {
         $show_always = $node->show_always();
     }
 
     my $rec_url_type;
-    if (exists($prev_state->{'rec_url_type'}))
+    if ( exists( $prev_state->{'rec_url_type'} ) )
     {
         $rec_url_type = $prev_state->{'rec_url_type'};
     }
-    if (defined($node->rec_url_type()))
+    if ( defined( $node->rec_url_type() ) )
     {
         $rec_url_type = $node->rec_url_type();
     }
-    return
-        {
-            'host' => ($node->host() ? $node->host() : $prev_state->{'host'}),
-            'show_always' => $show_always,
-            'rec_url_type' => $rec_url_type,
-        };
+    return {
+        'host' => ( $node->host() ? $node->host() : $prev_state->{'host'} ),
+        'show_always'  => $show_always,
+        'rec_url_type' => $rec_url_type,
+    };
 }
 
-=head2 my $array_ref = $self->get_results()
-
-Returns an array reference with the resultant HTML.
-
-=cut
 
 sub get_results
 {
     my $self = shift;
 
-    return [ @{$self->_html()} ];
+    return [ @{ $self->_html() } ];
 }
 
+
+1;
+
+__END__
+
+=pod
+
+=head1 NAME
+
+HTML::Widgets::NavMenu::Iterator::Base - base class for the iterator.
+
+=head1 VERSION
+
+version 1.0704
+
+=head1 SYNOPSIS
+
+For internal use only.
+
+=head1 VERSION
+
+version 1.0704
+
+=head1 METHODS
+
+=head2 nav_menu
+
+Internal use.
+
+=head2 $self->get_initial_node()
+
+Gets the initial node.
+
+=head2 $self->get_node_subs({ node => $node})
+
+Gets the subs of the node.
+
+=head2 $self->get_new_accum_state( { item => $item, node => $node } )
+
+Gets the new accumulated state.
+
+=head2 my $array_ref = $self->get_results()
+
+Returns an array reference with the resultant HTML.
+
 =head1 COPYRIGHT & LICENSE
 
 Copyright 2006 Shlomi Fish, all rights reserved.
 
 This program is released under the following license: MIT X11.
 
-=cut
+=head1 AUTHOR
 
-1;
+Shlomi Fish <shlomif@cpan.org>
+
+=head1 COPYRIGHT AND LICENSE
+
+This software is Copyright (c) 2014 by Shlomi Fish.
+
+This is free software, licensed under:
+
+  The MIT (X11) License
+
+=head1 BUGS
+
+Please report any bugs or feature requests on the bugtracker website
+L<https://github.com/shlomif/perl-HTML-Widgets-NavMenu/issues>
+
+When submitting a bug or request, please include a test-file or a
+patch to an existing test-file that illustrates the bug or desired
+feature.
+
+=for :stopwords cpan testmatrix url annocpan anno bugtracker rt cpants kwalitee diff irc mailto metadata placeholders metacpan
+
+=head1 SUPPORT
+
+=head2 Perldoc
+
+You can find documentation for this module with the perldoc command.
+
+  perldoc HTML::Widgets::NavMenu::Iterator::Base
+
+=head2 Websites
+
+The following websites have more information about this module, and may be of help to you. As always,
+in addition to those websites please use your favorite search engine to discover more resources.
+
+=over 4
+
+=item *
+
+MetaCPAN
+
+A modern, open-source CPAN search engine, useful to view POD in HTML format.
+
+L<https://metacpan.org/release/HTML-Widgets-NavMenu>
+
+=item *
+
+Search CPAN
+
+The default CPAN search engine, useful to view POD in HTML format.
+
+L<http://search.cpan.org/dist/HTML-Widgets-NavMenu>
+
+=item *
+
+RT: CPAN's Bug Tracker
 
+The RT ( Request Tracker ) website is the default bug/issue tracking system for CPAN.
+
+L<https://rt.cpan.org/Public/Dist/Display.html?Name=HTML-Widgets-NavMenu>
+
+=item *
+
+AnnoCPAN
+
+The AnnoCPAN is a website that allows community annotations of Perl module documentation.
+
+L<http://annocpan.org/dist/HTML-Widgets-NavMenu>
+
+=item *
+
+CPAN Ratings
+
+The CPAN Ratings is a website that allows community ratings and reviews of Perl modules.
+
+L<http://cpanratings.perl.org/d/HTML-Widgets-NavMenu>
+
+=item *
+
+CPANTS
+
+The CPANTS is a website that analyzes the Kwalitee ( code metrics ) of a distribution.
+
+L<http://cpants.cpanauthors.org/dist/HTML-Widgets-NavMenu>
+
+=item *
+
+CPAN Testers
+
+The CPAN Testers is a network of smoke testers who run automated tests on uploaded CPAN distributions.
+
+L<http://www.cpantesters.org/distro/H/HTML-Widgets-NavMenu>
+
+=item *
+
+CPAN Testers Matrix
+
+The CPAN Testers Matrix is a website that provides a visual overview of the test results for a distribution on various Perls/platforms.
+
+L<http://matrix.cpantesters.org/?dist=HTML-Widgets-NavMenu>
+
+=item *
+
+CPAN Testers Dependencies
+
+The CPAN Testers Dependencies is a website that shows a chart of the test results of all dependencies for a distribution.
+
+L<http://deps.cpantesters.org/?module=HTML::Widgets::NavMenu>
+
+=back
+
+=head2 Bugs / Feature Requests
+
+Please report any bugs or feature requests by email to C<bug-html-widgets-navmenu at rt.cpan.org>, or through
+the web interface at L<https://rt.cpan.org/Public/Bug/Report.html?Queue=HTML-Widgets-NavMenu>. You will be automatically notified of any
+progress on the request by the system.
+
+=head2 Source Code
+
+The code is open to the world, and available for you to hack on. Please feel free to browse it and play
+with it, or whatever. If you want to contribute patches, please send me a diff or prod me to pull
+from your repository :)
+
+L<https://github.com/shlomif/perl-HTML-Widgets-NavMenu>
+
+  git clone git://github.com/shlomif/perl-HTML-Widgets-NavMenu.git
+
+=cut
diff --git a/lib/HTML/Widgets/NavMenu/Iterator/Html.pm b/lib/HTML/Widgets/NavMenu/Iterator/Html.pm
index 03e2bee..8e00a63 100644
--- a/lib/HTML/Widgets/NavMenu/Iterator/Html.pm
+++ b/lib/HTML/Widgets/NavMenu/Iterator/Html.pm
@@ -1,5 +1,5 @@
 package HTML::Widgets::NavMenu::Iterator::Html::Item;
-
+$HTML::Widgets::NavMenu::Iterator::Html::Item::VERSION = '1.0704';
 use strict;
 use warnings;
 
@@ -8,24 +8,13 @@ use base qw(HTML::Widgets::NavMenu::Tree::Iterator::Item);
 sub get_url_type
 {
     my $item = shift;
-    return
-        ($item->_node()->url_type() ||
-            $item->_accum_state()->{'rec_url_type'} ||
-            "rel");
+    return (   $item->_node()->url_type()
+            || $item->_accum_state()->{'rec_url_type'}
+            || "rel" );
 }
 
 package HTML::Widgets::NavMenu::Iterator::Html;
-
-=head1 NAME
-
-HTML::Widgets::NavMenu::Iterator::Html - an iterator for HTML.
-
-=head1 SYNOPSIS
-
-For internal use only.
-
-=head1 METHODS
-=cut
+$HTML::Widgets::NavMenu::Iterator::Html::VERSION = '1.0704';
 
 use base qw(HTML::Widgets::NavMenu::Iterator::Base);
 
@@ -36,26 +25,19 @@ sub _construct_new_item
     my $self = shift;
     my $args = shift;
 
-    return HTML::Widgets::NavMenu::Iterator::Html::Item->new(
-        $args,
-    );
+    return HTML::Widgets::NavMenu::Iterator::Html::Item->new( $args, );
 }
 
-=head2 $self->node_start()
-
-Gets called upon node start.
-
-=cut
 
 sub node_start
 {
     my $self = shift;
 
-    if ($self->_is_root())
+    if ( $self->_is_root() )
     {
         return $self->_start_root();
     }
-    elsif ($self->_is_top_separator())
+    elsif ( $self->_is_top_separator() )
     {
         # _start_sep() is short for start_separator().
         return $self->_start_sep();
@@ -66,21 +48,16 @@ sub node_start
     }
 }
 
-=head2 $self->node_end()
-
-Gets called upon node end.
-
-=cut
 
 sub node_end
 {
     my $self = shift;
 
-    if ($self->_is_root())
+    if ( $self->_is_root() )
     {
         return $self->end_root();
     }
-    elsif ($self->_is_top_separator())
+    elsif ( $self->_is_top_separator() )
     {
         return $self->_end_sep();
     }
@@ -90,11 +67,6 @@ sub node_end
     }
 }
 
-=head2 $self->end_root()
-
-End-root event.
-
-=cut
 
 sub end_root
 {
@@ -106,18 +78,13 @@ sub end_root
 sub _end_regular
 {
     my $self = shift;
-    if ($self->top()->_num_subs() && $self->_is_expanded())
+    if ( $self->top()->_num_subs() && $self->_is_expanded() )
     {
         $self->_add_tags("</ul>");
     }
     $self->_add_tags("</li>");
 }
 
-=head2 $self->node_should_recurse()
-
-Override to determine when one should recurse to the node.
-
-=cut
 
 sub node_should_recurse
 {
@@ -125,11 +92,6 @@ sub node_should_recurse
     return $self->_is_expanded();
 }
 
-=head2 $self->get_a_tag()
-
-Renders the HTML for the opening a-tag.
-
-=cut
 
 # Get the HTML <a href=""> tag.
 #
@@ -139,14 +101,12 @@ sub get_a_tag
     my $item = $self->top();
     my $node = $item->_node;
 
-    my $tag ="<a";
+    my $tag   = "<a";
     my $title = $node->title;
 
-    $tag .= " href=\"" .
-        escape_html(
-            $self->nav_menu()->_get_url_to_item($item)
-        ). "\"";
-    if (defined($title))
+    $tag .= " href=\""
+        . escape_html( $self->nav_menu()->_get_url_to_item($item) ) . "\"";
+    if ( defined($title) )
     {
         $tag .= " title=\"$title\"";
     }
@@ -154,13 +114,183 @@ sub get_a_tag
     return $tag;
 }
 
+
+1;
+
+__END__
+
+=pod
+
+=head1 NAME
+
+HTML::Widgets::NavMenu::Iterator::Html - an iterator for HTML.
+
+=head1 VERSION
+
+version 1.0704
+
+=head1 SYNOPSIS
+
+For internal use only.
+
+=head1 VERSION
+
+version 1.0704
+
+=head1 METHODS
+
+=head2 $self->node_start()
+
+Gets called upon node start.
+
+=head2 $self->node_end()
+
+Gets called upon node end.
+
+=head2 $self->end_root()
+
+End-root event.
+
+=head2 $self->node_should_recurse()
+
+Override to determine when one should recurse to the node.
+
+=head2 $self->get_a_tag()
+
+Renders the HTML for the opening a-tag.
+
 =head1 COPYRIGHT & LICENSE
 
 Copyright 2006 Shlomi Fish, all rights reserved.
 
 This program is released under the following license: MIT X11.
 
-=cut
+=head1 AUTHOR
 
-1;
+Shlomi Fish <shlomif@cpan.org>
+
+=head1 COPYRIGHT AND LICENSE
+
+This software is Copyright (c) 2014 by Shlomi Fish.
+
+This is free software, licensed under:
+
+  The MIT (X11) License
+
+=head1 BUGS
+
+Please report any bugs or feature requests on the bugtracker website
+L<https://github.com/shlomif/perl-HTML-Widgets-NavMenu/issues>
+
+When submitting a bug or request, please include a test-file or a
+patch to an existing test-file that illustrates the bug or desired
+feature.
+
+=for :stopwords cpan testmatrix url annocpan anno bugtracker rt cpants kwalitee diff irc mailto metadata placeholders metacpan
+
+=head1 SUPPORT
+
+=head2 Perldoc
+
+You can find documentation for this module with the perldoc command.
+
+  perldoc HTML::Widgets::NavMenu::Iterator::Html::Item
+
+=head2 Websites
+
+The following websites have more information about this module, and may be of help to you. As always,
+in addition to those websites please use your favorite search engine to discover more resources.
+
+=over 4
+
+=item *
+
+MetaCPAN
+
+A modern, open-source CPAN search engine, useful to view POD in HTML format.
+
+L<https://metacpan.org/release/HTML-Widgets-NavMenu>
+
+=item *
+
+Search CPAN
+
+The default CPAN search engine, useful to view POD in HTML format.
+
+L<http://search.cpan.org/dist/HTML-Widgets-NavMenu>
+
+=item *
+
+RT: CPAN's Bug Tracker
 
+The RT ( Request Tracker ) website is the default bug/issue tracking system for CPAN.
+
+L<https://rt.cpan.org/Public/Dist/Display.html?Name=HTML-Widgets-NavMenu>
+
+=item *
+
+AnnoCPAN
+
+The AnnoCPAN is a website that allows community annotations of Perl module documentation.
+
+L<http://annocpan.org/dist/HTML-Widgets-NavMenu>
+
+=item *
+
+CPAN Ratings
+
+The CPAN Ratings is a website that allows community ratings and reviews of Perl modules.
+
+L<http://cpanratings.perl.org/d/HTML-Widgets-NavMenu>
+
+=item *
+
+CPANTS
+
+The CPANTS is a website that analyzes the Kwalitee ( code metrics ) of a distribution.
+
+L<http://cpants.cpanauthors.org/dist/HTML-Widgets-NavMenu>
+
+=item *
+
+CPAN Testers
+
+The CPAN Testers is a network of smoke testers who run automated tests on uploaded CPAN distributions.
+
+L<http://www.cpantesters.org/distro/H/HTML-Widgets-NavMenu>
+
+=item *
+
+CPAN Testers Matrix
+
+The CPAN Testers Matrix is a website that provides a visual overview of the test results for a distribution on various Perls/platforms.
+
+L<http://matrix.cpantesters.org/?dist=HTML-Widgets-NavMenu>
+
+=item *
+
+CPAN Testers Dependencies
+
+The CPAN Testers Dependencies is a website that shows a chart of the test results of all dependencies for a distribution.
+
+L<http://deps.cpantesters.org/?module=HTML::Widgets::NavMenu>
+
+=back
+
+=head2 Bugs / Feature Requests
+
+Please report any bugs or feature requests by email to C<bug-html-widgets-navmenu at rt.cpan.org>, or through
+the web interface at L<https://rt.cpan.org/Public/Bug/Report.html?Queue=HTML-Widgets-NavMenu>. You will be automatically notified of any
+progress on the request by the system.
+
+=head2 Source Code
+
+The code is open to the world, and available for you to hack on. Please feel free to browse it and play
+with it, or whatever. If you want to contribute patches, please send me a diff or prod me to pull
+from your repository :)
+
+L<https://github.com/shlomif/perl-HTML-Widgets-NavMenu>
+
+  git clone git://github.com/shlomif/perl-HTML-Widgets-NavMenu.git
+
+=cut
diff --git a/lib/HTML/Widgets/NavMenu/Iterator/JQTreeView.pm b/lib/HTML/Widgets/NavMenu/Iterator/JQTreeView.pm
index 9c8d545..864c78e 100644
--- a/lib/HTML/Widgets/NavMenu/Iterator/JQTreeView.pm
+++ b/lib/HTML/Widgets/NavMenu/Iterator/JQTreeView.pm
@@ -1,5 +1,5 @@
 package HTML::Widgets::NavMenu::Iterator::JQTreeView;
-
+$HTML::Widgets::NavMenu::Iterator::JQTreeView::VERSION = '1.0704';
 use strict;
 use warnings;
 
@@ -16,33 +16,19 @@ sub _init
     $self->SUPER::_init($args);
 
     # Make a fresh copy just to be on the safe side.
-    $self->_ul_classes([ @{$args->{'ul_classes'}} ]);
+    $self->_ul_classes( [ @{ $args->{'ul_classes'} } ] );
 
     return 0;
 }
 
-=head1 NAME
-
-HTML::Widgets::NavMenu::Iterator::JQTreeView - an iterator for JQuery
-TreeView's navigation menus.
-
-=head1 SYNOPSIS
-
-See L<http://bassistance.de/jquery-plugins/jquery-plugin-treeview/> .
-
-For internal use only.
 
-=head1 METHODS
-
-=cut
 sub _calc_open_li_tag
 {
     my $self = shift;
 
     my $id_attr = $self->_calc_li_id_attr();
 
-    return
-    (
+    return (
         $self->_is_expanded_for_treeview()
         ? (qq{<li class="open"$id_attr>})
         : ("<li$id_attr>")
@@ -51,21 +37,15 @@ sub _calc_open_li_tag
     return;
 }
 
-=head2 get_currently_active_text ( $node )
-
-Calculates the highlighted text for the node C<$node>. Normally surrounds it
-with C<<< <b> ... </b> >>> tags.
-
-=cut
 
 sub _start_handle_non_role
 {
-    my $self = shift;
-    my $top_item = $self->top;
-    my @tags_to_add = ($self->_calc_open_li_tag(), $self->get_link_tag());
-    if ($top_item->_num_subs_to_go() && $self->_is_expanded())
+    my $self        = shift;
+    my $top_item    = $self->top;
+    my @tags_to_add = ( $self->_calc_open_li_tag(), $self->get_link_tag() );
+    if ( $top_item->_num_subs_to_go() && $self->_is_expanded() )
     {
-        push @tags_to_add, ($self->get_open_sub_menu_tags());
+        push @tags_to_add, ( $self->get_open_sub_menu_tags() );
     }
     $self->_add_tags(@tags_to_add);
 
@@ -90,15 +70,174 @@ sub _is_expanded_for_treeview
 
     my $node = $self->top->_node();
 
-    return ($node->expanded() || $self->top->_accum_state->{'show_always'});
+    return ( $node->expanded() || $self->top->_accum_state->{'show_always'} );
 }
 
+
+1;
+
+__END__
+
+=pod
+
+=head1 NAME
+
+HTML::Widgets::NavMenu::Iterator::JQTreeView - an iterator for JQuery
+TreeView's navigation menus.
+
+=head1 VERSION
+
+version 1.0704
+
+=head1 SYNOPSIS
+
+See L<http://bassistance.de/jquery-plugins/jquery-plugin-treeview/> .
+
+For internal use only.
+
+=head1 VERSION
+
+version 1.0704
+
+=head1 METHODS
+
+=head2 get_currently_active_text ( $node )
+
+Calculates the highlighted text for the node C<$node>. Normally surrounds it
+with C<<< <b> ... </b> >>> tags.
+
 =head1 COPYRIGHT & LICENSE
 
 Copyright 2006 Shlomi Fish, all rights reserved.
 
 This program is released under the following license: MIT X11.
 
-=cut
+=head1 AUTHOR
 
-1;
+Shlomi Fish <shlomif@cpan.org>
+
+=head1 COPYRIGHT AND LICENSE
+
+This software is Copyright (c) 2014 by Shlomi Fish.
+
+This is free software, licensed under:
+
+  The MIT (X11) License
+
+=head1 BUGS
+
+Please report any bugs or feature requests on the bugtracker website
+L<https://github.com/shlomif/perl-HTML-Widgets-NavMenu/issues>
+
+When submitting a bug or request, please include a test-file or a
+patch to an existing test-file that illustrates the bug or desired
+feature.
+
+=for :stopwords cpan testmatrix url annocpan anno bugtracker rt cpants kwalitee diff irc mailto metadata placeholders metacpan
+
+=head1 SUPPORT
+
+=head2 Perldoc
+
+You can find documentation for this module with the perldoc command.
+
+  perldoc HTML::Widgets::NavMenu::Iterator::JQTreeView
+
+=head2 Websites
+
+The following websites have more information about this module, and may be of help to you. As always,
+in addition to those websites please use your favorite search engine to discover more resources.
+
+=over 4
+
+=item *
+
+MetaCPAN
+
+A modern, open-source CPAN search engine, useful to view POD in HTML format.
+
+L<https://metacpan.org/release/HTML-Widgets-NavMenu>
+
+=item *
+
+Search CPAN
+
+The default CPAN search engine, useful to view POD in HTML format.
+
+L<http://search.cpan.org/dist/HTML-Widgets-NavMenu>
+
+=item *
+
+RT: CPAN's Bug Tracker
+
+The RT ( Request Tracker ) website is the default bug/issue tracking system for CPAN.
+
+L<https://rt.cpan.org/Public/Dist/Display.html?Name=HTML-Widgets-NavMenu>
+
+=item *
+
+AnnoCPAN
+
+The AnnoCPAN is a website that allows community annotations of Perl module documentation.
+
+L<http://annocpan.org/dist/HTML-Widgets-NavMenu>
+
+=item *
+
+CPAN Ratings
+
+The CPAN Ratings is a website that allows community ratings and reviews of Perl modules.
+
+L<http://cpanratings.perl.org/d/HTML-Widgets-NavMenu>
+
+=item *
+
+CPANTS
+
+The CPANTS is a website that analyzes the Kwalitee ( code metrics ) of a distribution.
+
+L<http://cpants.cpanauthors.org/dist/HTML-Widgets-NavMenu>
+
+=item *
+
+CPAN Testers
+
+The CPAN Testers is a network of smoke testers who run automated tests on uploaded CPAN distributions.
+
+L<http://www.cpantesters.org/distro/H/HTML-Widgets-NavMenu>
+
+=item *
+
+CPAN Testers Matrix
+
+The CPAN Testers Matrix is a website that provides a visual overview of the test results for a distribution on various Perls/platforms.
+
+L<http://matrix.cpantesters.org/?dist=HTML-Widgets-NavMenu>
+
+=item *
+
+CPAN Testers Dependencies
+
+The CPAN Testers Dependencies is a website that shows a chart of the test results of all dependencies for a distribution.
+
+L<http://deps.cpantesters.org/?module=HTML::Widgets::NavMenu>
+
+=back
+
+=head2 Bugs / Feature Requests
+
+Please report any bugs or feature requests by email to C<bug-html-widgets-navmenu at rt.cpan.org>, or through
+the web interface at L<https://rt.cpan.org/Public/Bug/Report.html?Queue=HTML-Widgets-NavMenu>. You will be automatically notified of any
+progress on the request by the system.
+
+=head2 Source Code
+
+The code is open to the world, and available for you to hack on. Please feel free to browse it and play
+with it, or whatever. If you want to contribute patches, please send me a diff or prod me to pull
+from your repository :)
+
+L<https://github.com/shlomif/perl-HTML-Widgets-NavMenu>
+
+  git clone git://github.com/shlomif/perl-HTML-Widgets-NavMenu.git
+
+=cut
diff --git a/lib/HTML/Widgets/NavMenu/Iterator/NavMenu.pm b/lib/HTML/Widgets/NavMenu/Iterator/NavMenu.pm
index 4ae5232..2b66260 100644
--- a/lib/HTML/Widgets/NavMenu/Iterator/NavMenu.pm
+++ b/lib/HTML/Widgets/NavMenu/Iterator/NavMenu.pm
@@ -1,5 +1,5 @@
 package HTML::Widgets::NavMenu::Iterator::NavMenu;
-
+$HTML::Widgets::NavMenu::Iterator::NavMenu::VERSION = '1.0704';
 use strict;
 use warnings;
 
@@ -7,20 +7,14 @@ use base qw(HTML::Widgets::NavMenu::Iterator::Html);
 
 use HTML::Widgets::NavMenu::EscapeHtml;
 
-__PACKAGE__->mk_acc_ref([qw(
-    _ul_classes
-    )]);
-
-=head1 NAME
-
-HTML::Widgets::NavMenu::Iterator::NavMenu - navmenu iterator.
-
-=head1 SYNOPSIS
-
-For internal use only.
+__PACKAGE__->mk_acc_ref(
+    [
+        qw(
+            _ul_classes
+            )
+    ]
+);
 
-=head1 METHODS
-=cut
 
 sub _init
 {
@@ -30,7 +24,7 @@ sub _init
     $self->SUPER::_init($args);
 
     # Make a fresh copy just to be on the safe side.
-    $self->_ul_classes([ @{$args->{'ul_classes'}} ]);
+    $self->_ul_classes( [ @{ $args->{'ul_classes'} } ] );
 
     return 0;
 }
@@ -41,50 +35,40 @@ sub _calc_li_id_attr
 
     my $li_id = $self->top()->_li_id;
 
-    return
-    (defined ($li_id)
+    return (
+        defined($li_id)
         ? qq/ id="/ . escape_html($li_id) . qq/"/
         : q//
     );
 }
 
-=head2 $self->gen_ul_tag({depth => $depth});
-
-Generate a UL tag of depth $depth.
-
-=cut
 
 # Depth is 1 for the uppermost depth.
 sub gen_ul_tag
 {
-    my ($self, $args) = @_;
+    my ( $self, $args ) = @_;
 
     my $depth = $args->{'depth'};
 
-    my $class = $self->_get_ul_class({'depth' => $depth});
+    my $class = $self->_get_ul_class( { 'depth' => $depth } );
 
-    return "<ul" .
-        (defined($class) ?
-            (" class=\"" . escape_html($class) . "\"") :
-            ""
+    return "<ul"
+        . (
+        defined($class)
+        ? ( " class=\"" . escape_html($class) . "\"" )
+        : ""
         ) . ">";
 }
 
 sub _get_ul_class
 {
-    my ($self, $args) = @_;
+    my ( $self, $args ) = @_;
 
     my $depth = $args->{'depth'};
 
-    return $self->_ul_classes->[$depth-1];
+    return $self->_ul_classes->[ $depth - 1 ];
 }
 
-=head2 get_currently_active_text ( $node )
-
-Calculates the highlighted text for the node C<$node>. Normally surrounds it
-with C<<< <b> ... </b> >>> tags.
-
-=cut
 
 sub get_currently_active_text
 {
@@ -93,17 +77,12 @@ sub get_currently_active_text
     return "<b>" . $node->text() . "</b>";
 }
 
-=head2 $self->get_link_tag()
-
-Gets the tag for the link - an item in the menu.
-
-=cut
 
 sub get_link_tag
 {
     my $self = shift;
     my $node = $self->top->_node();
-    if ($node->CurrentlyActive())
+    if ( $node->CurrentlyActive() )
     {
         return $self->get_currently_active_text($node);
     }
@@ -139,31 +118,23 @@ sub _start_handle_role
     return $self->_start_handle_non_role();
 }
 
-=head2 my @tags = $self->get_open_sub_menu_tags()
-
-Gets the tags to open a new sub menu.
-
-=cut
 
 sub get_open_sub_menu_tags
 {
     my $self = shift;
-    return ("<br />",
-        $self->gen_ul_tag(
-            {'depth' => $self->stack->len()}
-        )
-    );
+    return ( "<br />",
+        $self->gen_ul_tag( { 'depth' => $self->stack->len() } ) );
 }
 
 sub _start_handle_non_role
 {
-    my $self = shift;
+    my $self     = shift;
     my $top_item = $self->top;
-    my @tags_to_add = (("<li" . $self->_calc_li_id_attr() . ">"),
-        $self->get_link_tag());
-    if ($top_item->_num_subs_to_go() && $self->_is_expanded())
+    my @tags_to_add =
+        ( ( "<li" . $self->_calc_li_id_attr() . ">" ), $self->get_link_tag() );
+    if ( $top_item->_num_subs_to_go() && $self->_is_expanded() )
     {
-        push @tags_to_add, ($self->get_open_sub_menu_tags());
+        push @tags_to_add, ( $self->get_open_sub_menu_tags() );
     }
     $self->_add_tags(@tags_to_add);
 }
@@ -173,15 +144,15 @@ sub _start_regular
     my $self = shift;
 
     my $top_item = $self->top;
-    my $node = $self->top->_node();
+    my $node     = $self->top->_node();
 
-    if ($self->_is_hidden())
+    if ( $self->_is_hidden() )
     {
         # Do nothing
     }
     else
     {
-        if ($self->_is_role_specified())
+        if ( $self->_is_role_specified() )
         {
             $self->_start_handle_role();
         }
@@ -199,7 +170,7 @@ sub _end_sep
     $self->_add_tags(
         $self->gen_ul_tag(
             {
-                'depth' => $self->stack->len()-1
+                'depth' => $self->stack->len() - 1
             }
         )
     );
@@ -220,11 +191,11 @@ sub _end_handle_non_role
 sub _end_regular
 {
     my $self = shift;
-    if ($self->_is_hidden())
+    if ( $self->_is_hidden() )
     {
         # Do nothing
     }
-    elsif ($self->_is_role_specified())
+    elsif ( $self->_is_role_specified() )
     {
         $self->_end_handle_role();
     }
@@ -244,14 +215,9 @@ sub _is_expanded
 {
     my $self = shift;
     my $node = $self->top->_node();
-    return ($node->expanded() || $self->top->_accum_state->{'show_always'});
+    return ( $node->expanded() || $self->top->_accum_state->{'show_always'} );
 }
 
-=head2 $self->get_role()
-
-Retrieves the current role.
-
-=cut
 
 sub get_role
 {
@@ -262,8 +228,180 @@ sub get_role
 sub _is_role_specified
 {
     my $self = shift;
-    return defined($self->get_role());
+    return defined( $self->get_role() );
 }
 
 1;
 
+__END__
+
+=pod
+
+=head1 NAME
+
+HTML::Widgets::NavMenu::Iterator::NavMenu - navmenu iterator.
+
+=head1 VERSION
+
+version 1.0704
+
+=head1 SYNOPSIS
+
+For internal use only.
+
+=head1 VERSION
+
+version 1.0704
+
+=head1 METHODS
+
+=head2 $self->gen_ul_tag({depth => $depth});
+
+Generate a UL tag of depth $depth.
+
+=head2 get_currently_active_text ( $node )
+
+Calculates the highlighted text for the node C<$node>. Normally surrounds it
+with C<<< <b> ... </b> >>> tags.
+
+=head2 $self->get_link_tag()
+
+Gets the tag for the link - an item in the menu.
+
+=head2 my @tags = $self->get_open_sub_menu_tags()
+
+Gets the tags to open a new sub menu.
+
+=head2 $self->get_role()
+
+Retrieves the current role.
+
+=head1 AUTHOR
+
+Shlomi Fish <shlomif@cpan.org>
+
+=head1 COPYRIGHT AND LICENSE
+
+This software is Copyright (c) 2014 by Shlomi Fish.
+
+This is free software, licensed under:
+
+  The MIT (X11) License
+
+=head1 BUGS
+
+Please report any bugs or feature requests on the bugtracker website
+L<https://github.com/shlomif/perl-HTML-Widgets-NavMenu/issues>
+
+When submitting a bug or request, please include a test-file or a
+patch to an existing test-file that illustrates the bug or desired
+feature.
+
+=for :stopwords cpan testmatrix url annocpan anno bugtracker rt cpants kwalitee diff irc mailto metadata placeholders metacpan
+
+=head1 SUPPORT
+
+=head2 Perldoc
+
+You can find documentation for this module with the perldoc command.
+
+  perldoc HTML::Widgets::NavMenu::Iterator::NavMenu
+
+=head2 Websites
+
+The following websites have more information about this module, and may be of help to you. As always,
+in addition to those websites please use your favorite search engine to discover more resources.
+
+=over 4
+
+=item *
+
+MetaCPAN
+
+A modern, open-source CPAN search engine, useful to view POD in HTML format.
+
+L<https://metacpan.org/release/HTML-Widgets-NavMenu>
+
+=item *
+
+Search CPAN
+
+The default CPAN search engine, useful to view POD in HTML format.
+
+L<http://search.cpan.org/dist/HTML-Widgets-NavMenu>
+
+=item *
+
+RT: CPAN's Bug Tracker
+
+The RT ( Request Tracker ) website is the default bug/issue tracking system for CPAN.
+
+L<https://rt.cpan.org/Public/Dist/Display.html?Name=HTML-Widgets-NavMenu>
+
+=item *
+
+AnnoCPAN
+
+The AnnoCPAN is a website that allows community annotations of Perl module documentation.
+
+L<http://annocpan.org/dist/HTML-Widgets-NavMenu>
+
+=item *
+
+CPAN Ratings
+
+The CPAN Ratings is a website that allows community ratings and reviews of Perl modules.
+
+L<http://cpanratings.perl.org/d/HTML-Widgets-NavMenu>
+
+=item *
+
+CPANTS
+
+The CPANTS is a website that analyzes the Kwalitee ( code metrics ) of a distribution.
+
+L<http://cpants.cpanauthors.org/dist/HTML-Widgets-NavMenu>
+
+=item *
+
+CPAN Testers
+
+The CPAN Testers is a network of smoke testers who run automated tests on uploaded CPAN distributions.
+
+L<http://www.cpantesters.org/distro/H/HTML-Widgets-NavMenu>
+
+=item *
+
+CPAN Testers Matrix
+
+The CPAN Testers Matrix is a website that provides a visual overview of the test results for a distribution on various Perls/platforms.
+
+L<http://matrix.cpantesters.org/?dist=HTML-Widgets-NavMenu>
+
+=item *
+
+CPAN Testers Dependencies
+
+The CPAN Testers Dependencies is a website that shows a chart of the test results of all dependencies for a distribution.
+
+L<http://deps.cpantesters.org/?module=HTML::Widgets::NavMenu>
+
+=back
+
+=head2 Bugs / Feature Requests
+
+Please report any bugs or feature requests by email to C<bug-html-widgets-navmenu at rt.cpan.org>, or through
+the web interface at L<https://rt.cpan.org/Public/Bug/Report.html?Queue=HTML-Widgets-NavMenu>. You will be automatically notified of any
+progress on the request by the system.
+
+=head2 Source Code
+
+The code is open to the world, and available for you to hack on. Please feel free to browse it and play
+with it, or whatever. If you want to contribute patches, please send me a diff or prod me to pull
+from your repository :)
+
+L<https://github.com/shlomif/perl-HTML-Widgets-NavMenu>
+
+  git clone git://github.com/shlomif/perl-HTML-Widgets-NavMenu.git
+
+=cut
diff --git a/lib/HTML/Widgets/NavMenu/Iterator/NavMenu/HeaderRole.pm b/lib/HTML/Widgets/NavMenu/Iterator/NavMenu/HeaderRole.pm
index 45795a1..6253e57 100644
--- a/lib/HTML/Widgets/NavMenu/Iterator/NavMenu/HeaderRole.pm
+++ b/lib/HTML/Widgets/NavMenu/Iterator/NavMenu/HeaderRole.pm
@@ -1,37 +1,27 @@
 package HTML::Widgets::NavMenu::Iterator::NavMenu::HeaderRole;
-
+$HTML::Widgets::NavMenu::Iterator::NavMenu::HeaderRole::VERSION = '1.0704';
 use strict;
 use warnings;
 
 use base qw(HTML::Widgets::NavMenu::Iterator::NavMenu);
 
-__PACKAGE__->mk_acc_ref([qw(
-    _was_role
-)]);
-
-=head1 NAME
-
-HTML::Widgets::NavMenu::Iterator::NavMenu::HeaderRole - a nav-menu iterator
-for the HeaderRole sub-class.
-
-=head1 OVER-RIDED METHODS
-
-=head2 $iter->_start_handle_role()
+__PACKAGE__->mk_acc_ref(
+    [
+        qw(
+            _was_role
+            )
+    ]
+);
 
-Handles the handling the role. Accepts the C<"header"> role and defaults to the
-default behaviour with all others.
-
-=cut
 
 sub _start_handle_non_role
 {
     my $self = shift;
 
-    if ($self->_was_role())
+    if ( $self->_was_role() )
     {
         $self->_add_tags(
-            $self->gen_ul_tag({'depth' => $self->stack->len()-2})
-        );
+            $self->gen_ul_tag( { 'depth' => $self->stack->len() - 2 } ) );
     }
 
     $self->_was_role(0);
@@ -42,15 +32,13 @@ sub _start_handle_non_role
 sub _start_handle_role
 {
     my $self = shift;
-    if ($self->get_role() eq "header")
+    if ( $self->get_role() eq "header" )
     {
-        if (! $self->_was_role())
+        if ( !$self->_was_role() )
         {
             $self->_add_tags("</ul>");
         }
-        $self->_add_tags(
-            "<h2>", $self->get_link_tag(), "</h2>",
-            );
+        $self->_add_tags( "<h2>", $self->get_link_tag(), "</h2>", );
 
         $self->_was_role(1);
     }
@@ -60,17 +48,11 @@ sub _start_handle_role
     }
 }
 
-=head2 $self->_end_handle_role()
-
-Ends the role. Accepts the C<"header"> role and defaults to the
-default behaviour with all others.
-
-=cut
 
 sub _end_handle_role
 {
     my $self = shift;
-    if ($self->get_role() eq "header")
+    if ( $self->get_role() eq "header" )
     {
         # Do nothing;
     }
@@ -80,13 +62,170 @@ sub _end_handle_role
     }
 }
 
+
+1;
+
+__END__
+
+=pod
+
+=head1 NAME
+
+HTML::Widgets::NavMenu::Iterator::NavMenu::HeaderRole - a nav-menu iterator
+for the HeaderRole sub-class.
+
+=head1 VERSION
+
+version 1.0704
+
+=head1 VERSION
+
+version 1.0704
+
+=head1 OVER-RIDED METHODS
+
+=head2 $iter->_start_handle_role()
+
+Handles the handling the role. Accepts the C<"header"> role and defaults to the
+default behaviour with all others.
+
+=head2 $self->_end_handle_role()
+
+Ends the role. Accepts the C<"header"> role and defaults to the
+default behaviour with all others.
+
 =head1 COPYRIGHT & LICENSE
 
 Copyright 2006 Shlomi Fish, all rights reserved.
 
 This program is released under the following license: MIT X11.
 
-=cut
+=head1 AUTHOR
 
-1;
+Shlomi Fish <shlomif@cpan.org>
+
+=head1 COPYRIGHT AND LICENSE
+
+This software is Copyright (c) 2014 by Shlomi Fish.
+
+This is free software, licensed under:
+
+  The MIT (X11) License
+
+=head1 BUGS
 
+Please report any bugs or feature requests on the bugtracker website
+L<https://github.com/shlomif/perl-HTML-Widgets-NavMenu/issues>
+
+When submitting a bug or request, please include a test-file or a
+patch to an existing test-file that illustrates the bug or desired
+feature.
+
+=for :stopwords cpan testmatrix url annocpan anno bugtracker rt cpants kwalitee diff irc mailto metadata placeholders metacpan
+
+=head1 SUPPORT
+
+=head2 Perldoc
+
+You can find documentation for this module with the perldoc command.
+
+  perldoc HTML::Widgets::NavMenu::Iterator::NavMenu::HeaderRole
+
+=head2 Websites
+
+The following websites have more information about this module, and may be of help to you. As always,
+in addition to those websites please use your favorite search engine to discover more resources.
+
+=over 4
+
+=item *
+
+MetaCPAN
+
+A modern, open-source CPAN search engine, useful to view POD in HTML format.
+
+L<https://metacpan.org/release/HTML-Widgets-NavMenu>
+
+=item *
+
+Search CPAN
+
+The default CPAN search engine, useful to view POD in HTML format.
+
+L<http://search.cpan.org/dist/HTML-Widgets-NavMenu>
+
+=item *
+
+RT: CPAN's Bug Tracker
+
+The RT ( Request Tracker ) website is the default bug/issue tracking system for CPAN.
+
+L<https://rt.cpan.org/Public/Dist/Display.html?Name=HTML-Widgets-NavMenu>
+
+=item *
+
+AnnoCPAN
+
+The AnnoCPAN is a website that allows community annotations of Perl module documentation.
+
+L<http://annocpan.org/dist/HTML-Widgets-NavMenu>
+
+=item *
+
+CPAN Ratings
+
+The CPAN Ratings is a website that allows community ratings and reviews of Perl modules.
+
+L<http://cpanratings.perl.org/d/HTML-Widgets-NavMenu>
+
+=item *
+
+CPANTS
+
+The CPANTS is a website that analyzes the Kwalitee ( code metrics ) of a distribution.
+
+L<http://cpants.cpanauthors.org/dist/HTML-Widgets-NavMenu>
+
+=item *
+
+CPAN Testers
+
+The CPAN Testers is a network of smoke testers who run automated tests on uploaded CPAN distributions.
+
+L<http://www.cpantesters.org/distro/H/HTML-Widgets-NavMenu>
+
+=item *
+
+CPAN Testers Matrix
+
+The CPAN Testers Matrix is a website that provides a visual overview of the test results for a distribution on various Perls/platforms.
+
+L<http://matrix.cpantesters.org/?dist=HTML-Widgets-NavMenu>
+
+=item *
+
+CPAN Testers Dependencies
+
+The CPAN Testers Dependencies is a website that shows a chart of the test results of all dependencies for a distribution.
+
+L<http://deps.cpantesters.org/?module=HTML::Widgets::NavMenu>
+
+=back
+
+=head2 Bugs / Feature Requests
+
+Please report any bugs or feature requests by email to C<bug-html-widgets-navmenu at rt.cpan.org>, or through
+the web interface at L<https://rt.cpan.org/Public/Bug/Report.html?Queue=HTML-Widgets-NavMenu>. You will be automatically notified of any
+progress on the request by the system.
+
+=head2 Source Code
+
+The code is open to the world, and available for you to hack on. Please feel free to browse it and play
+with it, or whatever. If you want to contribute patches, please send me a diff or prod me to pull
+from your repository :)
+
+L<https://github.com/shlomif/perl-HTML-Widgets-NavMenu>
+
+  git clone git://github.com/shlomif/perl-HTML-Widgets-NavMenu.git
+
+=cut
diff --git a/lib/HTML/Widgets/NavMenu/Iterator/SiteMap.pm b/lib/HTML/Widgets/NavMenu/Iterator/SiteMap.pm
index ebf74ce..580ce51 100644
--- a/lib/HTML/Widgets/NavMenu/Iterator/SiteMap.pm
+++ b/lib/HTML/Widgets/NavMenu/Iterator/SiteMap.pm
@@ -1,21 +1,10 @@
 package HTML::Widgets::NavMenu::Iterator::SiteMap;
-
+$HTML::Widgets::NavMenu::Iterator::SiteMap::VERSION = '1.0704';
 use strict;
 use warnings;
 
 use base qw(HTML::Widgets::NavMenu::Iterator::Html);
 
-=head1 NAME
-
-HTML::Widgets::NavMenu::Iterator::SiteMap - a site-map iterator.
-
-=head1 SYNOPSIS
-
-For internal use only.
-
-=head1 METHODS
-
-=cut
 
 sub _start_root
 {
@@ -33,18 +22,18 @@ sub _start_regular
     my $self = shift;
 
     my $top_item = $self->top;
-    my $node = $self->top->_node();
+    my $node     = $self->top->_node();
 
     $self->_add_tags("<li>");
-    my $tag = $self->get_a_tag();
+    my $tag   = $self->get_a_tag();
     my $title = $node->title();
-    if (defined($title))
+    if ( defined($title) )
     {
         $tag .= " - $title";
     }
     $self->_add_tags($tag);
 
-    if ($top_item->_num_subs_to_go())
+    if ( $top_item->_num_subs_to_go() )
     {
         $self->_add_tags("<br />");
         $self->_add_tags("<ul>");
@@ -60,12 +49,163 @@ sub _is_expanded
     return 1;
 }
 
+
+1;
+
+__END__
+
+=pod
+
+=head1 NAME
+
+HTML::Widgets::NavMenu::Iterator::SiteMap - a site-map iterator.
+
+=head1 VERSION
+
+version 1.0704
+
+=head1 SYNOPSIS
+
+For internal use only.
+
+=head1 VERSION
+
+version 1.0704
+
+=head1 METHODS
+
 =head1 COPYRIGHT & LICENSE
 
 Copyright 2006 Shlomi Fish, all rights reserved.
 
 This program is released under the following license: MIT X11.
 
-=cut
+=head1 AUTHOR
 
-1;
+Shlomi Fish <shlomif@cpan.org>
+
+=head1 COPYRIGHT AND LICENSE
+
+This software is Copyright (c) 2014 by Shlomi Fish.
+
+This is free software, licensed under:
+
+  The MIT (X11) License
+
+=head1 BUGS
+
+Please report any bugs or feature requests on the bugtracker website
+L<https://github.com/shlomif/perl-HTML-Widgets-NavMenu/issues>
+
+When submitting a bug or request, please include a test-file or a
+patch to an existing test-file that illustrates the bug or desired
+feature.
+
+=for :stopwords cpan testmatrix url annocpan anno bugtracker rt cpants kwalitee diff irc mailto metadata placeholders metacpan
+
+=head1 SUPPORT
+
+=head2 Perldoc
+
+You can find documentation for this module with the perldoc command.
+
+  perldoc HTML::Widgets::NavMenu::Iterator::SiteMap
+
+=head2 Websites
+
+The following websites have more information about this module, and may be of help to you. As always,
+in addition to those websites please use your favorite search engine to discover more resources.
+
+=over 4
+
+=item *
+
+MetaCPAN
+
+A modern, open-source CPAN search engine, useful to view POD in HTML format.
+
+L<https://metacpan.org/release/HTML-Widgets-NavMenu>
+
+=item *
+
+Search CPAN
+
+The default CPAN search engine, useful to view POD in HTML format.
+
+L<http://search.cpan.org/dist/HTML-Widgets-NavMenu>
+
+=item *
+
+RT: CPAN's Bug Tracker
+
+The RT ( Request Tracker ) website is the default bug/issue tracking system for CPAN.
+
+L<https://rt.cpan.org/Public/Dist/Display.html?Name=HTML-Widgets-NavMenu>
+
+=item *
+
+AnnoCPAN
+
+The AnnoCPAN is a website that allows community annotations of Perl module documentation.
+
+L<http://annocpan.org/dist/HTML-Widgets-NavMenu>
+
+=item *
+
+CPAN Ratings
+
+The CPAN Ratings is a website that allows community ratings and reviews of Perl modules.
+
+L<http://cpanratings.perl.org/d/HTML-Widgets-NavMenu>
+
+=item *
+
+CPANTS
+
+The CPANTS is a website that analyzes the Kwalitee ( code metrics ) of a distribution.
+
+L<http://cpants.cpanauthors.org/dist/HTML-Widgets-NavMenu>
+
+=item *
+
+CPAN Testers
+
+The CPAN Testers is a network of smoke testers who run automated tests on uploaded CPAN distributions.
+
+L<http://www.cpantesters.org/distro/H/HTML-Widgets-NavMenu>
+
+=item *
+
+CPAN Testers Matrix
+
+The CPAN Testers Matrix is a website that provides a visual overview of the test results for a distribution on various Perls/platforms.
+
+L<http://matrix.cpantesters.org/?dist=HTML-Widgets-NavMenu>
+
+=item *
+
+CPAN Testers Dependencies
+
+The CPAN Testers Dependencies is a website that shows a chart of the test results of all dependencies for a distribution.
+
+L<http://deps.cpantesters.org/?module=HTML::Widgets::NavMenu>
+
+=back
+
+=head2 Bugs / Feature Requests
+
+Please report any bugs or feature requests by email to C<bug-html-widgets-navmenu at rt.cpan.org>, or through
+the web interface at L<https://rt.cpan.org/Public/Bug/Report.html?Queue=HTML-Widgets-NavMenu>. You will be automatically notified of any
+progress on the request by the system.
+
+=head2 Source Code
+
+The code is open to the world, and available for you to hack on. Please feel free to browse it and play
+with it, or whatever. If you want to contribute patches, please send me a diff or prod me to pull
+from your repository :)
+
+L<https://github.com/shlomif/perl-HTML-Widgets-NavMenu>
+
+  git clone git://github.com/shlomif/perl-HTML-Widgets-NavMenu.git
+
+=cut
diff --git a/lib/HTML/Widgets/NavMenu/JQueryTreeView.pm b/lib/HTML/Widgets/NavMenu/JQueryTreeView.pm
index b95f19d..1aefcf2 100644
--- a/lib/HTML/Widgets/NavMenu/JQueryTreeView.pm
+++ b/lib/HTML/Widgets/NavMenu/JQueryTreeView.pm
@@ -1,5 +1,5 @@
 package HTML::Widgets::NavMenu::JQueryTreeView;
-
+$HTML::Widgets::NavMenu::JQueryTreeView::VERSION = '1.0704';
 use strict;
 use warnings;
 
@@ -11,25 +11,24 @@ sub _get_nav_menu_traverser
 {
     my $self = shift;
 
-    return
-        HTML::Widgets::NavMenu::Iterator::JQTreeView->new(
-            $self->_get_nav_menu_traverser_args()
-        );
+    return HTML::Widgets::NavMenu::Iterator::JQTreeView->new(
+        $self->_get_nav_menu_traverser_args() );
 }
 
 1;
 
 __END__
 
+=pod
+
 =head1 NAME
 
 HTML::Widgets::NavMenu::JQueryTreeView - A Specialized HTML::Widgets::NavMenu
 sub-class
 
-=head1 SYNOPOSIS
+=head1 VERSION
 
-Mostly the same as L<HTML::Widgets::NavMenu> execpt that it renders a fully
-expanded tree suitable for input to JQuery's treeview plugin
+version 1.0704
 
 =head1 DESCRIPTION
 
@@ -39,6 +38,15 @@ and C< class="close" > attributes in the opening C<< <li> >> tags.
 An example of this use can be found in Shlomi Fish's Homepage
 ( L<http://www.shlomifish.org/> ).
 
+=head1 VERSION
+
+version 1.0704
+
+=head1 SYNOPOSIS
+
+Mostly the same as L<HTML::Widgets::NavMenu> execpt that it renders a fully
+expanded tree suitable for input to JQuery's treeview plugin
+
 =head1 SEE ALSO
 
 L<HTML::Widgets::NavMenu> for the complete documentation of the super-class.
@@ -54,5 +62,132 @@ Copyright 2004, Shlomi Fish. All rights reserved.
 You can use, modify and distribute this module under the terms of the MIT X11
 license. ( L<http://www.opensource.org/licenses/mit-license.php> ).
 
-=cut
+=head1 AUTHOR
+
+Shlomi Fish <shlomif@cpan.org>
+
+=head1 COPYRIGHT AND LICENSE
+
+This software is Copyright (c) 2014 by Shlomi Fish.
+
+This is free software, licensed under:
+
+  The MIT (X11) License
+
+=head1 BUGS
+
+Please report any bugs or feature requests on the bugtracker website
+L<https://github.com/shlomif/perl-HTML-Widgets-NavMenu/issues>
+
+When submitting a bug or request, please include a test-file or a
+patch to an existing test-file that illustrates the bug or desired
+feature.
+
+=for :stopwords cpan testmatrix url annocpan anno bugtracker rt cpants kwalitee diff irc mailto metadata placeholders metacpan
+
+=head1 SUPPORT
+
+=head2 Perldoc
+
+You can find documentation for this module with the perldoc command.
+
+  perldoc HTML::Widgets::NavMenu::JQueryTreeView
+
+=head2 Websites
+
+The following websites have more information about this module, and may be of help to you. As always,
+in addition to those websites please use your favorite search engine to discover more resources.
+
+=over 4
+
+=item *
+
+MetaCPAN
+
+A modern, open-source CPAN search engine, useful to view POD in HTML format.
+
+L<https://metacpan.org/release/HTML-Widgets-NavMenu>
+
+=item *
+
+Search CPAN
+
+The default CPAN search engine, useful to view POD in HTML format.
 
+L<http://search.cpan.org/dist/HTML-Widgets-NavMenu>
+
+=item *
+
+RT: CPAN's Bug Tracker
+
+The RT ( Request Tracker ) website is the default bug/issue tracking system for CPAN.
+
+L<https://rt.cpan.org/Public/Dist/Display.html?Name=HTML-Widgets-NavMenu>
+
+=item *
+
+AnnoCPAN
+
+The AnnoCPAN is a website that allows community annotations of Perl module documentation.
+
+L<http://annocpan.org/dist/HTML-Widgets-NavMenu>
+
+=item *
+
+CPAN Ratings
+
+The CPAN Ratings is a website that allows community ratings and reviews of Perl modules.
+
+L<http://cpanratings.perl.org/d/HTML-Widgets-NavMenu>
+
+=item *
+
+CPANTS
+
+The CPANTS is a website that analyzes the Kwalitee ( code metrics ) of a distribution.
+
+L<http://cpants.cpanauthors.org/dist/HTML-Widgets-NavMenu>
+
+=item *
+
+CPAN Testers
+
+The CPAN Testers is a network of smoke testers who run automated tests on uploaded CPAN distributions.
+
+L<http://www.cpantesters.org/distro/H/HTML-Widgets-NavMenu>
+
+=item *
+
+CPAN Testers Matrix
+
+The CPAN Testers Matrix is a website that provides a visual overview of the test results for a distribution on various Perls/platforms.
+
+L<http://matrix.cpantesters.org/?dist=HTML-Widgets-NavMenu>
+
+=item *
+
+CPAN Testers Dependencies
+
+The CPAN Testers Dependencies is a website that shows a chart of the test results of all dependencies for a distribution.
+
+L<http://deps.cpantesters.org/?module=HTML::Widgets::NavMenu>
+
+=back
+
+=head2 Bugs / Feature Requests
+
+Please report any bugs or feature requests by email to C<bug-html-widgets-navmenu at rt.cpan.org>, or through
+the web interface at L<https://rt.cpan.org/Public/Bug/Report.html?Queue=HTML-Widgets-NavMenu>. You will be automatically notified of any
+progress on the request by the system.
+
+=head2 Source Code
+
+The code is open to the world, and available for you to hack on. Please feel free to browse it and play
+with it, or whatever. If you want to contribute patches, please send me a diff or prod me to pull
+from your repository :)
+
+L<https://github.com/shlomif/perl-HTML-Widgets-NavMenu>
+
+  git clone git://github.com/shlomif/perl-HTML-Widgets-NavMenu.git
+
+=cut
diff --git a/lib/HTML/Widgets/NavMenu/Object.pm b/lib/HTML/Widgets/NavMenu/Object.pm
index 5aa32f0..98b5083 100644
--- a/lib/HTML/Widgets/NavMenu/Object.pm
+++ b/lib/HTML/Widgets/NavMenu/Object.pm
@@ -1,5 +1,5 @@
 package HTML::Widgets::NavMenu::Object;
-
+$HTML::Widgets::NavMenu::Object::VERSION = '1.0704';
 use strict;
 use warnings;
 
@@ -8,7 +8,7 @@ use Class::XSAccessor;
 sub new
 {
     my $class = shift;
-    my $self = {};
+    my $self  = {};
 
     bless $self, $class;
 
@@ -39,31 +39,17 @@ sub DESTROY
 }
 
 
-=head2 __PACKAGE__->mk_accessors(qw(method1 method2 method3))
-
-Equivalent to L<Class::Accessor>'s mk_accessors only using Class::XSAccessor.
-It beats running an ugly script on my code, and can be done at run-time.
-
-Gotta love dynamic languages like Perl 5.
-
-=cut
-
 sub mk_accessors
 {
     my $package = shift;
-    return $package->mk_acc_ref([@_]);
+    return $package->mk_acc_ref( [@_] );
 }
 
-=head2 __PACKAGE__->mk_acc_ref([qw(method1 method2 method3)])
-
-Creates the accessors in the array-ref of names at run-time.
-
-=cut
 
 sub mk_acc_ref
 {
     my $package = shift;
-    my $names = shift;
+    my $names   = shift;
 
     my $mapping = +{ map { $_ => $_ } @$names };
 
@@ -77,14 +63,40 @@ EOF
 
 }
 
+
+1;
+
+__END__
+
+=pod
+
 =head1 NAME
 
 HTML::Widgets::NavMenu::Object - a base object for HTML::Widgets::NavMenu
 
+=head1 VERSION
+
+version 1.0704
+
 =head1 SYNOPSIS
 
 For internal use only
 
+=head2 __PACKAGE__->mk_accessors(qw(method1 method2 method3))
+
+Equivalent to L<Class::Accessor>'s mk_accessors only using Class::XSAccessor.
+It beats running an ugly script on my code, and can be done at run-time.
+
+Gotta love dynamic languages like Perl 5.
+
+=head2 __PACKAGE__->mk_acc_ref([qw(method1 method2 method3)])
+
+Creates the accessors in the array-ref of names at run-time.
+
+=head1 VERSION
+
+version 1.0704
+
 =head1 FUNCTIONS
 
 =head2 my $obj = HTML::Widgets::NavMenu::Object->new(@args)
@@ -101,6 +113,132 @@ Copyright 2006 Shlomi Fish, all rights reserved.
 
 This program is released under the following license: MIT X11.
 
-=cut
+=head1 AUTHOR
 
-1;
+Shlomi Fish <shlomif@cpan.org>
+
+=head1 COPYRIGHT AND LICENSE
+
+This software is Copyright (c) 2014 by Shlomi Fish.
+
+This is free software, licensed under:
+
+  The MIT (X11) License
+
+=head1 BUGS
+
+Please report any bugs or feature requests on the bugtracker website
+L<https://github.com/shlomif/perl-HTML-Widgets-NavMenu/issues>
+
+When submitting a bug or request, please include a test-file or a
+patch to an existing test-file that illustrates the bug or desired
+feature.
+
+=for :stopwords cpan testmatrix url annocpan anno bugtracker rt cpants kwalitee diff irc mailto metadata placeholders metacpan
+
+=head1 SUPPORT
+
+=head2 Perldoc
+
+You can find documentation for this module with the perldoc command.
+
+  perldoc HTML::Widgets::NavMenu::Object
+
+=head2 Websites
+
+The following websites have more information about this module, and may be of help to you. As always,
+in addition to those websites please use your favorite search engine to discover more resources.
+
+=over 4
+
+=item *
+
+MetaCPAN
+
+A modern, open-source CPAN search engine, useful to view POD in HTML format.
+
+L<https://metacpan.org/release/HTML-Widgets-NavMenu>
+
+=item *
+
+Search CPAN
+
+The default CPAN search engine, useful to view POD in HTML format.
+
+L<http://search.cpan.org/dist/HTML-Widgets-NavMenu>
+
+=item *
+
+RT: CPAN's Bug Tracker
+
+The RT ( Request Tracker ) website is the default bug/issue tracking system for CPAN.
+
+L<https://rt.cpan.org/Public/Dist/Display.html?Name=HTML-Widgets-NavMenu>
+
+=item *
+
+AnnoCPAN
+
+The AnnoCPAN is a website that allows community annotations of Perl module documentation.
+
+L<http://annocpan.org/dist/HTML-Widgets-NavMenu>
+
+=item *
+
+CPAN Ratings
+
+The CPAN Ratings is a website that allows community ratings and reviews of Perl modules.
+
+L<http://cpanratings.perl.org/d/HTML-Widgets-NavMenu>
+
+=item *
+
+CPANTS
+
+The CPANTS is a website that analyzes the Kwalitee ( code metrics ) of a distribution.
+
+L<http://cpants.cpanauthors.org/dist/HTML-Widgets-NavMenu>
+
+=item *
+
+CPAN Testers
+
+The CPAN Testers is a network of smoke testers who run automated tests on uploaded CPAN distributions.
+
+L<http://www.cpantesters.org/distro/H/HTML-Widgets-NavMenu>
+
+=item *
+
+CPAN Testers Matrix
+
+The CPAN Testers Matrix is a website that provides a visual overview of the test results for a distribution on various Perls/platforms.
+
+L<http://matrix.cpantesters.org/?dist=HTML-Widgets-NavMenu>
+
+=item *
+
+CPAN Testers Dependencies
+
+The CPAN Testers Dependencies is a website that shows a chart of the test results of all dependencies for a distribution.
+
+L<http://deps.cpantesters.org/?module=HTML::Widgets::NavMenu>
+
+=back
+
+=head2 Bugs / Feature Requests
+
+Please report any bugs or feature requests by email to C<bug-html-widgets-navmenu at rt.cpan.org>, or through
+the web interface at L<https://rt.cpan.org/Public/Bug/Report.html?Queue=HTML-Widgets-NavMenu>. You will be automatically notified of any
+progress on the request by the system.
+
+=head2 Source Code
+
+The code is open to the world, and available for you to hack on. Please feel free to browse it and play
+with it, or whatever. If you want to contribute patches, please send me a diff or prod me to pull
+from your repository :)
+
+L<https://github.com/shlomif/perl-HTML-Widgets-NavMenu>
+
+  git clone git://github.com/shlomif/perl-HTML-Widgets-NavMenu.git
+
+=cut
diff --git a/lib/HTML/Widgets/NavMenu/Predicate.pm b/lib/HTML/Widgets/NavMenu/Predicate.pm
index fe688c8..aa92ee0 100644
--- a/lib/HTML/Widgets/NavMenu/Predicate.pm
+++ b/lib/HTML/Widgets/NavMenu/Predicate.pm
@@ -1,13 +1,11 @@
 package HTML::Widgets::NavMenu::Predicate;
-
+$HTML::Widgets::NavMenu::Predicate::VERSION = '1.0704';
 use strict;
 use warnings;
 
 use base 'HTML::Widgets::NavMenu::Object';
 
-__PACKAGE__->mk_acc_ref([
-    qw(type bool regexp callback _capture)],
-    );
+__PACKAGE__->mk_acc_ref( [qw(type bool regexp callback _capture)], );
 
 use HTML::Widgets::NavMenu::ExpandVal;
 
@@ -24,22 +22,22 @@ sub _init
     return 0;
 }
 
-my %true_vals = (map { $_ => 1 } (qw(1 yes true True)));
+my %true_vals = ( map { $_ => 1 } (qw(1 yes true True)) );
 
 sub _is_true_bool
 {
     my $self = shift;
-    my $val = shift;
-    return exists($true_vals{$val});
+    my $val  = shift;
+    return exists( $true_vals{$val} );
 }
 
-my %false_vals = (map { $_ => 1 } (qw(0 no false False)));
+my %false_vals = ( map { $_ => 1 } (qw(0 no false False)) );
 
 sub _is_false_bool
 {
     my $self = shift;
-    my $val = shift;
-    return exists($false_vals{$val});
+    my $val  = shift;
+    return exists( $false_vals{$val} );
 }
 
 sub _get_normalized_spec
@@ -47,24 +45,25 @@ sub _get_normalized_spec
     my $self = shift;
     my $spec = shift;
 
-    if (ref($spec) eq "HASH")
+    if ( ref($spec) eq "HASH" )
     {
         return $spec;
     }
-    if (ref($spec) eq "CODE")
+    if ( ref($spec) eq "CODE" )
     {
         return +{ 'cb' => $spec };
     }
-    if ($self->_is_true_bool($spec))
+    if ( $self->_is_true_bool($spec) )
     {
         return +{ 'bool' => 1, };
     }
-    if ($self->_is_false_bool($spec))
+    if ( $self->_is_false_bool($spec) )
     {
         return +{ 'bool' => 0, };
     }
+
     # Default to regular expression
-    if (ref($spec) eq "")
+    if ( ref($spec) eq "" )
     {
         return +{ 're' => $spec, };
     }
@@ -77,11 +76,7 @@ sub _process_spec
     my $spec = shift;
 
     # TODO: Replace me with the real logic.
-    $self->_assign_spec(
-        $self->_get_normalized_spec(
-            $spec,
-        ),
-    );
+    $self->_assign_spec( $self->_get_normalized_spec( $spec, ), );
 }
 
 sub _assign_spec
@@ -89,57 +84,50 @@ sub _assign_spec
     my $self = shift;
     my $spec = shift;
 
-    if (exists($spec->{'cb'}))
+    if ( exists( $spec->{'cb'} ) )
     {
         $self->type("callback");
-        $self->callback($spec->{'cb'});
+        $self->callback( $spec->{'cb'} );
     }
-    elsif (exists($spec->{'re'}))
+    elsif ( exists( $spec->{'re'} ) )
     {
         $self->type("regexp");
-        $self->regexp($spec->{'re'});
+        $self->regexp( $spec->{'re'} );
     }
-    elsif (exists($spec->{'bool'}))
+    elsif ( exists( $spec->{'bool'} ) )
     {
         $self->type("bool");
-        $self->bool($spec->{'bool'});
+        $self->bool( $spec->{'bool'} );
     }
     else
     {
         die "Neither 'cb' nor 're' nor 'bool' were specified in the spec.";
     }
 
-    $self->_capture(
-        (
-            (!exists($spec->{capt})) ? 1 : $spec->{capt}
-        )
-    );
+    $self->_capture( ( ( !exists( $spec->{capt} ) ) ? 1 : $spec->{capt} ) );
 }
 
-
 sub _evaluate_bool
 {
-    my ($self, $args) = @_;
+    my ( $self, $args ) = @_;
 
-    my $path_info = $args->{'path_info'};
+    my $path_info    = $args->{'path_info'};
     my $current_host = $args->{'current_host'};
 
     my $type = $self->type();
 
-    if ($type eq "callback")
+    if ( $type eq "callback" )
     {
-        return $self->callback()->(
-            %$args
-        );
+        return $self->callback()->(%$args);
     }
-    elsif ($type eq "bool")
+    elsif ( $type eq "bool" )
     {
         return $self->bool();
     }
-    else # $type eq "regexp"
+    else    # $type eq "regexp"
     {
         my $re = $self->regexp();
-        return (($re eq "") || ($path_info =~ /$re/));
+        return ( ( $re eq "" ) || ( $path_info =~ /$re/ ) );
     }
 }
 
@@ -147,9 +135,9 @@ sub evaluate
 {
     my $self = shift;
 
-    my $bool = $self->_evaluate_bool({@_});
+    my $bool = $self->_evaluate_bool( {@_} );
 
-    if (!$bool)
+    if ( !$bool )
     {
         return $bool;
     }
@@ -163,15 +151,30 @@ sub evaluate
     }
 }
 
+
+1;
+
+__END__
+
+=pod
+
 =head1 NAME
 
 HTML::Widgets::NavMenu::Predicate - a predicate object for
 HTML::Widgets::NavMenu
 
+=head1 VERSION
+
+version 1.0704
+
 =head1 SYNOPSIS
 
     my $pred = HTML::Widgets::NavMenu::Predicate->new('spec' => $spec);
 
+=head1 VERSION
+
+version 1.0704
+
 =head1 FUNCTIONS
 
 =head2 my $pred = HTML::Widgets::NavMenu::Predicate->new('spec' => $spec)
@@ -205,7 +208,132 @@ Copyright 2006 Shlomi Fish, all rights reserved.
 
 This program is released under the following license: MIT X11.
 
-=cut
+=head1 AUTHOR
 
-1;
+Shlomi Fish <shlomif@cpan.org>
+
+=head1 COPYRIGHT AND LICENSE
+
+This software is Copyright (c) 2014 by Shlomi Fish.
+
+This is free software, licensed under:
+
+  The MIT (X11) License
+
+=head1 BUGS
+
+Please report any bugs or feature requests on the bugtracker website
+L<https://github.com/shlomif/perl-HTML-Widgets-NavMenu/issues>
+
+When submitting a bug or request, please include a test-file or a
+patch to an existing test-file that illustrates the bug or desired
+feature.
+
+=for :stopwords cpan testmatrix url annocpan anno bugtracker rt cpants kwalitee diff irc mailto metadata placeholders metacpan
+
+=head1 SUPPORT
+
+=head2 Perldoc
+
+You can find documentation for this module with the perldoc command.
+
+  perldoc HTML::Widgets::NavMenu::Predicate
+
+=head2 Websites
+
+The following websites have more information about this module, and may be of help to you. As always,
+in addition to those websites please use your favorite search engine to discover more resources.
+
+=over 4
+
+=item *
+
+MetaCPAN
+
+A modern, open-source CPAN search engine, useful to view POD in HTML format.
+
+L<https://metacpan.org/release/HTML-Widgets-NavMenu>
+
+=item *
+
+Search CPAN
+
+The default CPAN search engine, useful to view POD in HTML format.
 
+L<http://search.cpan.org/dist/HTML-Widgets-NavMenu>
+
+=item *
+
+RT: CPAN's Bug Tracker
+
+The RT ( Request Tracker ) website is the default bug/issue tracking system for CPAN.
+
+L<https://rt.cpan.org/Public/Dist/Display.html?Name=HTML-Widgets-NavMenu>
+
+=item *
+
+AnnoCPAN
+
+The AnnoCPAN is a website that allows community annotations of Perl module documentation.
+
+L<http://annocpan.org/dist/HTML-Widgets-NavMenu>
+
+=item *
+
+CPAN Ratings
+
+The CPAN Ratings is a website that allows community ratings and reviews of Perl modules.
+
+L<http://cpanratings.perl.org/d/HTML-Widgets-NavMenu>
+
+=item *
+
+CPANTS
+
+The CPANTS is a website that analyzes the Kwalitee ( code metrics ) of a distribution.
+
+L<http://cpants.cpanauthors.org/dist/HTML-Widgets-NavMenu>
+
+=item *
+
+CPAN Testers
+
+The CPAN Testers is a network of smoke testers who run automated tests on uploaded CPAN distributions.
+
+L<http://www.cpantesters.org/distro/H/HTML-Widgets-NavMenu>
+
+=item *
+
+CPAN Testers Matrix
+
+The CPAN Testers Matrix is a website that provides a visual overview of the test results for a distribution on various Perls/platforms.
+
+L<http://matrix.cpantesters.org/?dist=HTML-Widgets-NavMenu>
+
+=item *
+
+CPAN Testers Dependencies
+
+The CPAN Testers Dependencies is a website that shows a chart of the test results of all dependencies for a distribution.
+
+L<http://deps.cpantesters.org/?module=HTML::Widgets::NavMenu>
+
+=back
+
+=head2 Bugs / Feature Requests
+
+Please report any bugs or feature requests by email to C<bug-html-widgets-navmenu at rt.cpan.org>, or through
+the web interface at L<https://rt.cpan.org/Public/Bug/Report.html?Queue=HTML-Widgets-NavMenu>. You will be automatically notified of any
+progress on the request by the system.
+
+=head2 Source Code
+
+The code is open to the world, and available for you to hack on. Please feel free to browse it and play
+with it, or whatever. If you want to contribute patches, please send me a diff or prod me to pull
+from your repository :)
+
+L<https://github.com/shlomif/perl-HTML-Widgets-NavMenu>
+
+  git clone git://github.com/shlomif/perl-HTML-Widgets-NavMenu.git
+
+=cut
diff --git a/lib/HTML/Widgets/NavMenu/TagGen.pm b/lib/HTML/Widgets/NavMenu/TagGen.pm
index a9f84e3..c3d27ee 100644
--- a/lib/HTML/Widgets/NavMenu/TagGen.pm
+++ b/lib/HTML/Widgets/NavMenu/TagGen.pm
@@ -1,5 +1,5 @@
 package HTML::Widgets::NavMenu::TagGen;
-
+$HTML::Widgets::NavMenu::TagGen::VERSION = '1.0704';
 use strict;
 use warnings;
 
@@ -7,18 +7,72 @@ use base 'HTML::Widgets::NavMenu::Object';
 
 use HTML::Widgets::NavMenu::EscapeHtml;
 
-__PACKAGE__->mk_acc_ref([
-    qw(name attributes)]
-);
+__PACKAGE__->mk_acc_ref( [qw(name attributes)] );
+
+
+sub _init
+{
+    my ( $self, $args ) = @_;
+
+    $self->name( $args->{'name'} );
+    $self->attributes( $args->{'attributes'} );
+
+    return 0;
+}
+
+
+sub gen
+{
+    my $self = shift;
+
+    my $attr_values = shift;
+
+    my $is_standalone = shift || 0;
+
+    my @tag_list = keys(%$attr_values);
+
+    @tag_list = ( grep { defined( $attr_values->{$_} ) } @tag_list );
+
+    @tag_list = ( sort { $a cmp $b } @tag_list );
+
+    my $attr_spec = $self->attributes();
+
+    return "<" . $self->name() . join(
+        "",
+        map {
+            " $_=\""
+                . (
+                $attr_spec->{$_}->{'escape'}
+                ? escape_html( $attr_values->{$_} )
+                : $attr_values->{$_}
+                )
+                . "\""
+        } @tag_list
+    ) . ( $is_standalone ? " /" : "" ) . ">";
+}
+
+1;
+
+__END__
+
+=pod
 
 =head1 NAME
 
 HTML::Widgets::NavMenu::TagGen - class to generate tags.
 
+=head1 VERSION
+
+version 1.0704
+
 =head1 SYNOPSIS
 
 For internal use only.
 
+=head1 VERSION
+
+version 1.0704
+
 =head1 METHODS
 
 =head2 name
@@ -29,49 +83,136 @@ For internal use.
 
 For internal use.
 
-=cut
+=head2 $self->gen($attribute_values, $is_standalone)
 
-sub _init
-{
-    my ($self, $args) = @_;
+Generate the tag.
 
-    $self->name($args->{'name'});
-    $self->attributes($args->{'attributes'});
+=head1 AUTHOR
 
-    return 0;
-}
+Shlomi Fish <shlomif@cpan.org>
 
-=head2 $self->gen($attribute_values, $is_standalone)
+=head1 COPYRIGHT AND LICENSE
 
-Generate the tag.
+This software is Copyright (c) 2014 by Shlomi Fish.
 
-=cut
+This is free software, licensed under:
 
-sub gen
-{
-    my $self = shift;
+  The MIT (X11) License
 
-    my $attr_values = shift;
+=head1 BUGS
 
-    my $is_standalone = shift || 0;
+Please report any bugs or feature requests on the bugtracker website
+L<https://github.com/shlomif/perl-HTML-Widgets-NavMenu/issues>
 
-    my @tag_list = keys(%$attr_values);
+When submitting a bug or request, please include a test-file or a
+patch to an existing test-file that illustrates the bug or desired
+feature.
 
-    @tag_list = (grep { defined($attr_values->{$_}) } @tag_list);
+=for :stopwords cpan testmatrix url annocpan anno bugtracker rt cpants kwalitee diff irc mailto metadata placeholders metacpan
 
-    @tag_list = (sort { $a cmp $b } @tag_list);
+=head1 SUPPORT
 
-    my $attr_spec = $self->attributes();
+=head2 Perldoc
 
-    return "<" . $self->name() .
-        join("", map { " $_=\"" .
-            ($attr_spec->{$_}->{'escape'} ?
-                escape_html($attr_values->{$_})
-                : $attr_values->{$_}
-            ) . "\""
-            } @tag_list) .
-        ($is_standalone ? " /" : "") . ">";
-}
+You can find documentation for this module with the perldoc command.
 
-1;
+  perldoc HTML::Widgets::NavMenu::TagGen
+
+=head2 Websites
+
+The following websites have more information about this module, and may be of help to you. As always,
+in addition to those websites please use your favorite search engine to discover more resources.
+
+=over 4
+
+=item *
+
+MetaCPAN
+
+A modern, open-source CPAN search engine, useful to view POD in HTML format.
+
+L<https://metacpan.org/release/HTML-Widgets-NavMenu>
+
+=item *
+
+Search CPAN
+
+The default CPAN search engine, useful to view POD in HTML format.
+
+L<http://search.cpan.org/dist/HTML-Widgets-NavMenu>
+
+=item *
+
+RT: CPAN's Bug Tracker
+
+The RT ( Request Tracker ) website is the default bug/issue tracking system for CPAN.
+
+L<https://rt.cpan.org/Public/Dist/Display.html?Name=HTML-Widgets-NavMenu>
+
+=item *
+
+AnnoCPAN
+
+The AnnoCPAN is a website that allows community annotations of Perl module documentation.
+
+L<http://annocpan.org/dist/HTML-Widgets-NavMenu>
+
+=item *
+
+CPAN Ratings
+
+The CPAN Ratings is a website that allows community ratings and reviews of Perl modules.
 
+L<http://cpanratings.perl.org/d/HTML-Widgets-NavMenu>
+
+=item *
+
+CPANTS
+
+The CPANTS is a website that analyzes the Kwalitee ( code metrics ) of a distribution.
+
+L<http://cpants.cpanauthors.org/dist/HTML-Widgets-NavMenu>
+
+=item *
+
+CPAN Testers
+
+The CPAN Testers is a network of smoke testers who run automated tests on uploaded CPAN distributions.
+
+L<http://www.cpantesters.org/distro/H/HTML-Widgets-NavMenu>
+
+=item *
+
+CPAN Testers Matrix
+
+The CPAN Testers Matrix is a website that provides a visual overview of the test results for a distribution on various Perls/platforms.
+
+L<http://matrix.cpantesters.org/?dist=HTML-Widgets-NavMenu>
+
+=item *
+
+CPAN Testers Dependencies
+
+The CPAN Testers Dependencies is a website that shows a chart of the test results of all dependencies for a distribution.
+
+L<http://deps.cpantesters.org/?module=HTML::Widgets::NavMenu>
+
+=back
+
+=head2 Bugs / Feature Requests
+
+Please report any bugs or feature requests by email to C<bug-html-widgets-navmenu at rt.cpan.org>, or through
+the web interface at L<https://rt.cpan.org/Public/Bug/Report.html?Queue=HTML-Widgets-NavMenu>. You will be automatically notified of any
+progress on the request by the system.
+
+=head2 Source Code
+
+The code is open to the world, and available for you to hack on. Please feel free to browse it and play
+with it, or whatever. If you want to contribute patches, please send me a diff or prod me to pull
+from your repository :)
+
+L<https://github.com/shlomif/perl-HTML-Widgets-NavMenu>
+
+  git clone git://github.com/shlomif/perl-HTML-Widgets-NavMenu.git
+
+=cut
diff --git a/lib/HTML/Widgets/NavMenu/Tree/Iterator.pm b/lib/HTML/Widgets/NavMenu/Tree/Iterator.pm
index 322adef..c423e4e 100644
--- a/lib/HTML/Widgets/NavMenu/Tree/Iterator.pm
+++ b/lib/HTML/Widgets/NavMenu/Tree/Iterator.pm
@@ -1,5 +1,5 @@
 package HTML::Widgets::NavMenu::Tree::Iterator;
-
+$HTML::Widgets::NavMenu::Tree::Iterator::VERSION = '1.0704';
 use strict;
 use warnings;
 
@@ -8,47 +8,26 @@ use base qw(HTML::Widgets::NavMenu::Object);
 use HTML::Widgets::NavMenu::Tree::Iterator::Stack;
 use HTML::Widgets::NavMenu::Tree::Iterator::Item;
 
-__PACKAGE__->mk_acc_ref([qw(
-    coords
-    stack
-    )]);
-
-=head1 NAME
-
-HTML::Widgets::NavMenu::Tree::Iterator - an iterator for HTML.
-
-=head1 SYNOPSIS
-
-For internal use only.
-
-=head1 METHODS
-
-=head2 coords
-
-Internal use.
-
-=head2 stack
-
-Internal use.
-
-=cut
-
+__PACKAGE__->mk_acc_ref(
+    [
+        qw(
+            coords
+            stack
+            )
+    ]
+);
 
 
 sub _init
 {
     my $self = shift;
 
-    $self->stack(HTML::Widgets::NavMenu::Tree::Iterator::Stack->new());
+    $self->stack( HTML::Widgets::NavMenu::Tree::Iterator::Stack->new() );
 
     return 0;
 }
 
-=head2 $self->top()
-
-Retrieves the stack top item.
 
-=cut
 sub top
 {
     my $self = shift;
@@ -57,40 +36,31 @@ sub top
 
 sub _construct_new_item
 {
-    my ($self, $args) = @_;
+    my ( $self, $args ) = @_;
 
-    return HTML::Widgets::NavMenu::Tree::Iterator::Item->new(
-        $args
-    );
+    return HTML::Widgets::NavMenu::Tree::Iterator::Item->new($args);
 }
 
-=head2 $self->get_new_item({'node' => $node, 'parent_item' => $parent})
-
-Gets the new item.
-
-=cut
 
 sub get_new_item
 {
-    my ($self, $args) = @_;
+    my ( $self, $args ) = @_;
 
-    my $node = $args->{'node'};
+    my $node        = $args->{'node'};
     my $parent_item = $args->{'parent_item'};
 
-    return
-        $self->_construct_new_item(
-            {
-                'node' => $node,
-                'subs' => $self->get_node_subs( { 'node' => $node } ),
-                'accum_state' =>
-                    $self->get_new_accum_state(
-                        {
-                            'item' => $parent_item,
-                            'node' => $node,
-                        }
-                    ),
-            }
-        );
+    return $self->_construct_new_item(
+        {
+            'node'        => $node,
+            'subs'        => $self->get_node_subs( { 'node' => $node } ),
+            'accum_state' => $self->get_new_accum_state(
+                {
+                    'item' => $parent_item,
+                    'node' => $node,
+                }
+            ),
+        }
+    );
 }
 
 sub _push_into_stack
@@ -102,51 +72,47 @@ sub _push_into_stack
     $self->stack()->push(
         $self->get_new_item(
             {
-                'node' => $node,
+                'node'        => $node,
                 'parent_item' => $self->top(),
             }
         ),
     );
 }
 
-=head2 $self->traverse()
-
-Traverses the tree.
-
-=cut
 
 sub traverse
 {
     my $self = shift;
 
-    $self->_push_into_stack($self->get_initial_node());
+    $self->_push_into_stack( $self->get_initial_node() );
 
-    $self->coords([]);
+    $self->coords( [] );
 
     my $top_item;
 
-    MAIN_LOOP: while ($top_item = $self->top())
+MAIN_LOOP: while ( $top_item = $self->top() )
     {
         my $visited = $top_item->_is_visited();
 
-        if (!$visited)
+        if ( !$visited )
         {
             $self->node_start();
         }
 
-        my $sub_item =
-            ($self->node_should_recurse() ?
-                $top_item->_visit() :
-                undef);
+        my $sub_item = (
+              $self->node_should_recurse()
+            ? $top_item->_visit()
+            : undef
+        );
 
-        if (defined($sub_item))
+        if ( defined($sub_item) )
         {
-            push @{$self->coords()}, $top_item->_visited_index();
+            push @{ $self->coords() }, $top_item->_visited_index();
             $self->_push_into_stack(
                 $self->get_node_from_sub(
                     {
                         'item' => $top_item,
-                        'sub' => $sub_item,
+                        'sub'  => $sub_item,
                     }
                 ),
             );
@@ -156,19 +122,13 @@ sub traverse
         {
             $self->node_end();
             $self->stack->pop();
-            pop(@{$self->coords()})
+            pop( @{ $self->coords() } );
         }
     }
 
     return 0;
 }
 
-=head2 $self->get_node_from_sub()
-
-This function can be overridden to generate a node from the sub-nodes
-returned by get_node_subs() in a different way than the default.
-
-=cut
 
 sub get_node_from_sub
 {
@@ -178,62 +138,48 @@ sub get_node_from_sub
     return $args->{'sub'};
 }
 
-=head2 $self->find_node_by_coords($coords, $callback)
-
-Finds a node by its coordinations.
-
-=cut
 
 sub find_node_by_coords
 {
-    my $self = shift;
-    my $coords = shift;
-    my $callback = shift || (sub { });
+    my $self     = shift;
+    my $coords   = shift;
+    my $callback = shift || ( sub { } );
 
-    my $idx = 0;
-    my $item =
-        $self->get_new_item(
-            {
-                'node' => $self->get_initial_node(),
-            }
-        );
+    my $idx  = 0;
+    my $item = $self->get_new_item(
+        {
+            'node' => $self->get_initial_node(),
+        }
+    );
 
-    my $internal_callback =
-        sub {
-            $callback->(
-                'idx' => $idx,
-                'item' => $item,
-                'self' => $self,
-            );
-        };
+    my $internal_callback = sub {
+        $callback->(
+            'idx'  => $idx,
+            'item' => $item,
+            'self' => $self,
+        );
+    };
 
     $internal_callback->();
     foreach my $c (@$coords)
     {
-        $item =
-            $self->get_new_item(
-                {
-                    'node' =>
-                    $self->get_node_from_sub(
-                        {
-                            'item' => $item,
-                            'sub' => $item->_get_sub($c),
-                        }
-                    ),
-                    'parent_item' => $item,
-                }
-            );
+        $item = $self->get_new_item(
+            {
+                'node' => $self->get_node_from_sub(
+                    {
+                        'item' => $item,
+                        'sub'  => $item->_get_sub($c),
+                    }
+                ),
+                'parent_item' => $item,
+            }
+        );
         $idx++;
         $internal_callback->();
     }
     return +{ 'item' => $item, };
 }
 
-=head2 $self->get_coords()
-
-Returns the current coordinates of the object.
-
-=cut
 
 sub get_coords
 {
@@ -242,13 +188,196 @@ sub get_coords
     return $self->coords();
 }
 
+
+1;
+
+__END__
+
+=pod
+
+=head1 NAME
+
+HTML::Widgets::NavMenu::Tree::Iterator - an iterator for HTML.
+
+=head1 VERSION
+
+version 1.0704
+
+=head1 SYNOPSIS
+
+For internal use only.
+
+=head1 VERSION
+
+version 1.0704
+
+=head1 METHODS
+
+=head2 coords
+
+Internal use.
+
+=head2 stack
+
+Internal use.
+
+=head2 $self->top()
+
+Retrieves the stack top item.
+
+=head2 $self->get_new_item({'node' => $node, 'parent_item' => $parent})
+
+Gets the new item.
+
+=head2 $self->traverse()
+
+Traverses the tree.
+
+=head2 $self->get_node_from_sub()
+
+This function can be overridden to generate a node from the sub-nodes
+returned by get_node_subs() in a different way than the default.
+
+=head2 $self->find_node_by_coords($coords, $callback)
+
+Finds a node by its coordinations.
+
+=head2 $self->get_coords()
+
+Returns the current coordinates of the object.
+
 =head1 COPYRIGHT & LICENSE
 
 Copyright 2006 Shlomi Fish, all rights reserved.
 
 This program is released under the following license: MIT X11.
 
-=cut
+=head1 AUTHOR
 
-1;
+Shlomi Fish <shlomif@cpan.org>
+
+=head1 COPYRIGHT AND LICENSE
+
+This software is Copyright (c) 2014 by Shlomi Fish.
+
+This is free software, licensed under:
+
+  The MIT (X11) License
+
+=head1 BUGS
+
+Please report any bugs or feature requests on the bugtracker website
+L<https://github.com/shlomif/perl-HTML-Widgets-NavMenu/issues>
+
+When submitting a bug or request, please include a test-file or a
+patch to an existing test-file that illustrates the bug or desired
+feature.
+
+=for :stopwords cpan testmatrix url annocpan anno bugtracker rt cpants kwalitee diff irc mailto metadata placeholders metacpan
+
+=head1 SUPPORT
+
+=head2 Perldoc
+
+You can find documentation for this module with the perldoc command.
 
+  perldoc HTML::Widgets::NavMenu::Tree::Iterator
+
+=head2 Websites
+
+The following websites have more information about this module, and may be of help to you. As always,
+in addition to those websites please use your favorite search engine to discover more resources.
+
+=over 4
+
+=item *
+
+MetaCPAN
+
+A modern, open-source CPAN search engine, useful to view POD in HTML format.
+
+L<https://metacpan.org/release/HTML-Widgets-NavMenu>
+
+=item *
+
+Search CPAN
+
+The default CPAN search engine, useful to view POD in HTML format.
+
+L<http://search.cpan.org/dist/HTML-Widgets-NavMenu>
+
+=item *
+
+RT: CPAN's Bug Tracker
+
+The RT ( Request Tracker ) website is the default bug/issue tracking system for CPAN.
+
+L<https://rt.cpan.org/Public/Dist/Display.html?Name=HTML-Widgets-NavMenu>
+
+=item *
+
+AnnoCPAN
+
+The AnnoCPAN is a website that allows community annotations of Perl module documentation.
+
+L<http://annocpan.org/dist/HTML-Widgets-NavMenu>
+
+=item *
+
+CPAN Ratings
+
+The CPAN Ratings is a website that allows community ratings and reviews of Perl modules.
+
+L<http://cpanratings.perl.org/d/HTML-Widgets-NavMenu>
+
+=item *
+
+CPANTS
+
+The CPANTS is a website that analyzes the Kwalitee ( code metrics ) of a distribution.
+
+L<http://cpants.cpanauthors.org/dist/HTML-Widgets-NavMenu>
+
+=item *
+
+CPAN Testers
+
+The CPAN Testers is a network of smoke testers who run automated tests on uploaded CPAN distributions.
+
+L<http://www.cpantesters.org/distro/H/HTML-Widgets-NavMenu>
+
+=item *
+
+CPAN Testers Matrix
+
+The CPAN Testers Matrix is a website that provides a visual overview of the test results for a distribution on various Perls/platforms.
+
+L<http://matrix.cpantesters.org/?dist=HTML-Widgets-NavMenu>
+
+=item *
+
+CPAN Testers Dependencies
+
+The CPAN Testers Dependencies is a website that shows a chart of the test results of all dependencies for a distribution.
+
+L<http://deps.cpantesters.org/?module=HTML::Widgets::NavMenu>
+
+=back
+
+=head2 Bugs / Feature Requests
+
+Please report any bugs or feature requests by email to C<bug-html-widgets-navmenu at rt.cpan.org>, or through
+the web interface at L<https://rt.cpan.org/Public/Bug/Report.html?Queue=HTML-Widgets-NavMenu>. You will be automatically notified of any
+progress on the request by the system.
+
+=head2 Source Code
+
+The code is open to the world, and available for you to hack on. Please feel free to browse it and play
+with it, or whatever. If you want to contribute patches, please send me a diff or prod me to pull
+from your repository :)
+
+L<https://github.com/shlomif/perl-HTML-Widgets-NavMenu>
+
+  git clone git://github.com/shlomif/perl-HTML-Widgets-NavMenu.git
+
+=cut
diff --git a/lib/HTML/Widgets/NavMenu/Tree/Iterator/Item.pm b/lib/HTML/Widgets/NavMenu/Tree/Iterator/Item.pm
index b095903..4a1a777 100644
--- a/lib/HTML/Widgets/NavMenu/Tree/Iterator/Item.pm
+++ b/lib/HTML/Widgets/NavMenu/Tree/Iterator/Item.pm
@@ -1,43 +1,38 @@
 package HTML::Widgets::NavMenu::Tree::Iterator::Item;
-
+$HTML::Widgets::NavMenu::Tree::Iterator::Item::VERSION = '1.0704';
 use strict;
 use warnings;
 
 use base qw(HTML::Widgets::NavMenu::Object);
 
-__PACKAGE__->mk_acc_ref([qw(
-    _node
-    _subs
-    _sub_idx
-    _visited
-    _accum_state
-)]);
-
-=head1 NAME
-
-HTML::Widgets::NavMenu::Tree::Iterator::Item - an item for the tree iterator.
-
-=head1 SYNOPSIS
-
-For internal use only.
+__PACKAGE__->mk_acc_ref(
+    [
+        qw(
+            _node
+            _subs
+            _sub_idx
+            _visited
+            _accum_state
+            )
+    ]
+);
 
-=cut
 
 sub _init
 {
-    my ($self, $args) = @_;
+    my ( $self, $args ) = @_;
 
-    $self->_node($args->{'node'}) or
-        die "node not specified!";
+    $self->_node( $args->{'node'} )
+        or die "node not specified!";
 
-    $self->_subs($args->{'subs'}) or
-        die "subs not specified!";
+    $self->_subs( $args->{'subs'} )
+        or die "subs not specified!";
 
     $self->_sub_idx(-1);
     $self->_visited(0);
 
-    $self->_accum_state($args->{'accum_state'}) or
-        die "accum_state not specified!";
+    $self->_accum_state( $args->{'accum_state'} )
+        or die "accum_state not specified!";
 
     return 0;
 }
@@ -54,13 +49,13 @@ sub _visit
 
     $self->_visited(1);
 
-    if ($self->_num_subs_to_go())
+    if ( $self->_num_subs_to_go() )
     {
-        return $self->_subs()->[$self->_sub_idx($self->_sub_idx()+1)];
+        return $self->_subs()->[ $self->_sub_idx( $self->_sub_idx() + 1 ) ];
     }
     else
     {
-        return undef;
+        return;
     }
 }
 
@@ -80,28 +75,177 @@ sub _num_subs_to_go
 sub _num_subs
 {
     my $self = shift;
-    return scalar(@{$self->_subs()});
+    return scalar( @{ $self->_subs() } );
 }
 
 sub _get_sub
 {
-    my $self = shift;
+    my $self    = shift;
     my $sub_num = shift;
 
     return $self->_subs()->[$sub_num];
 }
 
-sub _li_id {
+sub _li_id
+{
     return shift->_node->li_id();
 }
 
+
+1;
+
+__END__
+
+=pod
+
+=head1 NAME
+
+HTML::Widgets::NavMenu::Tree::Iterator::Item - an item for the tree iterator.
+
+=head1 VERSION
+
+version 1.0704
+
+=head1 SYNOPSIS
+
+For internal use only.
+
+=head1 VERSION
+
+version 1.0704
+
 =head1 COPYRIGHT & LICENSE
 
 Copyright 2006 Shlomi Fish, all rights reserved.
 
 This program is released under the following license: MIT X11.
 
-=cut
+=head1 AUTHOR
 
-1;
+Shlomi Fish <shlomif@cpan.org>
+
+=head1 COPYRIGHT AND LICENSE
+
+This software is Copyright (c) 2014 by Shlomi Fish.
+
+This is free software, licensed under:
+
+  The MIT (X11) License
+
+=head1 BUGS
+
+Please report any bugs or feature requests on the bugtracker website
+L<https://github.com/shlomif/perl-HTML-Widgets-NavMenu/issues>
+
+When submitting a bug or request, please include a test-file or a
+patch to an existing test-file that illustrates the bug or desired
+feature.
+
+=for :stopwords cpan testmatrix url annocpan anno bugtracker rt cpants kwalitee diff irc mailto metadata placeholders metacpan
+
+=head1 SUPPORT
+
+=head2 Perldoc
+
+You can find documentation for this module with the perldoc command.
+
+  perldoc HTML::Widgets::NavMenu::Tree::Iterator::Item
+
+=head2 Websites
+
+The following websites have more information about this module, and may be of help to you. As always,
+in addition to those websites please use your favorite search engine to discover more resources.
 
+=over 4
+
+=item *
+
+MetaCPAN
+
+A modern, open-source CPAN search engine, useful to view POD in HTML format.
+
+L<https://metacpan.org/release/HTML-Widgets-NavMenu>
+
+=item *
+
+Search CPAN
+
+The default CPAN search engine, useful to view POD in HTML format.
+
+L<http://search.cpan.org/dist/HTML-Widgets-NavMenu>
+
+=item *
+
+RT: CPAN's Bug Tracker
+
+The RT ( Request Tracker ) website is the default bug/issue tracking system for CPAN.
+
+L<https://rt.cpan.org/Public/Dist/Display.html?Name=HTML-Widgets-NavMenu>
+
+=item *
+
+AnnoCPAN
+
+The AnnoCPAN is a website that allows community annotations of Perl module documentation.
+
+L<http://annocpan.org/dist/HTML-Widgets-NavMenu>
+
+=item *
+
+CPAN Ratings
+
+The CPAN Ratings is a website that allows community ratings and reviews of Perl modules.
+
+L<http://cpanratings.perl.org/d/HTML-Widgets-NavMenu>
+
+=item *
+
+CPANTS
+
+The CPANTS is a website that analyzes the Kwalitee ( code metrics ) of a distribution.
+
+L<http://cpants.cpanauthors.org/dist/HTML-Widgets-NavMenu>
+
+=item *
+
+CPAN Testers
+
+The CPAN Testers is a network of smoke testers who run automated tests on uploaded CPAN distributions.
+
+L<http://www.cpantesters.org/distro/H/HTML-Widgets-NavMenu>
+
+=item *
+
+CPAN Testers Matrix
+
+The CPAN Testers Matrix is a website that provides a visual overview of the test results for a distribution on various Perls/platforms.
+
+L<http://matrix.cpantesters.org/?dist=HTML-Widgets-NavMenu>
+
+=item *
+
+CPAN Testers Dependencies
+
+The CPAN Testers Dependencies is a website that shows a chart of the test results of all dependencies for a distribution.
+
+L<http://deps.cpantesters.org/?module=HTML::Widgets::NavMenu>
+
+=back
+
+=head2 Bugs / Feature Requests
+
+Please report any bugs or feature requests by email to C<bug-html-widgets-navmenu at rt.cpan.org>, or through
+the web interface at L<https://rt.cpan.org/Public/Bug/Report.html?Queue=HTML-Widgets-NavMenu>. You will be automatically notified of any
+progress on the request by the system.
+
+=head2 Source Code
+
+The code is open to the world, and available for you to hack on. Please feel free to browse it and play
+with it, or whatever. If you want to contribute patches, please send me a diff or prod me to pull
+from your repository :)
+
+L<https://github.com/shlomif/perl-HTML-Widgets-NavMenu>
+
+  git clone git://github.com/shlomif/perl-HTML-Widgets-NavMenu.git
+
+=cut
diff --git a/lib/HTML/Widgets/NavMenu/Tree/Iterator/Stack.pm b/lib/HTML/Widgets/NavMenu/Tree/Iterator/Stack.pm
index 0b41fce..637aa76 100644
--- a/lib/HTML/Widgets/NavMenu/Tree/Iterator/Stack.pm
+++ b/lib/HTML/Widgets/NavMenu/Tree/Iterator/Stack.pm
@@ -1,11 +1,11 @@
 package HTML::Widgets::NavMenu::Tree::Iterator::Stack;
-
+$HTML::Widgets::NavMenu::Tree::Iterator::Stack::VERSION = '1.0704';
 use strict;
 use warnings;
 
 use base qw(HTML::Widgets::NavMenu::Object);
 
-__PACKAGE__->mk_acc_ref([qw(_items)]);
+__PACKAGE__->mk_acc_ref( [qw(_items)] );
 
 sub _init
 {
@@ -16,45 +16,25 @@ sub _init
     return 0;
 }
 
-=head1 NAME
-
-HTML::Widgets::NavMenu::Tree::Iterator::Stack - a simple stack class.
-
-=head1 SYNOPSIS
-
-For internal use only.
-
-=head1 METHODS
-=cut
 
 sub push
 {
     my $self = shift;
     my $item = shift;
 
-    push @{$self->_items()}, $item;
+    push @{ $self->_items() }, $item;
 
     return 0;
 }
 
-=head2 $s->push($myitem)
-
-Pushes an item.
-
-=cut
 
 sub len
 {
     my $self = shift;
 
-    return scalar(@{$self->_items()});
+    return scalar( @{ $self->_items() } );
 }
 
-=head2 $s->len($myitem)
-
-Returns the number of elements.
-
-=cut
 
 sub top
 {
@@ -62,59 +42,87 @@ sub top
     return $self->_items->[-1];
 }
 
-=head2 $s->top()
-
-Returns the highest item.
-
-=cut
-
 
 sub item
 {
-    my $self = shift;
+    my $self  = shift;
     my $index = shift;
     return $self->_items->[$index];
 }
 
-=head2 my $item = $s->item($index)
-
-Returns the item of index C<$index>.
-
-=cut
 
 sub pop
 {
     my $self = shift;
-    return pop(@{$self->_items()});
+    return pop( @{ $self->_items() } );
 }
 
-=head2 my $item = $s->pop()
-
-Pops the item and returns it.
-
-=cut
 
 sub is_empty
 {
     my $self = shift;
-    return ($self->len() == 0);
+    return ( $self->len() == 0 );
 }
 
-=head2 my $bool = $s->is_empty()
-
-Returns true if the stack is empty.
-
-=cut
 
 sub reset
 {
     my $self = shift;
 
-    $self->_items([]);
+    $self->_items( [] );
 
     return 0;
 }
 
+
+1;
+
+__END__
+
+=pod
+
+=head1 NAME
+
+HTML::Widgets::NavMenu::Tree::Iterator::Stack - a simple stack class.
+
+=head1 VERSION
+
+version 1.0704
+
+=head1 SYNOPSIS
+
+For internal use only.
+
+=head1 VERSION
+
+version 1.0704
+
+=head1 METHODS
+
+=head2 $s->push($myitem)
+
+Pushes an item.
+
+=head2 $s->len($myitem)
+
+Returns the number of elements.
+
+=head2 $s->top()
+
+Returns the highest item.
+
+=head2 my $item = $s->item($index)
+
+Returns the item of index C<$index>.
+
+=head2 my $item = $s->pop()
+
+Pops the item and returns it.
+
+=head2 my $bool = $s->is_empty()
+
+Returns true if the stack is empty.
+
 =head2 $s->reset();
 
 Empties the stack
@@ -125,7 +133,132 @@ Copyright 2006 Shlomi Fish, all rights reserved.
 
 This program is released under the following license: MIT X11.
 
-=cut
+=head1 AUTHOR
 
-1;
+Shlomi Fish <shlomif@cpan.org>
+
+=head1 COPYRIGHT AND LICENSE
+
+This software is Copyright (c) 2014 by Shlomi Fish.
+
+This is free software, licensed under:
+
+  The MIT (X11) License
+
+=head1 BUGS
+
+Please report any bugs or feature requests on the bugtracker website
+L<https://github.com/shlomif/perl-HTML-Widgets-NavMenu/issues>
+
+When submitting a bug or request, please include a test-file or a
+patch to an existing test-file that illustrates the bug or desired
+feature.
+
+=for :stopwords cpan testmatrix url annocpan anno bugtracker rt cpants kwalitee diff irc mailto metadata placeholders metacpan
+
+=head1 SUPPORT
+
+=head2 Perldoc
+
+You can find documentation for this module with the perldoc command.
+
+  perldoc HTML::Widgets::NavMenu::Tree::Iterator::Stack
+
+=head2 Websites
+
+The following websites have more information about this module, and may be of help to you. As always,
+in addition to those websites please use your favorite search engine to discover more resources.
+
+=over 4
+
+=item *
+
+MetaCPAN
+
+A modern, open-source CPAN search engine, useful to view POD in HTML format.
+
+L<https://metacpan.org/release/HTML-Widgets-NavMenu>
+
+=item *
+
+Search CPAN
+
+The default CPAN search engine, useful to view POD in HTML format.
+
+L<http://search.cpan.org/dist/HTML-Widgets-NavMenu>
 
+=item *
+
+RT: CPAN's Bug Tracker
+
+The RT ( Request Tracker ) website is the default bug/issue tracking system for CPAN.
+
+L<https://rt.cpan.org/Public/Dist/Display.html?Name=HTML-Widgets-NavMenu>
+
+=item *
+
+AnnoCPAN
+
+The AnnoCPAN is a website that allows community annotations of Perl module documentation.
+
+L<http://annocpan.org/dist/HTML-Widgets-NavMenu>
+
+=item *
+
+CPAN Ratings
+
+The CPAN Ratings is a website that allows community ratings and reviews of Perl modules.
+
+L<http://cpanratings.perl.org/d/HTML-Widgets-NavMenu>
+
+=item *
+
+CPANTS
+
+The CPANTS is a website that analyzes the Kwalitee ( code metrics ) of a distribution.
+
+L<http://cpants.cpanauthors.org/dist/HTML-Widgets-NavMenu>
+
+=item *
+
+CPAN Testers
+
+The CPAN Testers is a network of smoke testers who run automated tests on uploaded CPAN distributions.
+
+L<http://www.cpantesters.org/distro/H/HTML-Widgets-NavMenu>
+
+=item *
+
+CPAN Testers Matrix
+
+The CPAN Testers Matrix is a website that provides a visual overview of the test results for a distribution on various Perls/platforms.
+
+L<http://matrix.cpantesters.org/?dist=HTML-Widgets-NavMenu>
+
+=item *
+
+CPAN Testers Dependencies
+
+The CPAN Testers Dependencies is a website that shows a chart of the test results of all dependencies for a distribution.
+
+L<http://deps.cpantesters.org/?module=HTML::Widgets::NavMenu>
+
+=back
+
+=head2 Bugs / Feature Requests
+
+Please report any bugs or feature requests by email to C<bug-html-widgets-navmenu at rt.cpan.org>, or through
+the web interface at L<https://rt.cpan.org/Public/Bug/Report.html?Queue=HTML-Widgets-NavMenu>. You will be automatically notified of any
+progress on the request by the system.
+
+=head2 Source Code
+
+The code is open to the world, and available for you to hack on. Please feel free to browse it and play
+with it, or whatever. If you want to contribute patches, please send me a diff or prod me to pull
+from your repository :)
+
+L<https://github.com/shlomif/perl-HTML-Widgets-NavMenu>
+
+  git clone git://github.com/shlomif/perl-HTML-Widgets-NavMenu.git
+
+=cut
diff --git a/lib/HTML/Widgets/NavMenu/Tree/Node.pm b/lib/HTML/Widgets/NavMenu/Tree/Node.pm
index 1c7ce8c..f2456ed 100644
--- a/lib/HTML/Widgets/NavMenu/Tree/Node.pm
+++ b/lib/HTML/Widgets/NavMenu/Tree/Node.pm
@@ -1,27 +1,178 @@
 package HTML::Widgets::NavMenu::Tree::Node;
-
+$HTML::Widgets::NavMenu::Tree::Node::VERSION = '1.0704';
 use strict;
 use warnings;
 
 use base 'HTML::Widgets::NavMenu::Object';
 
-__PACKAGE__->mk_acc_ref([
-    qw(
-    CurrentlyActive expanded hide host li_id role rec_url_type
-    separator show_always skip subs text title url url_is_abs url_type
-    )]
-    );
+__PACKAGE__->mk_acc_ref(
+    [
+        qw(
+            CurrentlyActive expanded hide host li_id role rec_url_type
+            separator show_always skip subs text title url url_is_abs url_type
+            )
+    ]
+);
 
 use HTML::Widgets::NavMenu::ExpandVal;
 
+
+sub _init
+{
+    my $self = shift;
+
+    $self->subs( [] );
+
+    return $self;
+}
+
+
+sub expand
+{
+    my $self = shift;
+    my $v =
+        @_
+        ? ( shift(@_) )
+        : HTML::Widgets::NavMenu::ExpandVal->new( { capture => 1 } );
+
+    # Don't set it to something if it's already capture_expanded(),
+    # otherwise it can set as a non-capturing expansion.
+    if ( !$self->capture_expanded() )
+    {
+        $self->expanded($v);
+    }
+    return 0;
+}
+
+
+sub mark_as_current
+{
+    my $self = shift;
+    $self->expand();
+    $self->CurrentlyActive(1);
+    return 0;
+}
+
+sub _process_new_sub
+{
+    my $self = shift;
+    my $sub  = shift;
+    $self->update_based_on_sub($sub);
+}
+
+
+sub update_based_on_sub
+{
+    my $self = shift;
+    my $sub  = shift;
+    if ( my $expand_val = $sub->expanded() )
+    {
+        $self->expand($expand_val);
+    }
+}
+
+
+sub add_sub
+{
+    my $self = shift;
+    my $sub  = shift;
+    push( @{ $self->subs }, $sub );
+    $self->_process_new_sub($sub);
+    return 0;
+}
+
+
+sub get_nth_sub
+{
+    my $self = shift;
+    my $idx  = shift;
+    return $self->subs()->[$idx];
+}
+
+sub _num_subs
+{
+    my $self = shift;
+    return scalar( @{ $self->subs() } );
+}
+
+
+sub list_regular_keys
+{
+    my $self = shift;
+
+    return (
+        qw(host li_id rec_url_type role show_always text title url url_type));
+}
+
+
+sub list_boolean_keys
+{
+    my $self = shift;
+
+    return (qw(hide separator skip url_is_abs));
+}
+
+
+sub set_values_from_hash_ref
+{
+    my $self         = shift;
+    my $sub_contents = shift;
+
+    foreach my $key ( $self->list_regular_keys() )
+    {
+        if ( exists( $sub_contents->{$key} ) )
+        {
+            $self->$key( $sub_contents->{$key} );
+        }
+    }
+
+    foreach my $key ( $self->list_boolean_keys() )
+    {
+        if ( $sub_contents->{$key} )
+        {
+            $self->$key(1);
+        }
+    }
+}
+
+
+sub capture_expanded
+{
+    my $self = shift;
+
+    if ( my $e = $self->expanded() )
+    {
+        return $e->is_capturing();
+    }
+    else
+    {
+        return;
+    }
+}
+
+
+1;
+
+__END__
+
+=pod
+
 =head1 NAME
 
 HTML::Widgets::NavMenu::Tree::Node - an iterator for HTML.
 
+=head1 VERSION
+
+version 1.0704
+
 =head1 SYNOPSIS
 
 For internal use only.
 
+=head1 VERSION
+
+version 1.0704
+
 =head1 METHODS
 
 =head2 CurrentlyActive
@@ -92,189 +243,174 @@ Internal use.
 
 Internal use.
 
-=cut
+=head2 $self->expand()
 
-sub _init
-{
-    my $self = shift;
+Expands the node.
 
-    $self->subs([]);
+=head2 $self->mark_as_current()
 
-    return $self;
-}
+Marks the node as the current node.
 
-=head2 $self->expand()
+=head2 $self->update_based_on_sub
 
-Expands the node.
+Propagate changes.
 
-=cut
+=head2 $self->add_sub()
 
-sub expand
-{
-    my $self = shift;
-    my $v = @_ ? (shift(@_)) :
-        HTML::Widgets::NavMenu::ExpandVal->new({capture => 1})
-        ;
-    # Don't set it to something if it's already capture_expanded(),
-    # otherwise it can set as a non-capturing expansion.
-    if (! $self->capture_expanded())
-    {
-        $self->expanded($v);
-    }
-    return 0;
-}
+Adds a new subroutine.
 
-=head2 $self->mark_as_current()
+=head2 $self->get_nth_sub($idx)
 
-Marks the node as the current node.
+Get the $idx sub.
 
-=cut
+=head2 $self->list_regular_keys()
 
-sub mark_as_current
-{
-    my $self = shift;
-    $self->expand();
-    $self->CurrentlyActive(1);
-    return 0;
-}
+Customisation to list the regular keys.
 
-sub _process_new_sub
-{
-    my $self = shift;
-    my $sub = shift;
-    $self->update_based_on_sub($sub);
-}
+=head2 $self->list_boolean_keys()
 
-=head2 $self->update_based_on_sub
+Customisation to list the boolean keys.
 
-Propagate changes.
+=head2 $self->set_values_from_hash_ref($hash)
 
-=cut
+Set the values from the hash ref.
 
-sub update_based_on_sub
-{
-    my $self = shift;
-    my $sub = shift;
-    if (my $expand_val = $sub->expanded())
-    {
-        $self->expand($expand_val);
-    }
-}
+=head2 my $bool = $self->capture_expanded()
 
-=head2 $self->add_sub()
+Tests whether the node is expanded and in a capturing way.
 
-Adds a new subroutine.
+=head1 COPYRIGHT & LICENSE
 
-=cut
+Copyright 2006 Shlomi Fish, all rights reserved.
 
-sub add_sub
-{
-    my $self = shift;
-    my $sub = shift;
-    push (@{$self->subs}, $sub);
-    $self->_process_new_sub($sub);
-    return 0;
-}
+This program is released under the following license: MIT X11.
 
-=head2 $self->get_nth_sub($idx)
+=head1 AUTHOR
 
-Get the $idx sub.
+Shlomi Fish <shlomif@cpan.org>
 
-=cut
+=head1 COPYRIGHT AND LICENSE
 
-sub get_nth_sub
-{
-    my $self = shift;
-    my $idx = shift;
-    return $self->subs()->[$idx];
-}
+This software is Copyright (c) 2014 by Shlomi Fish.
 
-sub _num_subs
-{
-    my $self = shift;
-    return scalar(@{$self->subs()});
-}
+This is free software, licensed under:
 
-=head2 $self->list_regular_keys()
+  The MIT (X11) License
 
-Customisation to list the regular keys.
+=head1 BUGS
 
-=cut
+Please report any bugs or feature requests on the bugtracker website
+L<https://github.com/shlomif/perl-HTML-Widgets-NavMenu/issues>
 
-sub list_regular_keys
-{
-    my $self = shift;
+When submitting a bug or request, please include a test-file or a
+patch to an existing test-file that illustrates the bug or desired
+feature.
 
-    return (qw(host li_id rec_url_type role show_always text title url url_type));
-}
+=for :stopwords cpan testmatrix url annocpan anno bugtracker rt cpants kwalitee diff irc mailto metadata placeholders metacpan
 
-=head2 $self->list_boolean_keys()
+=head1 SUPPORT
 
-Customisation to list the boolean keys.
+=head2 Perldoc
 
-=cut
+You can find documentation for this module with the perldoc command.
 
-sub list_boolean_keys
-{
-    my $self = shift;
+  perldoc HTML::Widgets::NavMenu::Tree::Node
 
-    return (qw(hide separator skip url_is_abs));
-}
+=head2 Websites
 
-=head2 $self->set_values_from_hash_ref($hash)
+The following websites have more information about this module, and may be of help to you. As always,
+in addition to those websites please use your favorite search engine to discover more resources.
 
-Set the values from the hash ref.
+=over 4
 
-=cut
+=item *
 
-sub set_values_from_hash_ref
-{
-    my $self = shift;
-    my $sub_contents = shift;
+MetaCPAN
 
-    foreach my $key ($self->list_regular_keys())
-    {
-        if (exists($sub_contents->{$key}))
-        {
-            $self->$key($sub_contents->{$key});
-        }
-    }
+A modern, open-source CPAN search engine, useful to view POD in HTML format.
 
-    foreach my $key ($self->list_boolean_keys())
-    {
-        if ($sub_contents->{$key})
-        {
-            $self->$key(1);
-        }
-    }
-}
+L<https://metacpan.org/release/HTML-Widgets-NavMenu>
 
-=head2 my $bool = $self->capture_expanded()
+=item *
 
-Tests whether the node is expanded and in a capturing way.
+Search CPAN
 
-=cut
+The default CPAN search engine, useful to view POD in HTML format.
 
-sub capture_expanded
-{
-    my $self = shift;
+L<http://search.cpan.org/dist/HTML-Widgets-NavMenu>
 
-    if (my $e = $self->expanded())
-    {
-        return $e->is_capturing();
-    }
-    else
-    {
-        return;
-    }
-}
+=item *
 
-=head1 COPYRIGHT & LICENSE
+RT: CPAN's Bug Tracker
 
-Copyright 2006 Shlomi Fish, all rights reserved.
+The RT ( Request Tracker ) website is the default bug/issue tracking system for CPAN.
 
-This program is released under the following license: MIT X11.
+L<https://rt.cpan.org/Public/Dist/Display.html?Name=HTML-Widgets-NavMenu>
 
-=cut
+=item *
 
-1;
+AnnoCPAN
+
+The AnnoCPAN is a website that allows community annotations of Perl module documentation.
+
+L<http://annocpan.org/dist/HTML-Widgets-NavMenu>
+
+=item *
+
+CPAN Ratings
+
+The CPAN Ratings is a website that allows community ratings and reviews of Perl modules.
+
+L<http://cpanratings.perl.org/d/HTML-Widgets-NavMenu>
+
+=item *
+
+CPANTS
+
+The CPANTS is a website that analyzes the Kwalitee ( code metrics ) of a distribution.
+
+L<http://cpants.cpanauthors.org/dist/HTML-Widgets-NavMenu>
+
+=item *
+
+CPAN Testers
+
+The CPAN Testers is a network of smoke testers who run automated tests on uploaded CPAN distributions.
+
+L<http://www.cpantesters.org/distro/H/HTML-Widgets-NavMenu>
+
+=item *
+
+CPAN Testers Matrix
+
+The CPAN Testers Matrix is a website that provides a visual overview of the test results for a distribution on various Perls/platforms.
+
+L<http://matrix.cpantesters.org/?dist=HTML-Widgets-NavMenu>
+
+=item *
+
+CPAN Testers Dependencies
+
+The CPAN Testers Dependencies is a website that shows a chart of the test results of all dependencies for a distribution.
+
+L<http://deps.cpantesters.org/?module=HTML::Widgets::NavMenu>
+
+=back
+
+=head2 Bugs / Feature Requests
+
+Please report any bugs or feature requests by email to C<bug-html-widgets-navmenu at rt.cpan.org>, or through
+the web interface at L<https://rt.cpan.org/Public/Bug/Report.html?Queue=HTML-Widgets-NavMenu>. You will be automatically notified of any
+progress on the request by the system.
+
+=head2 Source Code
+
+The code is open to the world, and available for you to hack on. Please feel free to browse it and play
+with it, or whatever. If you want to contribute patches, please send me a diff or prod me to pull
+from your repository :)
+
+L<https://github.com/shlomif/perl-HTML-Widgets-NavMenu>
+
+  git clone git://github.com/shlomif/perl-HTML-Widgets-NavMenu.git
+
+=cut
diff --git a/lib/HTML/Widgets/NavMenu/Url.pm b/lib/HTML/Widgets/NavMenu/Url.pm
index b7e5153..d8b3fb1 100644
--- a/lib/HTML/Widgets/NavMenu/Url.pm
+++ b/lib/HTML/Widgets/NavMenu/Url.pm
@@ -1,43 +1,37 @@
 package HTML::Widgets::NavMenu::Url;
-
+$HTML::Widgets::NavMenu::Url::VERSION = '1.0704';
 use strict;
 use warnings;
 
 use base 'HTML::Widgets::NavMenu::Object';
 
-__PACKAGE__->mk_acc_ref([qw(
-    _url
-    _is_dir
-    _mode
-    )]);
-
-=head1 NAME
-
-HTML::Widgets::NavMenu::Url - URL manipulation class.
-
-=head1 SYNOPSIS
-
-For internal use only.
+__PACKAGE__->mk_acc_ref(
+    [
+        qw(
+            _url
+            _is_dir
+            _mode
+            )
+    ]
+);
 
-=head1 METHODS
-=cut
 
 sub _init
 {
     my $self = shift;
 
-    my ($url, $is_dir, $mode) = @_;
+    my ( $url, $is_dir, $mode ) = @_;
 
     # TODO - extract a method.
     $self->_url(
-        (ref($url) eq "ARRAY")
-            ? [ @$url ]
-            : [ split(/\//, $url) ]
+          ( ref($url) eq "ARRAY" )
+        ? [@$url]
+        : [ split( /\//, $url ) ]
     );
 
-    $self->_is_dir($is_dir || 0);
+    $self->_is_dir( $is_dir || 0 );
 
-    $self->_mode($mode || 'server');
+    $self->_mode( $mode || 'server' );
 
     return 0;
 }
@@ -46,7 +40,7 @@ sub _get_url
 {
     my $self = shift;
 
-    return [ @{$self->_url()} ];
+    return [ @{ $self->_url() } ];
 }
 
 sub _get_relative_url
@@ -55,45 +49,43 @@ sub _get_relative_url
 
     my $url = $base->_get_url_worker(@_);
 
-    return ( ($url eq "") ? "./" : $url);
+    return ( ( $url eq "" ) ? "./" : $url );
 }
 
 sub _get_url_worker
 {
-    my $base = shift;
-    my $to = shift;
+    my $base             = shift;
+    my $to               = shift;
     my $slash_terminated = shift;
-    my $no_leading_dot = shift;
+    my $no_leading_dot   = shift;
 
-    my $prefix = ($no_leading_dot ? "" : "./");
+    my $prefix = ( $no_leading_dot ? "" : "./" );
 
-    my @this_url = @{$base->_get_url()};
-    my @other_url = @{$to->_get_url()};
+    my @this_url  = @{ $base->_get_url() };
+    my @other_url = @{ $to->_get_url() };
 
     my $ret;
 
-    my @this_url_bak = @this_url;
+    my @this_url_bak  = @this_url;
     my @other_url_bak = @other_url;
 
-    while(
-        scalar(@this_url) &&
-        scalar(@other_url) &&
-        ($this_url[0] eq $other_url[0])
-    )
+    while (scalar(@this_url)
+        && scalar(@other_url)
+        && ( $this_url[0] eq $other_url[0] ) )
     {
         shift(@this_url);
         shift(@other_url);
     }
 
-    if ((! @this_url) && (! @other_url))
+    if ( ( !@this_url ) && ( !@other_url ) )
     {
-        if ((!$base->_is_dir() ) ne (!$to->_is_dir()))
+        if ( ( !$base->_is_dir() ) ne ( !$to->_is_dir() ) )
         {
             die "Two identical URLs with non-matching _is_dir()'s";
         }
-        if (! $base->_is_dir())
+        if ( !$base->_is_dir() )
         {
-            if (scalar(@this_url_bak))
+            if ( scalar(@this_url_bak) )
             {
                 return $prefix . $this_url_bak[-1];
             }
@@ -104,7 +96,7 @@ sub _get_url_worker
         }
     }
 
-    if (($base->_mode() eq "harddisk") && ($to->_is_dir()))
+    if ( ( $base->_mode() eq "harddisk" ) && ( $to->_is_dir() ) )
     {
         push @other_url, "index.html";
     }
@@ -113,18 +105,18 @@ sub _get_url_worker
 
     if ($slash_terminated)
     {
-        if ((scalar(@this_url) == 0) && (scalar(@other_url) == 0))
+        if ( ( scalar(@this_url) == 0 ) && ( scalar(@other_url) == 0 ) )
         {
             $ret = $prefix;
         }
         else
         {
-            if (! $base->_is_dir())
+            if ( !$base->_is_dir() )
             {
                 pop(@this_url);
             }
-            $ret .= join("/", (map { ".." } @this_url), @other_url);
-            if ($to->_is_dir() && ($base->_mode() ne "harddisk"))
+            $ret .= join( "/", ( map { ".." } @this_url ), @other_url );
+            if ( $to->_is_dir() && ( $base->_mode() ne "harddisk" ) )
             {
                 $ret .= "/";
             }
@@ -132,9 +124,12 @@ sub _get_url_worker
     }
     else
     {
-        my @components = ((map { ".." } @this_url[1..$#this_url]), @other_url);
-        $ret .= ($prefix . join("/", @components));
-        if (($to->_is_dir()) && ($base->_mode() ne "harddisk") && scalar(@components))
+        my @components =
+            ( ( map { ".." } @this_url[ 1 .. $#this_url ] ), @other_url );
+        $ret .= ( $prefix . join( "/", @components ) );
+        if (   ( $to->_is_dir() )
+            && ( $base->_mode() ne "harddisk" )
+            && scalar(@components) )
         {
             $ret .= "/";
         }
@@ -145,12 +140,163 @@ sub _get_url_worker
     return $ret;
 }
 
+
+1;
+
+__END__
+
+=pod
+
+=head1 NAME
+
+HTML::Widgets::NavMenu::Url - URL manipulation class.
+
+=head1 VERSION
+
+version 1.0704
+
+=head1 SYNOPSIS
+
+For internal use only.
+
+=head1 VERSION
+
+version 1.0704
+
+=head1 METHODS
+
 =head1 COPYRIGHT & LICENSE
 
 Copyright 2006 Shlomi Fish, all rights reserved.
 
 This program is released under the following license: MIT X11.
 
-=cut
+=head1 AUTHOR
 
-1;
+Shlomi Fish <shlomif@cpan.org>
+
+=head1 COPYRIGHT AND LICENSE
+
+This software is Copyright (c) 2014 by Shlomi Fish.
+
+This is free software, licensed under:
+
+  The MIT (X11) License
+
+=head1 BUGS
+
+Please report any bugs or feature requests on the bugtracker website
+L<https://github.com/shlomif/perl-HTML-Widgets-NavMenu/issues>
+
+When submitting a bug or request, please include a test-file or a
+patch to an existing test-file that illustrates the bug or desired
+feature.
+
+=for :stopwords cpan testmatrix url annocpan anno bugtracker rt cpants kwalitee diff irc mailto metadata placeholders metacpan
+
+=head1 SUPPORT
+
+=head2 Perldoc
+
+You can find documentation for this module with the perldoc command.
+
+  perldoc HTML::Widgets::NavMenu::Url
+
+=head2 Websites
+
+The following websites have more information about this module, and may be of help to you. As always,
+in addition to those websites please use your favorite search engine to discover more resources.
+
+=over 4
+
+=item *
+
+MetaCPAN
+
+A modern, open-source CPAN search engine, useful to view POD in HTML format.
+
+L<https://metacpan.org/release/HTML-Widgets-NavMenu>
+
+=item *
+
+Search CPAN
+
+The default CPAN search engine, useful to view POD in HTML format.
+
+L<http://search.cpan.org/dist/HTML-Widgets-NavMenu>
+
+=item *
+
+RT: CPAN's Bug Tracker
+
+The RT ( Request Tracker ) website is the default bug/issue tracking system for CPAN.
+
+L<https://rt.cpan.org/Public/Dist/Display.html?Name=HTML-Widgets-NavMenu>
+
+=item *
+
+AnnoCPAN
+
+The AnnoCPAN is a website that allows community annotations of Perl module documentation.
+
+L<http://annocpan.org/dist/HTML-Widgets-NavMenu>
+
+=item *
+
+CPAN Ratings
+
+The CPAN Ratings is a website that allows community ratings and reviews of Perl modules.
+
+L<http://cpanratings.perl.org/d/HTML-Widgets-NavMenu>
+
+=item *
+
+CPANTS
+
+The CPANTS is a website that analyzes the Kwalitee ( code metrics ) of a distribution.
+
+L<http://cpants.cpanauthors.org/dist/HTML-Widgets-NavMenu>
+
+=item *
+
+CPAN Testers
+
+The CPAN Testers is a network of smoke testers who run automated tests on uploaded CPAN distributions.
+
+L<http://www.cpantesters.org/distro/H/HTML-Widgets-NavMenu>
+
+=item *
+
+CPAN Testers Matrix
+
+The CPAN Testers Matrix is a website that provides a visual overview of the test results for a distribution on various Perls/platforms.
+
+L<http://matrix.cpantesters.org/?dist=HTML-Widgets-NavMenu>
+
+=item *
+
+CPAN Testers Dependencies
+
+The CPAN Testers Dependencies is a website that shows a chart of the test results of all dependencies for a distribution.
+
+L<http://deps.cpantesters.org/?module=HTML::Widgets::NavMenu>
+
+=back
+
+=head2 Bugs / Feature Requests
+
+Please report any bugs or feature requests by email to C<bug-html-widgets-navmenu at rt.cpan.org>, or through
+the web interface at L<https://rt.cpan.org/Public/Bug/Report.html?Queue=HTML-Widgets-NavMenu>. You will be automatically notified of any
+progress on the request by the system.
+
+=head2 Source Code
+
+The code is open to the world, and available for you to hack on. Please feel free to browse it and play
+with it, or whatever. If you want to contribute patches, please send me a diff or prod me to pull
+from your repository :)
+
+L<https://github.com/shlomif/perl-HTML-Widgets-NavMenu>
+
+  git clone git://github.com/shlomif/perl-HTML-Widgets-NavMenu.git
+
+=cut
diff --git a/scripts/bump-version-number.pl b/scripts/bump-version-number.pl
index 027153d..d69c643 100644
--- a/scripts/bump-version-number.pl
+++ b/scripts/bump-version-number.pl
@@ -6,30 +6,29 @@ use warnings;
 use File::Find::Object;
 use IO::All;
 
-my $tree = File::Find::Object->new({}, 'lib/');
+my $tree = File::Find::Object->new( {}, 'lib/' );
 
 my $version_n = shift(@ARGV);
 
-if (!defined($version_n))
+if ( !defined($version_n) )
 {
     die "Specify version number as an argument! bump-version-number.pl '0.0.1'";
 }
 
-while (my $r = $tree->next()) {
-    if ($r =~ m{/\.svn\z})
+while ( my $r = $tree->next() )
+{
+    if ( $r =~ m{/\.svn\z} )
     {
         $tree->prune();
     }
-    elsif ($r =~ m{\.pm\z})
+    elsif ( $r =~ m{\.pm\z} )
     {
         my @lines = io->file($r)->getlines();
         foreach (@lines)
         {
-            s#(\$VERSION = '|^Version )\d+\.\d+(?:\.\d+)?('|)#$1 . $version_n . $2#e;
+s#(\$VERSION = '|^Version )\d+\.\d+(?:\.\d+)?('|)#$1 . $version_n . $2#e;
         }
-        io->file($r)->print(
-            @lines
-        );
+        io->file($r)->print(@lines);
     }
 }
 
diff --git a/scripts/tag-release.pl b/scripts/tag-release.pl
index 864516c..f8a36f4 100644
--- a/scripts/tag-release.pl
+++ b/scripts/tag-release.pl
@@ -6,21 +6,18 @@ use warnings;
 use IO::All;
 
 my ($version) =
-    (map { m{\$VERSION *= *'([^']+)'} ? ($1) : () }
-    io->file("./lib/HTML/Widgets/NavMenu.pm")->getlines()
-    )
-    ;
+    ( map { m{\$VERSION *= *'([^']+)'} ? ($1) : () }
+        io->file("./lib/HTML/Widgets/NavMenu.pm")->getlines() );
 
-if (!defined ($version))
+if ( !defined($version) )
 {
     die "Version is undefined!";
 }
 
 my @cmd = (
-    "hg", "tag", "-m",
-    "Tagging HTML-Widgets-NavMenu as $version",
+    "hg", "tag", "-m", "Tagging HTML-Widgets-NavMenu as $version",
     "cpan-releases/$version",
 );
 
-print join(" ", map { /\s/ ? qq{"$_"} : $_ } @cmd), "\n";
+print join( " ", map { /\s/ ? qq{"$_"} : $_ } @cmd ), "\n";
 exec(@cmd);
diff --git a/t/00-compile.t b/t/00-compile.t
new file mode 100644
index 0000000..d701896
--- /dev/null
+++ b/t/00-compile.t
@@ -0,0 +1,78 @@
+use 5.006;
+use strict;
+use warnings;
+
+# this test was generated with Dist::Zilla::Plugin::Test::Compile 2.058
+
+use Test::More;
+
+plan tests => 19 + ($ENV{AUTHOR_TESTING} ? 1 : 0);
+
+my @module_files = (
+    'HTML/Widgets/NavMenu.pm',
+    'HTML/Widgets/NavMenu/EscapeHtml.pm',
+    'HTML/Widgets/NavMenu/ExpandVal.pm',
+    'HTML/Widgets/NavMenu/HeaderRole.pm',
+    'HTML/Widgets/NavMenu/Iterator/Base.pm',
+    'HTML/Widgets/NavMenu/Iterator/Html.pm',
+    'HTML/Widgets/NavMenu/Iterator/JQTreeView.pm',
+    'HTML/Widgets/NavMenu/Iterator/NavMenu.pm',
+    'HTML/Widgets/NavMenu/Iterator/NavMenu/HeaderRole.pm',
+    'HTML/Widgets/NavMenu/Iterator/SiteMap.pm',
+    'HTML/Widgets/NavMenu/JQueryTreeView.pm',
+    'HTML/Widgets/NavMenu/Object.pm',
+    'HTML/Widgets/NavMenu/Predicate.pm',
+    'HTML/Widgets/NavMenu/TagGen.pm',
+    'HTML/Widgets/NavMenu/Tree/Iterator.pm',
+    'HTML/Widgets/NavMenu/Tree/Iterator/Item.pm',
+    'HTML/Widgets/NavMenu/Tree/Iterator/Stack.pm',
+    'HTML/Widgets/NavMenu/Tree/Node.pm',
+    'HTML/Widgets/NavMenu/Url.pm'
+);
+
+
+
+# no fake home requested
+
+my @switches = (
+    -d 'blib' ? '-Mblib' : '-Ilib',
+);
+
+use File::Spec;
+use IPC::Open3;
+use IO::Handle;
+
+open my $stdin, '<', File::Spec->devnull or die "can't open devnull: $!";
+
+my @warnings;
+for my $lib (@module_files)
+{
+    # see L<perlfaq8/How can I capture STDERR from an external command?>
+    my $stderr = IO::Handle->new;
+
+    diag('Running: ', join(', ', map { my $str = $_; $str =~ s/'/\\'/g; q{'} . $str . q{'} }
+            $^X, @switches, '-e', "require q[$lib]"))
+        if $ENV{PERL_COMPILE_TEST_DEBUG};
+
+    my $pid = open3($stdin, '>&STDERR', $stderr, $^X, @switches, '-e', "require q[$lib]");
+    binmode $stderr, ':crlf' if $^O eq 'MSWin32';
+    my @_warnings = <$stderr>;
+    waitpid($pid, 0);
+    is($?, 0, "$lib loaded ok");
+
+    shift @_warnings if @_warnings and $_warnings[0] =~ /^Using .*\bblib/
+        and not eval { +require blib; blib->VERSION('1.01') };
+
+    if (@_warnings)
+    {
+        warn @_warnings;
+        push @warnings, @_warnings;
+    }
+}
+
+
+
+is(scalar(@warnings), 0, 'no warnings found')
+    or diag 'got warnings: ', ( Test::More->can('explain') ? Test::More::explain(\@warnings) : join("\n", '', @warnings) ) if $ENV{AUTHOR_TESTING};
+
+
diff --git a/t/00use.t b/t/00use.t
index 163c46a..69f5abd 100644
--- a/t/00use.t
+++ b/t/00use.t
@@ -4,7 +4,8 @@ use strict;
 
 use Test::More tests => 1;
 
-BEGIN {
-# TEST
-use_ok ('HTML::Widgets::NavMenu');
-};
+BEGIN
+{
+    # TEST
+    use_ok('HTML::Widgets::NavMenu');
+}
diff --git a/t/01unit.t b/t/01unit.t
index eb70c47..4e6d175 100644
--- a/t/01unit.t
+++ b/t/01unit.t
@@ -7,54 +7,59 @@ use Test::More tests => 9;
 use HTML::Widgets::NavMenu;
 
 {
-my $text = "test/foo";
+    my $text = "test/foo";
 
-my $url = HTML::Widgets::NavMenu::_text_to_url_obj($text);
+    my $url = HTML::Widgets::NavMenu::_text_to_url_obj($text);
 
-my $components = $url->_get_url();
-ok (scalar(@$components) == 2); # TEST
-ok ($components->[0] eq "test"); # TEST
-ok ($components->[1] eq "foo"); # TEST
-ok (! $url->_is_dir()); # TEST
+    my $components = $url->_get_url();
+    ok( scalar(@$components) == 2 );     # TEST
+    ok( $components->[0] eq "test" );    # TEST
+    ok( $components->[1] eq "foo" );     # TEST
+    ok( !$url->_is_dir() );              # TEST
 
 }
 
 {
-    my $url1 = HTML::Widgets::NavMenu::Url->new(["links.html"], 0, "server");
-    my $url2 = HTML::Widgets::NavMenu::Url->new(["links.html"], 0, "server");
-    my $rel_url = $url1->_get_relative_url($url2, 0);
-    ok ($rel_url eq "./links.html", "Checking for same file to itself link");  # TEST
+    my $url1 = HTML::Widgets::NavMenu::Url->new( ["links.html"], 0, "server" );
+    my $url2 = HTML::Widgets::NavMenu::Url->new( ["links.html"], 0, "server" );
+    my $rel_url = $url1->_get_relative_url( $url2, 0 );
+    ok( $rel_url eq "./links.html", "Checking for same file to itself link" )
+        ;                                # TEST
 }
 
 {
-    my $root_url = HTML::Widgets::NavMenu::Url->new("", 1);
-    my $current_url = HTML::Widgets::NavMenu::Url->new("open-source/", 1);
+    my $root_url    = HTML::Widgets::NavMenu::Url->new( "",             1 );
+    my $current_url = HTML::Widgets::NavMenu::Url->new( "open-source/", 1 );
 
-    ok ($current_url->_get_relative_url($root_url, 1) eq "../",
-        "Checking for link to root directory"); # TEST
+    ok( $current_url->_get_relative_url( $root_url, 1 ) eq "../",
+        "Checking for link to root directory" );    # TEST
 }
 
 {
     # TEST
-    ok ((HTML::Widgets::NavMenu::_get_relative_url("open-source/", "") eq "../"),
+    ok(
+        (
+            HTML::Widgets::NavMenu::_get_relative_url( "open-source/", "" ) eq
+                "../"
+        ),
         "_get_relative_url(): Checking for link to root directory"
     );
 }
 
 {
-    eval {
-    my $iter = HTML::Widgets::NavMenu::Iterator::Base->new();
-    };
+    eval { my $iter = HTML::Widgets::NavMenu::Iterator::Base->new(); };
 
     # TEST
-    like($@, qr{^nav_menu not specified},
-        "nav_menu not specified");
+    like( $@, qr{^nav_menu not specified}, "nav_menu not specified" );
 }
 
 {
     my $obj = HTML::Widgets::NavMenu::Object->new();
 
     # TEST
-    isa_ok($obj, "HTML::Widgets::NavMenu::Object",
-        "Testing creation of object");
+    isa_ok(
+        $obj,
+        "HTML::Widgets::NavMenu::Object",
+        "Testing creation of object"
+    );
 }
diff --git a/t/02site-map.t b/t/02site-map.t
index 941e4eb..b7b2f0a 100644
--- a/t/02site-map.t
+++ b/t/02site-map.t
@@ -14,24 +14,24 @@ my $test_data = get_test_data();
 
 sub validate_site_map
 {
-    my $results = shift;
+    my $results         = shift;
     my $expected_string = shift;
-    my $test_blurb = shift;
+    my $test_blurb      = shift;
 
     my @result = @$results;
 
-    my @expected = (split(/\n/, $expected_string));
+    my @expected = ( split( /\n/, $expected_string ) );
 
-    is_deeply(\@expected, \@result, $test_blurb);
+    is_deeply( \@expected, \@result, $test_blurb );
 }
 
 {
     my $nav_menu = HTML::Widgets::NavMenu->new(
         'path_info' => "hello/",
-        @{$test_data->{'minimal'}},
+        @{ $test_data->{'minimal'} },
     );
 
-    my $results = $nav_menu->gen_site_map();
+    my $results       = $nav_menu->gen_site_map();
     my $expected_text = <<"EOF";
 <ul>
 <li>
@@ -44,35 +44,32 @@ sub validate_site_map
 EOF
 
     # TEST
-    validate_site_map($results, $expected_text, "site_map #1");
+    validate_site_map( $results, $expected_text, "site_map #1" );
 }
 
 {
     my $nav_menu = HTML::Widgets::NavMenu->new(
-        'path_info' => "hello/",
+        'path_info'    => "hello/",
         'current_host' => "default",
         'hosts' => { 'default' => { 'base_url' => "http://www.hello.com/" }, },
-        'tree_contents' =>
-        {
-            'host' => "default",
-            'text' => "Top 1",
-            'title' => "T1 Title",
+        'tree_contents' => {
+            'host'      => "default",
+            'text'      => "Top 1",
+            'title'     => "T1 Title",
             'expand_re' => "",
-            'subs' =>
-            [
+            'subs'      => [
                 {
                     'text' => "Home",
-                    'url' => "",
+                    'url'  => "",
                 },
                 {
-                    'text' => "About Me",
+                    'text'  => "About Me",
                     'title' => "About Myself",
-                    'url' => "me/",
-                    'subs' =>
-                    [
+                    'url'   => "me/",
+                    'subs'  => [
                         {
-                            'url' => "round/hello/personal.html",
-                            'text' => "Bio",
+                            'url'   => "round/hello/personal.html",
+                            'text'  => "Bio",
                             'title' => "Biography of Myself",
                         },
                     ],
@@ -81,7 +78,7 @@ EOF
         },
     );
 
-    my $results = $nav_menu->gen_site_map();
+    my $results       = $nav_menu->gen_site_map();
     my $expected_text = <<"EOF";
 <ul>
 <li>
@@ -98,17 +95,18 @@ EOF
 </li>
 </ul>
 EOF
+
     # TEST
-    validate_site_map($results, $expected_text, "site_map #2");
+    validate_site_map( $results, $expected_text, "site_map #2" );
 }
 
 {
     my $nav_menu = HTML::Widgets::NavMenu->new(
         'path_info' => "hello/world/",
-        @{$test_data->{'two_sites'}},
+        @{ $test_data->{'two_sites'} },
     );
 
-    my $results = $nav_menu->gen_site_map();
+    my $results       = $nav_menu->gen_site_map();
     my $expected_text = <<"EOF";
 <ul>
 <li>
@@ -146,48 +144,47 @@ EOF
 </li>
 </ul>
 EOF
+
     # TEST
-    validate_site_map($results, $expected_text, "site_map - complex");
+    validate_site_map( $results, $expected_text, "site_map - complex" );
 }
 
 # Now testing that the separator is safely skipped and does not generate
 # a double </li>
 {
     my $nav_menu = HTML::Widgets::NavMenu->new(
-        'path_info' => "hello/",
+        'path_info'    => "hello/",
         'current_host' => "default",
         'hosts' => { 'default' => { 'base_url' => "http://www.hello.com/" }, },
-        'tree_contents' =>
-        {
-            'host' => "default",
-            'text' => "Top 1",
-            'title' => "T1 Title",
+        'tree_contents' => {
+            'host'      => "default",
+            'text'      => "Top 1",
+            'title'     => "T1 Title",
             'expand_re' => "",
-            'subs' =>
-            [
+            'subs'      => [
                 {
                     'text' => "Home",
-                    'url' => "",
+                    'url'  => "",
                 },
                 {
-                    'text' => "About Me",
+                    'text'  => "About Me",
                     'title' => "About Myself",
-                    'url' => "me/",
+                    'url'   => "me/",
                 },
                 {
                     'separator' => 1,
-                    'skip' => 1,
+                    'skip'      => 1,
                 },
                 {
-                    'text' => "Hoola",
+                    'text'  => "Hoola",
                     'title' => "Hoola Hoop",
-                    'url' => "me-too/",
+                    'url'   => "me-too/",
                 },
             ],
         },
     );
 
-    my $results = $nav_menu->gen_site_map();
+    my $results       = $nav_menu->gen_site_map();
     my $expected_text = <<"EOF";
 <ul>
 <li>
@@ -201,15 +198,16 @@ EOF
 </li>
 </ul>
 EOF
+
     # TEST
-    validate_site_map($results, $expected_text, "site_map - separator");
+    validate_site_map( $results, $expected_text, "site_map - separator" );
 }
 
 # This is a test for the rec_url_type directive.
 {
     my $nav_menu = HTML::Widgets::NavMenu->new(
         'path_info' => "/darling/",
-        @{$test_data->{'rec_url_type_menu'}},
+        @{ $test_data->{'rec_url_type_menu'} },
     );
 
     my $results = $nav_menu->gen_site_map();
@@ -236,20 +234,16 @@ EOF
 </li>
 </ul>
 EOF
+
     # TEST
-    validate_site_map($results, $expected_text, "site_map - rec_url_type");
+    validate_site_map( $results, $expected_text, "site_map - rec_url_type" );
 }
 
-
-
-
-
-
 # This is a test for the url_is_abs directive.
 {
     my $nav_menu = HTML::Widgets::NavMenu->new(
         'path_info' => "/darling/",
-        @{$test_data->{'url_is_abs_menu'}},
+        @{ $test_data->{'url_is_abs_menu'} },
     );
 
     my $results = $nav_menu->gen_site_map();
@@ -270,6 +264,7 @@ EOF
 </li>
 </ul>
 EOF
+
     # TEST
-    validate_site_map($results, $expected_text, "site_map - url_is_abs");
+    validate_site_map( $results, $expected_text, "site_map - url_is_abs" );
 }
diff --git a/t/03nav-links.t b/t/03nav-links.t
index 634e80c..8eb3c44 100644
--- a/t/03nav-links.t
+++ b/t/03nav-links.t
@@ -12,31 +12,28 @@ use HTML::Widgets::NavMenu::Test::Data;
 
 my $test_data = get_test_data();
 
-my @site_args =
-(
+my @site_args = (
     'current_host' => "default",
     'hosts' => { 'default' => { 'base_url' => "http://www.hello.com/" }, },
-    'tree_contents' =>
-    {
-        'host' => "default",
-        'text' => "Top 1",
-        'title' => "T1 Title",
+    'tree_contents' => {
+        'host'      => "default",
+        'text'      => "Top 1",
+        'title'     => "T1 Title",
         'expand_re' => "",
-        'subs' =>
-        [
+        'subs'      => [
             {
                 'text' => "Home",
-                'url' => "",
+                'url'  => "",
             },
             {
-                'text' => "About Me",
+                'text'  => "About Me",
                 'title' => "About Myself",
-                'url' => "me/",
+                'url'   => "me/",
             },
             {
-                'text' => "Last Page",
+                'text'  => "Last Page",
                 'title' => "Last Page",
-                'url' => "last-page.html",
+                'url'   => "last-page.html",
             }
         ],
     },
@@ -56,23 +53,30 @@ my @site_args =
     my $nav_links = $rendered->{'nav_links'};
 
     # TEST
-    ok ((scalar(keys(%$nav_links)) == 1) && (exists($nav_links->{'next'})),
-        "Lack of Nav-Links in the First Page");
+    ok(
+        ( scalar( keys(%$nav_links) ) == 1 )
+            && ( exists( $nav_links->{'next'} ) ),
+        "Lack of Nav-Links in the First Page"
+    );
 
     my $obj_nav_links = $rendered->{'nav_links_obj'};
 
     my $next = $obj_nav_links->{'next'};
 
     # TEST
-    is ($next->host(), "default", "Checking for \$next->host().");
+    is( $next->host(), "default", "Checking for \$next->host()." );
+
     # TEST
-    is ($next->label(), "About Me", "Checking for label()");
+    is( $next->label(), "About Me", "Checking for label()" );
+
     # TEST
-    is ($next->title(), "About Myself", "Checking for title()");
+    is( $next->title(), "About Myself", "Checking for title()" );
+
     # TEST
-    is ($next->direct_url(), "./me/", "Checking for direct_url()");
+    is( $next->direct_url(), "./me/", "Checking for direct_url()" );
+
     # TEST
-    is ($next->host_url(), "me/", "Checking for host_url()");
+    is( $next->host_url(), "me/", "Checking for host_url()" );
 }
 
 # The purpose of this test is to check for up arrow leading from the middle
@@ -88,28 +92,32 @@ my @site_args =
     my $nav_links = $rendered->{'nav_links'};
 
     # TEST
-    is($nav_links->{'up'}, "../",
-       "Up page leading upwards to the first page.");
+    is( $nav_links->{'up'}, "../",
+        "Up page leading upwards to the first page." );
+
     # TEST
-    is($nav_links->{'top'}, "../",
-       "Top nav-link leading topwards to the first page.");
+    is( $nav_links->{'top'}, "../",
+        "Top nav-link leading topwards to the first page." );
 
     my $nav_links_obj = $rendered->{'nav_links_obj'};
 
     my $up = $nav_links_obj->{'up'};
+
     # TEST
-    is ($up->direct_url(), "../", "direct_url()");
+    is( $up->direct_url(), "../", "direct_url()" );
+
     # TEST
-    is ($up->host(), "default");
+    is( $up->host(), "default" );
+
     # TEST
-    is ($up->label(), "Home");
+    is( $up->label(), "Home" );
 }
 
 # This tests for behaviour with url_is_abs:
 {
     my $nav_menu = HTML::Widgets::NavMenu->new(
         'path_info' => "/",
-        @{$test_data->{'url_is_abs_menu'}},
+        @{ $test_data->{'url_is_abs_menu'} },
     );
 
     my $rendered = $nav_menu->render();
@@ -117,14 +125,14 @@ my @site_args =
     my $nav_links = $rendered->{'nav_links'};
 
     # TEST
-    is ($nav_links->{'next'}, "http://www.google.com/",
-        "Next nav_link in url_is_abs site");
+    is( $nav_links->{'next'}, "http://www.google.com/",
+        "Next nav_link in url_is_abs site" );
 }
 
 {
     my $nav_menu = HTML::Widgets::NavMenu->new(
         'path_info' => "/sub-dir/",
-        @{$test_data->{'url_is_abs_menu'}},
+        @{ $test_data->{'url_is_abs_menu'} },
     );
 
     my $rendered = $nav_menu->render();
@@ -132,9 +140,10 @@ my @site_args =
     my $nav_links = $rendered->{'nav_links'};
 
     # TEST
-    is ($nav_links->{'up'}, "http://www.google.com/",
-        "Up nav_link in url_is_abs site");
+    is( $nav_links->{'up'}, "http://www.google.com/",
+        "Up nav_link in url_is_abs site" );
+
     # TEST
-    is ($nav_links->{'prev'}, "http://www.google.com/",
-        "Prev nav_link in url_is_abs site");
+    is( $nav_links->{'prev'}, "http://www.google.com/",
+        "Prev nav_link in url_is_abs site" );
 }
diff --git a/t/04nav-menu.t b/t/04nav-menu.t
index ea85989..99dbd25 100644
--- a/t/04nav-menu.t
+++ b/t/04nav-menu.t
@@ -16,27 +16,26 @@ my $test_data = get_test_data();
 
 sub test_nav_menu
 {
-    local $Test::Builder::Level = $Test::Builder::Level+1;
-    my $rendered = shift;
+    local $Test::Builder::Level = $Test::Builder::Level + 1;
+    my $rendered        = shift;
     my $expected_string = shift;
-    my $test_blurb = shift;
+    my $test_blurb      = shift;
 
-    my @result = (@{$rendered->{html}});
+    my @result = ( @{ $rendered->{html} } );
 
-    my @expected = (split(/\n/, $expected_string));
+    my @expected = ( split( /\n/, $expected_string ) );
 
-    is_deeply (\@result, \@expected, $test_blurb);
+    is_deeply( \@result, \@expected, $test_blurb );
 }
 
 {
     my $nav_menu = HTML::Widgets::NavMenu->new(
         'path_info' => "/hello/",
-        @{$test_data->{'minimal'}},
+        @{ $test_data->{'minimal'} },
         'ul_classes' => [ "navbarmain", ("navbarnested") x 5 ],
     );
 
-    my $rendered =
-        $nav_menu->render();
+    my $rendered = $nav_menu->render();
 
     my $expected_string = <<"EOF";
 <ul class="navbarmain">
@@ -50,19 +49,17 @@ sub test_nav_menu
 EOF
 
     # TEST
-    test_nav_menu($rendered, $expected_string, "Nav Menu for minimal - 1");
+    test_nav_menu( $rendered, $expected_string, "Nav Menu for minimal - 1" );
 }
 
-
 {
     my $nav_menu = HTML::Widgets::NavMenu->new(
         'path_info' => "/me/",
-        @{$test_data->{'two_sites'}},
+        @{ $test_data->{'two_sites'} },
         'ul_classes' => [ "navbarmain", ("navbarnested") x 5 ],
     );
 
-    my $rendered =
-        $nav_menu->render();
+    my $rendered = $nav_menu->render();
 
     my $expected_string = <<"EOF";
 <ul class="navbarmain">
@@ -88,7 +85,7 @@ EOF
 EOF
 
     # TEST
-    test_nav_menu($rendered, $expected_string, "Nav Menu for minimal - 2");
+    test_nav_menu( $rendered, $expected_string, "Nav Menu for minimal - 2" );
 }
 
 # This test tests that an expand_re directive should not cause
@@ -97,12 +94,11 @@ EOF
 {
     my $nav_menu = HTML::Widgets::NavMenu->new(
         'path_info' => "/me/",
-        @{$test_data->{'expand_re'}},
+        @{ $test_data->{'expand_re'} },
         'ul_classes' => [ "navbarmain", ("navbarnested") x 5 ],
     );
 
-    my $rendered =
-        $nav_menu->render();
+    my $rendered = $nav_menu->render();
 
     my $expected_string = <<"EOF";
 <ul class="navbarmain">
@@ -125,7 +121,7 @@ EOF
 EOF
 
     # TEST
-    test_nav_menu($rendered, $expected_string, "Nav Menu for expand_re");
+    test_nav_menu( $rendered, $expected_string, "Nav Menu for expand_re" );
 }
 
 # This test tests that an empty expand_re directive works after a successful
@@ -135,12 +131,11 @@ EOF
     $string =~ s{ofisvniowgvnoaifnaoiwfb$}{};
     my $nav_menu = HTML::Widgets::NavMenu->new(
         'path_info' => "/me/",
-        @{$test_data->{'expand_re'}},
+        @{ $test_data->{'expand_re'} },
         'ul_classes' => [ "navbarmain", ("navbarnested") x 5 ],
     );
 
-    my $rendered =
-        $nav_menu->render();
+    my $rendered = $nav_menu->render();
 
     my $expected_string = <<"EOF";
 <ul class="navbarmain">
@@ -163,7 +158,8 @@ EOF
 EOF
 
     # TEST
-    test_nav_menu($rendered, $expected_string, "Nav Menu for empty expand_re after successful pattern match");
+    test_nav_menu( $rendered, $expected_string,
+        "Nav Menu for empty expand_re after successful pattern match" );
 }
 
 # This test tests the show_always directive which causes the entire
@@ -171,12 +167,11 @@ EOF
 {
     my $nav_menu = HTML::Widgets::NavMenu->new(
         'path_info' => "/me/",
-        @{$test_data->{'show_always'}},
+        @{ $test_data->{'show_always'} },
         'ul_classes' => [ "navbarmain", ("navbarnested") x 5 ],
     );
 
-    my $rendered =
-        $nav_menu->render();
+    my $rendered = $nav_menu->render();
 
     my $expected_string = <<"EOF";
 <ul class="navbarmain">
@@ -217,7 +212,7 @@ EOF
 EOF
 
     # TEST
-    test_nav_menu($rendered, $expected_string, "Nav Menu with show_always");
+    test_nav_menu( $rendered, $expected_string, "Nav Menu with show_always" );
 }
 
 # This test tests a menu auto-expands if the current URL is an item
@@ -225,12 +220,11 @@ EOF
 {
     my $nav_menu = HTML::Widgets::NavMenu->new(
         'path_info' => "/me/bio.html",
-        @{$test_data->{'items_in_sub'}},
+        @{ $test_data->{'items_in_sub'} },
         'ul_classes' => [ "navbarmain", ("navbarnested") x 5 ],
     );
 
-    my $rendered =
-        $nav_menu->render();
+    my $rendered = $nav_menu->render();
 
     my $expected_string = <<"EOF";
 <ul class="navbarmain">
@@ -256,18 +250,18 @@ EOF
 EOF
 
     # TEST
-    test_nav_menu($rendered, $expected_string, "Nav Menu with a selected sub-item");
+    test_nav_menu( $rendered, $expected_string,
+        "Nav Menu with a selected sub-item" );
 }
 
 {
     my $nav_menu = HTML::Widgets::NavMenu->new(
         'path_info' => "/me/",
-        @{$test_data->{'separator'}},
+        @{ $test_data->{'separator'} },
         'ul_classes' => [ "navbarmain", ("navbarnested") x 5 ],
     );
 
-    my $rendered =
-        $nav_menu->render();
+    my $rendered = $nav_menu->render();
 
     my $expected_string = <<"EOF";
 <ul class="navbarmain">
@@ -300,18 +294,17 @@ EOF
 EOF
 
     # TEST
-    test_nav_menu($rendered, $expected_string, "Nav Menu with Separators");
+    test_nav_menu( $rendered, $expected_string, "Nav Menu with Separators" );
 }
 
 {
     my $nav_menu = HTML::Widgets::NavMenu->new(
         'path_info' => "/me/",
-        @{$test_data->{'hidden_item'}},
+        @{ $test_data->{'hidden_item'} },
         'ul_classes' => [ "navbarmain", ("navbarnested") x 5 ],
     );
 
-    my $rendered =
-        $nav_menu->render();
+    my $rendered = $nav_menu->render();
 
     my $expected_string = <<"EOF";
 <ul class="navbarmain">
@@ -334,19 +327,17 @@ EOF
 EOF
 
     # TEST
-    test_nav_menu($rendered, $expected_string, "Nav Menu with Hidden Item");
+    test_nav_menu( $rendered, $expected_string, "Nav Menu with Hidden Item" );
 }
 
-
 {
     my $nav_menu = HTML::Widgets::NavMenu::HeaderRole->new(
         'path_info' => "/good/",
-        @{$test_data->{'header_role'}},
+        @{ $test_data->{'header_role'} },
         'ul_classes' => [ "navbarmain", ("navbarnested") x 5 ],
     );
 
-    my $rendered =
-        $nav_menu->render();
+    my $rendered = $nav_menu->render();
 
     my $expected_string = <<"EOF";
 <ul class="navbarmain">
@@ -377,18 +368,18 @@ EOF
 EOF
 
     # TEST
-    test_nav_menu($rendered, $expected_string, "Nav Menu with a role of \"header\"");
+    test_nav_menu( $rendered, $expected_string,
+        "Nav Menu with a role of \"header\"" );
 }
 
 {
     my $nav_menu = HTML::Widgets::NavMenu::HeaderRole->new(
         'path_info' => "/me/",
-        @{$test_data->{'header_role'}},
+        @{ $test_data->{'header_role'} },
         'ul_classes' => [ "navbarmain", ("navbarnested") x 5 ],
     );
 
-    my $rendered =
-        $nav_menu->render();
+    my $rendered = $nav_menu->render();
 
     my $expected_string = <<"EOF";
 <ul class="navbarmain">
@@ -419,19 +410,19 @@ EOF
 EOF
 
     # TEST
-    test_nav_menu($rendered, $expected_string, "Nav Menu with a selected item with a role of \"header\" ");
+    test_nav_menu( $rendered, $expected_string,
+        "Nav Menu with a selected item with a role of \"header\" " );
 }
 
 # Test the selective expand. (test #1)
 {
     my $nav_menu = HTML::Widgets::NavMenu->new(
         'path_info' => "/me/bio/test.html",
-        @{$test_data->{'selective_expand'}},
+        @{ $test_data->{'selective_expand'} },
         'ul_classes' => [ "one", "two", "three" ],
     );
 
-    my $rendered =
-        $nav_menu->render();
+    my $rendered = $nav_menu->render();
 
     my $expected_string = <<"EOF";
 <ul class="one">
@@ -463,19 +454,19 @@ EOF
 EOF
 
     # TEST
-    test_nav_menu($rendered, $expected_string, "Selective Expand Nav-Menu #1");
+    test_nav_menu( $rendered, $expected_string,
+        "Selective Expand Nav-Menu #1" );
 }
 
 # Test the selective expand. (test #2)
 {
     my $nav_menu = HTML::Widgets::NavMenu->new(
         'path_info' => "/open-source/bits.html",
-        @{$test_data->{'selective_expand'}},
+        @{ $test_data->{'selective_expand'} },
         'ul_classes' => [ "one", "two", "three" ],
     );
 
-    my $rendered =
-        $nav_menu->render();
+    my $rendered = $nav_menu->render();
 
     my $expected_string = <<"EOF";
 <ul class="one">
@@ -504,18 +495,18 @@ EOF
 EOF
 
     # TEST
-    test_nav_menu($rendered, $expected_string, "Selective Expand Nav-Menu #2");
+    test_nav_menu( $rendered, $expected_string,
+        "Selective Expand Nav-Menu #2" );
 }
 
 # This is a test for the url_type directive.
 {
     my $nav_menu = HTML::Widgets::NavMenu->new(
         'path_info' => "/darling/",
-        @{$test_data->{'url_type_menu'}},
+        @{ $test_data->{'url_type_menu'} },
     );
 
-    my $rendered =
-        $nav_menu->render();
+    my $rendered = $nav_menu->render();
 
     my $expected_string = <<"EOF";
 <ul>
@@ -532,7 +523,7 @@ EOF
 EOF
 
     # TEST
-    test_nav_menu($rendered, $expected_string, "Nav Menu for url_type - 1");
+    test_nav_menu( $rendered, $expected_string, "Nav Menu for url_type - 1" );
 }
 
 # This is a test for the rec_url_type directive.
@@ -541,11 +532,10 @@ EOF
 {
     my $nav_menu = HTML::Widgets::NavMenu->new(
         'path_info' => "/darling/",
-        @{$test_data->{'rec_url_type_menu'}},
+        @{ $test_data->{'rec_url_type_menu'} },
     );
 
-    my $rendered =
-        $nav_menu->render();
+    my $rendered = $nav_menu->render();
 
     my $expected_string = <<"EOF";
 <ul>
@@ -571,18 +561,18 @@ EOF
 EOF
 
     # TEST
-    test_nav_menu($rendered, $expected_string, "Nav Menu for rec_url_type - 1");
+    test_nav_menu( $rendered, $expected_string,
+        "Nav Menu for rec_url_type - 1" );
 }
 
 # Test the url_is_abs directive
 {
     my $nav_menu = HTML::Widgets::NavMenu->new(
         'path_info' => "/hello/",
-        @{$test_data->{'url_is_abs_menu'}},
+        @{ $test_data->{'url_is_abs_menu'} },
     );
 
-    my $rendered =
-        $nav_menu->render();
+    my $rendered = $nav_menu->render();
 
     my $expected_string = <<"EOF";
 <ul>
@@ -596,19 +586,18 @@ EOF
 EOF
 
     # TEST
-    test_nav_menu($rendered, $expected_string, "Nav Menu for url_is_asb - 1");
+    test_nav_menu( $rendered, $expected_string, "Nav Menu for url_is_asb - 1" );
 }
 
 {
     my $nav_menu = HTML::Widgets::NavMenu->new(
         'path_info' => "/me/bio/test.html",
-        @{$test_data->{'mixed_expand_menu'}},
+        @{ $test_data->{'mixed_expand_menu'} },
         'current_host' => "default",
-        'ul_classes' => [ "one", "two", "three" ],
+        'ul_classes'   => [ "one", "two", "three" ],
     );
 
-    my $rendered =
-        $nav_menu->render();
+    my $rendered = $nav_menu->render();
 
     my $expected_string = <<"EOF";
 <ul class="one">
@@ -640,20 +629,18 @@ EOF
 EOF
 
     # TEST
-    test_nav_menu($rendered, $expected_string, "Mixed Expand Nav-Menu #1");
+    test_nav_menu( $rendered, $expected_string, "Mixed Expand Nav-Menu #1" );
 }
 
-
 {
     my $nav_menu = HTML::Widgets::NavMenu->new(
         'path_info' => "/me/bio/test.html",
-        @{$test_data->{'mixed_expand_menu'}},
+        @{ $test_data->{'mixed_expand_menu'} },
         'current_host' => "other",
-        'ul_classes' => [ "one", "two", "three" ],
+        'ul_classes'   => [ "one", "two", "three" ],
     );
 
-    my $rendered =
-        $nav_menu->render();
+    my $rendered = $nav_menu->render();
 
     my $expected_string = <<"EOF";
 <ul class="one">
@@ -673,19 +660,18 @@ EOF
 EOF
 
     # TEST
-    test_nav_menu($rendered, $expected_string, "Mixed Expand Nav-Menu #2");
+    test_nav_menu( $rendered, $expected_string, "Mixed Expand Nav-Menu #2" );
 }
 
 {
     my $nav_menu = HTML::Widgets::NavMenu->new(
         'path_info' => "/open-source/not-exist/",
-        @{$test_data->{'mixed_expand_menu'}},
+        @{ $test_data->{'mixed_expand_menu'} },
         'current_host' => "other",
-        'ul_classes' => [ "one", "two", "three" ],
+        'ul_classes'   => [ "one", "two", "three" ],
     );
 
-    my $rendered =
-        $nav_menu->render();
+    my $rendered = $nav_menu->render();
 
     my $expected_string = <<"EOF";
 <ul class="one">
@@ -714,18 +700,17 @@ EOF
 EOF
 
     # TEST
-    test_nav_menu($rendered, $expected_string, "Mixed Expand Nav-Menu #3");
+    test_nav_menu( $rendered, $expected_string, "Mixed Expand Nav-Menu #3" );
 }
 
 {
     my $nav_menu = HTML::Widgets::NavMenu->new(
         'path_info' => "/base/",
-        @{$test_data->{'special_chars_menu'}},
+        @{ $test_data->{'special_chars_menu'} },
         'current_host' => "default",
     );
 
-    my $rendered =
-        $nav_menu->render();
+    my $rendered = $nav_menu->render();
 
     my $expected_string = <<"EOF";
 <ul>
@@ -742,19 +727,18 @@ EOF
 EOF
 
     # TEST
-    test_nav_menu($rendered, $expected_string, "Special Chars Nav Menu");
+    test_nav_menu( $rendered, $expected_string, "Special Chars Nav Menu" );
 }
 
 # Test a special chars-based URL.
 {
     my $nav_menu = HTML::Widgets::NavMenu->new(
         'path_info' => "/<hello>&\"you\"/",
-        @{$test_data->{'special_chars_menu'}},
+        @{ $test_data->{'special_chars_menu'} },
         'current_host' => "default",
     );
 
-    my $rendered =
-        $nav_menu->render();
+    my $rendered = $nav_menu->render();
 
     my $expected_string = <<"EOF";
 <ul>
@@ -771,36 +755,35 @@ EOF
 EOF
 
     # TEST
-    test_nav_menu($rendered, $expected_string, "Nav Menu with a special chars URL.");
+    test_nav_menu( $rendered, $expected_string,
+        "Nav Menu with a special chars URL." );
 }
 
 # Test a special chars-based URL.
 {
-    my %args = (@{$test_data->{'special_chars_menu'}});
-    delete($args{'current_host'});
+    my %args = ( @{ $test_data->{'special_chars_menu'} } );
+    delete( $args{'current_host'} );
     eval {
-    my $nav_menu = HTML::Widgets::NavMenu->new(
-        'path_info' => "/<hello>&\"you\"/",
-        %args,
-    );
+        my $nav_menu = HTML::Widgets::NavMenu->new(
+            'path_info' => "/<hello>&\"you\"/",
+            %args,
+        );
     };
 
     # TEST
-    like ($@, qr!^Current host!,
-        "Checking for exception");
+    like( $@, qr!^Current host!, "Checking for exception" );
 }
 
 # This is to test that the cb2 is working properly.
 {
     my $nav_menu = HTML::Widgets::NavMenu->new(
         'path_info' => "/me/not-exist/",
-        @{$test_data->{'mixed_expand_menu'}},
+        @{ $test_data->{'mixed_expand_menu'} },
         'current_host' => "other",
-        'ul_classes' => [ "one", "two", "three" ],
+        'ul_classes'   => [ "one", "two", "three" ],
     );
 
-    my $rendered =
-        $nav_menu->render();
+    my $rendered = $nav_menu->render();
 
     my $expected_string = <<"EOF";
 <ul class="one">
@@ -820,19 +803,18 @@ EOF
 EOF
 
     # TEST
-    test_nav_menu($rendered, $expected_string, "Mixed Expand Nav-Menu #4");
+    test_nav_menu( $rendered, $expected_string, "Mixed Expand Nav-Menu #4" );
 }
 
 {
     my $nav_menu = HTML::Widgets::NavMenu->new(
         'path_info' => "/open-source/",
-        @{$test_data->{'mixed_expand_menu'}},
+        @{ $test_data->{'mixed_expand_menu'} },
         'current_host' => "default",
-        'ul_classes' => [ "one", "two", "three" ],
+        'ul_classes'   => [ "one", "two", "three" ],
     );
 
-    my $rendered =
-        $nav_menu->render();
+    my $rendered = $nav_menu->render();
 
     my $expected_string = <<"EOF";
 <ul class="one">
@@ -852,19 +834,18 @@ EOF
 EOF
 
     # TEST
-    test_nav_menu($rendered, $expected_string, "Mixed Expand Nav-Menu #5");
+    test_nav_menu( $rendered, $expected_string, "Mixed Expand Nav-Menu #5" );
 }
 
 {
     my $nav_menu = HTML::Widgets::NavMenu->new(
         'path_info' => "/humour/by-others/foo.html",
-        @{$test_data->{'non_capturing_expand'}},
+        @{ $test_data->{'non_capturing_expand'} },
         'current_host' => "default",
-        'ul_classes' => [ "one", "two", "three" ],
+        'ul_classes'   => [ "one", "two", "three" ],
     );
 
-    my $rendered =
-        $nav_menu->render();
+    my $rendered = $nav_menu->render();
 
     my $expected_string = <<"EOF";
 <ul class="one">
@@ -896,7 +877,7 @@ EOF
 EOF
 
     # TEST
-    test_nav_menu($rendered, $expected_string, "Non Capturing Expand");
+    test_nav_menu( $rendered, $expected_string, "Non Capturing Expand" );
 }
 
 # This test tests that the URLs do not have "./" prepended to them
@@ -904,13 +885,12 @@ EOF
 {
     my $nav_menu = HTML::Widgets::NavMenu->new(
         'path_info' => "/me/bio.html",
-        @{$test_data->{'items_in_sub'}},
-        'ul_classes' => [ "navbarmain", ("navbarnested") x 5 ],
+        @{ $test_data->{'items_in_sub'} },
+        'ul_classes'   => [ "navbarmain", ("navbarnested") x 5 ],
         no_leading_dot => 1,
     );
 
-    my $rendered =
-        $nav_menu->render();
+    my $rendered = $nav_menu->render();
 
     my $expected_string = <<"EOF";
 <ul class="navbarmain">
@@ -936,18 +916,18 @@ EOF
 EOF
 
     # TEST
-    test_nav_menu($rendered, $expected_string, "no_leading_dot removes the extra ./");
+    test_nav_menu( $rendered, $expected_string,
+        "no_leading_dot removes the extra ./" );
 }
 
 {
     my $nav_menu = HTML::Widgets::NavMenu::HeaderRole->new(
         'path_info' => "/me/",
-        @{$test_data->{'header_role_with_empty_cat'}},
+        @{ $test_data->{'header_role_with_empty_cat'} },
         'ul_classes' => [ "navbarmain", ("navbarnested") x 5 ],
     );
 
-    my $rendered =
-        $nav_menu->render();
+    my $rendered = $nav_menu->render();
 
     my $expected_string = <<"EOF";
 <ul class="navbarmain">
@@ -981,20 +961,19 @@ EOF
 EOF
 
     # TEST
-    test_nav_menu($rendered, $expected_string,
-        "Nav Menu with an empty header role.");
+    test_nav_menu( $rendered, $expected_string,
+        "Nav Menu with an empty header role." );
 }
 
 # Test HTML::Widgets::NavMenu::JQueryTreeView .
 {
     my $nav_menu = HTML::Widgets::NavMenu::JQueryTreeView->new(
         'path_info' => "/me/bio/test.html",
-        @{$test_data->{'selective_expand'}},
+        @{ $test_data->{'selective_expand'} },
         'ul_classes' => [ "one", "two", "three" ],
     );
 
-    my $rendered =
-        $nav_menu->render();
+    my $rendered = $nav_menu->render();
 
     my $expected_string = <<"EOF";
 <ul class="one">
@@ -1035,19 +1014,19 @@ EOF
 EOF
 
     # TEST
-    test_nav_menu($rendered, $expected_string, "HTML::Widgets::NavMenu::JQueryTreeView #1");
+    test_nav_menu( $rendered, $expected_string,
+        "HTML::Widgets::NavMenu::JQueryTreeView #1" );
 }
 
 # Test HTML::Widgets::NavMenu::JQueryTreeView with hidden.
 {
     my $nav_menu = HTML::Widgets::NavMenu::JQueryTreeView->new(
         'path_info' => "/me/",
-        @{$test_data->{'hidden_item'}},
+        @{ $test_data->{'hidden_item'} },
         'ul_classes' => [ "one", "two", "three" ],
     );
 
-    my $rendered =
-        $nav_menu->render();
+    my $rendered = $nav_menu->render();
 
     my $expected_string = <<"EOF";
 <ul class="one">
@@ -1070,19 +1049,19 @@ EOF
 EOF
 
     # TEST
-    test_nav_menu($rendered, $expected_string, "JQTreeView Nav Menu with Hidden Item");
+    test_nav_menu( $rendered, $expected_string,
+        "JQTreeView Nav Menu with Hidden Item" );
 }
 
 # Test HTML::Widgets::NavMenu::JQueryTreeView with li_id.
 {
     my $nav_menu = HTML::Widgets::NavMenu::JQueryTreeView->new(
         'path_info' => "/me/",
-        @{$test_data->{'with_ids_nav_menu'}},
+        @{ $test_data->{'with_ids_nav_menu'} },
         'ul_classes' => [ "one", "two", "three" ],
     );
 
-    my $rendered =
-        $nav_menu->render();
+    my $rendered = $nav_menu->render();
 
     my $expected_string = <<"EOF";
 <ul class="one">
@@ -1105,20 +1084,19 @@ EOF
 EOF
 
     # TEST
-    test_nav_menu($rendered, $expected_string,
-        "JQTreeView Nav Menu with li_id");
+    test_nav_menu( $rendered, $expected_string,
+        "JQTreeView Nav Menu with li_id" );
 }
 
 # Test HTML::Widgets::NavMenu (non-JQueryTreeView) with li_id.
 {
     my $nav_menu = HTML::Widgets::NavMenu->new(
         'path_info' => "/me/",
-        @{$test_data->{'with_ids_nav_menu'}},
+        @{ $test_data->{'with_ids_nav_menu'} },
         'ul_classes' => [ "one", "two", "three" ],
     );
 
-    my $rendered =
-        $nav_menu->render();
+    my $rendered = $nav_menu->render();
 
     my $expected_string = <<"EOF";
 <ul class="one">
@@ -1141,6 +1119,6 @@ EOF
 EOF
 
     # TEST
-    test_nav_menu($rendered, $expected_string,
-        "Non-JQTreeView Nav Menu with li_id");
+    test_nav_menu( $rendered, $expected_string,
+        "Non-JQTreeView Nav Menu with li_id" );
 }
diff --git a/t/05stack.t b/t/05stack.t
index 18d2d45..b9fcdda 100644
--- a/t/05stack.t
+++ b/t/05stack.t
@@ -4,41 +4,44 @@ use Test::More tests => 23;
 
 use strict;
 
-BEGIN {
-use_ok ('HTML::Widgets::NavMenu::Tree::Iterator::Stack'); # TEST
+BEGIN
+{
+    use_ok('HTML::Widgets::NavMenu::Tree::Iterator::Stack');    # TEST
 }
 
 {
     my $stack = HTML::Widgets::NavMenu::Tree::Iterator::Stack->new();
-    ok ( $stack, "Checking for Object Allocation"); # TEST
-    is ( $stack->len(), 0, "len() == 0 on allocation"); # TEST
-    ok ( $stack->is_empty(), "is_empty() on allocation"); # TEST
+    ok( $stack, "Checking for Object Allocation" );             # TEST
+    is( $stack->len(), 0, "len() == 0 on allocation" );         # TEST
+    ok( $stack->is_empty(), "is_empty() on allocation" );       # TEST
     $stack->push("Hello");
     $stack->push("World");
+
     # TEST
-    ok ( (!$stack->is_empty()), "is_empty() is not true after filling");
+    ok( ( !$stack->is_empty() ), "is_empty() is not true after filling" );
     $stack->push("TamTam");
-    is ( $stack->len(), 3, "Checking stack len"); # TEST
-    is ( $stack->top(), "TamTam", "Checking top of stack"); # TEST
-    is ( $stack->item(2), "TamTam", "Checking Item 2"); # TEST
-    is ( $stack->item(1), "World", "Checking Item 1"); # TEST
-    is ( $stack->item(0), "Hello", "Checking Item 0"); # TEST
+    is( $stack->len(),   3,        "Checking stack len" );       # TEST
+    is( $stack->top(),   "TamTam", "Checking top of stack" );    # TEST
+    is( $stack->item(2), "TamTam", "Checking Item 2" );          # TEST
+    is( $stack->item(1), "World",  "Checking Item 1" );          # TEST
+    is( $stack->item(0), "Hello",  "Checking Item 0" );          # TEST
     my $popped_item = $stack->pop();
-    is ( $popped_item, "TamTam", "Popped Item"); # TEST
-    is ( $stack->len(), 2, "Checking stack len"); # TEST
-    # TEST
-    is ( $stack->top(), "World", "Checking stack top after pop");
+    is( $popped_item,  "TamTam", "Popped Item" );                    # TEST
+    is( $stack->len(), 2,        "Checking stack len" );             # TEST
+                                                                     # TEST
+    is( $stack->top(), "World",  "Checking stack top after pop" );
     $stack->push("Quatts");
-    is ( $stack->len(), 3, "Stack Len"); # TEST
-    is ( $stack->top(), "Quatts", "Top Item is Quatts"); # TEST
+    is( $stack->len(), 3,        "Stack Len" );                      # TEST
+    is( $stack->top(), "Quatts", "Top Item is Quatts" );             # TEST
     $stack->pop();
     $stack->pop();
     $stack->pop();
+
     # TEST
-    ok ( (! defined($stack->top())),
-        "Checking for top() returning undef on empty stack");
-    is ( $stack->len(), 0, "len() == 0 after popping all elements"); # TEST
-    ok ( $stack->is_empty(), "is_empty() after popping all elements"); # TEST
+    ok( ( !defined( $stack->top() ) ),
+        "Checking for top() returning undef on empty stack" );
+    is( $stack->len(), 0, "len() == 0 after popping all elements" );    # TEST
+    ok( $stack->is_empty(), "is_empty() after popping all elements" );  # TEST
 }
 
 {
@@ -48,14 +51,16 @@ use_ok ('HTML::Widgets::NavMenu::Tree::Iterator::Stack'); # TEST
     $stack->push("Quality");
     $stack->push("Pardon");
     $stack->reset();
-    is ( $stack->len(), 0, "len() == 0 after reset"); # TEST
-    ok ( $stack->is_empty(), "is_empty() after reset"); # TEST
-    # TEST
-    ok ( (! defined($stack->top())),
-        "Checking for top() returning undef on reset stack");
+    is( $stack->len(), 0, "len() == 0 after reset" );                   # TEST
+    ok( $stack->is_empty(), "is_empty() after reset" );                 # TEST
+                                                                        # TEST
+    ok( ( !defined( $stack->top() ) ),
+        "Checking for top() returning undef on reset stack" );
     $stack->push("Condor");
+
     # TEST
-    is ( $stack->len(), 1, "len() after push() after reset");
+    is( $stack->len(), 1, "len() after push() after reset" );
+
     # TEST
-    is ( $stack->item(0), "Condor", "Stack is correct after push after reset");
+    is( $stack->item(0), "Condor", "Stack is correct after push after reset" );
 }
diff --git a/t/06tree-iter-item.t b/t/06tree-iter-item.t
index b64d7ee..539b9a1 100644
--- a/t/06tree-iter-item.t
+++ b/t/06tree-iter-item.t
@@ -4,8 +4,9 @@ use Test::More tests => 33;
 
 use strict;
 
-BEGIN {
-use_ok ('HTML::Widgets::NavMenu::Tree::Iterator::Item'); # TEST
+BEGIN
+{
+    use_ok('HTML::Widgets::NavMenu::Tree::Iterator::Item');    # TEST
 }
 
 # Let's test the constructor:
@@ -16,104 +17,103 @@ sub does_throw_exception
     my $args = shift;
     my $new_item;
     eval {
-        $new_item = HTML::Widgets::NavMenu::Tree::Iterator::Item->new(
-            {@$args}
-            );
+        $new_item =
+            HTML::Widgets::NavMenu::Tree::Iterator::Item->new( {@$args} );
     };
     if ($@)
     {
-        return (1, undef);
+        return ( 1, undef );
     }
     else
     {
-        return (0, $new_item);
+        return ( 0, $new_item );
     }
 }
 
 {
-    my @args_components =
-        (
-            [ 'node' => +{ 'hello' => 'world', }, ],
-            [ 'subs' => [], ],
-            [ 'accum_state' => +{ 'yes' => "sir", }, ],
-        );
+    my @args_components = (
+        [ 'node'        => +{ 'hello' => 'world', }, ],
+        [ 'subs'        => [], ],
+        [ 'accum_state' => +{ 'yes' => "sir", }, ],
+    );
+
     # TEST*2*2*2
-    for(my $i=0;$i<(2**@args_components);$i++)
+    for ( my $i = 0 ; $i < ( 2**@args_components ) ; $i++ )
     {
-        my @args = (map { ($i & (1<<$_)) ? (@{$args_components[$_]}) : () } (0 .. $#args_components));
-        my ($exception_thrown, $new_item) = does_throw_exception(\@args);
-        if ($i == (2**@args_components)-1)
+        my @args =
+            ( map { ( $i & ( 1 << $_ ) ) ? ( @{ $args_components[$_] } ) : () }
+                ( 0 .. $#args_components ) );
+        my ( $exception_thrown, $new_item ) = does_throw_exception( \@args );
+        if ( $i == ( 2**@args_components ) - 1 )
         {
-            ok(((!$exception_thrown) && $new_item),
-                "Checking for constructor success with good arguments");
+            ok( ( ( !$exception_thrown ) && $new_item ),
+                "Checking for constructor success with good arguments" );
         }
         else
         {
-            ok($exception_thrown, "Checking for constructor failure - No. $i");
+            ok( $exception_thrown,
+                "Checking for constructor failure - No. $i" );
         }
     }
 }
 
 {
-    my $item =
-        HTML::Widgets::NavMenu::Tree::Iterator::Item->new(
-            {
-                'node' => "Hello",
-                'subs' => [],
-                'accum_state' => 5,
-            }
-        );
+    my $item = HTML::Widgets::NavMenu::Tree::Iterator::Item->new(
+        {
+            'node'        => "Hello",
+            'subs'        => [],
+            'accum_state' => 5,
+        }
+    );
 
     # TEST
-    is ($item->_node(), "Hello", "Getting the node()");
+    is( $item->_node(), "Hello", "Getting the node()" );
 }
 
 {
-    my $item =
-        HTML::Widgets::NavMenu::Tree::Iterator::Item->new(
-            {
-                'node' => "Hello",
-                'subs' => [],
-                'accum_state' => "Foobardom",
-            }
-        );
+    my $item = HTML::Widgets::NavMenu::Tree::Iterator::Item->new(
+        {
+            'node'        => "Hello",
+            'subs'        => [],
+            'accum_state' => "Foobardom",
+        }
+    );
 
     # TEST
-    is ($item->_accum_state(), "Foobardom", "Getting Foobardom");
+    is( $item->_accum_state(), "Foobardom", "Getting Foobardom" );
 }
 
 {
-    my $item =
-        HTML::Widgets::NavMenu::Tree::Iterator::Item->new(
-            {
-                'node' => "Hello",
-                'subs' => ["ONE", "Two", "threE3", "4.0"],
-                'accum_state' => 5,
-            }
-        );
-
+    my $item = HTML::Widgets::NavMenu::Tree::Iterator::Item->new(
+        {
+            'node'        => "Hello",
+            'subs'        => [ "ONE", "Two", "threE3", "4.0" ],
+            'accum_state' => 5,
+        }
+    );
 
-    ok ((!$item->_is_visited()), "Item is not visited at start"); # TEST
-    is ($item->_num_subs_to_go(), 4, "Num subs to go at start"); # TEST
-    is ($item->_num_subs(), 4, "Num subs at start"); # TEST
-    is ($item->_visit(), "ONE", "First sub"); # TEST
-    is ($item->_num_subs_to_go(), 3, "Num subs to go after first visit"); # TEST
-    ok ($item->_is_visited(), "Item is visited after first visit"); # TEST
-    is ($item->_visit(), "Two", "Second sub"); # TEST
-    ok ($item->_is_visited(), "Item is visited after second visit"); # TEST
-    is ($item->_num_subs_to_go(), 2, "Num subs to go (3)"); # TEST
-    is ($item->_num_subs(), 4, "Num subs at middle"); # TEST
-    is ($item->_visit(), "threE3", "Third sub"); # TEST
-    ok ($item->_is_visited(), "Item is visited after third visit"); # TEST
-    is ($item->_num_subs_to_go(), 1, "Num subs to go (4)"); # TEST
-    is ($item->_visit(), "4.0", "Fourth sub"); # TEST
-    ok ($item->_is_visited(), "Item is visited after fourth visit"); # TEST
-    is ($item->_num_subs_to_go(), 0, "Num subs to go (end)"); # TEST
-    ok ((!defined($item->_visit())), "No more subs"); # TEST
-    ok ($item->_is_visited(), "Item is visited after no more subs"); # TEST
-    is ($item->_num_subs_to_go(), 0, "Num subs to go (end 2)"); # TEST
-    is ($item->_num_subs(), 4, "Num subs at finish"); # TEST
-    ok ((!defined($item->_visit())), "No more subs (2)"); # TEST
-    is ($item->_node(), "Hello", "item->_node() is correct"); # TEST
+    ok( ( !$item->_is_visited() ), "Item is not visited at start" );    # TEST
+    is( $item->_num_subs_to_go(), 4,     "Num subs to go at start" );   # TEST
+    is( $item->_num_subs(),       4,     "Num subs at start" );         # TEST
+    is( $item->_visit(),          "ONE", "First sub" );                 # TEST
+    is( $item->_num_subs_to_go(), 3, "Num subs to go after first visit" )
+        ;                                                               # TEST
+    ok( $item->_is_visited(), "Item is visited after first visit" );    # TEST
+    is( $item->_visit(), "Two", "Second sub" );                         # TEST
+    ok( $item->_is_visited(), "Item is visited after second visit" );   # TEST
+    is( $item->_num_subs_to_go(), 2,        "Num subs to go (3)" );     # TEST
+    is( $item->_num_subs(),       4,        "Num subs at middle" );     # TEST
+    is( $item->_visit(),          "threE3", "Third sub" );              # TEST
+    ok( $item->_is_visited(), "Item is visited after third visit" );    # TEST
+    is( $item->_num_subs_to_go(), 1,     "Num subs to go (4)" );        # TEST
+    is( $item->_visit(),          "4.0", "Fourth sub" );                # TEST
+    ok( $item->_is_visited(), "Item is visited after fourth visit" );   # TEST
+    is( $item->_num_subs_to_go(), 0, "Num subs to go (end)" );          # TEST
+    ok( ( !defined( $item->_visit() ) ), "No more subs" );              # TEST
+    ok( $item->_is_visited(), "Item is visited after no more subs" );   # TEST
+    is( $item->_num_subs_to_go(), 0, "Num subs to go (end 2)" );        # TEST
+    is( $item->_num_subs(),       4, "Num subs at finish" );            # TEST
+    ok( ( !defined( $item->_visit() ) ), "No more subs (2)" );          # TEST
+    is( $item->_node(), "Hello", "item->_node() is correct" );          # TEST
 
 }
diff --git a/t/07tree-iter.t b/t/07tree-iter.t
index ace2818..a12e9c1 100644
--- a/t/07tree-iter.t
+++ b/t/07tree-iter.t
@@ -6,10 +6,12 @@ use strict;
 
 use base 'HTML::Widgets::NavMenu::Tree::Iterator';
 
-__PACKAGE__->mk_accessors(qw(
-    _results
-    _data
-    ));
+__PACKAGE__->mk_accessors(
+    qw(
+        _results
+        _data
+        )
+);
 
 sub _init
 {
@@ -19,9 +21,9 @@ sub _init
 
     my $args = shift;
 
-    $self->_data($args->{'data'});
+    $self->_data( $args->{'data'} );
 
-    $self->_results([]);
+    $self->_results( [] );
 
     return 0;
 }
@@ -29,7 +31,7 @@ sub _init
 sub append
 {
     my $self = shift;
-    push @{$self->_results()}, @_;
+    push @{ $self->_results() }, @_;
     return 0;
 }
 
@@ -41,40 +43,39 @@ sub get_initial_node
 
 sub get_node_subs
 {
-    my ($self, $args) = @_;
+    my ( $self, $args ) = @_;
 
     my $node = $args->{'node'};
 
-    return
-        exists($node->{'childs'}) ?
-            [ @{$node->{'childs'}} ] :
-            [];
+    return exists( $node->{'childs'} )
+        ? [ @{ $node->{'childs'} } ]
+        : [];
 }
 
 sub get_new_accum_state
 {
-    my ($self, $args) = @_;
+    my ( $self, $args ) = @_;
     my $parent_item = $args->{'item'};
-    my $node = $args->{'node'};
+    my $node        = $args->{'node'};
 
-    if (!defined($parent_item))
+    if ( !defined($parent_item) )
     {
         return $node->{'accum'};
     }
 
-    my $prev_state =
-        $parent_item->_accum_state();
+    my $prev_state = $parent_item->_accum_state();
 
-    return ($node->{'accum'} || $prev_state);
+    return ( $node->{'accum'} || $prev_state );
 }
 
 sub node_start
 {
-    my $self = shift;
+    my $self     = shift;
     my $top_item = $self->top;
-    my $node = $self->top->_node();
+    my $node     = $self->top->_node();
 
-    $self->append(join("-", "Start", $node->{'id'}, $top_item->_accum_state));
+    $self->append(
+        join( "-", "Start", $node->{'id'}, $top_item->_accum_state ) );
 }
 
 sub node_end
@@ -82,7 +83,7 @@ sub node_end
     my $self = shift;
     my $node = $self->top->_node();
 
-    $self->append(join("-", "End", $node->{'id'}));
+    $self->append( join( "-", "End", $node->{'id'} ) );
 }
 
 sub node_should_recurse
@@ -98,7 +99,7 @@ package MyIterComplexSubs;
 
 use vars qw(@ISA);
 
-@ISA=qw(MyIter);
+@ISA = qw(MyIter);
 
 sub get_node_from_sub
 {
@@ -106,7 +107,7 @@ sub get_node_from_sub
     my $args = shift;
 
     my $item = $args->{'item'};
-    my $sub = $args->{'sub'};
+    my $sub  = $args->{'sub'};
     my $node = $item->_node();
 
     return $node->{'subs_db'}->{$sub};
@@ -122,178 +123,173 @@ use strict;
 
 sub test_traverse
 {
-    my ($data, $expected, $test_name, $class) = (@_);
+    my ( $data, $expected, $test_name, $class ) = (@_);
     $class ||= "MyIter";
-    my $traverser =
-        $class->new(
-            {
-                'data' => $data
-            },
-        );
+    my $traverser = $class->new(
+        {
+            'data' => $data
+        },
+    );
 
     $traverser->traverse();
 
-    is_deeply($traverser->_results(), $expected, $test_name);
+    is_deeply( $traverser->_results(), $expected, $test_name );
 }
 
 {
-    my $data =
-        {
-            'id' => "A",
-            'recurse' => 1,
-            'accum' => "one",
-            'childs' =>
-            [
-                {
-                    'id' => "B",
-                    'accum' => "two",
-                },
-                {
-                    'id' => "C",
-                    'recurse' => 1,
-                    'childs' =>
-                    [
-                        {
-                            'id' => "FG",
-                        },
-                    ],
-                },
-            ],
-        };
-    my @expected = ("Start-A-one", "Start-B-two", "End-B",
-        "Start-C-one", "Start-FG-one", "End-FG", "End-C", "End-A");
+    my $data = {
+        'id'      => "A",
+        'recurse' => 1,
+        'accum'   => "one",
+        'childs'  => [
+            {
+                'id'    => "B",
+                'accum' => "two",
+            },
+            {
+                'id'      => "C",
+                'recurse' => 1,
+                'childs'  => [
+                    {
+                        'id' => "FG",
+                    },
+                ],
+            },
+        ],
+    };
+    my @expected = (
+        "Start-A-one",  "Start-B-two", "End-B", "Start-C-one",
+        "Start-FG-one", "End-FG",      "End-C", "End-A"
+    );
 
     # TEST
-    test_traverse($data, \@expected, "Simple example for testing the Tree traverser.");
+    test_traverse( $data, \@expected,
+        "Simple example for testing the Tree traverser." );
 }
 
 # This test checks that the should_recurse predicate is honoured.
 {
-    my $data =
-        {
-            'id' => "A",
-            'recurse' => 1,
-            'accum' => "one",
-            'childs' =>
-            [
-                {
-                    'id' => "B",
-                    'accum' => "two",
-                },
-                {
-                    'id' => "C",
-                    'recurse' => 0,
-                    'childs' =>
-                    [
-                        {
-                            'id' => "FG",
-                        },
-                    ],
-                },
-            ],
-        };
-    my @expected = ("Start-A-one", "Start-B-two", "End-B",
-        "Start-C-one", "End-C", "End-A");
+    my $data = {
+        'id'      => "A",
+        'recurse' => 1,
+        'accum'   => "one",
+        'childs'  => [
+            {
+                'id'    => "B",
+                'accum' => "two",
+            },
+            {
+                'id'      => "C",
+                'recurse' => 0,
+                'childs'  => [
+                    {
+                        'id' => "FG",
+                    },
+                ],
+            },
+        ],
+    };
+    my @expected = (
+        "Start-A-one", "Start-B-two", "End-B", "Start-C-one",
+        "End-C",       "End-A"
+    );
 
     # TEST
-    test_traverse($data, \@expected, "Example with recurse = 0");
+    test_traverse( $data, \@expected, "Example with recurse = 0" );
 }
 
 {
-    my $data =
-        {
-            'id' => "A",
-            'recurse' => 1,
-            'accum' => "one",
-            'childs' =>
-            [
-                {
-                    'id' => "B",
-                    'accum' => "two",
-                },
-                {
-                    'id' => "C",
-                    'recurse' => 0,
-                    'childs' =>
-                    [
-                        {
-                            'id' => "FG",
-                        },
-                        {
-                            'id' => "E",
-                            'recurse' => 0,
-                            'childs' =>
-                            [
-                                {
-                                    'id' => "Y",
-                                },
-                                {
-                                    'id' => "Z",
-                                },
-                            ],
-                        },
-                    ],
-                },
-                {
-                    'id' => "AGH",
-                    'recurse' => 1,
-                    'accum' => "three",
-                    'childs' =>
-                    [
-                        {
-                            'id' => "MON",
-                            'recurse' => 0,
-                            'accum' => "four",
-                            'childs' =>
-                            [
-                                {
-                                    'id' => "HELLO",
-                                    'recurse' => 1,
-                                },
-                            ],
-                        },
-                        {
-                            'id' => "KOJ",
-                            'recurse' => 1,
-                        },
-                    ],
-                }
-            ],
-        };
-    my @expected = ("Start-A-one", "Start-B-two", "End-B",
-        "Start-C-one", "End-C", "Start-AGH-three",
-        "Start-MON-four", "End-MON", "Start-KOJ-three", "End-KOJ",
-        "End-AGH", "End-A");
+    my $data = {
+        'id'      => "A",
+        'recurse' => 1,
+        'accum'   => "one",
+        'childs'  => [
+            {
+                'id'    => "B",
+                'accum' => "two",
+            },
+            {
+                'id'      => "C",
+                'recurse' => 0,
+                'childs'  => [
+                    {
+                        'id' => "FG",
+                    },
+                    {
+                        'id'      => "E",
+                        'recurse' => 0,
+                        'childs'  => [
+                            {
+                                'id' => "Y",
+                            },
+                            {
+                                'id' => "Z",
+                            },
+                        ],
+                    },
+                ],
+            },
+            {
+                'id'      => "AGH",
+                'recurse' => 1,
+                'accum'   => "three",
+                'childs'  => [
+                    {
+                        'id'      => "MON",
+                        'recurse' => 0,
+                        'accum'   => "four",
+                        'childs'  => [
+                            {
+                                'id'      => "HELLO",
+                                'recurse' => 1,
+                            },
+                        ],
+                    },
+                    {
+                        'id'      => "KOJ",
+                        'recurse' => 1,
+                    },
+                ],
+            }
+        ],
+    };
+    my @expected = (
+        "Start-A-one",     "Start-B-two",
+        "End-B",           "Start-C-one",
+        "End-C",           "Start-AGH-three",
+        "Start-MON-four",  "End-MON",
+        "Start-KOJ-three", "End-KOJ",
+        "End-AGH",         "End-A"
+    );
 
     # TEST
-    test_traverse($data, \@expected, "Example with lots of weird combinations");
+    test_traverse( $data, \@expected,
+        "Example with lots of weird combinations" );
 }
 
 {
-    my $data =
-        {
-            'id' => "A",
-            'recurse' => 1,
-            'accum' => "one",
-            'childs' => [qw(hello good)],
-            'subs_db' =>
-            {
-                'hello' =>
-                {
-                    'id' => "BOK",
-                    'accum' => "two",
-                },
-                'good' =>
-                {
-                    'id' => "C",
-                },
+    my $data = {
+        'id'      => "A",
+        'recurse' => 1,
+        'accum'   => "one",
+        'childs'  => [qw(hello good)],
+        'subs_db' => {
+            'hello' => {
+                'id'    => "BOK",
+                'accum' => "two",
+            },
+            'good' => {
+                'id' => "C",
             },
-        };
+        },
+    };
 
-    my @expected = ("Start-A-one", "Start-BOK-two", "End-BOK",
-        "Start-C-one", "End-C", "End-A");
+    my @expected = (
+        "Start-A-one", "Start-BOK-two", "End-BOK", "Start-C-one",
+        "End-C",       "End-A"
+    );
 
     # TEST
-    test_traverse($data, \@expected, "Example with complex sub resolution",
-        "MyIterComplexSubs");
+    test_traverse( $data, \@expected, "Example with complex sub resolution",
+        "MyIterComplexSubs" );
 }
diff --git a/t/08tree-node.t b/t/08tree-node.t
index baf7096..34eaed2 100644
--- a/t/08tree-node.t
+++ b/t/08tree-node.t
@@ -4,118 +4,127 @@ use Test::More tests => 34;
 
 use strict;
 
-BEGIN {
-use_ok ('HTML::Widgets::NavMenu::Tree::Node'); # TEST
+BEGIN
+{
+    use_ok('HTML::Widgets::NavMenu::Tree::Node');    # TEST
 }
 
 {
     my $node = HTML::Widgets::NavMenu::Tree::Node->new();
-    ok($node, "Constructing"); # TEST
+    ok( $node, "Constructing" );                     # TEST
 
     $node->url("Rabbi/Zalman/");
-    is($node->url(), "Rabbi/Zalman/", "Testing for URL Setting"); # TEST
+    is( $node->url(), "Rabbi/Zalman/", "Testing for URL Setting" );    # TEST
     $node->text("Trail of Innocence");
-    is($node->text(), "Trail of Innocence", "Testing for text"); # TEST
+    is( $node->text(), "Trail of Innocence", "Testing for text" );     # TEST
     $node->show_always(1);
-    is($node->show_always(), 1, "Set/get show_always"); # TEST
+    is( $node->show_always(), 1, "Set/get show_always" );              # TEST
     $node->title("It's Raining");
-    is($node->title(), "It's Raining", "Set/get title"); # TEST
+    is( $node->title(), "It's Raining", "Set/get title" );             # TEST
     $node->host("vipe");
-    is($node->host(), "vipe", "Set/get host"); # TEST
+    is( $node->host(), "vipe", "Set/get host" );                       # TEST
     $node->url_type("site_abs");
-    is($node->url_type(), "site_abs", "Set/get url_type"); # TEST
+    is( $node->url_type(), "site_abs", "Set/get url_type" );           # TEST
 
     # Testing again for the same values to see that they are still OK.
 
-    is($node->url(), "Rabbi/Zalman/", "Testing for URL Setting"); # TEST
-    is($node->text(), "Trail of Innocence", "Testing for text"); # TEST
-    is($node->show_always(), 1, "Set/get show_always");  # TEST
-    is($node->title(), "It's Raining", "Set/get title"); # TEST
-    is($node->host(), "vipe", "Set/get host"); # TEST
-    is($node->url_type(), "site_abs", "Set/get url_type"); # TEST
+    is( $node->url(),  "Rabbi/Zalman/",      "Testing for URL Setting" ); # TEST
+    is( $node->text(), "Trail of Innocence", "Testing for text" );        # TEST
+    is( $node->show_always(), 1,              "Set/get show_always" );    # TEST
+    is( $node->title(),       "It's Raining", "Set/get title" );          # TEST
+    is( $node->host(),        "vipe",         "Set/get host" );           # TEST
+    is( $node->url_type(),    "site_abs",     "Set/get url_type" );       # TEST
 }
 
 {
     my $node = HTML::Widgets::NavMenu::Tree::Node->new();
 
-    ok ((!$node->separator()), "Testing Node Separator - False"); # TEST
+    ok( ( !$node->separator() ), "Testing Node Separator - False" );      # TEST
     $node->separator(1);
-    ok ($node->separator(), "Testing Node Separator - True"); # TEST
+    ok( $node->separator(), "Testing Node Separator - True" );            # TEST
 }
 
 {
     my $node = HTML::Widgets::NavMenu::Tree::Node->new();
 
-    ok ((!$node->hide()), "Testing Node Hide - False"); # TEST
+    ok( ( !$node->hide() ), "Testing Node Hide - False" );                # TEST
     $node->hide(1);
-    ok ($node->hide(), "Testing Node Hide - True"); # TEST
+    ok( $node->hide(), "Testing Node Hide - True" );                      # TEST
 }
 
 {
     my $node = HTML::Widgets::NavMenu::Tree::Node->new();
 
     # TEST
-    ok(!defined($node->role()),
-        "Testing that role is undeffed at start");
+    ok( !defined( $node->role() ), "Testing that role is undeffed at start" );
     $node->role("hoola");
-    is($node->role(), "hoola", "Testing role setted value"); # TEST
+    is( $node->role(), "hoola", "Testing role setted value" );            # TEST
 }
 
 {
     my $node = HTML::Widgets::NavMenu::Tree::Node->new();
 
-    ok((!$node->expanded()), "Testing node->expanded()"); # TEST
+    ok( ( !$node->expanded() ), "Testing node->expanded()" );             # TEST
     $node->expand();
-    ok($node->expanded(), "Testing node->expanded() after expand()"); # TEST
+    ok( $node->expanded(), "Testing node->expanded() after expand()" );   # TEST
 }
 
 {
     my $node = HTML::Widgets::NavMenu::Tree::Node->new();
 
-    ok((!$node->CurrentlyActive()), "Testing node->CurrentlyActive()"); # TEST
-    # TEST
-    ok((!$node->expanded()),
-        "Testing node->expanded() before mark_as_current()");
+    ok( ( !$node->CurrentlyActive() ), "Testing node->CurrentlyActive()" )
+        ;                                                                 # TEST
+                                                                          # TEST
+    ok( ( !$node->expanded() ),
+        "Testing node->expanded() before mark_as_current()" );
     $node->mark_as_current();
+
     # TEST
-    ok($node->CurrentlyActive(),
-        "Testing node->CurAct() after mark_as_current()");
+    ok( $node->CurrentlyActive(),
+        "Testing node->CurAct() after mark_as_current()" );
+
     # TEST
-    ok($node->expanded(),
-        "Testing node->expanded() after mark_as_current()");
+    ok( $node->expanded(), "Testing node->expanded() after mark_as_current()" );
 }
 
 {
     my $node = HTML::Widgets::NavMenu::Tree::Node->new();
 
     # TEST
-    is(scalar(@{$node->subs()}), 0,
-        "Testing emptiness of node->subs at start");
+    is( scalar( @{ $node->subs() } ),
+        0, "Testing emptiness of node->subs at start" );
 
     my $sub_node1 = HTML::Widgets::NavMenu::Tree::Node->new();
     $sub_node1->url("Emperor/Kuzko/");
     $node->add_sub($sub_node1);
+
     # TEST
-    is(scalar(@{$node->subs()}), 1, "node->subs len == 1");
+    is( scalar( @{ $node->subs() } ), 1, "node->subs len == 1" );
+
     # TEST
-    is($node->subs()->[0]->url(), "Emperor/Kuzko/", "node->subs contents");
+    is( $node->subs()->[0]->url(), "Emperor/Kuzko/", "node->subs contents" );
     my $sub_node2 = HTML::Widgets::NavMenu::Tree::Node->new();
     $sub_node2->url("gimp/ressionist/");
     $node->add_sub($sub_node2);
+
     # TEST
-    is(scalar(@{$node->subs()}), 2, "node->subs len == 2");
+    is( scalar( @{ $node->subs() } ), 2, "node->subs len == 2" );
+
     # TEST
-    is($node->subs()->[0]->url(), "Emperor/Kuzko/",
-        "node->subs contents again");
+    is( $node->subs()->[0]->url(),
+        "Emperor/Kuzko/", "node->subs contents again" );
+
     # TEST
-    is($node->subs()->[1]->url(), "gimp/ressionist/",
-        "node->subs[1] contents");
+    is( $node->subs()->[1]->url(),
+        "gimp/ressionist/", "node->subs[1] contents" );
+
     # TEST
-    ok(!$node->expanded(), "Node is not expanded");
+    ok( !$node->expanded(), "Node is not expanded" );
     my $sub_node3 = HTML::Widgets::NavMenu::Tree::Node->new();
     $sub_node3->expand();
     $node->add_sub($sub_node3);
+
     # TEST
-    ok($node->expanded(), "Node is expanded after adding an expanded item");
+    ok( $node->expanded(), "Node is expanded after adding an expanded item" );
 }
 
diff --git a/t/09leading-path.t b/t/09leading-path.t
index f8e3456..682dbb7 100644
--- a/t/09leading-path.t
+++ b/t/09leading-path.t
@@ -17,196 +17,201 @@ my $test_data = get_test_data();
 {
     my $nav_menu = HTML::Widgets::NavMenu->new(
         'path_info' => "/non-existent-path/",
-        @{$test_data->{'minimal'}},
+        @{ $test_data->{'minimal'} },
     );
 
-    my $rendered =
-        $nav_menu->render();
+    my $rendered = $nav_menu->render();
 
-    my @leading_path = @{$rendered->{'leading_path'}};
+    my @leading_path = @{ $rendered->{'leading_path'} };
 
     # TEST
-    ok ((scalar(@leading_path) == 1), "Checking for a leading path of len 1");
+    ok( ( scalar(@leading_path) == 1 ),
+        "Checking for a leading path of len 1" );
 
     my $component = $leading_path[0];
 
     # TEST
-    is ($component->label(), "Home", "Testing for title of leading_path");
+    is( $component->label(), "Home", "Testing for title of leading_path" );
 
     # TEST
-    is ($component->direct_url(), "../", "Testing for direct_url");
+    is( $component->direct_url(), "../", "Testing for direct_url" );
 }
 
 # This check tests the url_type behaviour of the leading-path
 {
     my $nav_menu = HTML::Widgets::NavMenu->new(
         'path_info' => "/yowza/howza/",
-        @{$test_data->{'rec_url_type_menu'}},
+        @{ $test_data->{'rec_url_type_menu'} },
     );
 
-    my $rendered =
-        $nav_menu->render();
+    my $rendered = $nav_menu->render();
 
-    my @leading_path = @{$rendered->{'leading_path'}};
+    my @leading_path = @{ $rendered->{'leading_path'} };
 
     # TEST
-    ok ((scalar(@leading_path) == 3), "Checking for a leading path of len 3");
+    ok( ( scalar(@leading_path) == 3 ),
+        "Checking for a leading path of len 3" );
 
     my $component = $leading_path[0];
 
     # TEST
-    is ($component->label(), "Home", "Testing for title of leading_path");
+    is( $component->label(), "Home", "Testing for title of leading_path" );
 
     # TEST
-    is ($component->direct_url(), "http://www.hello.com/~shlomif/",
-        "Testing for direct_url");
+    is(
+        $component->direct_url(),
+        "http://www.hello.com/~shlomif/",
+        "Testing for direct_url"
+    );
 
     # TEST
-    is ($component->url_type(), "full_abs", "Testing for url_type");
+    is( $component->url_type(), "full_abs", "Testing for url_type" );
 
     $component = $leading_path[1];
 
     # TEST
-    is ($component->label(), "Yowza", "Testing for label of leading_path");
+    is( $component->label(), "Yowza", "Testing for label of leading_path" );
 
     # TEST
-    is ($component->direct_url(), "../",
-        "Testing for direct_url");
+    is( $component->direct_url(), "../", "Testing for direct_url" );
 
     # TEST
-    is ($component->url_type(), "rel", "Testing for url_type");
+    is( $component->url_type(), "rel", "Testing for url_type" );
 
     $component = $leading_path[2];
 
     # TEST
-    is ($component->label(), "This should be full_abs again",
-        "Testing for label of leading_path");
+    is(
+        $component->label(),
+        "This should be full_abs again",
+        "Testing for label of leading_path"
+    );
 
     # TEST
-    is ($component->direct_url(), "http://www.hello.com/~shlomif/yowza/howza/",
-        "Testing for direct_url");
+    is(
+        $component->direct_url(),
+        "http://www.hello.com/~shlomif/yowza/howza/",
+        "Testing for direct_url"
+    );
 
     # TEST
-    is ($component->url_type(), "full_abs", "Testing for url_type");
+    is( $component->url_type(), "full_abs", "Testing for url_type" );
 }
 
 {
     my $nav_menu = HTML::Widgets::NavMenu->new(
         'path_info' => "/sub-dir/",
-        @{$test_data->{'url_is_abs_menu'}},
+        @{ $test_data->{'url_is_abs_menu'} },
     );
 
-    my $rendered =
-        $nav_menu->render();
+    my $rendered = $nav_menu->render();
 
-    my @leading_path = @{$rendered->{'leading_path'}};
+    my @leading_path = @{ $rendered->{'leading_path'} };
 
     # TEST
-    ok ((scalar(@leading_path) == 3), "Checking for a leading path of len 1");
+    ok( ( scalar(@leading_path) == 3 ),
+        "Checking for a leading path of len 1" );
 
     my $component = $leading_path[0];
 
     # TEST
-    is ($component->label(), "Home", "Testing for title of leading_path");
+    is( $component->label(), "Home", "Testing for title of leading_path" );
 
     # TEST
-    is ($component->direct_url(), "../", "Testing for direct_url");
+    is( $component->direct_url(), "../", "Testing for direct_url" );
 
     $component = $leading_path[1];
 
     # TEST
-    is ($component->title(), "Google it!",
-        "Testing for title of leading_path");
+    is( $component->title(), "Google it!",
+        "Testing for title of leading_path" );
 
     # TEST
-    is ($component->direct_url(), "http://www.google.com/",
-        "Testing for direct_url");
+    is( $component->direct_url(),
+        "http://www.google.com/", "Testing for direct_url" );
 
     # TEST
-    is ($component->url_type(), "full_abs", "Testing for url_type");
+    is( $component->url_type(), "full_abs", "Testing for url_type" );
 
     $component = $leading_path[2];
 
     # TEST
-    is ($component->direct_url(), "./",
-        "Testing for direct_url");
+    is( $component->direct_url(), "./", "Testing for direct_url" );
 
     # TEST
-    is ($component->url_type(), "rel", "Testing for url_type");
+    is( $component->url_type(), "rel", "Testing for url_type" );
 }
 
 {
     my $nav_menu = HTML::Widgets::NavMenu->new(
         'path_info' => "/open-source/alohaware/",
-        @{$test_data->{'selective_expand'}},
+        @{ $test_data->{'selective_expand'} },
     );
 
-    my $rendered =
-        $nav_menu->render();
+    my $rendered = $nav_menu->render();
 
-    my @leading_path = @{$rendered->{'leading_path'}};
+    my @leading_path = @{ $rendered->{'leading_path'} };
 
     # TEST
-    ok ((scalar(@leading_path) == 2), "Checking for a leading path of len 2");
+    ok( ( scalar(@leading_path) == 2 ),
+        "Checking for a leading path of len 2" );
 
     my $component = $leading_path[-1];
 
     # TEST
-    is ($component->title(), "Open Source Software I Wrote",
-        "Testing for title of leading_path");
+    is(
+        $component->title(),
+        "Open Source Software I Wrote",
+        "Testing for title of leading_path"
+    );
 
     # TEST
-    is ($component->direct_url(), "../",
-        "Testing for direct_url");
+    is( $component->direct_url(), "../", "Testing for direct_url" );
 }
 
 {
     my $nav_menu = HTML::Widgets::NavMenu->new(
         'path_info' => "/puzzles/bar/",
-        @{$test_data->{'root_path_not_slash'}},
+        @{ $test_data->{'root_path_not_slash'} },
     );
 
-    my $rendered =
-        $nav_menu->render();
+    my $rendered = $nav_menu->render();
 
-    my @leading_path = @{$rendered->{'leading_path'}};
+    my @leading_path = @{ $rendered->{'leading_path'} };
 
     # TEST
-    is (scalar(@leading_path), 2, "Checking for a leading path of len 2");
+    is( scalar(@leading_path), 2, "Checking for a leading path of len 2" );
 
     my $component = $leading_path[0];
 
     # TEST
-    is ($component->label(), "Home",
-        "Points to Home");
+    is( $component->label(), "Home", "Points to Home" );
 
     # TEST
-    is ($component->direct_url(), "../",
-        "Testing for direct_url");
+    is( $component->direct_url(), "../", "Testing for direct_url" );
 }
 
 {
     my $nav_menu = HTML::Widgets::NavMenu->new(
         'path_info' => "/humour/by-others/foo.html",
-        @{$test_data->{'non_capturing_expand'}},
+        @{ $test_data->{'non_capturing_expand'} },
     );
 
-    my $rendered =
-        $nav_menu->render();
+    my $rendered = $nav_menu->render();
 
-    my @lp = @{$rendered->{'leading_path'}};
+    my @lp = @{ $rendered->{'leading_path'} };
 
     # TEST
-    is (scalar(@lp), 3, "Checking for a leading path of len 2");
+    is( scalar(@lp), 3, "Checking for a leading path of len 2" );
 
     # TEST
-    is ($lp[0]->direct_url(), "./../../", "lp[0]");
+    is( $lp[0]->direct_url(), "./../../", "lp[0]" );
 
     # TEST
-    is ($lp[1]->direct_url(), "./../", "lp[1]");
+    is( $lp[1]->direct_url(), "./../", "lp[1]" );
 
     # TEST
-    is ($lp[2]->direct_url(), "./", "lp[2]");
+    is( $lp[2]->direct_url(), "./", "lp[2]" );
 }
 
 # This test is to check that a non-capturing expand does not influence
@@ -214,21 +219,20 @@ my $test_data = get_test_data();
 {
     my $nav_menu = HTML::Widgets::NavMenu->new(
         'path_info' => "/humour/humanity/",
-        @{$test_data->{'non_capturing_expand_nested'}},
+        @{ $test_data->{'non_capturing_expand_nested'} },
     );
 
-    my $rendered =
-        $nav_menu->render();
+    my $rendered = $nav_menu->render();
 
-    my @lp = @{$rendered->{'leading_path'}};
+    my @lp = @{ $rendered->{'leading_path'} };
 
     # TEST
-    is (scalar(@lp), 2, "Checking for a leading path of len 2");
+    is( scalar(@lp), 2, "Checking for a leading path of len 2" );
 
     # TEST
-    is ($lp[0]->direct_url(), "../../", "Pointing to the home");
+    is( $lp[0]->direct_url(), "../../", "Pointing to the home" );
 
     # TEST
-    is ($lp[1]->direct_url(), "../", "Pointing to the humour");
+    is( $lp[1]->direct_url(), "../", "Pointing to the humour" );
 
 }
diff --git a/t/10ul-classes.t b/t/10ul-classes.t
index 730380f..fe006a1 100644
--- a/t/10ul-classes.t
+++ b/t/10ul-classes.t
@@ -14,25 +14,24 @@ my $test_data = get_test_data();
 
 sub test_nav_menu
 {
-    my $rendered = shift;
+    my $rendered        = shift;
     my $expected_string = shift;
-    my $test_blurb = shift;
+    my $test_blurb      = shift;
 
-    my @result = (@{$rendered->{html}});
+    my @result = ( @{ $rendered->{html} } );
 
-    my @expected = (split(/\n/, $expected_string));
+    my @expected = ( split( /\n/, $expected_string ) );
 
-    is_deeply (\@expected, \@result, $test_blurb);
+    is_deeply( \@expected, \@result, $test_blurb );
 }
 
 {
     my $nav_menu = HTML::Widgets::NavMenu->new(
         'path_info' => "/me/",
-        @{$test_data->{'two_sites'}},
+        @{ $test_data->{'two_sites'} },
     );
 
-    my $rendered =
-        $nav_menu->render();
+    my $rendered = $nav_menu->render();
 
     my $expected_string = <<"EOF";
 <ul>
@@ -58,7 +57,8 @@ sub test_nav_menu
 EOF
 
     # TEST
-    test_nav_menu($rendered, $expected_string, "Testing ul classes for no CSS class to be assigned.");
+    test_nav_menu( $rendered, $expected_string,
+        "Testing ul classes for no CSS class to be assigned." );
 }
 
 # This test tests the show_always directive which causes the entire
@@ -66,12 +66,11 @@ EOF
 {
     my $nav_menu = HTML::Widgets::NavMenu->new(
         'path_info' => "/me/",
-        @{$test_data->{'show_always'}},
+        @{ $test_data->{'show_always'} },
         'ul_classes' => [ "FirstClass", "secondclass 2C", "ThirdClass" ],
     );
 
-    my $rendered =
-        $nav_menu->render();
+    my $rendered = $nav_menu->render();
 
     my $expected_string = <<"EOF";
 <ul class="FirstClass">
@@ -112,19 +111,18 @@ EOF
 EOF
 
     # TEST
-    test_nav_menu ($rendered, $expected_string, "Nav Menu with depth classes");
+    test_nav_menu( $rendered, $expected_string, "Nav Menu with depth classes" );
 }
 
 # This test tests the escaping of the class names.
 {
     my $nav_menu = HTML::Widgets::NavMenu->new(
         'path_info' => "/me/",
-        @{$test_data->{'show_always'}},
+        @{ $test_data->{'show_always'} },
         'ul_classes' => [ "F&F Class", "sec<h>", "T\"C" ],
     );
 
-    my $rendered =
-        $nav_menu->render();
+    my $rendered = $nav_menu->render();
 
     my $expected_string = <<"EOF";
 <ul class="F&amp;F Class">
@@ -165,6 +163,6 @@ EOF
 EOF
 
     # TEST
-    test_nav_menu ($rendered, $expected_string, "Nav Menu with depth classes");
+    test_nav_menu( $rendered, $expected_string, "Nav Menu with depth classes" );
 }
 
diff --git a/t/11predicate.t b/t/11predicate.t
index ae7b5f4..5c9f329 100644
--- a/t/11predicate.t
+++ b/t/11predicate.t
@@ -14,107 +14,153 @@ use HTML::Widgets::NavMenu::Predicate;
 # Test the bool == 0 predicate
 {
     my $pred =
-        HTML::Widgets::NavMenu::Predicate->new(
-            'spec' => +{ 'bool' => 0, },
-        );
+        HTML::Widgets::NavMenu::Predicate->new( 'spec' => +{ 'bool' => 0, }, );
 
     # TEST
-    ok(!$pred->evaluate(
-        'path_info' => "Hoola/Yoola",
-        'current_host' => "default",
-    ), "bool==0 test 1");
+    ok(
+        !$pred->evaluate(
+            'path_info'    => "Hoola/Yoola",
+            'current_host' => "default",
+        ),
+        "bool==0 test 1"
+    );
+
     # TEST
-    ok(!$pred->evaluate(
-        'path_info' => "Shragah/Spinoza/",
-        'current_host' => "majesty",
-    ), "bool==0 test 2");
+    ok(
+        !$pred->evaluate(
+            'path_info'    => "Shragah/Spinoza/",
+            'current_host' => "majesty",
+        ),
+        "bool==0 test 2"
+    );
 }
 
 # Test the bool == 1 predicate
 {
     my $pred =
-        HTML::Widgets::NavMenu::Predicate->new(
-            'spec' => +{ 'bool' => 1, },
-        );
+        HTML::Widgets::NavMenu::Predicate->new( 'spec' => +{ 'bool' => 1, }, );
 
     # TEST
-    ok($pred->evaluate(
-        'path_info' => "Hoola/Yoola",
-        'current_host' => "default",
-    ), "bool==1 test 1");
+    ok(
+        $pred->evaluate(
+            'path_info'    => "Hoola/Yoola",
+            'current_host' => "default",
+        ),
+        "bool==1 test 1"
+    );
+
     # TEST
-    ok($pred->evaluate(
-        'path_info' => "Shragah/Spinoza/",
-        'current_host' => "majesty",
-    ), "bool==1 test 2");
+    ok(
+        $pred->evaluate(
+            'path_info'    => "Shragah/Spinoza/",
+            'current_host' => "majesty",
+        ),
+        "bool==1 test 2"
+    );
 }
 
 # Test the regexp evaluation.
 {
     my $pred =
         HTML::Widgets::NavMenu::Predicate->new(
-            'spec' => +{ 're' => "^hello/(world|good)/", },
-        );
+        'spec' => +{ 're' => "^hello/(world|good)/", }, );
 
     # TEST
-    ok($pred->evaluate(
-        'path_info' => "hello/world/",
-        'current_host' => "default",
-    ), "regexp 1");
+    ok(
+        $pred->evaluate(
+            'path_info'    => "hello/world/",
+            'current_host' => "default",
+        ),
+        "regexp 1"
+    );
+
     # TEST
-    ok($pred->evaluate(
-        'path_info' => "hello/good/",
-        'current_host' => "default",
-    ), "regexp 2");
+    ok(
+        $pred->evaluate(
+            'path_info'    => "hello/good/",
+            'current_host' => "default",
+        ),
+        "regexp 2"
+    );
+
     # TEST
-    ok($pred->evaluate(
-        'path_info' => "hello/world/some/more/components.html",
-        'current_host' => "default",
-    ), "regexp 3");
+    ok(
+        $pred->evaluate(
+            'path_info'    => "hello/world/some/more/components.html",
+            'current_host' => "default",
+        ),
+        "regexp 3"
+    );
+
     # TEST
-    ok($pred->evaluate(
-        'path_info' => "hello/good/other/comps/",
-        'current_host' => "default",
-    ), "regexp 4");
+    ok(
+        $pred->evaluate(
+            'path_info'    => "hello/good/other/comps/",
+            'current_host' => "default",
+        ),
+        "regexp 4"
+    );
+
     # TEST
-    ok(!$pred->evaluate(
-        'path_info' => "Shragah/Spinoza/",
-        'current_host' => "majesty",
-    ), "regexp 5 - should be false");
+    ok(
+        !$pred->evaluate(
+            'path_info'    => "Shragah/Spinoza/",
+            'current_host' => "majesty",
+        ),
+        "regexp 5 - should be false"
+    );
+
     # TEST
-    ok(!$pred->evaluate(
-        'path_info' => "hello/something-else/",
-        'current_host' => "default",
-    ), "regexp 6 - close, but not enough");
+    ok(
+        !$pred->evaluate(
+            'path_info'    => "hello/something-else/",
+            'current_host' => "default",
+        ),
+        "regexp 6 - close, but not enough"
+    );
 }
 
 # Another regex test - this time without anchors
 {
     my $pred =
         HTML::Widgets::NavMenu::Predicate->new(
-            'spec' => +{ 're' => "start(mid|center)+finish", },
-        );
+        'spec' => +{ 're' => "start(mid|center)+finish", }, );
 
     # TEST
-    ok($pred->evaluate(
-        'path_info' => "hello/startmidfinish/",
-        'current_host' => "default",
-    ), "non-anchored regexp 1");
+    ok(
+        $pred->evaluate(
+            'path_info'    => "hello/startmidfinish/",
+            'current_host' => "default",
+        ),
+        "non-anchored regexp 1"
+    );
+
     # TEST
-    ok(!$pred->evaluate(
-        'path_info' => "hello/good/",
-        'current_host' => "default",
-    ), "non-anchored regexp 2");
+    ok(
+        !$pred->evaluate(
+            'path_info'    => "hello/good/",
+            'current_host' => "default",
+        ),
+        "non-anchored regexp 2"
+    );
+
     # TEST
-    ok($pred->evaluate(
-        'path_info' => "hello/startmidcentermidfinish/",
-        'current_host' => "default",
-    ), "non-anchored regexp 3");
+    ok(
+        $pred->evaluate(
+            'path_info'    => "hello/startmidcentermidfinish/",
+            'current_host' => "default",
+        ),
+        "non-anchored regexp 3"
+    );
+
     # TEST
-    ok(!$pred->evaluate(
-        'path_info' => "startfinish/",
-        'current_host' => "default",
-    ), "non-anchored regexp 4");
+    ok(
+        !$pred->evaluate(
+            'path_info'    => "startfinish/",
+            'current_host' => "default",
+        ),
+        "non-anchored regexp 4"
+    );
 }
 
 sub predicate_cb1
@@ -122,36 +168,50 @@ sub predicate_cb1
     my %args = (@_);
     my $host = $args{'current_host'};
     my $path = $args{'path_info'};
-    return (($host eq "true") && ($path eq "mypath/"));
+    return ( ( $host eq "true" ) && ( $path eq "mypath/" ) );
 }
 
 # Test the 'cb' argument
 {
     my $pred =
         HTML::Widgets::NavMenu::Predicate->new(
-            'spec' => +{ 'cb' => \&predicate_cb1, },
-        );
-
-    # TEST
-    ok($pred->evaluate(
-        'path_info' => "mypath/",
-        'current_host' => "true",
-    ), "cb 1 - true");
-    # TEST
-    ok(!$pred->evaluate(
-        'path_info' => "mypath/",
-        'current_host' => "false",
-    ), "cb 2 - false");
-    # TEST
-    ok(!$pred->evaluate(
-        'path_info' => "hello/",
-        'current_host' => "true",
-    ), "cb 3 - false");
-    # TEST
-    ok(!$pred->evaluate(
-        'path_info' => "anuba/",
-        'current_host' => "false",
-    ), "cb 4 - both false");
+        'spec' => +{ 'cb' => \&predicate_cb1, }, );
+
+    # TEST
+    ok(
+        $pred->evaluate(
+            'path_info'    => "mypath/",
+            'current_host' => "true",
+        ),
+        "cb 1 - true"
+    );
+
+    # TEST
+    ok(
+        !$pred->evaluate(
+            'path_info'    => "mypath/",
+            'current_host' => "false",
+        ),
+        "cb 2 - false"
+    );
+
+    # TEST
+    ok(
+        !$pred->evaluate(
+            'path_info'    => "hello/",
+            'current_host' => "true",
+        ),
+        "cb 3 - false"
+    );
+
+    # TEST
+    ok(
+        !$pred->evaluate(
+            'path_info'    => "anuba/",
+            'current_host' => "false",
+        ),
+        "cb 4 - both false"
+    );
 }
 
 # Now testing the non-hashrefed values.
@@ -162,18 +222,22 @@ sub predicate_cb1
     foreach my $false_value (qw(0 no false False))
     {
         my $pred =
-            HTML::Widgets::NavMenu::Predicate->new(
-                'spec' => $false_value,
-            );
-
-        ok(!$pred->evaluate(
-            'path_info' => "Hoola/Yoola",
-            'current_host' => "default",
-        ), "bool==0 test 1");
-        ok(!$pred->evaluate(
-            'path_info' => "Shragah/Spinoza/",
-            'current_host' => "majesty",
-        ), "bool==0 test 2");
+            HTML::Widgets::NavMenu::Predicate->new( 'spec' => $false_value, );
+
+        ok(
+            !$pred->evaluate(
+                'path_info'    => "Hoola/Yoola",
+                'current_host' => "default",
+            ),
+            "bool==0 test 1"
+        );
+        ok(
+            !$pred->evaluate(
+                'path_info'    => "Shragah/Spinoza/",
+                'current_host' => "majesty",
+            ),
+            "bool==0 test 2"
+        );
     }
 }
 
@@ -183,18 +247,23 @@ sub predicate_cb1
     for my $true_value (qw(1 yes true True))
     {
         my $pred =
-            HTML::Widgets::NavMenu::Predicate->new(
-                'spec' => +{ 'bool' => 1, },
+            HTML::Widgets::NavMenu::Predicate->new( 'spec' => +{ 'bool' => 1, },
             );
 
-        ok($pred->evaluate(
-            'path_info' => "Hoola/Yoola",
-            'current_host' => "default",
-        ), "bool==1 test 1");
-        ok($pred->evaluate(
-            'path_info' => "Shragah/Spinoza/",
-            'current_host' => "majesty",
-        ), "bool==1 test 2");
+        ok(
+            $pred->evaluate(
+                'path_info'    => "Hoola/Yoola",
+                'current_host' => "default",
+            ),
+            "bool==1 test 1"
+        );
+        ok(
+            $pred->evaluate(
+                'path_info'    => "Shragah/Spinoza/",
+                'current_host' => "majesty",
+            ),
+            "bool==1 test 2"
+        );
     }
 }
 
@@ -202,68 +271,103 @@ sub predicate_cb1
 {
     my $pred =
         HTML::Widgets::NavMenu::Predicate->new(
-            'spec' => "^hello/(world|good)/",
-        );
+        'spec' => "^hello/(world|good)/", );
 
     # TEST
-    ok($pred->evaluate(
-        'path_info' => "hello/world/",
-        'current_host' => "default",
-    ), "implicit regexp 1");
+    ok(
+        $pred->evaluate(
+            'path_info'    => "hello/world/",
+            'current_host' => "default",
+        ),
+        "implicit regexp 1"
+    );
+
     # TEST
-    ok($pred->evaluate(
-        'path_info' => "hello/good/",
-        'current_host' => "default",
-    ), "implicit regexp 2");
+    ok(
+        $pred->evaluate(
+            'path_info'    => "hello/good/",
+            'current_host' => "default",
+        ),
+        "implicit regexp 2"
+    );
+
     # TEST
-    ok($pred->evaluate(
-        'path_info' => "hello/world/some/more/components.html",
-        'current_host' => "default",
-    ), "implicit regexp 3");
+    ok(
+        $pred->evaluate(
+            'path_info'    => "hello/world/some/more/components.html",
+            'current_host' => "default",
+        ),
+        "implicit regexp 3"
+    );
+
     # TEST
-    ok($pred->evaluate(
-        'path_info' => "hello/good/other/comps/",
-        'current_host' => "default",
-    ), "implicit regexp 4");
+    ok(
+        $pred->evaluate(
+            'path_info'    => "hello/good/other/comps/",
+            'current_host' => "default",
+        ),
+        "implicit regexp 4"
+    );
+
     # TEST
-    ok(!$pred->evaluate(
-        'path_info' => "Shragah/Spinoza/",
-        'current_host' => "majesty",
-    ), "implicit regexp 5 - should be false");
+    ok(
+        !$pred->evaluate(
+            'path_info'    => "Shragah/Spinoza/",
+            'current_host' => "majesty",
+        ),
+        "implicit regexp 5 - should be false"
+    );
+
     # TEST
-    ok(!$pred->evaluate(
-        'path_info' => "hello/something-else/",
-        'current_host' => "default",
-    ), "implicit regexp 6 - close, but not enough");
+    ok(
+        !$pred->evaluate(
+            'path_info'    => "hello/something-else/",
+            'current_host' => "default",
+        ),
+        "implicit regexp 6 - close, but not enough"
+    );
 }
 
 # Test the implicit 'cb' argument
 {
     my $pred =
-        HTML::Widgets::NavMenu::Predicate->new(
-            'spec' => \&predicate_cb1,
-        );
-
-    # TEST
-    ok($pred->evaluate(
-        'path_info' => "mypath/",
-        'current_host' => "true",
-    ), "ipmlicit cb 1 - true");
-    # TEST
-    ok(!$pred->evaluate(
-        'path_info' => "mypath/",
-        'current_host' => "false",
-    ), "ipmlicit cb 2 - false");
-    # TEST
-    ok(!$pred->evaluate(
-        'path_info' => "hello/",
-        'current_host' => "true",
-    ), "ipmlicit cb 3 - false");
-    # TEST
-    ok(!$pred->evaluate(
-        'path_info' => "anuba/",
-        'current_host' => "false",
-    ), "ipmlicit cb 4 - both false");
+        HTML::Widgets::NavMenu::Predicate->new( 'spec' => \&predicate_cb1, );
+
+    # TEST
+    ok(
+        $pred->evaluate(
+            'path_info'    => "mypath/",
+            'current_host' => "true",
+        ),
+        "ipmlicit cb 1 - true"
+    );
+
+    # TEST
+    ok(
+        !$pred->evaluate(
+            'path_info'    => "mypath/",
+            'current_host' => "false",
+        ),
+        "ipmlicit cb 2 - false"
+    );
+
+    # TEST
+    ok(
+        !$pred->evaluate(
+            'path_info'    => "hello/",
+            'current_host' => "true",
+        ),
+        "ipmlicit cb 3 - false"
+    );
+
+    # TEST
+    ok(
+        !$pred->evaluate(
+            'path_info'    => "anuba/",
+            'current_host' => "false",
+        ),
+        "ipmlicit cb 4 - both false"
+    );
 }
 
 ##############
@@ -272,208 +376,254 @@ sub predicate_cb1
 
 # 're' precedes 'bool'
 {
-    my $pred =
-        HTML::Widgets::NavMenu::Predicate->new(
-            'spec' =>
-                +{
-                    're' => "^hello/(world|good)/",
-                    'bool' => 0,
-                },
-        );
+    my $pred = HTML::Widgets::NavMenu::Predicate->new(
+        'spec' => +{
+            're'   => "^hello/(world|good)/",
+            'bool' => 0,
+        },
+    );
 
     # TEST
-    ok($pred->evaluate(
-        'path_info' => "hello/world/",
-        'current_host' => "default",
-    ), "re precedes bool 1");
+    ok(
+        $pred->evaluate(
+            'path_info'    => "hello/world/",
+            'current_host' => "default",
+        ),
+        "re precedes bool 1"
+    );
+
     # TEST
-    ok($pred->evaluate(
-        'path_info' => "hello/good/",
-        'current_host' => "default",
-    ), "re precedes bool 2");
+    ok(
+        $pred->evaluate(
+            'path_info'    => "hello/good/",
+            'current_host' => "default",
+        ),
+        "re precedes bool 2"
+    );
+
     # TEST
-    ok($pred->evaluate(
-        'path_info' => "hello/world/some/more/components.html",
-        'current_host' => "default",
-    ), "re precedes bool 3");
+    ok(
+        $pred->evaluate(
+            'path_info'    => "hello/world/some/more/components.html",
+            'current_host' => "default",
+        ),
+        "re precedes bool 3"
+    );
+
     # TEST
-    ok($pred->evaluate(
-        'path_info' => "hello/good/other/comps/",
-        'current_host' => "default",
-    ), "re precedes bool 4");
+    ok(
+        $pred->evaluate(
+            'path_info'    => "hello/good/other/comps/",
+            'current_host' => "default",
+        ),
+        "re precedes bool 4"
+    );
 }
 
 # 'cb' precedes 're'
 {
-    my $pred =
-        HTML::Widgets::NavMenu::Predicate->new(
-            'spec' =>
-                +{
-                    're' => "^hello/(world|good)/",
-                    'cb' => \&predicate_cb1,
-                },
-        );
+    my $pred = HTML::Widgets::NavMenu::Predicate->new(
+        'spec' => +{
+            're' => "^hello/(world|good)/",
+            'cb' => \&predicate_cb1,
+        },
+    );
 
     # TEST
-    ok(!$pred->evaluate(
-        'path_info' => "hello/world/",
-        'current_host' => "default",
-    ), "cb precedes re 1");
-    # TEST
-    ok($pred->evaluate(
-        'path_info' => "mypath/",
-        'current_host' => "true",
-    ), "cb precedes re 2");
+    ok(
+        !$pred->evaluate(
+            'path_info'    => "hello/world/",
+            'current_host' => "default",
+        ),
+        "cb precedes re 1"
+    );
+
+    # TEST
+    ok(
+        $pred->evaluate(
+            'path_info'    => "mypath/",
+            'current_host' => "true",
+        ),
+        "cb precedes re 2"
+    );
 }
 
 # 'cb' precedes 'bool'
 {
-    my $pred =
-        HTML::Widgets::NavMenu::Predicate->new(
-            'spec' =>
-                +{
-                    'cb' => \&predicate_cb1,
-                    'bool' => 1,
-                },
-        );
-
-    # TEST
-    ok($pred->evaluate(
-        'path_info' => "mypath/",
-        'current_host' => "true",
-    ), "cb precedes bool 1 - true");
-    # TEST
-    ok(!$pred->evaluate(
-        'path_info' => "mypath/",
-        'current_host' => "false",
-    ), "cb precedes bool  2 - false");
-    # TEST
-    ok(!$pred->evaluate(
-        'path_info' => "hello/",
-        'current_host' => "true",
-    ), "cb precedes bool  3 - false");
-    # TEST
-    ok(!$pred->evaluate(
-        'path_info' => "anuba/",
-        'current_host' => "false",
-    ), "cb precedes bool 4 - both false");
+    my $pred = HTML::Widgets::NavMenu::Predicate->new(
+        'spec' => +{
+            'cb'   => \&predicate_cb1,
+            'bool' => 1,
+        },
+    );
+
+    # TEST
+    ok(
+        $pred->evaluate(
+            'path_info'    => "mypath/",
+            'current_host' => "true",
+        ),
+        "cb precedes bool 1 - true"
+    );
+
+    # TEST
+    ok(
+        !$pred->evaluate(
+            'path_info'    => "mypath/",
+            'current_host' => "false",
+        ),
+        "cb precedes bool  2 - false"
+    );
+
+    # TEST
+    ok(
+        !$pred->evaluate(
+            'path_info'    => "hello/",
+            'current_host' => "true",
+        ),
+        "cb precedes bool  3 - false"
+    );
+
+    # TEST
+    ok(
+        !$pred->evaluate(
+            'path_info'    => "anuba/",
+            'current_host' => "false",
+        ),
+        "cb precedes bool 4 - both false"
+    );
 }
 
 # 'cb' precedes both 'bool' and 're'
 
 {
-    my $pred =
-        HTML::Widgets::NavMenu::Predicate->new(
-            'spec' =>
-                +{
-                    'cb' => \&predicate_cb1,
-                    'bool' => 1,
-                    're' => "anuba",
-                },
-        );
-
-    # TEST
-    ok($pred->evaluate(
-        'path_info' => "mypath/",
-        'current_host' => "true",
-    ), "cb precedes bool and re 1 - true");
-    # TEST
-    ok(!$pred->evaluate(
-        'path_info' => "mypath/",
-        'current_host' => "false",
-    ), "cb precedes bool and re 2 - false");
-    # TEST
-    ok(!$pred->evaluate(
-        'path_info' => "hello/",
-        'current_host' => "true",
-    ), "cb precedes bool and re 3 - false");
-    # TEST
-    ok(!$pred->evaluate(
-        'path_info' => "anuba/",
-        'current_host' => "false",
-    ), "cb precedes bool and re 4 - both false");
+    my $pred = HTML::Widgets::NavMenu::Predicate->new(
+        'spec' => +{
+            'cb'   => \&predicate_cb1,
+            'bool' => 1,
+            're'   => "anuba",
+        },
+    );
+
+    # TEST
+    ok(
+        $pred->evaluate(
+            'path_info'    => "mypath/",
+            'current_host' => "true",
+        ),
+        "cb precedes bool and re 1 - true"
+    );
+
+    # TEST
+    ok(
+        !$pred->evaluate(
+            'path_info'    => "mypath/",
+            'current_host' => "false",
+        ),
+        "cb precedes bool and re 2 - false"
+    );
+
+    # TEST
+    ok(
+        !$pred->evaluate(
+            'path_info'    => "hello/",
+            'current_host' => "true",
+        ),
+        "cb precedes bool and re 3 - false"
+    );
+
+    # TEST
+    ok(
+        !$pred->evaluate(
+            'path_info'    => "anuba/",
+            'current_host' => "false",
+        ),
+        "cb precedes bool and re 4 - both false"
+    );
 }
 
 # Test the regexp evaluation when 're' is empty.
 {
     my $pred =
-        HTML::Widgets::NavMenu::Predicate->new(
-            'spec' => +{ 're' => "", },
-        );
+        HTML::Widgets::NavMenu::Predicate->new( 'spec' => +{ 're' => "", }, );
 
     my $string = "Yowza Cowza Nowza";
     $string =~ s!Yowza!!;
 
     # TEST
-    ok($pred->evaluate(
-        'path_info' => "/nothing/here",
-        'current_host' => "default",
-    ), "regexp 1");
+    ok(
+        $pred->evaluate(
+            'path_info'    => "/nothing/here",
+            'current_host' => "default",
+        ),
+        "regexp 1"
+    );
 }
 
 # Test the implicit bool predicate
 {
-    my $pred =
-        HTML::Widgets::NavMenu::Predicate->new(
-            'spec' => 1,
-        );
+    my $pred = HTML::Widgets::NavMenu::Predicate->new( 'spec' => 1, );
 
     # TEST
-    ok($pred->evaluate(
-        'path_info' => "Hoola/Yoola",
-        'current_host' => "default",
-    ), "bool==1 test 1");
+    ok(
+        $pred->evaluate(
+            'path_info'    => "Hoola/Yoola",
+            'current_host' => "default",
+        ),
+        "bool==1 test 1"
+    );
+
     # TEST
-    ok($pred->evaluate(
-        'path_info' => "Shragah/Spinoza/",
-        'current_host' => "majesty",
-    ), "bool==1 test 2");
+    ok(
+        $pred->evaluate(
+            'path_info'    => "Shragah/Spinoza/",
+            'current_host' => "majesty",
+        ),
+        "bool==1 test 2"
+    );
 }
 
 # Test the implicit regexp predicate
 {
-    my $pred =
-        HTML::Widgets::NavMenu::Predicate->new(
-            'spec' => "^Hoola",
-        );
+    my $pred = HTML::Widgets::NavMenu::Predicate->new( 'spec' => "^Hoola", );
 
     # TEST
-    ok($pred->evaluate(
-        'path_info' => "Hoola/Yoola",
-        'current_host' => "default",
-    ), "bool==1 test 1");
+    ok(
+        $pred->evaluate(
+            'path_info'    => "Hoola/Yoola",
+            'current_host' => "default",
+        ),
+        "bool==1 test 1"
+    );
+
     # TEST
-    ok(!$pred->evaluate(
-        'path_info' => "Shragah/Spinoza/",
-        'current_host' => "majesty",
-    ), "bool==1 test 2");
+    ok(
+        !$pred->evaluate(
+            'path_info'    => "Shragah/Spinoza/",
+            'current_host' => "majesty",
+        ),
+        "bool==1 test 2"
+    );
 }
 
 # Test the implicit regexp predicate
 {
     eval {
-    my $pred =
-        HTML::Widgets::NavMenu::Predicate->new(
-            'spec' => { 'hoalsdkasldk' => 1},
-        );
+        my $pred =
+            HTML::Widgets::NavMenu::Predicate->new(
+            'spec' => { 'hoalsdkasldk' => 1 }, );
     };
 
     # TEST
-    like($@, qr{^Neither},
-        "Exception should be thrown.");
+    like( $@, qr{^Neither}, "Exception should be thrown." );
 }
 
 # Test an incorrect spec
 {
-    eval {
-    my $pred =
-        HTML::Widgets::NavMenu::Predicate->new(
-            'spec' => [],
-        );
-    };
+    eval { my $pred = HTML::Widgets::NavMenu::Predicate->new(
+            'spec' => [], ); };
 
     # TEST
-    like($@, qr{^Unknown spec type},
-        "Exception should be thrown.");
+    like( $@, qr{^Unknown spec type}, "Exception should be thrown." );
 }
 
diff --git a/t/12x-host-rel-url.t b/t/12x-host-rel-url.t
index 6ce0be6..6854d80 100644
--- a/t/12x-host-rel-url.t
+++ b/t/12x-host-rel-url.t
@@ -8,26 +8,23 @@ use HTML::Widgets::NavMenu;
 
 {
     my $nav_menu = HTML::Widgets::NavMenu->new(
-        'path_info' => "/path1/path2/",
+        'path_info'    => "/path1/path2/",
         'current_host' => "shlomif",
-        'hosts' =>
-        {
-            'shlomif' =>
-            {
-                'base_url' => "http://www.shlomifish.org/",
+        'hosts'        => {
+            'shlomif' => {
+                'base_url'          => "http://www.shlomifish.org/",
                 'trailing_url_base' => "/",
             },
-            'vipe' =>
-            {
-                'base_url' => "http://vipe.technion.ac.il/~shlomif/",
+            'vipe' => {
+                'base_url'          => "http://vipe.technion.ac.il/~shlomif/",
                 'trailing_url_base' => "/~shlomif/",
             },
         },
+
         # This is just to settle the constructor
-        'tree_contents' =>
-        {
-            'host' => "shlomif",
-            'text' => "Top 1",
+        'tree_contents' => {
+            'host'  => "shlomif",
+            'text'  => "Top 1",
             'title' => "T1 Title",
         },
     );
@@ -35,103 +32,131 @@ use HTML::Widgets::NavMenu;
     # TEST*3
     foreach my $url_type (qw(rel site_abs full_abs))
     {
-        is (
+        is(
             $nav_menu->get_cross_host_rel_url(
-                'host' => "vipe",
+                'host'     => "vipe",
                 'host_url' => "hello/",
                 'url_type' => $url_type,
-            ), "http://vipe.technion.ac.il/~shlomif/hello/",
+            ),
+            "http://vipe.technion.ac.il/~shlomif/hello/",
             "Testing for cross-host URL of $url_type."
         );
     }
 
     # TEST
-    is (
+    is(
         $nav_menu->get_cross_host_rel_url(
-            'host' => "shlomif",
+            'host'     => "shlomif",
             'host_url' => "hello/",
             'url_type' => "rel",
-        ), "../../hello/",
-        "Checking for intra-host link of 'rel'");
+        ),
+        "../../hello/",
+        "Checking for intra-host link of 'rel'"
+    );
+
     # TEST
-    is (
+    is(
         $nav_menu->get_cross_host_rel_url(
-            'host' => "shlomif",
+            'host'     => "shlomif",
             'host_url' => "hello/",
             'url_type' => "site_abs",
-        ), "/hello/",
-        "Checking for intra-host link of 'site_abs'");
+        ),
+        "/hello/",
+        "Checking for intra-host link of 'site_abs'"
+    );
+
     # TEST
-    is (
+    is(
         $nav_menu->get_cross_host_rel_url(
-            'host' => "shlomif",
+            'host'     => "shlomif",
             'host_url' => "hello/",
             'url_type' => "full_abs",
-        ), "http://www.shlomifish.org/hello/",
-        "Checking for intra-host link of 'full_abs'");
+        ),
+        "http://www.shlomifish.org/hello/",
+        "Checking for intra-host link of 'full_abs'"
+    );
+
     # TEST
     eval {
         my $string = $nav_menu->get_cross_host_rel_url(
-            'host' => "shlomif",
+            'host'     => "shlomif",
             'host_url' => "hello/",
             'url_type' => "unknown",
         );
     };
-    ok ($@, "Checking for exception thrown on intra-host URL with an unknown url_type");
+    ok( $@,
+"Checking for exception thrown on intra-host URL with an unknown url_type"
+    );
 
     # Now we check for a URL that shares a component with this one.
     # TEST
-    is (
+    is(
         $nav_menu->get_cross_host_rel_url(
-            'host' => "shlomif",
+            'host'     => "shlomif",
             'host_url' => "path1/other-path/",
             'url_type' => "rel",
-        ), "../other-path/",
-        "Checking for intra-host (shared component) link of 'rel'");
+        ),
+        "../other-path/",
+        "Checking for intra-host (shared component) link of 'rel'"
+    );
+
     # TEST
-    is (
+    is(
         $nav_menu->get_cross_host_rel_url(
-            'host' => "shlomif",
+            'host'     => "shlomif",
             'host_url' => "path1/other-path/",
             'url_type' => "site_abs",
-        ), "/path1/other-path/",
-        "Checking for intra-host (shared component) link of 'site_abs'");
+        ),
+        "/path1/other-path/",
+        "Checking for intra-host (shared component) link of 'site_abs'"
+    );
+
     # TEST
-    is (
+    is(
         $nav_menu->get_cross_host_rel_url(
-            'host' => "shlomif",
+            'host'     => "shlomif",
             'host_url' => "path1/other-path/",
             'url_type' => "full_abs",
-        ), "http://www.shlomifish.org/path1/other-path/",
-        "Checking for intra-host (shared component) link of 'full_abs'");
+        ),
+        "http://www.shlomifish.org/path1/other-path/",
+        "Checking for intra-host (shared component) link of 'full_abs'"
+    );
 
     # Now we check for 'url_is_abs'
     # TEST
-    is (
+    is(
         $nav_menu->get_cross_host_rel_url(
-            'host' => "shlomif",
-            'host_url' => "http://www.myhost.com/",
-            'url_type' => "rel",
+            'host'       => "shlomif",
+            'host_url'   => "http://www.myhost.com/",
+            'url_type'   => "rel",
             'url_is_abs' => 1,
-        ), "http://www.myhost.com/",
-        "Checking for url_is_abs.");
+        ),
+        "http://www.myhost.com/",
+        "Checking for url_is_abs."
+    );
+
     # TEST
-    is (
+    is(
         $nav_menu->get_cross_host_rel_url(
-            'host' => "shlomif",
-            'host_url' => "http://www.myhost.com/",
-            'url_type' => "site_abs",
+            'host'       => "shlomif",
+            'host_url'   => "http://www.myhost.com/",
+            'url_type'   => "site_abs",
             'url_is_abs' => 1,
-        ), "http://www.myhost.com/",
-        "Checking for url_is_abs");
+        ),
+        "http://www.myhost.com/",
+        "Checking for url_is_abs"
+    );
+
     # TEST
-    is (
+    is(
         $nav_menu->get_cross_host_rel_url(
-            'host' => "shlomif",
-            'host_url' => "http://www.myhost.com/",
-            'url_type' => "full_abs",
+            'host'       => "shlomif",
+            'host_url'   => "http://www.myhost.com/",
+            'url_type'   => "full_abs",
             'url_is_abs' => 1,
-        ), "http://www.myhost.com/",
-        "Checking for url_is_abs");
+        ),
+        "http://www.myhost.com/",
+        "Checking for url_is_abs"
+    );
 }
 
diff --git a/t/13escape-html.t b/t/13escape-html.t
index 56b18a4..4c8ec13 100644
--- a/t/13escape-html.t
+++ b/t/13escape-html.t
@@ -4,26 +4,34 @@ use Test::More tests => 9;
 
 use strict;
 
-BEGIN {
-use_ok ('HTML::Widgets::NavMenu::EscapeHtml'); # TEST
+BEGIN
+{
+    use_ok('HTML::Widgets::NavMenu::EscapeHtml');    # TEST
 }
 
 {
     # TEST
-    is (escape_html("hello"), "hello", "Simple 1");
+    is( escape_html("hello"), "hello", "Simple 1" );
+
     # TEST
-    is (escape_html("hi\nYou  rule."), "hi\nYou  rule.", "Simple 2 with WS");
+    is( escape_html("hi\nYou  rule."), "hi\nYou  rule.", "Simple 2 with WS" );
+
     # TEST
-    is (escape_html("D&D"), "D&amp;D", "Ampersand");
+    is( escape_html("D&D"), "D&amp;D", "Ampersand" );
+
     # TEST
-    is (escape_html("<b>Hello</b>"), "&lt;b&gt;Hello&lt;/b&gt;", "Tags");
+    is( escape_html("<b>Hello</b>"), "&lt;b&gt;Hello&lt;/b&gt;", "Tags" );
+
     # TEST
-    is (escape_html("&amp;"), "&amp;amp;", "Double amp");
+    is( escape_html("&amp;"), "&amp;amp;", "Double amp" );
+
     # TEST
-    is (escape_html("&<hello>"), "&amp;&lt;hello&gt;", "Seq of 2");
+    is( escape_html("&<hello>"), "&amp;&lt;hello&gt;", "Seq of 2" );
+
     # TEST
-    is (escape_html(q{Hi "phony"}), q{Hi &quot;phony&quot;}, "Double quotes");
+    is( escape_html(q{Hi "phony"}), q{Hi &quot;phony&quot;}, "Double quotes" );
+
     # TEST
-    is (escape_html(q{"<&>"}), q{&quot;&lt;&amp;&gt;&quot;}, "All in one");
+    is( escape_html(q{"<&>"}), q{&quot;&lt;&amp;&gt;&quot;}, "All in one" );
 }
 
diff --git a/t/14tag-gen.t b/t/14tag-gen.t
index 6f3f069..09d86ca 100644
--- a/t/14tag-gen.t
+++ b/t/14tag-gen.t
@@ -4,66 +4,100 @@ use Test::More tests => 12;
 
 use strict;
 
-BEGIN {
-use_ok ('HTML::Widgets::NavMenu::TagGen'); # TEST
+BEGIN
+{
+    use_ok('HTML::Widgets::NavMenu::TagGen');    # TEST
 }
 
 {
-    my $test_tag =
-        HTML::Widgets::NavMenu::TagGen->new(
-            {
-                'name' => "a",
-                'attributes' =>
-                {
-                    'href' => { 'escape' => 1, },
-                    'title' => { 'escape' => 0, },
-                    'id' => { 'escape' => 1, },
-                    'iname' => { 'escape' => 0, },
-                },
-            }
-        );
+    my $test_tag = HTML::Widgets::NavMenu::TagGen->new(
+        {
+            'name'       => "a",
+            'attributes' => {
+                'href'  => { 'escape' => 1, },
+                'title' => { 'escape' => 0, },
+                'id'    => { 'escape' => 1, },
+                'iname' => { 'escape' => 0, },
+            },
+        }
+    );
 
     # TEST
-    is ($test_tag->gen({'href' => "http://www.mysite.com/",}),
+    is(
+        $test_tag->gen( { 'href' => "http://www.mysite.com/", } ),
         q{<a href="http://www.mysite.com/">},
-        "Simple Tag Test");
+        "Simple Tag Test"
+    );
+
     # TEST
-    is ($test_tag->gen({'href' => "/hello&you<yes>",}),
-        q{<a href="/hello&amp;you&lt;yes&gt;">},
-        "Escaping");
+    is( $test_tag->gen( { 'href' => "/hello&you<yes>", } ),
+        q{<a href="/hello&amp;you&lt;yes&gt;">}, "Escaping" );
+
     # TEST
-    is ($test_tag->gen({'href' => "http://www.mysite.com/",}, 1),
+    is(
+        $test_tag->gen( { 'href' => "http://www.mysite.com/", }, 1 ),
         q{<a href="http://www.mysite.com/" />},
-        "Standalone Tag");
+        "Standalone Tag"
+    );
+
     # TEST
-    is ($test_tag->gen({'href' => "/hello&you<yes>",}, 1),
+    is(
+        $test_tag->gen( { 'href' => "/hello&you<yes>", }, 1 ),
         q{<a href="/hello&amp;you&lt;yes&gt;" />},
-        "Standalone Tag with Escaping");
+        "Standalone Tag with Escaping"
+    );
+
     # TEST
-    is ($test_tag->gen({}), q{<a>}, "Empty Tag");
+    is( $test_tag->gen( {} ), q{<a>}, "Empty Tag" );
+
     # TEST
-    is ($test_tag->gen({}, 1), q{<a />}, "Empty Standalone Tag");
+    is( $test_tag->gen( {}, 1 ), q{<a />}, "Empty Standalone Tag" );
+
     # TEST
-    is ($test_tag->gen({'title' => "This is me&amp;yours title"}),
+    is(
+        $test_tag->gen( { 'title' => "This is me&amp;yours title" } ),
         q{<a title="This is me&amp;yours title">},
-        "Non-escaping for unescaped attribute");
+        "Non-escaping for unescaped attribute"
+    );
+
     # TEST
-    is ($test_tag->gen({'title' => "Hello", 'href' => "/hi/", 'id' => "myid"}),
+    is(
+        $test_tag->gen(
+            { 'title' => "Hello", 'href' => "/hi/", 'id' => "myid" }
+        ),
         q{<a href="/hi/" id="myid" title="Hello">},
-        "Multiple Attributes");
+        "Multiple Attributes"
+    );
+
     # TEST
-    is ($test_tag->gen({'title' => "Hello",
-        'href' => "/hi/", 'id' => "myid"}, 1),
+    is(
+        $test_tag->gen(
+            {
+                'title' => "Hello",
+                'href'  => "/hi/",
+                'id'    => "myid"
+            },
+            1
+        ),
         q{<a href="/hi/" id="myid" title="Hello" />},
-        "Multiple Attributes Standalone");
+        "Multiple Attributes Standalone"
+    );
     my $string = "&lt;Hello&amp;";
+
     # TEST
-    is ($test_tag->gen({map { $_ => $string } (qw(href title id iname))}),
-        q{<a href="&amp;lt;Hello&amp;amp;" id="&amp;lt;Hello&amp;amp;" iname="&lt;Hello&amp;" title="&lt;Hello&amp;">},
-        "Selective Escaping");
+    is(
+        $test_tag->gen( { map { $_ => $string } (qw(href title id iname)) } ),
+q{<a href="&amp;lt;Hello&amp;amp;" id="&amp;lt;Hello&amp;amp;" iname="&lt;Hello&amp;" title="&lt;Hello&amp;">},
+        "Selective Escaping"
+    );
+
     # TEST
-    is ($test_tag->gen({map { $_ => $string } (qw(href title id iname))}, 1),
-        q{<a href="&amp;lt;Hello&amp;amp;" id="&amp;lt;Hello&amp;amp;" iname="&lt;Hello&amp;" title="&lt;Hello&amp;" />},
-        "Selective Escaping Standalone");
+    is(
+        $test_tag->gen(
+            { map { $_ => $string } (qw(href title id iname)) }, 1
+        ),
+q{<a href="&amp;lt;Hello&amp;amp;" id="&amp;lt;Hello&amp;amp;" iname="&lt;Hello&amp;" title="&lt;Hello&amp;" />},
+        "Selective Escaping Standalone"
+    );
 }
 
diff --git a/t/15aspetersen-inherit.t b/t/15aspetersen-inherit.t
index 960ab23..e4851f1 100644
--- a/t/15aspetersen-inherit.t
+++ b/t/15aspetersen-inherit.t
@@ -10,8 +10,8 @@ use base 'HTML::Widgets::NavMenu::Iterator::NavMenu';
 sub get_open_sub_menu_tags
 {
     my $self = shift;
-    return ("<br class=\"hello\" />",
-        $self->gen_ul_tag({'depth' => $self->stack->len()}));
+    return ( "<br class=\"hello\" />",
+        $self->gen_ul_tag( { 'depth' => $self->stack->len() } ) );
 }
 
 sub get_currently_active_text
@@ -31,10 +31,8 @@ sub _get_nav_menu_traverser
 {
     my $self = shift;
 
-    return
-        MyCustom::NavMenu::Iterator->new(
-            $self->_get_nav_menu_traverser_args()
-        );
+    return MyCustom::NavMenu::Iterator->new(
+        $self->_get_nav_menu_traverser_args() );
 }
 
 package main;
@@ -51,15 +49,15 @@ my $test_data = get_test_data();
 
 sub validate_nav_menu
 {
-    my $rendered = shift;
+    my $rendered        = shift;
     my $expected_string = shift;
-    my $test_blurb = shift;
+    my $test_blurb      = shift;
 
-    my @result = (@{$rendered->{html}});
+    my @result = ( @{ $rendered->{html} } );
 
-    my @expected = (split(/\n/, $expected_string));
+    my @expected = ( split( /\n/, $expected_string ) );
 
-    is_deeply (\@expected, \@result, $test_blurb);
+    is_deeply( \@expected, \@result, $test_blurb );
 }
 
 # This test tests that an inherited nav menu similar to what Stephen Petersen
@@ -67,12 +65,11 @@ sub validate_nav_menu
 {
     my $nav_menu = MyCustom::NavMenu->new(
         'path_info' => "/me/",
-        @{$test_data->{'show_always'}},
+        @{ $test_data->{'show_always'} },
         'ul_classes' => [ "navbarmain", ("navbarnested") x 5 ],
     );
 
-    my $rendered =
-        $nav_menu->render();
+    my $rendered = $nav_menu->render();
 
     my $expected_string = <<"EOF";
 <ul class="navbarmain">
@@ -113,10 +110,7 @@ sub validate_nav_menu
 EOF
 
     # TEST
-    validate_nav_menu(
-        $rendered,
-        $expected_string,
-        "Nav Menu with show_always"
-    );
+    validate_nav_menu( $rendered, $expected_string,
+        "Nav Menu with show_always" );
 }
 
diff --git a/t/16redirect.t b/t/16redirect.t
index 82d47f1..56fefd6 100644
--- a/t/16redirect.t
+++ b/t/16redirect.t
@@ -14,7 +14,7 @@ sub new
 
 sub redirect
 {
-    my ($self, $path) = (@_);
+    my ( $self, $path ) = (@_);
     return "ReDirect-To: $path";
 }
 
@@ -46,41 +46,53 @@ my $test_data = get_test_data();
 
 {
     eval {
-    my $nav_menu = HTML::Widgets::NavMenu->new(
-        'path_info' => "",
-        @{$test_data->{'minimal'}},
-        'ul_classes' => [ "navbarmain", ("navbarnested") x 5 ],
-    );
+        my $nav_menu = HTML::Widgets::NavMenu->new(
+            'path_info' => "",
+            @{ $test_data->{'minimal'} },
+            'ul_classes' => [ "navbarmain", ("navbarnested") x 5 ],
+        );
     };
+
     # TEST
-    isa_ok ($@, "HTML::Widgets::NavMenu::Error::Redirect", "\$@");
+    isa_ok( $@, "HTML::Widgets::NavMenu::Error::Redirect", "\$@" );
     reset_out_buffer();
     $exit_count = 0;
-    $@->CGIpm_perform_redirect(MockCGI->new());
+    $@->CGIpm_perform_redirect( MockCGI->new() );
+
     # TEST
-    is(get_out_buffer(), "ReDirect-To: {{{Script Name}}}/",
-        "Checking that redirect-to works");
+    is(
+        get_out_buffer(),
+        "ReDirect-To: {{{Script Name}}}/",
+        "Checking that redirect-to works"
+    );
+
     # TEST
-    is($exit_count, 1, "Counting an exit");
+    is( $exit_count, 1, "Counting an exit" );
 }
 
 {
     eval {
-    my $nav_menu = HTML::Widgets::NavMenu->new(
-        'path_info' => "/hello/world//",
-        @{$test_data->{'minimal'}},
-        'ul_classes' => [ "navbarmain", ("navbarnested") x 5 ],
-    );
+        my $nav_menu = HTML::Widgets::NavMenu->new(
+            'path_info' => "/hello/world//",
+            @{ $test_data->{'minimal'} },
+            'ul_classes' => [ "navbarmain", ("navbarnested") x 5 ],
+        );
     };
+
     # TEST
-    isa_ok ($@, "HTML::Widgets::NavMenu::Error::Redirect", "\$@");
+    isa_ok( $@, "HTML::Widgets::NavMenu::Error::Redirect", "\$@" );
     reset_out_buffer();
     $exit_count = 0;
-    $@->CGIpm_perform_redirect(MockCGI->new());
+    $@->CGIpm_perform_redirect( MockCGI->new() );
+
     # TEST
-    is(get_out_buffer(), "ReDirect-To: {{{Script Name}}}/hello/world/",
-        "Checking that redirect-to works");
+    is(
+        get_out_buffer(),
+        "ReDirect-To: {{{Script Name}}}/hello/world/",
+        "Checking that redirect-to works"
+    );
+
     # TEST
-    is($exit_count, 1, "Counting an exit");
+    is( $exit_count, 1, "Counting an exit" );
 }
 
diff --git a/t/17nav-coords-unit.t b/t/17nav-coords-unit.t
index 6cb68f4..65c56c5 100644
--- a/t/17nav-coords-unit.t
+++ b/t/17nav-coords-unit.t
@@ -16,90 +16,105 @@ my $test_data = get_test_data();
 {
     my $nav_menu = HTML::Widgets::NavMenu->new(
         'path_info' => "/resume.html",
-        @{$test_data->{'with_skips'}},
+        @{ $test_data->{'with_skips'} },
     );
 
     # TEST
-    is_deeply ($nav_menu->_get_current_coords(), [1, 2],
-        "_get_current_coords()");
+    is_deeply(
+        $nav_menu->_get_current_coords(),
+        [ 1, 2 ],
+        "_get_current_coords()"
+    );
 
     # TEST
-    is_deeply ($nav_menu->_get_next_coords(), [2],
-        "Testing that _get_next_coords does _not_ skip skips by default");
+    is_deeply( $nav_menu->_get_next_coords(),
+        [2], "Testing that _get_next_coords does _not_ skip skips by default" );
+
     # TEST
-    is_deeply ($nav_menu->_get_prev_coords(), [1,1],
-        "Testing _get_prev_coords");
+    is_deeply(
+        $nav_menu->_get_prev_coords(),
+        [ 1, 1 ],
+        "Testing _get_prev_coords"
+    );
 
     # TEST
-    is_deeply ($nav_menu->_get_up_coords(), [1],
-        "Testing _get_up_coords()");
+    is_deeply( $nav_menu->_get_up_coords(), [1], "Testing _get_up_coords()" );
+
     # TEST
-    is_deeply ($nav_menu->_get_up_coords([1, 2]), [1],
-        "Testing _get_up_coords()");
+    is_deeply( $nav_menu->_get_up_coords( [ 1, 2 ] ),
+        [1], "Testing _get_up_coords()" );
 
     # TEST
-    is_deeply ($nav_menu->_get_top_coords(), [0],
-        "Testing _get_top_coords()");
+    is_deeply( $nav_menu->_get_top_coords(), [0], "Testing _get_top_coords()" );
+
     # TEST
-    is_deeply ($nav_menu->_get_top_coords([1, 2]), [0],
-        "Testing _get_top_coords()");
+    is_deeply( $nav_menu->_get_top_coords( [ 1, 2 ] ),
+        [0], "Testing _get_top_coords()" );
 
     # TEST
-    is_deeply (
+    is_deeply(
         $nav_menu->_get_coords_while_skipping_skips(
             \&HTML::Widgets::NavMenu::_get_next_coords
-        ), [3],
+        ),
+        [3],
         "Testing that skipping(_get_next_coords) does skip skips by default"
     );
+
     # TEST
-    is_deeply (
+    is_deeply(
         $nav_menu->_get_coords_while_skipping_skips(
             \&HTML::Widgets::NavMenu::_get_prev_coords
-        ), [1,1],
+        ),
+        [ 1, 1 ],
         "Testing skipping(_get_prev_coords)"
     );
 
     # TEST
-    is_deeply (
+    is_deeply(
         $nav_menu->_get_coords_while_skipping_skips(
             \&HTML::Widgets::NavMenu::_get_next_coords,
-            [1, 2]
-        ), [3],
+            [ 1, 2 ]
+        ),
+        [3],
         "Testing that skipping(_get_next_coords) with explicit coords"
     );
 
-
 }
 
 {
     my $nav_menu = HTML::Widgets::NavMenu->new(
         'path_info' => "/open-source/",
-        @{$test_data->{'with_skips'}},
+        @{ $test_data->{'with_skips'} },
     );
 
     # TEST
-    is_deeply ($nav_menu->_get_current_coords(), [3],
-        "_get_current_coords()");
+    is_deeply( $nav_menu->_get_current_coords(), [3], "_get_current_coords()" );
 
     # TEST
-    is_deeply ($nav_menu->_get_next_coords(), [3,0],
-        "Testing _get_next_coords");
+    is_deeply(
+        $nav_menu->_get_next_coords(),
+        [ 3, 0 ],
+        "Testing _get_next_coords"
+    );
+
     # TEST
-    is_deeply ($nav_menu->_get_prev_coords(), [2],
-        "Testing _get_prev_coords");
+    is_deeply( $nav_menu->_get_prev_coords(), [2], "Testing _get_prev_coords" );
 
     # TEST
-    is_deeply (
+    is_deeply(
         $nav_menu->_get_coords_while_skipping_skips(
             \&HTML::Widgets::NavMenu::_get_next_coords
-        ), [3, 1],
+        ),
+        [ 3, 1 ],
         "Testing that skipping(_get_next_coords) does skip skips by default"
     );
+
     # TEST
-    is_deeply (
+    is_deeply(
         $nav_menu->_get_coords_while_skipping_skips(
             \&HTML::Widgets::NavMenu::_get_prev_coords
-        ), [1,2],
+        ),
+        [ 1, 2 ],
         "Testing skipping(_get_prev_coords)"
     );
 }
diff --git a/t/18url.t b/t/18url.t
index 9f66507..5401427 100644
--- a/t/18url.t
+++ b/t/18url.t
@@ -9,123 +9,67 @@ use HTML::Widgets::NavMenu::Url;
 
 {
     my $from =
-        HTML::Widgets::NavMenu::Url->new(
-            [qw(hello there wow.html)],
-            1,
-        );
-    my $to =
-        HTML::Widgets::NavMenu::Url->new(
-            [qw(hello there wow.html)],
-            0,
-        );
+        HTML::Widgets::NavMenu::Url->new( [qw(hello there wow.html)], 1, );
+    my $to = HTML::Widgets::NavMenu::Url->new( [qw(hello there wow.html)], 0, );
 
     my $url;
-    eval
-    {
-        $url = $from->_get_relative_url($to);
-    };
+    eval { $url = $from->_get_relative_url($to); };
+
     # TEST
-    like ($@, qr{^Two identical URLs},
-        "Checking that an exception was thrown.");
+    like(
+        $@,
+        qr{^Two identical URLs},
+        "Checking that an exception was thrown."
+    );
 }
 
-
 {
-    my $from =
-        HTML::Widgets::NavMenu::Url->new(
-            [],
-            0,
-        );
-    my $to =
-        HTML::Widgets::NavMenu::Url->new(
-            [],
-            0,
-        );
+    my $from = HTML::Widgets::NavMenu::Url->new( [], 0, );
+    my $to   = HTML::Widgets::NavMenu::Url->new( [], 0, );
 
     my $url;
-    eval
-    {
-        $url = $from->_get_relative_url($to);
-    };
+    eval { $url = $from->_get_relative_url($to); };
+
     # TEST
-    like ($@, qr{^Root URL},
-        "Checking that an exception was thrown.");
+    like( $@, qr{^Root URL}, "Checking that an exception was thrown." );
 }
 
-
 {
-    my $from =
-        HTML::Widgets::NavMenu::Url->new(
-            ["hello"],
-            1,
-            "harddisk",
-        );
-    my $to =
-        HTML::Widgets::NavMenu::Url->new(
-            ["good.html"],
-            0,
-        );
+    my $from = HTML::Widgets::NavMenu::Url->new( ["hello"], 1, "harddisk", );
+    my $to = HTML::Widgets::NavMenu::Url->new( ["good.html"], 0, );
 
     # TEST
-    is ($from->_get_relative_url($to, 1), "../good.html",
-        "Checking for harddisk URL from dir to file");
+    is( $from->_get_relative_url( $to, 1 ),
+        "../good.html", "Checking for harddisk URL from dir to file" );
 }
 
 {
-    my $from =
-        HTML::Widgets::NavMenu::Url->new(
-            ["hello"],
-            1,
-            "harddisk",
-        );
-    my $to =
-        HTML::Widgets::NavMenu::Url->new(
-            ["good"],
-            1,
-        );
+    my $from = HTML::Widgets::NavMenu::Url->new( ["hello"], 1, "harddisk", );
+    my $to   = HTML::Widgets::NavMenu::Url->new( ["good"],  1, );
 
     # TEST
-    is ($from->_get_relative_url($to, 1), "../good/index.html",
-        "Checking for harddisk URL from dir to dir");
+    is( $from->_get_relative_url( $to, 1 ),
+        "../good/index.html", "Checking for harddisk URL from dir to dir" );
 }
 
-
 {
-    my $from =
-        HTML::Widgets::NavMenu::Url->new(
-            ["hello"],
-            1,
-            "harddisk",
-        );
-    my $to =
-        HTML::Widgets::NavMenu::Url->new(
-            ["good"],
-            1,
-        );
+    my $from = HTML::Widgets::NavMenu::Url->new( ["hello"], 1, "harddisk", );
+    my $to   = HTML::Widgets::NavMenu::Url->new( ["good"],  1, );
 
     # TEST
-    is ($from->_get_relative_url($to, 0), "./good/index.html",
-        "Checking for harddisk URL from dir to dir");
+    is( $from->_get_relative_url( $to, 0 ),
+        "./good/index.html", "Checking for harddisk URL from dir to dir" );
 }
 
 {
     my $from =
         HTML::Widgets::NavMenu::Url->new(
-            ["directory", "sub-dir", "good.html"],
-            0,
-            "server",
-        );
-    my $to =
-        HTML::Widgets::NavMenu::Url->new(
-            ["directory"],
-            1,
-            "server"
-        );
+        [ "directory", "sub-dir", "good.html" ],
+        0, "server", );
+    my $to = HTML::Widgets::NavMenu::Url->new( ["directory"], 1, "server" );
 
     # TEST
-    is ($from->_get_relative_url($to, 1), "../",
-        "Checking for relative URL from a non-dir to a dir."
-    );
+    is( $from->_get_relative_url( $to, 1 ),
+        "../", "Checking for relative URL from a non-dir to a dir." );
 }
 
-
diff --git a/t/lib/HTML/Widgets/NavMenu/Test/Data.pm b/t/lib/HTML/Widgets/NavMenu/Test/Data.pm
index 034f8c6..3156b68 100644
--- a/t/lib/HTML/Widgets/NavMenu/Test/Data.pm
+++ b/t/lib/HTML/Widgets/NavMenu/Test/Data.pm
@@ -5,100 +5,88 @@ use warnings;
 
 use Exporter;
 use vars qw(@ISA);
-@ISA=qw(Exporter);
+@ISA = qw(Exporter);
 
 use vars qw(@EXPORT);
 
 @EXPORT = qw(get_test_data);
 
-my @minimal_nav_menu =
-(
+my @minimal_nav_menu = (
     'current_host' => "default",
     'hosts' => { 'default' => { 'base_url' => "http://www.hello.com/" }, },
-    'tree_contents' =>
-    {
-        'host' => "default",
-        'text' => "Top 1",
+    'tree_contents' => {
+        'host'  => "default",
+        'text'  => "Top 1",
         'title' => "T1 Title",
-        'subs' =>
-        [
+        'subs'  => [
             {
                 'text' => "Home",
-                'url' => "",
+                'url'  => "",
             },
             {
-                'text' => "About Me",
+                'text'  => "About Me",
                 'title' => "About Myself",
-                'url' => "me/",
+                'url'   => "me/",
             },
         ],
     },
 );
 
-my @two_sites_data =
-(
+my @two_sites_data = (
     'current_host' => "default",
-    'hosts' =>
-    {
-        'default' =>
-        {
+    'hosts'        => {
+        'default' => {
             'base_url' => "http://www.hello.com/",
         },
-        'other' =>
-        {
+        'other' => {
             'base_url' => "http://www.other-url.co.il/~shlomif/",
         },
     },
-    'tree_contents' =>
-    {
-        'host' => "default",
-        'text' => "Top 1",
+    'tree_contents' => {
+        'host'  => "default",
+        'text'  => "Top 1",
         'title' => "T1 Title",
-        'subs' =>
-        [
+        'subs'  => [
             {
                 'text' => "Home",
-                'url' => "",
+                'url'  => "",
             },
             {
-                'text' => "About Me",
+                'text'  => "About Me",
                 'title' => "About Myself",
-                'url' => "me/",
-                'subs' =>
-                [
+                'url'   => "me/",
+                'subs'  => [
                     {
-                        'url' => "round/hello/personal.html",
-                        'text' => "Bio",
+                        'url'   => "round/hello/personal.html",
+                        'text'  => "Bio",
                         'title' => "Biography of Myself",
                     },
                     {
-                        'url' => "round/toto/",
-                        'text' => "Gloria",
+                        'url'   => "round/toto/",
+                        'text'  => "Gloria",
                         'title' => "A Useful Conspiracy",
                     },
                 ],
             },
             {
-                'text' => "Tam Tam Drums",
+                'text'  => "Tam Tam Drums",
                 'title' => "Drumming is good for your health",
-                'url' => "hoola/",
-                'host' => "other",
-                'subs' =>
-                [
+                'url'   => "hoola/",
+                'host'  => "other",
+                'subs'  => [
                     {
-                        'url' => "hello/hoop.html",
+                        'url'   => "hello/hoop.html",
                         'title' => "Hoola Hoops Rulez and Ownz!",
-                        'text' => "Hoola Hoops",
-                        'host' => "default",
+                        'text'  => "Hoola Hoops",
+                        'host'  => "default",
                     },
                     {
-                        'url' => "tetra/",
+                        'url'  => "tetra/",
                         'text' => "Tetrahedron",
-                        'subs' =>
-                        [
+                        'subs' => [
                             {
-                                'url' => "tetra/one/",
-                                'text' => "Tetra One",
+                                'url'   => "tetra/one/",
+                                'text'  => "Tetra One",
                                 'title' => "Tetra One Title",
                             },
                         ],
@@ -109,36 +97,32 @@ my @two_sites_data =
     },
 );
 
-my @expand_re_nav_menu =
-(
+my @expand_re_nav_menu = (
     'current_host' => "default",
     'hosts' => { 'default' => { 'base_url' => "http://www.hello.com/" }, },
-    'tree_contents' =>
-    {
-        'host' => "default",
-        'text' => "Top 1",
+    'tree_contents' => {
+        'host'  => "default",
+        'text'  => "Top 1",
         'title' => "T1 Title",
-        'subs' =>
-        [
+        'subs'  => [
             {
                 'text' => "Home",
-                'url' => "",
+                'url'  => "",
             },
             {
-                'text' => "About Me",
+                'text'  => "About Me",
                 'title' => "About Myself",
-                'url' => "me/",
+                'url'   => "me/",
             },
             {
-                'text' => "Foo",
+                'text'  => "Foo",
                 'title' => "Fooish",
-                'url' => "foo/",
-                'subs' =>
-                [
+                'url'   => "foo/",
+                'subs'  => [
                     {
-                        'text' => "Expanded",
-                        'title' => "Expanded",
-                        'url' => "foo/expanded/",
+                        'text'   => "Expanded",
+                        'title'  => "Expanded",
+                        'url'    => "foo/expanded/",
                         'expand' => { 're' => "", },
                     },
                 ],
@@ -147,55 +131,49 @@ my @expand_re_nav_menu =
     },
 );
 
-my @show_always_nav_menu =
-(
+my @show_always_nav_menu = (
     'current_host' => "default",
     'hosts' => { 'default' => { 'base_url' => "http://www.hello.com/" }, },
-    'tree_contents' =>
-    {
-        'host' => "default",
-        'text' => "Top 1",
+    'tree_contents' => {
+        'host'  => "default",
+        'text'  => "Top 1",
         'title' => "T1 Title",
-        'subs' =>
-        [
+        'subs'  => [
             {
                 'text' => "Home",
-                'url' => "",
+                'url'  => "",
             },
             {
-                'text' => "About Me",
+                'text'  => "About Me",
                 'title' => "About Myself",
-                'url' => "me/",
+                'url'   => "me/",
             },
             {
-                'text' => "Show Always",
-                'url' => "show-always/",
+                'text'        => "Show Always",
+                'url'         => "show-always/",
                 'show_always' => 1,
-                'subs' =>
-                [
+                'subs'        => [
                     {
                         'text' => "Gandalf",
-                        'url' => "show-always/gandalf/",
+                        'url'  => "show-always/gandalf/",
                     },
                     {
                         'text' => "Robin",
-                        'url' => "robin/",
-                        'subs' =>
-                        [
+                        'url'  => "robin/",
+                        'subs' => [
                             {
                                 'text' => "Hood",
-                                'url' => "robin/hood/",
+                                'url'  => "robin/hood/",
                             },
                         ],
                     },
                     {
                         'text' => "Queen Esther",
-                        'url' => "esther/",
-                        'subs' =>
-                        [
+                        'url'  => "esther/",
+                        'subs' => [
                             {
                                 'text' => "Haman",
-                                'url' => "haman/",
+                                'url'  => "haman/",
                             },
                         ],
                     },
@@ -205,138 +183,124 @@ my @show_always_nav_menu =
     },
 );
 
-my @items_in_sub_nav_menu =
-(
+my @items_in_sub_nav_menu = (
     'current_host' => "default",
-    'hosts' =>
-    {
-        'default' =>
-        {
+    'hosts'        => {
+        'default' => {
             'base_url' => "http://www.hello.com/",
         },
     },
-    'tree_contents' =>
-    {
-        'host' => "default",
-        'text' => "Top 1",
+    'tree_contents' => {
+        'host'  => "default",
+        'text'  => "Top 1",
         'title' => "T1 Title",
-        'subs' =>
-        [
+        'subs'  => [
             {
                 'text' => "Home",
-                'url' => "",
+                'url'  => "",
             },
             {
-                'text' => "About Me",
+                'text'  => "About Me",
                 'title' => "About Myself",
-                'url' => "me/",
-                'subs' =>
-                [
+                'url'   => "me/",
+                'subs'  => [
                     {
-                        'url' => "me/bio.html",
-                        'text' => "Bio",
+                        'url'   => "me/bio.html",
+                        'text'  => "Bio",
                         'title' => "Biography of Myself",
                     },
                     {
-                        'url' => "me/gloria/",
-                        'text' => "Gloria",
+                        'url'   => "me/gloria/",
+                        'text'  => "Gloria",
                         'title' => "A Useful Conspiracy",
                     },
                 ],
             },
             {
-                'text' => "Tam Tam Drums",
+                'text'  => "Tam Tam Drums",
                 'title' => "Drumming is good for your health",
-                'url' => "hoola/",
+                'url'   => "hoola/",
             },
         ],
     },
 );
 
-my @separator_nav_menu =
-(
+my @separator_nav_menu = (
     'current_host' => "default",
     'hosts' => { 'default' => { 'base_url' => "http://www.hello.com/" }, },
-    'tree_contents' =>
-    {
-        'host' => "default",
-        'text' => "Top 1",
+    'tree_contents' => {
+        'host'  => "default",
+        'text'  => "Top 1",
         'title' => "T1 Title",
-        'subs' =>
-        [
+        'subs'  => [
             {
                 'text' => "Home",
-                'url' => "",
+                'url'  => "",
             },
             {
-                'text' => "About Me",
+                'text'  => "About Me",
                 'title' => "About Myself",
-                'url' => "me/",
-                'subs' =>
-                [
+                'url'   => "me/",
+                'subs'  => [
                     {
                         'text' => "Group Hug",
-                        'url' => "me/group-hug/",
+                        'url'  => "me/group-hug/",
                     },
                     {
                         'text' => "Cool I/O",
-                        'url' => "me/cool-io/",
+                        'url'  => "me/cool-io/",
                     },
                     {
                         'separator' => 1,
-                        'skip' => 1,
+                        'skip'      => 1,
                     },
                     {
                         'text' => "Resume",
-                        'url' => "resume.html",
+                        'url'  => "resume.html",
                     },
                 ],
             },
             {
                 'separator' => 1,
-                'skip' => 1,
+                'skip'      => 1,
             },
             {
                 'text' => "Halifax",
-                'url' => "halifax/",
+                'url'  => "halifax/",
             },
         ],
     },
 );
 
-my @hidden_item_nav_menu =
-(
+my @hidden_item_nav_menu = (
     'current_host' => "default",
     'hosts' => { 'default' => { 'base_url' => "http://www.hello.com/" }, },
-    'tree_contents' =>
-    {
-        'host' => "default",
-        'text' => "Top 1",
+    'tree_contents' => {
+        'host'  => "default",
+        'text'  => "Top 1",
         'title' => "T1 Title",
-        'subs' =>
-        [
+        'subs'  => [
             {
                 'text' => "Home",
-                'url' => "",
+                'url'  => "",
             },
             {
-                'text' => "About Me",
+                'text'  => "About Me",
                 'title' => "About Myself",
-                'url' => "me/",
-                'subs' =>
-                [
+                'url'   => "me/",
+                'subs'  => [
                     {
                         'text' => "Visible",
-                        'url' => "me/visible/",
+                        'url'  => "me/visible/",
                     },
                     {
                         'text' => "Hidden",
-                        'url' => "me/hidden/",
+                        'url'  => "me/hidden/",
                         'hide' => 1,
                     },
                     {
                         'text' => "Visible Too",
-                        'url' => "me/visible-too/",
+                        'url'  => "me/visible-too/",
                     },
                 ],
             },
@@ -344,42 +308,38 @@ my @hidden_item_nav_menu =
     },
 );
 
-my @with_ids_nav_menu =
-(
+my @with_ids_nav_menu = (
     'current_host' => "default",
     'hosts' => { 'default' => { 'base_url' => "http://www.hello.com/" }, },
-    'tree_contents' =>
-    {
-        'host' => "default",
-        'text' => "Top 1",
+    'tree_contents' => {
+        'host'  => "default",
+        'text'  => "Top 1",
         'title' => "T1 Title",
-        'subs' =>
-        [
+        'subs'  => [
             {
                 'text' => "Home",
-                'url' => "",
+                'url'  => "",
             },
             {
-                'text' => "About Me",
+                'text'  => "About Me",
                 'title' => "About Myself",
-                'url' => "me/",
-                li_id => "about_me",
-                'subs' =>
-                [
+                'url'   => "me/",
+                li_id   => "about_me",
+                'subs'  => [
                     {
                         'text' => "Visible",
-                        'url' => "me/visible/",
-                        li_id => "visible",
+                        'url'  => "me/visible/",
+                        li_id  => "visible",
                     },
                     {
                         'text' => "Hidden",
-                        'url' => "me/hidden/",
+                        'url'  => "me/hidden/",
                         'hide' => 1,
                     },
                     {
                         'text' => "Visible Too",
-                        'url' => "me/visible-too/",
-                        li_id => "FooBar",
+                        'url'  => "me/visible-too/",
+                        li_id  => "FooBar",
                     },
                 ],
             },
@@ -387,49 +347,44 @@ my @with_ids_nav_menu =
     },
 );
 
-my @header_role_nav_menu =
-(
+my @header_role_nav_menu = (
     'current_host' => "default",
     'hosts' => { 'default' => { 'base_url' => "http://www.hello.com/" }, },
-    'tree_contents' =>
-    {
-        'host' => "default",
-        'text' => "Top 1",
+    'tree_contents' => {
+        'host'  => "default",
+        'text'  => "Top 1",
         'title' => "T1 Title",
-        'subs' =>
-        [
+        'subs'  => [
             {
                 'text' => "Home",
-                'url' => "",
+                'url'  => "",
             },
             {
-                'text' => "About Me",
-                'title' => "About Myself",
-                'url' => "me/",
-                'role' => "header",
+                'text'        => "About Me",
+                'title'       => "About Myself",
+                'url'         => "me/",
+                'role'        => "header",
                 'show_always' => 1,
-                'subs' =>
-                [
+                'subs'        => [
                     {
                         'text' => "Sub Me",
-                        'url' => "me/sub-me1/",
+                        'url'  => "me/sub-me1/",
                     },
                     {
                         'text' => "Sub Me 2",
-                        'url' => "me/sub-me-two/",
+                        'url'  => "me/sub-me-two/",
                     },
                 ],
             },
             {
-                'text' => "Hello",
-                'url' => "aloha/",
+                'text'        => "Hello",
+                'url'         => "aloha/",
                 'show_always' => 1,
-                'role' => "notexist",
-                'subs' =>
-                [
+                'role'        => "notexist",
+                'subs'        => [
                     {
                         'text' => "OBKB",
-                        'url' => "aloha/obkb/",
+                        'url'  => "aloha/obkb/",
                     },
                 ],
             },
@@ -437,61 +392,56 @@ my @header_role_nav_menu =
     },
 );
 
-my @selective_expand_nav_menu =
-(
+my @selective_expand_nav_menu = (
     'current_host' => "default",
     'hosts' => { 'default' => { 'base_url' => "http://www.hello.com/" }, },
-    'tree_contents' =>
-    {
-        'host' => "default",
-        'text' => "Top 1",
+    'tree_contents' => {
+        'host'  => "default",
+        'text'  => "Top 1",
         'title' => "T1 Title",
-        'subs' =>
-        [
+        'subs'  => [
             {
                 'text' => "Home",
-                'url' => "",
+                'url'  => "",
             },
             {
-                'text' => "About Me",
-                'title' => "About Myself",
-                'url' => "me/",
+                'text'   => "About Me",
+                'title'  => "About Myself",
+                'url'    => "me/",
                 'expand' => { 're' => "^me/", },
-                'subs' =>
-                [
+                'subs'   => [
                     {
                         'text' => "Group Hug",
-                        'url' => "me/group-hug/",
+                        'url'  => "me/group-hug/",
                     },
                     {
                         'text' => "Cool I/O",
-                        'url' => "me/cool-io/",
+                        'url'  => "me/cool-io/",
                     },
                     {
                         'text' => "Resume",
-                        'url' => "resume.html",
+                        'url'  => "resume.html",
                     },
                 ],
             },
             {
                 'text' => "Halifax",
-                'url' => "halifax/",
+                'url'  => "halifax/",
             },
             {
-                'text' => "Software",
-                'title' => "Open Source Software I Wrote",
-                'url' => "open-source/",
+                'text'   => "Software",
+                'title'  => "Open Source Software I Wrote",
+                'url'    => "open-source/",
                 'expand' => { 're' => "^open-source/", },
-                'subs' =>
-                [
+                'subs'   => [
                     {
                         'text' => "Fooware",
-                        'url' => "open-source/fooware/",
+                        'url'  => "open-source/fooware/",
                     },
                     {
-                        'text' => "Condor-Man",
+                        'text'  => "Condor-Man",
                         'title' => "Kwalitee",
-                        'url' => "open-source/condor-man/",
+                        'url'   => "open-source/condor-man/",
                     },
                 ],
             },
@@ -499,85 +449,74 @@ my @selective_expand_nav_menu =
     },
 );
 
-my @url_type_menu =
-(
+my @url_type_menu = (
     'current_host' => "default",
-    'hosts' =>
-        {
-        'default' =>
-            {
-                'base_url' => "http://www.hello.com/",
-                'trailing_url_base' => "/",
-            },
+    'hosts'        => {
+        'default' => {
+            'base_url'          => "http://www.hello.com/",
+            'trailing_url_base' => "/",
         },
-    'tree_contents' =>
-    {
-        'host' => "default",
-        'text' => "Top 1",
+    },
+    'tree_contents' => {
+        'host'  => "default",
+        'text'  => "Top 1",
         'title' => "T1 Title",
-        'subs' =>
-        [
+        'subs'  => [
             {
                 'text' => "Home",
-                'url' => "",
+                'url'  => "",
             },
             {
-                'text' => "About Me",
-                'title' => "About Myself",
-                'url' => "me/",
+                'text'     => "About Me",
+                'title'    => "About Myself",
+                'url'      => "me/",
                 'url_type' => "site_abs",
             },
             {
-                'text' => "Yowza",
-                'url' => "yowza/",
+                'text'     => "Yowza",
+                'url'      => "yowza/",
                 'url_type' => "full_abs",
             },
         ],
     },
 );
 
-my @rec_url_type_menu =
-(
+my @rec_url_type_menu = (
     'current_host' => "default",
-    'hosts' =>
-        {
-        'default' =>
-            {
-                'base_url' => "http://www.hello.com/~shlomif/",
-                'trailing_url_base' => "/~shlomif/",
-            },
+    'hosts'        => {
+        'default' => {
+            'base_url'          => "http://www.hello.com/~shlomif/",
+            'trailing_url_base' => "/~shlomif/",
         },
-    'tree_contents' =>
-    {
-        'host' => "default",
-        'text' => "Top 1",
-        'title' => "T1 Title",
+    },
+    'tree_contents' => {
+        'host'         => "default",
+        'text'         => "Top 1",
+        'title'        => "T1 Title",
         'rec_url_type' => "full_abs",
-        'subs' =>
-        [
+        'subs'         => [
             {
                 'text' => "Home",
-                'url' => "",
+                'url'  => "",
             },
             {
-                'text' => "About Me",
-                'title' => "About Myself",
-                'url' => "me/",
+                'text'     => "About Me",
+                'title'    => "About Myself",
+                'url'      => "me/",
                 'url_type' => "site_abs",
             },
             {
                 'text' => "Hoola",
-                'url' => "tedious/to/write/",
+                'url'  => "tedious/to/write/",
             },
             {
-                'text' => "Yowza",
-                'url' => "yowza/",
-                'url_type' => "rel",
+                'text'        => "Yowza",
+                'url'         => "yowza/",
+                'url_type'    => "rel",
                 'show_always' => 1,
-                'subs' =>
-                [
+                'subs'        => [
                     {
-                        'url' => "yowza/howza/",
+                        'url'  => "yowza/howza/",
                         'text' => "This should be full_abs again",
                     },
                 ],
@@ -586,31 +525,27 @@ my @rec_url_type_menu =
     },
 );
 
-my @url_is_abs_nav_menu =
-(
+my @url_is_abs_nav_menu = (
     'current_host' => "default",
     'hosts' => { 'default' => { 'base_url' => "http://www.hello.com/" }, },
-    'tree_contents' =>
-    {
-        'host' => "default",
-        'text' => "Top 1",
+    'tree_contents' => {
+        'host'  => "default",
+        'text'  => "Top 1",
         'title' => "T1 Title",
-        'subs' =>
-        [
+        'subs'  => [
             {
                 'text' => "Home",
-                'url' => "",
+                'url'  => "",
             },
             {
-                'text' => "Link to Google",
-                'title' => "Google it!",
-                'url' => "http://www.google.com/",
+                'text'       => "Link to Google",
+                'title'      => "Google it!",
+                'url'        => "http://www.google.com/",
                 'url_is_abs' => 1,
-                'expand' => { 'bool' => 0, },
-                'subs' =>
-                [
+                'expand'     => { 'bool' => 0, },
+                'subs'       => [
                     {
-                        'url' => "sub-dir/",
+                        'url'  => "sub-dir/",
                         'text' => "Sub Directory",
                     },
                 ],
@@ -621,79 +556,73 @@ my @url_is_abs_nav_menu =
 
 sub mixed_expand_nav_menu_cb1
 {
-    my %args = (@_);
-    my $host = $args{'current_host'};
+    my %args      = (@_);
+    my $host      = $args{'current_host'};
     my $path_info = $args{'path_info'};
-    return (($host eq "other") && ($path_info =~ m!^open-source/!));
+    return ( ( $host eq "other" ) && ( $path_info =~ m!^open-source/! ) );
 }
 
 sub mixed_expand_nav_menu_cb2
 {
-    my %args = (@_);
-    my $host = $args{'current_host'};
+    my %args      = (@_);
+    my $host      = $args{'current_host'};
     my $path_info = $args{'path_info'};
-    return (($host eq "default") && ($path_info =~ m!^me/!));
+    return ( ( $host eq "default" ) && ( $path_info =~ m!^me/! ) );
 }
 
-
-my @mixed_expand_nav_menu =
-(
+my @mixed_expand_nav_menu = (
     'hosts' => {
         'default' => { 'base_url' => "http://www.default.net/", },
-        'other' => { 'base_url' => "http://www.other.org/", },
+        'other'   => { 'base_url' => "http://www.other.org/", },
     },
-    'tree_contents' =>
-    {
-        'host' => "default",
-        'text' => "Top 1",
+    'tree_contents' => {
+        'host'  => "default",
+        'text'  => "Top 1",
         'title' => "T1 Title",
-        'subs' =>
-        [
+        'subs'  => [
             {
                 'text' => "Home",
-                'url' => "",
+                'url'  => "",
             },
             {
-                'text' => "About Me",
-                'title' => "About Myself",
-                'url' => "me/",
+                'text'   => "About Me",
+                'title'  => "About Myself",
+                'url'    => "me/",
                 'expand' => { 'cb' => \&mixed_expand_nav_menu_cb2, },
-                'subs' =>
-                [
+                'subs'   => [
                     {
                         'text' => "Group Hug",
-                        'url' => "me/group-hug/",
+                        'url'  => "me/group-hug/",
                     },
                     {
                         'text' => "Cool I/O",
-                        'url' => "me/cool-io/",
+                        'url'  => "me/cool-io/",
                     },
                     {
                         'text' => "Resume",
-                        'url' => "resume.html",
+                        'url'  => "resume.html",
                     },
                 ],
             },
             {
                 'text' => "Halifax",
-                'url' => "halifax/",
+                'url'  => "halifax/",
             },
             {
-                'text' => "Software",
-                'title' => "Open Source Software I Wrote",
-                'url' => "open-source/",
-                'host' => "other",
+                'text'   => "Software",
+                'title'  => "Open Source Software I Wrote",
+                'url'    => "open-source/",
+                'host'   => "other",
                 'expand' => { 'cb' => \&mixed_expand_nav_menu_cb1, },
-                'subs' =>
-                [
+                'subs'   => [
                     {
                         'text' => "Fooware",
-                        'url' => "open-source/fooware/",
+                        'url'  => "open-source/fooware/",
                     },
                     {
-                        'text' => "Condor-Man",
+                        'text'  => "Condor-Man",
                         'title' => "Kwalitee",
-                        'url' => "open-source/condor-man/",
+                        'url'   => "open-source/condor-man/",
                     },
                 ],
             },
@@ -701,90 +630,82 @@ my @mixed_expand_nav_menu =
     },
 );
 
-my @special_chars_nav_menu =
-(
+my @special_chars_nav_menu = (
     'current_host' => "default",
     'hosts' => { 'default' => { 'base_url' => "http://www.hello.com/" }, },
-    'tree_contents' =>
-    {
-        'host' => "default",
-        'text' => "Top 1",
+    'tree_contents' => {
+        'host'  => "default",
+        'text'  => "Top 1",
         'title' => "T1 Title",
-        'subs' =>
-        [
+        'subs'  => [
             {
                 'text' => "Home",
-                'url' => "",
+                'url'  => "",
             },
             {
                 'text' => "Special Chars",
-                'url' => "<hello>&\"you\"/",
+                'url'  => "<hello>&\"you\"/",
             },
             {
                 'text' => "Non-special",
-                'url' => "non-special/",
+                'url'  => "non-special/",
             },
         ],
     },
 );
 
-my @with_skips_nav_menu =
-(
+my @with_skips_nav_menu = (
     'current_host' => "default",
     'hosts' => { 'default' => { 'base_url' => "http://www.hello.com/" }, },
-    'tree_contents' =>
-    {
-        'host' => "default",
-        'text' => "Top 1",
+    'tree_contents' => {
+        'host'  => "default",
+        'text'  => "Top 1",
         'title' => "T1 Title",
-        'subs' =>
-        [
+        'subs'  => [
             {
                 'text' => "Home",
-                'url' => "",
+                'url'  => "",
             },
             {
-                'text' => "About Me",
-                'title' => "About Myself",
-                'url' => "me/",
+                'text'   => "About Me",
+                'title'  => "About Myself",
+                'url'    => "me/",
                 'expand' => { 're' => "^me/", },
-                'subs' =>
-                [
+                'subs'   => [
                     {
                         'text' => "Group Hug",
-                        'url' => "me/group-hug/",
+                        'url'  => "me/group-hug/",
                     },
                     {
                         'text' => "Cool I/O",
-                        'url' => "me/cool-io/",
+                        'url'  => "me/cool-io/",
                     },
                     {
                         'text' => "Resume",
-                        'url' => "resume.html",
+                        'url'  => "resume.html",
                     },
                 ],
             },
             {
                 'text' => "Halifax",
-                'url' => "halifax/",
+                'url'  => "halifax/",
                 'skip' => 1,
             },
             {
-                'text' => "Software",
-                'title' => "Open Source Software I Wrote",
-                'url' => "open-source/",
+                'text'   => "Software",
+                'title'  => "Open Source Software I Wrote",
+                'url'    => "open-source/",
                 'expand' => { 're' => "^open-source/", },
-                'subs' =>
-                [
+                'subs'   => [
                     {
                         'text' => "Fooware",
-                        'url' => "open-source/fooware/",
+                        'url'  => "open-source/fooware/",
                         'skip' => 1,
                     },
                     {
-                        'text' => "Condor-Man",
+                        'text'  => "Condor-Man",
                         'title' => "Kwalitee",
-                        'url' => "open-source/condor-man/",
+                        'url'   => "open-source/condor-man/",
                     },
                 ],
             },
@@ -792,83 +713,74 @@ my @with_skips_nav_menu =
     },
 );
 
-my @root_path_not_slash =
-(
+my @root_path_not_slash = (
     'current_host' => "default",
     'hosts' => { 'default' => { 'base_url' => "http://www.hello.com/" }, },
-    'tree_contents' =>
-    {
-        'host' => "default",
-        'text' => "Top 1",
+    'tree_contents' => {
+        'host'  => "default",
+        'text'  => "Top 1",
         'title' => "T1 Title",
-        'subs' =>
-        [
+        'subs'  => [
             {
                 'text' => "Home",
-                'url' => "puzzles/",
-                subs =>
-                [
+                'url'  => "puzzles/",
+                subs   => [
                     {
-                        url => "puzzles/foo/",
+                        url    => "puzzles/foo/",
                         'text' => "The Foo Puzzle",
                     },
                     {
-                        url => "puzzles/bar/",
+                        url  => "puzzles/bar/",
                         text => "The Bar Puzzle",
                     },
                 ],
             },
             {
-                'text' => "About Me",
+                'text'  => "About Me",
                 'title' => "About Myself",
-                'url' => "puzzles/me/",
+                'url'   => "puzzles/me/",
             },
         ],
     },
 );
 
-my @non_capturing_expand =
-(
+my @non_capturing_expand = (
     'current_host' => "default",
     'hosts' => { 'default' => { 'base_url' => "http://www.hello.com/" }, },
-    'tree_contents' =>
-    {
-        'host' => "default",
-        'text' => "Top 1",
+    'tree_contents' => {
+        'host'  => "default",
+        'text'  => "Top 1",
         'title' => "T1 Title",
-        'subs' =>
-        [
+        'subs'  => [
             {
                 'text' => "Home",
-                'url' => "",
+                'url'  => "",
             },
             {
-                'text' => "Humour",
-                'url' => "humour/",
+                'text'   => "Humour",
+                'url'    => "humour/",
                 'expand' => { 're' => "^humour/", },
-                'title' => "My Humorous Creations",
-                'subs' =>
-                [
+                'title'  => "My Humorous Creations",
+                'subs'   => [
                     {
-                        'text' => "Stories",
-                        'url' => "humour/stories/",
-                        'title' => "Large-Scale Stories I Wrote",
-                        'expand' => { 're' => "^humour/", capt => 0,},
-                        'subs' =>
-                        [
+                        'text'   => "Stories",
+                        'url'    => "humour/stories/",
+                        'title'  => "Large-Scale Stories I Wrote",
+                        'expand' => { 're' => "^humour/", capt => 0, },
+                        'subs'   => [
                             {
                                 'text' => "The Enemy",
-                                'url' => "humour/TheEnemy/",
+                                'url'  => "humour/TheEnemy/",
                             },
                             {
                                 'text' => "TOW The Fountainhead",
-                                'url' => "humour/TOWTF/",
+                                'url'  => "humour/TOWTF/",
                             },
                         ],
                     },
                     {
-                        'text' => "By Others",
-                        'url' => "humour/by-others/",
+                        'text'   => "By Others",
+                        'url'    => "humour/by-others/",
                         'expand' => { 're' => "^humour/by-others/", },
                     },
                 ],
@@ -877,54 +789,47 @@ my @non_capturing_expand =
     },
 );
 
-
-my @non_capturing_expand_reversed =
-(
+my @non_capturing_expand_reversed = (
     'current_host' => "default",
     'hosts' => { 'default' => { 'base_url' => "http://www.hello.com/" }, },
-    'tree_contents' =>
-    {
-        'host' => "default",
-        'text' => "Top 1",
+    'tree_contents' => {
+        'host'  => "default",
+        'text'  => "Top 1",
         'title' => "T1 Title",
-        'subs' =>
-        [
+        'subs'  => [
             {
                 'text' => "Home",
-                'url' => "",
+                'url'  => "",
             },
             {
-                'text' => "Humour",
-                'url' => "humour/",
+                'text'   => "Humour",
+                'url'    => "humour/",
                 'expand' => { 're' => "^humour/", },
-                'title' => "My Humorous Creations",
-                'subs' =>
-                [
+                'title'  => "My Humorous Creations",
+                'subs'   => [
                     {
-                        'text' => "Stories",
-                        'url' => "humour/stories/",
+                        'text'  => "Stories",
+                        'url'   => "humour/stories/",
                         'title' => "Large-Scale Stories I Wrote",
-                        'subs' =>
-                        [
+                        'subs'  => [
                             {
                                 'text' => "The Enemy",
-                                'url' => "humour/TheEnemy/",
+                                'url'  => "humour/TheEnemy/",
                             },
                             {
                                 'text' => "TOW The Fountainhead",
-                                'url' => "humour/TOWTF/",
+                                'url'  => "humour/TOWTF/",
                             },
                         ],
                     },
                     {
-                        'text' => "By Others",
-                        'url' => "humour/by-others/",
+                        'text'   => "By Others",
+                        'url'    => "humour/by-others/",
                         'expand' => { 're' => "^humour/", capt => 0, },
-                        subs =>
-                        [
+                        subs     => [
                             {
                                 text => "Foo",
-                                url => "humour/by-others/foo.html",
+                                url  => "humour/by-others/foo.html",
                             },
                         ],
                     },
@@ -934,55 +839,48 @@ my @non_capturing_expand_reversed =
     },
 );
 
-
-my @non_capturing_expand_nested =
-(
+my @non_capturing_expand_nested = (
     'current_host' => "default",
     'hosts' => { 'default' => { 'base_url' => "http://www.hello.com/" }, },
-    'tree_contents' =>
-    {
-        'host' => "default",
-        'text' => "Top 1",
+    'tree_contents' => {
+        'host'  => "default",
+        'text'  => "Top 1",
         'title' => "T1 Title",
-        'subs' =>
-        [
+        'subs'  => [
             {
                 'text' => "Home",
-                'url' => "",
+                'url'  => "",
             },
             {
-                'text' => "Humour",
-                'url' => "humour/",
+                'text'   => "Humour",
+                'url'    => "humour/",
                 'expand' => { 're' => "^humour/", },
-                'title' => "My Humorous Creations",
-                'subs' =>
-                [
+                'title'  => "My Humorous Creations",
+                'subs'   => [
                     {
-                        'text' => "Stories",
-                        'url' => "humour/stories/",
+                        'text'   => "Stories",
+                        'url'    => "humour/stories/",
                         'expand' => { 're' => "^humour/", 'capt' => 0 },
-                        'title' => "Large-Scale Stories I Wrote",
-                        'subs' =>
-                        [
+                        'title'  => "Large-Scale Stories I Wrote",
+                        'subs'   => [
                             {
                                 'text' => "The Enemy",
-                                'url' => "humour/TheEnemy/",
+                                'url'  => "humour/TheEnemy/",
                             },
                             {
                                 'text' => "TOW The Fountainhead",
-                                'url' => "humour/TOWTF/",
+                                'url'  => "humour/TOWTF/",
                             },
                         ],
                     },
                     {
-                        'text' => "By Others",
-                        'url' => "humour/by-others/",
+                        'text'   => "By Others",
+                        'url'    => "humour/by-others/",
                         'expand' => { 're' => "^humour/", capt => 0, },
-                        subs =>
-                        [
+                        subs     => [
                             {
                                 text => "Foo",
-                                url => "humour/by-others/foo.html",
+                                url  => "humour/by-others/foo.html",
                             },
                         ],
                     },
@@ -992,55 +890,50 @@ my @non_capturing_expand_nested =
     },
 );
 
-my @header_role_with_empty_cat_nav_menu =
-(
+my @header_role_with_empty_cat_nav_menu = (
     'current_host' => "default",
     'hosts' => { 'default' => { 'base_url' => "http://www.hello.com/" }, },
-    'tree_contents' =>
-    {
-        'host' => "default",
-        'text' => "Top 1",
+    'tree_contents' => {
+        'host'  => "default",
+        'text'  => "Top 1",
         'title' => "T1 Title",
-        'subs' =>
-        [
+        'subs'  => [
             {
                 'text' => "Home",
-                'url' => "",
+                'url'  => "",
             },
             {
-                'text' => "Empty Category",
-                'url' => "empty-cat/",
-                'role' => "header",
+                'text'        => "Empty Category",
+                'url'         => "empty-cat/",
+                'role'        => "header",
                 'show_always' => 1,
             },
             {
-                'text' => "About Me",
-                'title' => "About Myself",
-                'url' => "me/",
-                'role' => "header",
+                'text'        => "About Me",
+                'title'       => "About Myself",
+                'url'         => "me/",
+                'role'        => "header",
                 'show_always' => 1,
-                'subs' =>
-                [
+                'subs'        => [
                     {
                         'text' => "Sub Me",
-                        'url' => "me/sub-me1/",
+                        'url'  => "me/sub-me1/",
                     },
                     {
                         'text' => "Sub Me 2",
-                        'url' => "me/sub-me-two/",
+                        'url'  => "me/sub-me-two/",
                     },
                 ],
             },
             {
-                'text' => "Hello",
-                'url' => "aloha/",
+                'text'        => "Hello",
+                'url'         => "aloha/",
                 'show_always' => 1,
-                'role' => "notexist",
-                'subs' =>
-                [
+                'role'        => "notexist",
+                'subs'        => [
                     {
                         'text' => "OBKB",
-                        'url' => "aloha/obkb/",
+                        'url'  => "aloha/obkb/",
                     },
                 ],
             },
@@ -1050,30 +943,29 @@ my @header_role_with_empty_cat_nav_menu =
 
 sub get_test_data
 {
-    return
-        {
-            'two_sites' => \@two_sites_data,
-            'minimal' => \@minimal_nav_menu,
-            'expand_re' => \@expand_re_nav_menu,
-            'show_always' => \@show_always_nav_menu,
-            'items_in_sub' => \@items_in_sub_nav_menu,
-            'separator' => \@separator_nav_menu,
-            'hidden_item' => \@hidden_item_nav_menu,
-            'header_role' => \@header_role_nav_menu,
-            'selective_expand' => \@selective_expand_nav_menu,
-            'url_type_menu' => \@url_type_menu,
-            'rec_url_type_menu' => \@rec_url_type_menu,
-            'url_is_abs_menu' => \@url_is_abs_nav_menu,
-            'mixed_expand_menu' => \@mixed_expand_nav_menu,
-            'special_chars_menu' => \@special_chars_nav_menu,
-            'with_skips' => \@with_skips_nav_menu,
-            'with_ids_nav_menu' => \@with_ids_nav_menu,
-            'root_path_not_slash' => \@root_path_not_slash,
-            'non_capturing_expand' => \@non_capturing_expand,
-            'non_capturing_expand_reversed' => \@non_capturing_expand_reversed,
-            'non_capturing_expand_nested' => \@non_capturing_expand_nested,
-            'header_role_with_empty_cat' => \@header_role_with_empty_cat_nav_menu
-        };
+    return {
+        'two_sites'                     => \@two_sites_data,
+        'minimal'                       => \@minimal_nav_menu,
+        'expand_re'                     => \@expand_re_nav_menu,
+        'show_always'                   => \@show_always_nav_menu,
+        'items_in_sub'                  => \@items_in_sub_nav_menu,
+        'separator'                     => \@separator_nav_menu,
+        'hidden_item'                   => \@hidden_item_nav_menu,
+        'header_role'                   => \@header_role_nav_menu,
+        'selective_expand'              => \@selective_expand_nav_menu,
+        'url_type_menu'                 => \@url_type_menu,
+        'rec_url_type_menu'             => \@rec_url_type_menu,
+        'url_is_abs_menu'               => \@url_is_abs_nav_menu,
+        'mixed_expand_menu'             => \@mixed_expand_nav_menu,
+        'special_chars_menu'            => \@special_chars_nav_menu,
+        'with_skips'                    => \@with_skips_nav_menu,
+        'with_ids_nav_menu'             => \@with_ids_nav_menu,
+        'root_path_not_slash'           => \@root_path_not_slash,
+        'non_capturing_expand'          => \@non_capturing_expand,
+        'non_capturing_expand_reversed' => \@non_capturing_expand_reversed,
+        'non_capturing_expand_nested'   => \@non_capturing_expand_nested,
+        'header_role_with_empty_cat'    => \@header_role_with_empty_cat_nav_menu
+    };
 }
 
 1;
diff --git a/t/lib/HTML/Widgets/NavMenu/Test/Util.pm b/t/lib/HTML/Widgets/NavMenu/Test/Util.pm
index 4ac5725..a21f7b0 100644
--- a/t/lib/HTML/Widgets/NavMenu/Test/Util.pm
+++ b/t/lib/HTML/Widgets/NavMenu/Test/Util.pm
@@ -5,7 +5,7 @@ use warnings;
 
 use Exporter;
 use vars qw(@ISA);
-@ISA=qw(Exporter);
+@ISA = qw(Exporter);
 
 use vars qw(@EXPORT);
 
@@ -13,21 +13,25 @@ use vars qw(@EXPORT);
 
 sub compare_string_arrays
 {
-    my $arr1 = shift;
-    my $arr2 = shift;
-    my $len_cmp = (@$arr1 <=> @$arr2);
+    my $arr1    = shift;
+    my $arr2    = shift;
+    my $len_cmp = ( @$arr1 <=> @$arr2 );
     if ($len_cmp)
     {
-        print STDERR "Len is not the same: Expected " . scalar(@$arr1) . " vs. Result " . scalar(@$arr2) . "\n";
+        print STDERR "Len is not the same: Expected "
+            . scalar(@$arr1)
+            . " vs. Result "
+            . scalar(@$arr2) . "\n";
         return $len_cmp;
     }
     my $i;
-    for($i=0;$i<@$arr1;$i++)
+    for ( $i = 0 ; $i < @$arr1 ; $i++ )
     {
         my $item_cmp = $arr1->[$i] cmp $arr2->[$i];
         if ($item_cmp)
         {
-            print STDERR "Item[$i] is not the same:\nExpected: $arr1->[$i]\nResult: $arr2->[$i]\n";
+            print STDERR
+"Item[$i] is not the same:\nExpected: $arr1->[$i]\nResult: $arr2->[$i]\n";
             return $item_cmp;
         }
     }
diff --git a/t/pod-coverage.t b/t/pod-coverage.t
deleted file mode 100644
index 703f91d..0000000
--- a/t/pod-coverage.t
+++ /dev/null
@@ -1,6 +0,0 @@
-#!perl -T
-
-use Test::More;
-eval "use Test::Pod::Coverage 1.04";
-plan skip_all => "Test::Pod::Coverage 1.04 required for testing POD coverage" if $@;
-all_pod_coverage_ok();
diff --git a/t/pod.t b/t/pod.t
deleted file mode 100644
index 976d7cd..0000000
--- a/t/pod.t
+++ /dev/null
@@ -1,6 +0,0 @@
-#!perl -T
-
-use Test::More;
-eval "use Test::Pod 1.14";
-plan skip_all => "Test::Pod 1.14 required for testing POD" if $@;
-all_pod_files_ok();
diff --git a/weaver.ini b/weaver.ini
new file mode 100644
index 0000000..19caafa
--- /dev/null
+++ b/weaver.ini
@@ -0,0 +1,37 @@
+[@CorePrep]
+
+[Generic / NAME]
+
+[Version]
+
+[Region  / prelude]
+
+
+[Generic / SYNOPSIS]
+[Generic / DESCRIPTION]
+[Generic / OVERVIEW]
+
+[Collect / ATTRIBUTES]
+command = attr
+
+[Collect / METHODS]
+command = method
+
+[Leftovers]
+
+[Region  / postlude]
+
+[Authors]
+[Legal]
+
+; [Generic / DESCRIPTION]
+; required = 1
+
+; [Generic / BUGS]
+
+; [Generic / Section::Bugs]
+; [Generic / Section::License]
+;
+[Bugs]
+[Support]
+all_modules = 1
diff --git a/xt/author/eol.t b/xt/author/eol.t
new file mode 100644
index 0000000..36d67f6
--- /dev/null
+++ b/xt/author/eol.t
@@ -0,0 +1,56 @@
+use strict;
+use warnings;
+
+# this test was generated with Dist::Zilla::Plugin::Test::EOL 0.19
+
+use Test::More 0.88;
+use Test::EOL;
+
+my @files = (
+    'lib/HTML/Widgets/NavMenu.pm',
+    'lib/HTML/Widgets/NavMenu/EscapeHtml.pm',
+    'lib/HTML/Widgets/NavMenu/ExpandVal.pm',
+    'lib/HTML/Widgets/NavMenu/HeaderRole.pm',
+    'lib/HTML/Widgets/NavMenu/Iterator/Base.pm',
+    'lib/HTML/Widgets/NavMenu/Iterator/Html.pm',
+    'lib/HTML/Widgets/NavMenu/Iterator/JQTreeView.pm',
+    'lib/HTML/Widgets/NavMenu/Iterator/NavMenu.pm',
+    'lib/HTML/Widgets/NavMenu/Iterator/NavMenu/HeaderRole.pm',
+    'lib/HTML/Widgets/NavMenu/Iterator/SiteMap.pm',
+    'lib/HTML/Widgets/NavMenu/JQueryTreeView.pm',
+    'lib/HTML/Widgets/NavMenu/Object.pm',
+    'lib/HTML/Widgets/NavMenu/Predicate.pm',
+    'lib/HTML/Widgets/NavMenu/TagGen.pm',
+    'lib/HTML/Widgets/NavMenu/Tree/Iterator.pm',
+    'lib/HTML/Widgets/NavMenu/Tree/Iterator/Item.pm',
+    'lib/HTML/Widgets/NavMenu/Tree/Iterator/Stack.pm',
+    'lib/HTML/Widgets/NavMenu/Tree/Node.pm',
+    'lib/HTML/Widgets/NavMenu/Url.pm',
+    't/00-compile.t',
+    't/00use.t',
+    't/01unit.t',
+    't/02site-map.t',
+    't/03nav-links.t',
+    't/04nav-menu.t',
+    't/05stack.t',
+    't/06tree-iter-item.t',
+    't/07tree-iter.t',
+    't/08tree-node.t',
+    't/09leading-path.t',
+    't/10ul-classes.t',
+    't/11predicate.t',
+    't/12x-host-rel-url.t',
+    't/13escape-html.t',
+    't/14tag-gen.t',
+    't/15aspetersen-inherit.t',
+    't/16redirect.t',
+    't/17nav-coords-unit.t',
+    't/18url.t',
+    't/cpan-changes.t',
+    't/lib/HTML/Widgets/NavMenu/Test/Data.pm',
+    't/lib/HTML/Widgets/NavMenu/Test/Stdout.pm',
+    't/lib/HTML/Widgets/NavMenu/Test/Util.pm'
+);
+
+eol_unix_ok($_, { trailing_whitespace => 1 }) foreach @files;
+done_testing;
diff --git a/xt/author/no-tabs.t b/xt/author/no-tabs.t
new file mode 100644
index 0000000..ec57f81
--- /dev/null
+++ b/xt/author/no-tabs.t
@@ -0,0 +1,56 @@
+use strict;
+use warnings;
+
+# this test was generated with Dist::Zilla::Plugin::Test::NoTabs 0.15
+
+use Test::More 0.88;
+use Test::NoTabs;
+
+my @files = (
+    'lib/HTML/Widgets/NavMenu.pm',
+    'lib/HTML/Widgets/NavMenu/EscapeHtml.pm',
+    'lib/HTML/Widgets/NavMenu/ExpandVal.pm',
+    'lib/HTML/Widgets/NavMenu/HeaderRole.pm',
+    'lib/HTML/Widgets/NavMenu/Iterator/Base.pm',
+    'lib/HTML/Widgets/NavMenu/Iterator/Html.pm',
+    'lib/HTML/Widgets/NavMenu/Iterator/JQTreeView.pm',
+    'lib/HTML/Widgets/NavMenu/Iterator/NavMenu.pm',
+    'lib/HTML/Widgets/NavMenu/Iterator/NavMenu/HeaderRole.pm',
+    'lib/HTML/Widgets/NavMenu/Iterator/SiteMap.pm',
+    'lib/HTML/Widgets/NavMenu/JQueryTreeView.pm',
+    'lib/HTML/Widgets/NavMenu/Object.pm',
+    'lib/HTML/Widgets/NavMenu/Predicate.pm',
+    'lib/HTML/Widgets/NavMenu/TagGen.pm',
+    'lib/HTML/Widgets/NavMenu/Tree/Iterator.pm',
+    'lib/HTML/Widgets/NavMenu/Tree/Iterator/Item.pm',
+    'lib/HTML/Widgets/NavMenu/Tree/Iterator/Stack.pm',
+    'lib/HTML/Widgets/NavMenu/Tree/Node.pm',
+    'lib/HTML/Widgets/NavMenu/Url.pm',
+    't/00-compile.t',
+    't/00use.t',
+    't/01unit.t',
+    't/02site-map.t',
+    't/03nav-links.t',
+    't/04nav-menu.t',
+    't/05stack.t',
+    't/06tree-iter-item.t',
+    't/07tree-iter.t',
+    't/08tree-node.t',
+    't/09leading-path.t',
+    't/10ul-classes.t',
+    't/11predicate.t',
+    't/12x-host-rel-url.t',
+    't/13escape-html.t',
+    't/14tag-gen.t',
+    't/15aspetersen-inherit.t',
+    't/16redirect.t',
+    't/17nav-coords-unit.t',
+    't/18url.t',
+    't/cpan-changes.t',
+    't/lib/HTML/Widgets/NavMenu/Test/Data.pm',
+    't/lib/HTML/Widgets/NavMenu/Test/Stdout.pm',
+    't/lib/HTML/Widgets/NavMenu/Test/Util.pm'
+);
+
+notabs_ok($_) foreach @files;
+done_testing;
diff --git a/xt/author/pod-coverage.t b/xt/author/pod-coverage.t
new file mode 100644
index 0000000..66b3b64
--- /dev/null
+++ b/xt/author/pod-coverage.t
@@ -0,0 +1,7 @@
+#!perl
+# This file was automatically generated by Dist::Zilla::Plugin::PodCoverageTests.
+
+use Test::Pod::Coverage 1.08;
+use Pod::Coverage::TrustPod;
+
+all_pod_coverage_ok({ coverage_class => 'Pod::Coverage::TrustPod' });
diff --git a/xt/author/pod-syntax.t b/xt/author/pod-syntax.t
new file mode 100644
index 0000000..e563e5d
--- /dev/null
+++ b/xt/author/pod-syntax.t
@@ -0,0 +1,7 @@
+#!perl
+# This file was automatically generated by Dist::Zilla::Plugin::PodSyntaxTests.
+use strict; use warnings;
+use Test::More;
+use Test::Pod 1.41;
+
+all_pod_files_ok();
diff --git a/xt/author/tidyall.t b/xt/author/tidyall.t
new file mode 100644
index 0000000..4d226bc
--- /dev/null
+++ b/xt/author/tidyall.t
@@ -0,0 +1,11 @@
+# This file was automatically generated by Dist::Zilla::Plugin::Test::TidyAll v$VERSION
+
+use Test::More 0.88;
+use Test::Code::TidyAll 0.24;
+
+tidyall_ok(
+     verbose => ( exists $ENV{TEST_TIDYALL_VERBOSE} ? $ENV{TEST_TIDYALL_VERBOSE} : 0 ),
+     jobs => ( exists $ENV{TEST_TIDYALL_JOBS} ? $ENV{TEST_TIDYALL_JOBS} : 1 ),
+);
+
+done_testing;
diff --git a/xt/release/cpan-changes.t b/xt/release/cpan-changes.t
new file mode 100644
index 0000000..286005a
--- /dev/null
+++ b/xt/release/cpan-changes.t
@@ -0,0 +1,10 @@
+use strict;
+use warnings;
+
+# this test was generated with Dist::Zilla::Plugin::Test::CPAN::Changes 0.012
+
+use Test::More 0.96 tests => 1;
+use Test::CPAN::Changes;
+subtest 'changes_ok' => sub {
+    changes_file_ok('Changes');
+};
diff --git a/t/style-trailing-space.t b/xt/release/trailing-space.t
similarity index 79%
rename from t/style-trailing-space.t
rename to xt/release/trailing-space.t
index 131a278..e385619 100644
--- a/t/style-trailing-space.t
+++ b/xt/release/trailing-space.t
@@ -1,4 +1,4 @@
-#!/usr/bin/perl
+#!perl
 
 use strict;
 use warnings;
@@ -20,7 +20,7 @@ else
 my $finder = Test::TrailingSpace->new(
    {
        root => '.',
-       filename_regex => qr/(?:\.(?:t|pm|pl|xs|c|h|txt|pod|PL)|README|Changes|TODO|LICENSE)\z/,
+       filename_regex => qr#(?:\.(?:t|pm|pl|xs|c|h|txt|pod|PL)|README|Changes|TODO|LICENSE)\z#,
    },
 );