diff --git a/public/css/wn-web.css b/public/css/wn-web.css
index 8814437..78cb222 100644
--- a/public/css/wn-web.css
+++ b/public/css/wn-web.css
@@ -1,9 +1,9 @@
 #body_div {
 
-	background: url("files/indian-textile-5.gif") repeat;
+	background: url("../files/indian-textile-5.gif") repeat;
 	
 
-	font-family: 'Lato', Verdana, Sans !important;
+	font-family: 'Arial', Verdana, Sans !important;
 
 
 	font-size: 14px !important;
@@ -17,10 +17,8 @@
 
 
 
-
-
 h1, h2, h3, h4, h5 {
-	font-family: 'Lato', Arial, 'Helvetica Neue' !important;
+	font-family: 'Arial', Arial, 'Helvetica Neue' !important;
 }	
 
 
@@ -93,7 +91,7 @@
   clear: both;
   margin: -50px;
   margin-top: 50px;
-  background-color: #DEE1D0; //#E7DFCA;
+  background-color: #FFFAED;
   padding: 50px;
 }
 
@@ -119,19 +117,12 @@
   padding: 4px;
 }
 
-.avatar {
-  height: 75px;
-  width: 75px;
-  border-radius: 100px 100px 100px 100px;
-  overflow: hidden;
-}
-
 .link-big {
   font-size: 140%;
 }
 
 .sticky {
-  background-color: #FFFBC4;
+  background-color: #F0EDDD;
   padding: 15px;
   margin-left: 15px;
   font-size: 12px;
diff --git a/public/js/wn-web.js b/public/js/wn-web.js
index cd6552a..e45acf2 100644
--- a/public/js/wn-web.js
+++ b/public/js/wn-web.js
@@ -1,4 +1,4 @@
-window.home_page = "index";
+window.home_page = "home";
 // footer signup widget
 // automatically adds it to the .layout-main div of the page
 // adds events and also random goodies.
@@ -8,18 +8,30 @@
   // goodies
   var goodies = [
      "ERPNext also contains a module to build your website. \
-The way it works is, when you log out, the app becomes your website. \
-This website is generated from ERPNext.",
+    The way it works is, when you log out, the app becomes your website. \
+    This website is generated from ERPNext.",
 
-     "You can add custom fields to your transactions in ERPNext to capture specific information about your business.",
+     "You can add custom fields to your transactions in ERPNext to \
+     capture specific information about your business.",
 
-     "All forms in ERPNext can be customized, if you feel there are features you do not want to use, you can hide them.",
+     "All forms in ERPNext can be customized, if you feel there are \
+     features you do not want to use, you can hide them.",
 
-     "You can email transactions like Quotations and Invoices directly from the system. You can also set this process to become automatic",
+     "You can email transactions like Quotations and Invoices directly \
+     from the system. You can also set this process to become automatic",
 
-     "You can create your own Roles and assign user to those roles. You can also set detailed permissions for each role in transactions.",
+     "You can create your own Roles and assign user to those roles. \
+     You can also set detailed permissions for each role in transactions.",
 
-     "ERPNext allows you to assign any transaction like an Invoice or Customer Issue to a user. You can also add comments on any transaction."
+     "ERPNext allows you to assign any transaction like an Invoice \
+     or Customer Issue to a user. You can also add comments on any \
+     transaction.",
+     
+     "Stay on top with a daily, weekly or montly email summarizing all your business\
+     activites and accounting data like Income, Receivables, Paybles etc.",
+     
+     "Integrate incoming Support queries to your email into ERPNext. \
+     Keep track of open tickets and allocate tickets to your users."
 
   ];
 
@@ -28,54 +40,82 @@
 
   $('#page-' + page_name + ' .layout-main').append('<div class="page-footer">\
 <h2 style="padding: 0px">Try before you buy. \
-Request a 30-day Free Trial.</h2><br>\
-\
-<input name="company_name" type="text" placeholder="Company Name"> \
-<input name="sender_name" type="text" placeholder="Your Name"> \
-<input name="email" type="text" placeholder="Email"> \
-<input name="password" type="password" placeholder="Password"> \
-<button class="btn btn-success btn-small btn-request">Request</button>\
-\
-<p>Note: Free trials usually take one business day to setup. \
-Please fill out your genuine information because we verify \
-your name and company before setting up a demo to \
-ensure that spammers don\'t crash our servers. \
-If you would like to see something right now, \
-<a href="#!demo">jump to the demo.</a></p>\
-\
-<p style="font-size: 90%; margin-top: 10px;">\
+Request a 30-day Free Trial.</h2>\
+<ul>\
+<li><a href="erpnext-pricing.html">Starts at an un-believable $299 per year.</a>\
+<li><a href="http://demo.erpnext.com" target="_blank">\
+Show me a full demo (new page).</a>\
+<li><a href="sign-up.html">Take me to the sign-up page.</a>\
+</ul>\
+<p>\
 <i class="icon-hand-right"></i> <b>ERPNext Goodies:</b> <span class="goodie">'
 
 + goodies[parseInt(Math.random() * goodies.length)]+
 
 '</goodie></p>\
-</span>');
+<p>ERPNext is <a href="open-source.html">Open Source</a> under the GNU/General Public License.</p>\
+<p><g:plusone size="medium" annotation="inline"></g:plusone></p>\
+\
+<table><tr><td style="width: 115px">\
+    <a href="https://twitter.com/erpnext" class="twitter-follow-button" \
+    data-show-count="false">Follow @erpnext</a></td>\
+    <td style="width: 150px; font-size: 80%; vertical-align: middle;">\
+    Get status updates on Twitter.</td></tr>\
+</table>');
 
-  // bind the events
+  // render plusone
+  window.gapi && window.gapi.plusone.go();
+  
+  // render twitter button
+  twttr.widgets.load();
+}
 
-  $('#page-'+page_name+' .btn-request').click(function() {
+//////////////// Hide Login for frappe!
 
-    var page = $('#page-' + wn.container.page.page_name);
-    var args = {
-        sender_name: page.find('[name="sender_name"]').val(),
-        company_name: page.find('[name="company_name"]').val(),
-        email: page.find('[name="email"]').val(),
-        password: page.find('[name="password"]').val()
-      }
+$(document).ready(function() {
+  setTimeout("$('#login-topbar-item').toggle(false);", 1000);
+});
 
-    if(!(args.sender_name && args.company_name && args.email && args.password)) {
-       msgprint("All fields are necessary. Please try again.");
-       return;
-    }
+//////////////// Analytics
+
+window._gaq = window._gaq || [];
+window._gaq.push(['_setAccount', 'UA-8911157-1']);
+window._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);
+})();
 
 
-    erpnext.send_message({
-      subject:'New Trial Request',
-      sender: page.find('[name="sender_name"]').val(),
-      message: args,
-      callback: function() {
-        page.find(':input').val('');
-      }
-    });
-  });
-}
\ No newline at end of file
+/////////////// Page view
+
+$(window).bind('hashchange', function() {
+  window._gaq.push(['_trackPageview', wn.get_route_str()]);
+});
+
+/////////////// Update conversion
+
+erpnext.update_conversion = function() {
+  $('body').append('<div style="display:inline;">\
+<img height="1" width="1" style="border-style:none;" alt="" \
+src="http://www.googleadservices.com/pagead/conversion/1032834481/?label=JvAUCLX41gEQsZu_7AM&amp;guid=ON&amp;script=0"/>\
+</div>')
+};
+
+////////////// Plus One
+
+(function() {
+  var po = document.createElement('script'); po.type = 'text/javascript'; po.async = true;
+  po.src = 'https://apis.google.com/js/plusone.js';
+  var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(po, s);
+})();
+
+////////////// Twitter
+
+(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");
+
