diff --git a/maven-generated/community.html b/maven-generated/community.html
index 2b2fd8c..6bd9f22 100644
--- a/maven-generated/community.html
+++ b/maven-generated/community.html
@@ -25,7 +25,7 @@
     <meta name="author" content="dev@wink.apache.org">
 
     <META http-equiv="Content-Type" content="text/html;charset=UTF-8" />
-    <META name="Keywords" content="Apache Wink JSR-237 REST JavaEE6" />
+    <META name="Keywords" content="Apache Wink JSR-237 REST JavaEE6 JAX-RS" />
     <META name="Owner" content="dev@wink.apache.org" />
     <META name="Robots" content="index, follow" />
     <META name="Security" content="Public" />
@@ -215,6 +215,18 @@
     <!-- Placed at the end of the document so the pages load faster -->
     <script src="assets/jquery/jquery-1.9.1.min.js"></script>
     <script src="assets/bootstrap/js/bootstrap.min.js"></script>
+
+    <script type="text/javascript">
+      var _gaq = _gaq || [];
+      _gaq.push(['_setAccount', 'UA-1174707-10']);
+      _gaq.push(['_trackPageview']);
+
+      (function() {
+        var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
+        ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
+        var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
+      })();
+    </script>
     
   </body>
 </html>
diff --git a/maven-generated/documentation.html b/maven-generated/documentation.html
index 04a6ac6..6f3587c 100644
--- a/maven-generated/documentation.html
+++ b/maven-generated/documentation.html
@@ -25,7 +25,7 @@
     <meta name="author" content="dev@wink.apache.org">
 
     <META http-equiv="Content-Type" content="text/html;charset=UTF-8" />
-    <META name="Keywords" content="Apache Wink JSR-237 REST JavaEE6" />
+    <META name="Keywords" content="Apache Wink JSR-237 REST JavaEE6 JAX-RS" />
     <META name="Owner" content="dev@wink.apache.org" />
     <META name="Robots" content="index, follow" />
     <META name="Security" content="Public" />
@@ -195,6 +195,18 @@
     <!-- Placed at the end of the document so the pages load faster -->
     <script src="assets/jquery/jquery-1.9.1.min.js"></script>
     <script src="assets/bootstrap/js/bootstrap.min.js"></script>
+
+    <script type="text/javascript">
+      var _gaq = _gaq || [];
+      _gaq.push(['_setAccount', 'UA-1174707-10']);
+      _gaq.push(['_trackPageview']);
+
+      (function() {
+        var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
+        ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
+        var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
+      })();
+    </script>
     
   </body>
 </html>
diff --git a/maven-generated/downloads.html b/maven-generated/downloads.html
index ba7b890..ba226db 100644
--- a/maven-generated/downloads.html
+++ b/maven-generated/downloads.html
@@ -25,7 +25,7 @@
     <meta name="author" content="dev@wink.apache.org">
 
     <META http-equiv="Content-Type" content="text/html;charset=UTF-8" />
-    <META name="Keywords" content="Apache Wink JSR-237 REST JavaEE6" />
+    <META name="Keywords" content="Apache Wink JSR-237 REST JavaEE6 JAX-RS" />
     <META name="Owner" content="dev@wink.apache.org" />
     <META name="Robots" content="index, follow" />
     <META name="Security" content="Public" />
@@ -199,6 +199,18 @@
     <!-- Placed at the end of the document so the pages load faster -->
     <script src="assets/jquery/jquery-1.9.1.min.js"></script>
     <script src="assets/bootstrap/js/bootstrap.min.js"></script>
+
+    <script type="text/javascript">
+      var _gaq = _gaq || [];
+      _gaq.push(['_setAccount', 'UA-1174707-10']);
+      _gaq.push(['_trackPageview']);
+
+      (function() {
+        var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
+        ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
+        var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
+      })();
+    </script>
     
   </body>
 </html>
diff --git a/maven-generated/faq.html b/maven-generated/faq.html
index a8035c1..6f0f1c4 100644
--- a/maven-generated/faq.html
+++ b/maven-generated/faq.html
@@ -25,7 +25,7 @@
     <meta name="author" content="dev@wink.apache.org">
 
     <META http-equiv="Content-Type" content="text/html;charset=UTF-8" />
-    <META name="Keywords" content="Apache Wink JSR-237 REST JavaEE6" />
+    <META name="Keywords" content="Apache Wink JSR-237 REST JavaEE6 JAX-RS" />
     <META name="Owner" content="dev@wink.apache.org" />
     <META name="Robots" content="index, follow" />
     <META name="Security" content="Public" />
@@ -243,6 +243,18 @@
     <!-- Placed at the end of the document so the pages load faster -->
     <script src="assets/jquery/jquery-1.9.1.min.js"></script>
     <script src="assets/bootstrap/js/bootstrap.min.js"></script>
+
+    <script type="text/javascript">
+      var _gaq = _gaq || [];
+      _gaq.push(['_setAccount', 'UA-1174707-10']);
+      _gaq.push(['_trackPageview']);
+
+      (function() {
+        var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
+        ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
+        var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
+      })();
+    </script>
     
   </body>
 </html>
diff --git a/maven-generated/index.html b/maven-generated/index.html
index bce3150..8b2ed65 100644
--- a/maven-generated/index.html
+++ b/maven-generated/index.html
@@ -25,7 +25,7 @@
     <meta name="author" content="dev@wink.apache.org">
 
     <META http-equiv="Content-Type" content="text/html;charset=UTF-8" />
-    <META name="Keywords" content="Apache Wink JSR-237 REST JavaEE6" />
+    <META name="Keywords" content="Apache Wink JSR-237 REST JavaEE6 JAX-RS" />
     <META name="Owner" content="dev@wink.apache.org" />
     <META name="Robots" content="index, follow" />
     <META name="Security" content="Public" />
@@ -138,6 +138,18 @@
     <!-- Placed at the end of the document so the pages load faster -->
     <script src="assets/jquery/jquery-1.9.1.min.js"></script>
     <script src="assets/bootstrap/js/bootstrap.min.js"></script>
+
+    <script type="text/javascript">
+      var _gaq = _gaq || [];
+      _gaq.push(['_setAccount', 'UA-1174707-10']);
+      _gaq.push(['_trackPageview']);
+
+      (function() {
+        var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
+        ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
+        var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
+      })();
+    </script>
     
   </body>
 </html>
diff --git a/maven-generated/news.html b/maven-generated/news.html
index 5088f08..041b57b 100644
--- a/maven-generated/news.html
+++ b/maven-generated/news.html
@@ -25,7 +25,7 @@
     <meta name="author" content="dev@wink.apache.org">
 
     <META http-equiv="Content-Type" content="text/html;charset=UTF-8" />
-    <META name="Keywords" content="Apache Wink JSR-237 REST JavaEE6" />
+    <META name="Keywords" content="Apache Wink JSR-237 REST JavaEE6 JAX-RS" />
     <META name="Owner" content="dev@wink.apache.org" />
     <META name="Robots" content="index, follow" />
     <META name="Security" content="Public" />
@@ -220,6 +220,18 @@
     <!-- Placed at the end of the document so the pages load faster -->
     <script src="assets/jquery/jquery-1.9.1.min.js"></script>
     <script src="assets/bootstrap/js/bootstrap.min.js"></script>
+
+    <script type="text/javascript">
+      var _gaq = _gaq || [];
+      _gaq.push(['_setAccount', 'UA-1174707-10']);
+      _gaq.push(['_trackPageview']);
+
+      (function() {
+        var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
+        ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
+        var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
+      })();
+    </script>
     
   </body>
 </html>
diff --git a/maven-generated/privacy.html b/maven-generated/privacy.html
index e462e7a..7f409ea 100644
--- a/maven-generated/privacy.html
+++ b/maven-generated/privacy.html
@@ -25,7 +25,7 @@
     <meta name="author" content="dev@wink.apache.org">
 
     <META http-equiv="Content-Type" content="text/html;charset=UTF-8" />
-    <META name="Keywords" content="Apache Wink JSR-237 REST JavaEE6" />
+    <META name="Keywords" content="Apache Wink JSR-237 REST JavaEE6 JAX-RS" />
     <META name="Owner" content="dev@wink.apache.org" />
     <META name="Robots" content="index, follow" />
     <META name="Security" content="Public" />
@@ -136,6 +136,18 @@
     <!-- Placed at the end of the document so the pages load faster -->
     <script src="assets/jquery/jquery-1.9.1.min.js"></script>
     <script src="assets/bootstrap/js/bootstrap.min.js"></script>
+
+    <script type="text/javascript">
+      var _gaq = _gaq || [];
+      _gaq.push(['_setAccount', 'UA-1174707-10']);
+      _gaq.push(['_trackPageview']);
+
+      (function() {
+        var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
+        ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
+        var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
+      })();
+    </script>
     
   </body>
 </html>
diff --git a/maven-generated/source.html b/maven-generated/source.html
index 1be5997..7eee753 100644
--- a/maven-generated/source.html
+++ b/maven-generated/source.html
@@ -25,7 +25,7 @@
     <meta name="author" content="dev@wink.apache.org">
 
     <META http-equiv="Content-Type" content="text/html;charset=UTF-8" />
-    <META name="Keywords" content="Apache Wink JSR-237 REST JavaEE6" />
+    <META name="Keywords" content="Apache Wink JSR-237 REST JavaEE6 JAX-RS" />
     <META name="Owner" content="dev@wink.apache.org" />
     <META name="Robots" content="index, follow" />
     <META name="Security" content="Public" />
@@ -191,6 +191,18 @@
     <!-- Placed at the end of the document so the pages load faster -->
     <script src="assets/jquery/jquery-1.9.1.min.js"></script>
     <script src="assets/bootstrap/js/bootstrap.min.js"></script>
+
+    <script type="text/javascript">
+      var _gaq = _gaq || [];
+      _gaq.push(['_setAccount', 'UA-1174707-10']);
+      _gaq.push(['_trackPageview']);
+
+      (function() {
+        var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
+        ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
+        var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
+      })();
+    </script>
     
   </body>
 </html>
