diff --git a/src/it/mskins-75/verify.groovy b/src/it/mskins-75/verify.groovy
index e6bfbcc..b84912f 100644
--- a/src/it/mskins-75/verify.groovy
+++ b/src/it/mskins-75/verify.groovy
@@ -21,10 +21,10 @@
 assert index.exists()
 assert 1 == index.getText().count( '''\
     <!-- Piwik -->
-    <script type="text/javascript">
+    <script>
     var pkBaseURL = (("https:" == document.location.protocol) ? "https://example.org/piwik/" : "http://example.org/piwik/");
-    document.write(unescape("%3Cscript src='" + pkBaseURL + "piwik.js' type='text/javascript'%3E%3C/script%3E"));
-    </script><script type="text/javascript">
+    document.write(unescape("%3Cscript src='" + pkBaseURL + "piwik.js'%3E%3C/script%3E"));
+    </script><script>
     try {
     var piwikTracker = Piwik.getTracker(pkBaseURL + "piwik.php", 1);
     piwikTracker.trackPageView();
diff --git a/src/it/mskins-76/verify.groovy b/src/it/mskins-76/verify.groovy
index dc9be1d..aced4c2 100644
--- a/src/it/mskins-76/verify.groovy
+++ b/src/it/mskins-76/verify.groovy
@@ -20,11 +20,10 @@
 File index = new File( basedir, "target/site/index.html" )
 assert index.exists()
 assert 1 == index.getText().count( '''\
-<script type="text/javascript">
+<script>
     /* <![CDATA[ */
         (function() {
             var s = document.createElement('script'), t = document.getElementsByTagName('script')[0];
-            s.type = 'text/javascript';
             s.async = true;
             s.src = 'https://api.flattr.com/js/0.6/load.js?mode=auto';
             t.parentNode.insertBefore(s, t);
diff --git a/src/it/mskins-76_topbar/verify.groovy b/src/it/mskins-76_topbar/verify.groovy
index ef2ce1c..f7ff95c 100644
--- a/src/it/mskins-76_topbar/verify.groovy
+++ b/src/it/mskins-76_topbar/verify.groovy
@@ -20,11 +20,10 @@
 File index = new File( basedir, "target/site/index.html" )
 assert index.exists()
 assert 1 == index.getText().count( '''\
-<script type="text/javascript">
+<script>
     /* <![CDATA[ */
         (function() {
             var s = document.createElement('script'), t = document.getElementsByTagName('script')[0];
-            s.type = 'text/javascript';
             s.async = true;
             s.src = 'https://api.flattr.com/js/0.6/load.js?mode=auto';
             t.parentNode.insertBefore(s, t);
diff --git a/src/main/resources/META-INF/maven/site-macros.vm b/src/main/resources/META-INF/maven/site-macros.vm
index ece7e91..cd72bc2 100644
--- a/src/main/resources/META-INF/maven/site-macros.vm
+++ b/src/main/resources/META-INF/maven/site-macros.vm
@@ -558,10 +558,10 @@
 #*  *##set ( $idsite =  $decoration.getCustomValue( 'fluidoSkin.piwik.idsite' ) )
 ##
     <!-- Piwik -->
-    <script type="text/javascript">
+    <script>
     var pkBaseURL = (("https:" == document.location.protocol) ? "https://$piwikUrl/" : "http://$piwikUrl/");
-    document.write(unescape("%3Cscript src='" + pkBaseURL + "piwik.js' type='text/javascript'%3E%3C/script%3E"));
-    </script><script type="text/javascript">
+    document.write(unescape("%3Cscript src='" + pkBaseURL + "piwik.js'%3E%3C/script%3E"));
+    </script><script>
     try {
     var piwikTracker = Piwik.getTracker(pkBaseURL + "piwik.php", $idsite);
     piwikTracker.trackPageView();
@@ -603,7 +603,7 @@
   <input value="$sitesearchValue" name="sitesearch" type="hidden"/>
   <input class="search-query" name="q" id="query" type="text" />
 </form>
-<script type="text/javascript">asyncJs( 'https://cse.google.com/brand?form=search-form' )</script>
+<script>asyncJs( 'https://cse.google.com/brand?form=search-form' )</script>
 #end
 ##
 #macro ( forkMeOnGitHub )
@@ -671,7 +671,6 @@
 #*  *##end
 ##
     <iframe src="https://www.facebook.com/plugins/like.php?href=$project.url&send=false&layout=$layout&show-faces=false&action=like&colorscheme=$colorscheme"
-        scrolling="no" frameborder="0"
         style="border:none; $frameWidth; margin-top: 10px;" #if( !$sideBarEnabled ) class="pull-right" #end></iframe>
 #**##end
 #end
@@ -693,7 +692,7 @@
 #*  *##end
 ##
     <a href="https://twitter.com/${user}" class="twitter-follow-button" data-show-count="${showFollowers}" data-align="${dataAlign}" data-size="${dataSize}" data-show-screen-name="${showUser}" data-lang="${locale}">Follow ${user}</a>
-    <script type="text/javascript">!function(d,s,id){var js,fjs=d.getElementsByTagName(s)[0];if(!d.getElementById(id)){js=d.createElement(s);js.id=id;js.src="//platform.twitter.com/widgets.js";fjs.parentNode.insertBefore(js,fjs);}}(document,"script","twitter-wjs");</script>
+    <script>!function(d,s,id){var js,fjs=d.getElementsByTagName(s)[0];if(!d.getElementById(id)){js=d.createElement(s);js.id=id;js.src="//platform.twitter.com/widgets.js";fjs.parentNode.insertBefore(js,fjs);}}(document,"script","twitter-wjs");</script>
 ##
 #*  *##if ( $sideBarEnabled )
     </div>
@@ -742,7 +741,7 @@
 #**##end
 ##
     <div id="ohloh" class="pull-right">
-      <script type="text/javascript" src="https://www.ohloh.net/p/${projectId}/widgets/project_${widget}"></script>
+      <script src="https://www.ohloh.net/p/${projectId}/widgets/project_${widget}"></script>
     </div>
   #end
 #end
@@ -750,11 +749,10 @@
 #macro ( flattrHead )
 #**##if ( $decoration.getCustomChild( 'fluidoSkin.flattr.thing' )
           && ( $decoration.getCustomChild( 'fluidoSkin.flattr.url' ) || $project.url ) )
-    <script type="text/javascript">
+    <script>
     /* <![CDATA[ */
         (function() {
             var s = document.createElement('script'), t = document.getElementsByTagName('script')[0];
-            s.type = 'text/javascript';
             s.async = true;
             s.src = 'https://api.flattr.com/js/0.6/load.js?mode=auto';
             t.parentNode.insertBefore(s, t);
@@ -795,4 +793,4 @@
 #macro( generatedBy )
 Apache Maven Doxia Site Renderer#if( $doxiaSiteRendererVersion ) $doxiaSiteRendererVersion#end##
 #end
-##
\ No newline at end of file
+##
diff --git a/src/main/resources/META-INF/maven/site.vm b/src/main/resources/META-INF/maven/site.vm
index f3df1b8..4a420a8 100644
--- a/src/main/resources/META-INF/maven/site.vm
+++ b/src/main/resources/META-INF/maven/site.vm
@@ -29,10 +29,10 @@
  | Rendered using Apache Maven Fluido Skin @project.version@
 -->
 ##
-<html xmlns="http://www.w3.org/1999/xhtml"#if ( $locale ) xml:lang="$locale.language" lang="$locale.language"#end>
+<html xmlns="http://www.w3.org/1999/xhtml"#if ( $locale ) lang="$locale.language"#end>
   <head>
     <meta charset="${outputEncoding}" />
-    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
+    <meta name="viewport" content="width=device-width, initial-scale=1" />
 ## put meta together
     <meta name="generator" content="#generatedBy()" />
 #foreach( $author in $authors )
@@ -68,7 +68,7 @@
 ##
 #**##if ( $topBarEnabled )
 #*  *##set ( $navBarStyle = $decoration.getCustomValue( 'fluidoSkin.navBarStyle', '' ) )
-    <div id="topbar" class="navbar navbar-fixed-top $navBarStyle">
+    <header id="topbar" class="navbar navbar-fixed-top $navBarStyle">
       <div class="navbar-inner">
 #*    *##if ( $sideBarEnabled )
         <div class="container-fluid">
@@ -85,7 +85,7 @@
                   <span class="icon-bar"></span>
                   <span class="icon-bar"></span>
               </a>
-          <div class="nav-collapse">
+          <nav class="nav-collapse">
 #*      *##else
             <div class="container">
               <a data-target=".nav-collapse" data-toggle="collapse" class="btn btn-navbar">
@@ -93,7 +93,7 @@
                   <span class="icon-bar"></span>
                   <span class="icon-bar"></span>
               </a>
-          <div class="nav-collapse">
+          <nav class="nav-collapse">
 #*      *##end
 #*    *##end
 #*    *##if ( $decoration.getCustomChild( 'fluidoSkin.topBarIcon' ) )
@@ -135,6 +135,11 @@
             </ul>
 #*      *##end
 ##
+#*      *##if (!$sideBarEnabled)
+          </nav>
+          <div class="nav-collapse">
+#*      *##end
+##
 #*      *##if ( $searchEnabled && !$sideBarEnabled )
 #*        *##googleSearch(true)
 #*      *##end
@@ -159,13 +164,13 @@
             </ul>
 #*      *##end
 ##
-#*      *##if ($topBarEnabled)
-            </div>
+#*      *##if (!$sideBarEnabled)
+          </div>
 #*      *##end
 ##
         </div>
       </div>
-    </div>
+    </header>
 #**##end
 ##
 #**##if ( $sideBarEnabled )
@@ -173,68 +178,72 @@
 #**##else
     <div class="container">
 #**##end
-      <div id="banner">
-        <div class="pull-left">##
-#*      *##if( $decoration.bannerLeft )
-#*        *##banner( $decoration.bannerLeft "bannerLeft" )
-#*      *##else
-#*      *### MSKINS-32
-          <h1>##
-#*        *##if( $project.name && $project.name != '' )
-#*          *#$project.name
+      <header>
+        <div id="banner">
+          <div class="pull-left">##
+#*        *##if( $decoration.bannerLeft )
+#*          *##banner( $decoration.bannerLeft "bannerLeft" )
 #*        *##else
-#*          *#$project.artifactId
+#*        *### MSKINS-32
+            <h1>##
+#*          *##if( $project.name && $project.name != '' )
+#*            *#$project.name
+#*          *##else
+#*            *#$project.artifactId
+#*          *##end
+#*        *#</h1>##
 #*        *##end
-#*      *#</h1>##
-#*      *##end
-#*    *#</div>
-        <div class="pull-right">#banner( $decoration.bannerRight "bannerRight" )</div>
-        <div class="clear"><hr/></div>
-      </div>
+#*      *#</div>
+          <div class="pull-right">#banner( $decoration.bannerRight "bannerRight" )</div>
+          <div class="clear"><hr/></div>
+        </div>
 
-      <div id="breadcrumbs">
-        <ul class="breadcrumb">
-#*      *##publishDate( "left" $decoration.publishDate $decoration.version )
-#*      *##publishDate( "right" $decoration.publishDate $decoration.version )
+        <div id="breadcrumbs">
+          <ul class="breadcrumb">
+#*        *##publishDate( "left" $decoration.publishDate $decoration.version )
+#*        *##publishDate( "right" $decoration.publishDate $decoration.version )
 ##
-#*      *### MSITE-44
-#*      *##if ( !$topBarEnabled
-              && $decoration.body.links
-              && $decoration.body.links.size() > 0 )
-#*        *##links( $decoration.body.links )
-#*      *##end
-        </ul>
-      </div>
+#*        *### MSITE-44
+#*        *##if ( !$topBarEnabled
+                && $decoration.body.links
+                && $decoration.body.links.size() > 0 )
+#*          *##links( $decoration.body.links )
+#*        *##end
+          </ul>
+        </div>
+      </header>
 ##
 #*    *##if ( $sideBarEnabled )
 #*      *##set ( $leftColumnClass = $decoration.getCustomValue( 'fluidoSkin.leftColumnClass', 'span2' ) )
 ##
       <div class="row-fluid">
-        <div id="leftColumn" class="$leftColumnClass">
-          <div class="well sidebar-nav">
+        <header id="leftColumn" class="$leftColumnClass">
+          <nav class="well sidebar-nav">
 #*      *##publishDate( "navigation-top" $decoration.publishDate $decoration.version )
 #*      *##mainMenu( $decoration.body.menus )
 #*      *##publishDate( "navigation-bottom" $decoration.publishDate $decoration.version )
+          </nav>
+          <div class="well sidebar-nav">
 #*      *##if ( $searchEnabled )
 #*        *##googleSearch( false )
 #*      *##end
-          <hr />
-          <div id="poweredBy">
+            <hr />
+            <div id="poweredBy">
 #*        *##facebookLike( $sideBarEnabled )
-            <div class="clear"></div>
+              <div class="clear"></div>
 #*        *##followTwitter( $sideBarEnabled )
-            <div class="clear"></div>
+              <div class="clear"></div>
 #*        *##flattrBody( $sideBarEnabled )
-            <div class="clear"></div>
+              <div class="clear"></div>
 #*        *##builtByLogo( $decoration.poweredBy )
             </div>
           </div>
-        </div>
+        </header>
 #*    *##end
 ##
 #*    *##set ( $bodyColumnClass = $decoration.getCustomValue( 'fluidoSkin.bodyColumnClass', 'span10' ) )
 ##
-        <div id="bodyColumn" #if ( $sideBarEnabled ) class="$bodyColumnClass" #end>
+        <main id="bodyColumn" #if ( $sideBarEnabled ) class="$bodyColumnClass" #end>
 #*      *##if ( $title && $title.endsWith( "Project License" ) )
 #*        *#$bodyContent
 #*      *##else
@@ -246,7 +255,7 @@
 ##
 #*        *#$bodyContent.replaceAll( "<div class=${esc.q}source${esc.q}>(\r?\n)?<pre>", "<div class=${esc.q}source${esc.q}><pre class=${esc.q}$sourceStyle${esc.q}>" ).replaceAll( "class=${esc.q}bodyTable${esc.q}", "class=${esc.q}table table-striped${esc.q}" )
 #*      *##end
-        </div>
+        </main>
 #*    *##if ( $sideBarEnabled )
       </div>
 #*    *##end
