diff --git a/app/assets/javascripts/application/accessibility.js b/app/assets/javascripts/application/accessibility.js
index 8796b4669f5a7805389646c4e435e8b9b65ee897..9383da590ec29253b1a029b825306704bae5f021 100644
--- a/app/assets/javascripts/application/accessibility.js
+++ b/app/assets/javascripts/application/accessibility.js
@@ -12,40 +12,31 @@ var fontSize = function() {
   });
 
   // init
-  size_c = readCookie('fontSize');
-  if (size_c != null) {
-    $(document).ready(function() {
-      reloadFontSize(size_c);
-    });
-  }
-  else {
-    createCookie('fontSize', 0, 365);
-  }
+  $(document).ready(function() {
+      size_c = readCookie('fontSize');
+      if (size_c != null) reloadFontSize(size_c);
+      else createCookie('fontSize', 0, 365);
+  });
 
   function reloadFontSize(size) {
     var i = 0;
     size = (parseFloat(size) / 10) + 1;
+    // change body zoom
+    $('body').css('zoom', size, 'important');
+    $('body').css('-moz-transform', "scale("+size+")", 'important');
+    $('body').css('-moz-transform-origin', '0 0', 'important');
 
-    // change body font size
-    $('body').css('fontSize', (size * 100) + '%', 'important');
-
-    // change custom elements
-    for (i; i < elements_length; i++) {
-      $(elements[i]).css('fontSize', (parseFloat(elements_size[elements[i]]) * size) + "px", 'important');
-    }
   }
 
   return {
     resizeText: function(increment) {
       var size = parseFloat(readCookie('fontSize'));
       increment = parseFloat(increment);
-
       if (increment === 0) size = 0;
       else if (((size > -6) && (increment < 0)) || ((size < 7) && (increment > 0))) {
         size = size + increment;
       };
       reloadFontSize(size);
-
       createCookie('fontSize', size, 365);
     }
   };
diff --git a/app/assets/javascripts/application/search.js b/app/assets/javascripts/application/search.js
index 967cc5ce573b9ad8022a7ddeea645e07f9be845a..a6425bb889ce8022071e30e20a5f94eb82417074 100644
--- a/app/assets/javascripts/application/search.js
+++ b/app/assets/javascripts/application/search.js
@@ -12,17 +12,19 @@ var search = function() {
     }
 
     // change url with new parameters
-    searchState(params);
+    if (!fetch_init) { fetch_init = true; }
+    else if (!append) { searchState(params); }
 
     $.ajax({
       url:"/search/fetch",
       type: 'get',
-      data: params.get(),
+      data: params.get_fetch(),
       beforeSend: function() {
         if (append) {
           $('.search-more').remove();
         }
         else {
+          $('.result-bar').hide();
           $("#search-fetch").empty();
         }
         $('#search-fetch').append('<div class="search-loading" style="text-align:center;"><br><div class="pong-loader">Carregando...</div></div>');
@@ -34,6 +36,8 @@ var search = function() {
         }
         else {
           $("#search-fetch").empty();
+          $('.result-info-count').html($(data).filter('input:hidden[name="learning-objects-count"]').val());
+          $('.result-bar').show();
         }
 
         $("#search-fetch").append(data);
@@ -49,15 +53,12 @@ var search = function() {
     var has_init = false;
 
     function init() {
-      // init when document is ready
-      $(document).ready(function () {
-        // check url and set inputs with params
-        checkUrl();
-
-        watchSearchInput();
-        watchOrder();
-        watchFilters();
-      });
+      // check url and set inputs with params
+      checkUrl();
+
+      watchSearchInput();
+      watchOrder();
+      watchFilters();
     }
 
     // get parameters from url when page is loaded
@@ -107,6 +108,7 @@ var search = function() {
       watchCheckbox('school_year', 'filter-school-year');
     }
 
+    // control ajax requisitions (fetch) of filters
     function filtersFetchInterval() {
       // cancel previous function call
       clearInterval(intervalId);
@@ -114,7 +116,7 @@ var search = function() {
         searchFetch();
         // cancel to not loop (interval)
         clearInterval(intervalId);
-      }, 800 );
+      }, 800);
     }
 
     function watchFilterSubject() {
@@ -183,38 +185,24 @@ var search = function() {
   //// INIT
   // initiate params
   var params = searchParameters();
+  var fetch_init = false;
 
-  // init when document is ready
-  $(document).ready(function () {
-    // return previous state when back
-    $(window).on("popstate", function(e) {
-      var original = e.originalEvent.state;
-      history.replaceState(original, original.url, original.url);
-      searchFetch();
-    });
+  // run watchers
+  searchWatchers().init();
 
-    // run watchers
-    searchWatchers().init();
-  });
+  // TODO: find a way to manage all requisitions without page reload
 };
 
 //// SEARCH STATE
 // take care of History API
 var searchState = function(params, replace) {
-  if (replace === undefined) {
-    replace = false;
-  }
-
-  var newState = history.state;
+  if ((replace === undefined) || (replace !== true)) { replace = false; }
+  var newState = JSON.parse(JSON.stringify(history.state));
   newState.url = params.url();
   newState.search_params = params.get();
 
-  if (replace) {
-    history.replaceState(newState, newState.url, newState.url);
-  }
-  else {
-    history.pushState(newState, newState.url, newState.url);
-  }
+  if (replace) { history.replaceState(newState, location.href, location.href); }
+  else { history.pushState(newState, newState.url, newState.url); }
 }
 
 //// SEARCH PARAMETERS
@@ -279,6 +267,13 @@ var searchParameters = function() {
       }
       return params[type];
     },
+    get_fetch: function() {
+      var params_to_send = JSON.parse(JSON.stringify(params));
+      params_to_send.subject = params_to_send.subject.join(', ');
+      params_to_send.type = params_to_send.type.join(', ');
+      params_to_send.school_year = params_to_send.school_year.join(', ');
+      return params_to_send;
+    },
     url: function() {
       var url = history.state.url.split('?', 1) + "?",
           keys = Object.keys(params),
@@ -318,12 +313,14 @@ var searchParameters = function() {
 
 //// DROPDOWN
 var runDropdown = function(element) {
-  if ($(element).next().is(':hidden')) {
+  if (($(element).next().data('dropdown') === 'closed')) {
     $('> .caret', element).addClass('caret-up');
     $(element).next().slideDown();
+    $(element).next().data('dropdown', 'open');
   }
   else {
     $('> .caret', element).removeClass('caret-up');
     $(element).next().slideUp();
+    $(element).next().data('dropdown',  'closed');
   }
 };
diff --git a/app/assets/stylesheets/application/search.scss b/app/assets/stylesheets/application/search.scss
index c955e015436411c53f9acb0d5c034d1c41159564..0c741c551992ee34c1e76a6252a1798d8fb10e0a 100644
--- a/app/assets/stylesheets/application/search.scss
+++ b/app/assets/stylesheets/application/search.scss
@@ -1,12 +1,12 @@
 
 .search-sidebar {
   margin-top: 40px;
+  display: none;
 
   .dropdown-element {
     width: 95%;
     margin-left: 3%;
   }
-
 }
 
 .nestedAccordion {
@@ -20,109 +20,18 @@
   width: 100% !important;
 }
 
-.result-info{
-  font-weight: 500;
-  color: #88888D;
-}
+.result-bar {
+  display: none;
 
-.sort-dropdown{
-  border: 0;
-  border-radius: 3px;
-  color: #59585A;
-  padding-right: 20px;
-}
+  .result-info {
+    font-weight: 500;
+    color: #88888D;
+  }
 
-// #nestedAccordion{
-//   width:100%;
-// }
-// #nestedAccordion h2, #nestedAccordion h3,
-// #nestedAccordion div, #nestedAccordion ol,
-// #nestedAccordion li{
-//   /* reset styles for accordion */
-//   margin:0;
-//   padding:0;
-//   font-size:1em;
-//   font-weight:normal;
-//   list-style:none;
-// }
-// #nestedAccordion div{
-//   color:#555;/*#555 #003300*/
-//   overflow:hidden;
-//   display:none;
-// }
-//
-// #nestedAccordion h2{
-//   cursor:pointer;
-//   color:#fff;
-//   font-size:1.1em;
-//   moz-border-radius: 5px 5px 0 0;
-//   -webkit-border-radius: 5px 5px 0 0;
-//   border-radius: 5px 5px 0 0;
-//   padding:3px;
-//   margin-top:5px;
-//   background-color: #3F434F;
-//   background-image: -webkit-gradient(linear, left top, left bottom, from(#4B8CFF), to(#447FE8));
-//   background-image: -webkit-linear-gradient(top, #4B8CFF, #447FE8);/*#4B8CFF, #447FE8*/
-//   background-image: -moz-linear-gradient(top, #4B8CFF, #447FE8);
-//   background-image: -ms-linear-gradient(top, #4B8CFF, #447FE8);
-//   background-image: -o-linear-gradient(top, #4B8CFF, #447FE8);
-//   background-image: linear-gradient(to bottom, #4B8CFF, #447FE8);
-//   background-image: url("arrow.ico");
-//     background-repeat: no-repeat;
-//     background-position: right bottom;
-// }
-// #nestedAccordion h3{
-//   cursor:pointer;
-//   padding:4px;
-//   color: #666;
-//   text-shadow: 0 1px 0 rgba(255, 255, 255, .5);
-//   background-color: #f5f5f5;
-//   background-image: -webkit-gradient(linear, left top, left bottom, from(#f5f5f5), to(#ededed));
-//   background-image: -webkit-linear-gradient(top, #f5f5f5, #ededed);
-//   background-image: -moz-linear-gradient(top, #f5f5f5, #ededed);
-//   background-image: -ms-linear-gradient(top, #f5f5f5, #ededed);
-//   background-image: -o-linear-gradient(top, #f5f5f5, #ededed);
-//   background-image: linear-gradient(to bottom, #f5f5f5, #ededed);
-//
-// }
-// #nestedAccordion h3:hover{
-//   color:#000;
-// }
-// #nestedAccordion h3 + div{
-//   display:none;
-//   background-color:#F5F5F5;
-//   padding:5px 5px 5px 30px;
-// }
-// #nestedAccordion li:hover{
-//   color:#000;
-//   cursor:pointer;
-// }
-// #nestedAccordion h2 +div.aberto{
-//   display:inherit;
-// }
-// ///Contrast
-// .contraste{
-//   .thumbnail{
-//     background-color: black !important;
-//   }
-//   .navbar{
-//     select{
-//       color: black;
-//     }
-//   }
-//   #nestedAccordion{
-//     div{
-//       background-color: black !important;
-//       color: white !important;
-//     }
-//     h3{
-//       color: white;
-//       background-color: black !important;
-//       background-image: none !important;
-//       border-bottom: 1px solid white;
-//     }
-//     h3:hover{
-//       color: white;
-//     }
-//   }
-// }
+  .sort-dropdown {
+    border: 0;
+    border-radius: 3px;
+    color: #59585A;
+    padding-right: 20px;
+  }
+}
diff --git a/app/controllers/search_controller.rb b/app/controllers/search_controller.rb
index 06c3c5104b2cc3332c3e191e06fbf11a889c7c4e..7ba640079c6e661adddb6fc044de222bf98efb89 100644
--- a/app/controllers/search_controller.rb
+++ b/app/controllers/search_controller.rb
@@ -7,6 +7,9 @@ class SearchController < ApplicationController
   def fetch
     objectsFound = []
 
+    params[:subject]= params[:subject].split(', ')
+    params[:type] = params[:type].split(', ')
+    params[:school_year] = params[:school_year].split(', ')
     page=1
     if (params[:page])
       page = params[:page].to_i
@@ -15,9 +18,7 @@ class SearchController < ApplicationController
     @pagination_limit=10
 
     unless params[:query].blank?
-      params[:order] = "" if params[:order].blank?
-
-      objectsFound = search params[:query], params[:order]
+      objectsFound = search params
       @numFound = objectsFound.length
 
       # case params[:order]
diff --git a/app/repositories/orient_db/learning_object_repository.rb b/app/repositories/orient_db/learning_object_repository.rb
index 15e357f6fb6253e6d1fb87b7b524d669cc4ab6e8..d126c700966b8887d53a317d798a4e3e0908e19c 100644
--- a/app/repositories/orient_db/learning_object_repository.rb
+++ b/app/repositories/orient_db/learning_object_repository.rb
@@ -129,32 +129,34 @@ module OrientDb
     #   ON LearningObject (name, description)
     #   FULLTEXT ENGINE LUCENE
     #   METADATA {"analyzer":"org.apache.lucene.analysis.br.BrazilianAnalyzer"}
-    def search(qry, order = nil)
+    def search(params)
       # TODO: fix search metadata from dspace
+      order = params[:order]
+      qry = params[:query]
       unless order.nil?
         order = case order
-                  when "author"
-                    "metadata.key['dc.contributor.author']"
-                  when "publicationasc"
-                    "metadata.key['dc.date.submitted']"
-                  when "publicationdesc"
-                    "metadata.key['dc.date.submitted'] DESC"
-                  when "title"
-                    "name ASC"
-                  else
-                    nil
-                end
+        when "author"
+          "author"
+        when "publicationasc"
+          "created_at"
+        when "publicationdesc"
+          "created_at DESC"
+        when "title"
+          "name ASC"
+        else
+          nil
+        end
       end
 
       query = "SELECT EXPAND(rid) FROM index:learningobject_search WHERE key LUCENE '#{qry}'"
+      query = "SELECT * FROM (" + query + ") WHERE " + fetch_types(params[:type]) unless params[:type].blank?
       query = "SELECT * FROM (" + query + ") ORDER BY #{order}" unless order.nil?
       query = "SELECT @rid.asString(), last_modified FROM (" + query + ")"
-
       learning_objects_hash = connection.query query, limit: 10000
 
       # return only rids with their modification time
       learning_objects_hash.map do |e|
-        {'@rid' => e['rid'], 'last_modified' => e['last_modified']}
+        {'@rid': e['rid'], 'last_modified': e['last_modified']}
       end
     end
 
@@ -172,6 +174,15 @@ module OrientDb
       hash
     end
 
+    def fetch_types(types)
+      qry = ''
+      types.each do |type|
+        qry = qry + "type = '#{type}' " if type == types.first
+        qry = qry + "OR type = '#{type}' " if type != types.first
+      end
+      qry
+    end
+
     private
 
     def accepted_properties
diff --git a/app/views/layouts/application.html.erb b/app/views/layouts/application.html.erb
index 0b1b153b9e11ee8efcd45d3be60f0f92e8840b4f..4bf39a06f9548f4d10659b171fad5fcab46d5964 100644
--- a/app/views/layouts/application.html.erb
+++ b/app/views/layouts/application.html.erb
@@ -8,7 +8,7 @@
   <%= csrf_meta_tags %>
   <meta property="creator.productor" content="http://estruturaorganizacional.dados.gov.br/id/unidade-organizacional/1">
 </head>
-<body>
+<body <%= yield(:body_attributes) %>>
 <%= render 'shared/application/header' %>
 
 <% if user_signed_in? %>
diff --git a/app/views/search/_fetch.html.erb b/app/views/search/_fetch.html.erb
index 64b030930660086189807e91d6c1a8e53d69b59a..c13adc834784567d0faaa437ec29352b8b0cef1b 100644
--- a/app/views/search/_fetch.html.erb
+++ b/app/views/search/_fetch.html.erb
@@ -1,2 +1,3 @@
+<input type="hidden" name="learning-objects-count" value="<%= @result.total_count %>"/>
 <%= render @objects, orientation: "horizontal" %>
-<a href="javascript:void(0);" class="btn btn-primary search-more">Ver mais</a>
+<%= link_to "ver mais", "javascript:void(0);", class: "btn btn-primary search-more" unless @objects.blank? %>
diff --git a/app/views/search/index.html.erb b/app/views/search/index.html.erb
index 38ebb7b422b153ea393802bded2f0f334f724e5b..dc085d56cc8ee17e0fb0926b5abfe5c57fa9dd44 100644
--- a/app/views/search/index.html.erb
+++ b/app/views/search/index.html.erb
@@ -1,3 +1,4 @@
+<%= content_for(:body_attributes) do %> data-no-turbolink <% end %>
 <div class="row">
   <div class="col-sm-4 search-sidebar" id="menu-left">
     <!-- <h2>Busca Avançada</h2> -->
@@ -21,7 +22,7 @@
           <select class="select-tag-container filter-subject" multiple="multiple">
               <option value="Conjunto">Conjuntos</option>
               <option value="Soma">Soma</option>
-              <option value="Álgebra">Álgebra</option>
+              <option value="Algebra">Álgebra</option>
           </select>
         </div>
         <h4 class="dropdown">Biologia<span class="caret caret-align-right"/></h4>
@@ -255,7 +256,7 @@
 
   <!-- search results -->
   <div class="col-sm-8">
-    <div>
+    <div class="result-bar">
       <form method="get">
         <input type="hidden" name="qry" value="<%= params["qry"] %>">
         <div class="col-sm-6">
@@ -265,7 +266,7 @@
           <form method="get">
             <input type="hidden" name="qry" value="<%= params["qry"] %>">
 
-            <select class="order" class="sort-dropdown" name="order">
+            <select class="order sort-dropdown" name="order">
               <option value="">ordenar resultados</option>
               <option value="author">autores</option>
               <option value="publicationasc">mais novos</option>
@@ -283,17 +284,13 @@
   </div>
 </div>
 
-
 <script type="text/javascript">
-  $(document).ready(function () {
-    runDropdown($('.nestedAccordion .dropdown'));
-
-    $(".select-tag-container").select2();
-
-    search();
-
-    $('.nestedAccordion .dropdown').click(function () {
-      runDropdown(this);
-    });
+  $(".select-tag-container").select2();
+  runDropdown($('.nestedAccordion .dropdown'));
+  $('.nestedAccordion .dropdown').click(function () {
+    runDropdown(this);
   });
+  $('.search-sidebar').show();
+
+  search();
 </script>
diff --git a/lib/search_engine/orientdb_lucene.rb b/lib/search_engine/orientdb_lucene.rb
index db31ac7ca01d1672a271ba7d090be6e96d357243..b260e81c3dccb944681136db64c4fb1ca0513e0d 100644
--- a/lib/search_engine/orientdb_lucene.rb
+++ b/lib/search_engine/orientdb_lucene.rb
@@ -1,8 +1,8 @@
 module SearchEngine
   module OrientdbLucene
 
-    def search(qry, order = nil)
-      learning_object_repository.search(qry, order)
+    def search(params)
+      learning_object_repository.search(params)
     end
 
   end