diff --git a/Gemfile b/Gemfile
index 5e839910a5d477820fdb20069e40a3cf6fe35935..e1134327f415a64eda8580996b7b45c591415894 100644
--- a/Gemfile
+++ b/Gemfile
@@ -69,7 +69,7 @@ gem "rsolr", "~> 1.0.12"
 #Dspace REST API Integration
 gem 'dspace_rest_client', '~> 1.1.0'
 
-# pretty logs
+# pretty logs 
 gem 'rainbow'
 
 #Chart js
diff --git a/app/assets/javascripts/application/accessibility.js b/app/assets/javascripts/application/accessibility.js
index 7a907ae34bac5eec8e7a310b5118d56de4541a4f..8ef7160ff48f6c90fe7b7dfd13ad39016d03aa69 100644
--- a/app/assets/javascripts/application/accessibility.js
+++ b/app/assets/javascripts/application/accessibility.js
@@ -62,6 +62,8 @@ var contrast = function() {
       $('.caret').css('border-top',' 7px solid black');
       $('.grey-panel').css('border','none');
       $('.button-cancel-setup').css('font-weight','normal');
+      $('#label_add_collection').css('background-color','white');
+
 
       var select = $('.select-tag-container').select2()
       .on("select2:open", function() {
@@ -83,6 +85,10 @@ var contrast = function() {
       $('.caret').css('border-top',' 7px solid white');
       $('.grey-panel').css('border','7px solid white');
       $('.button-cancel-setup').css('font-weight','bold');
+      $('#create_collection_form').css('color','black');
+      $('#label_add_collection').css('color','black');
+
+
 
       //contraste select2(menu esquerda)
       var select = $('.select-tag-container').select2()
@@ -134,10 +140,10 @@ function readCookie(name) {
 var fontSize = fontSize();
 var contrast = contrast();
 
-/*
-function HandleBrowseClick()
+
+function HandleChangeImg()
 {
-    var fileinput = document.getElementById("browse");
-    fileinput.click();
+//  var fileinput = document.getElementById("avatar");
+  var iminput = document.getElementById("pic");
+//   iminput.src = ;/*"path"+ fileinput.value;
 }
-*/
diff --git a/app/assets/javascripts/application/collections.coffee b/app/assets/javascripts/application/collections.coffee
index 46fc726d97a435afe67bfca9934690757b4a6ccf..fa82b5ea8e3042db942ac70bb6138bddfc3e7748 100644
--- a/app/assets/javascripts/application/collections.coffee
+++ b/app/assets/javascripts/application/collections.coffee
@@ -6,3 +6,14 @@ $ ->
     title: ->
       $('#create_collection_popover_title').html()
   return
+
+$ ->
+  $(document).on 'click', 'input[class=collection-element]', ->
+    url = '/collections/' + encodeURIComponent($(this).data('cid')) + '/learning_object/' + encodeURIComponent($(this).data('loid'))
+    if this.checked
+      $.ajax {method: "POST", url: url }, (d) ->
+        d
+    else
+      $.ajax {method: "DELETE", url: url }, (d) ->
+        d
+  return
diff --git a/app/assets/javascripts/application/learning_objects.coffee b/app/assets/javascripts/application/learning_objects.coffee
index f114ec84c6886942ece8cac026ce8d4e9fe3cd9f..88903b52b03bd531978b5ec6244f164c4f0459f5 100644
--- a/app/assets/javascripts/application/learning_objects.coffee
+++ b/app/assets/javascripts/application/learning_objects.coffee
@@ -1,20 +1,49 @@
 $ ->
   $('.default_btn').toggleClass 'active_btn'
-  $('.add_to_collection').popover
-    html: true
-    container: 'body'
-    content: ->
-      url = $(this).data('poload')
+  $(document).on 'click', '*[data-poload]', ->
+    e = $(this)
+    e.popover({content: "Carregando..."}).popover('show')
+    all = undefined
+    objects = undefined
+    url = $(this).data('poload')
+    loid = $(this).data('loid')
+    $.get '/collections.json', (d) ->
+      all = d
       $.get url, (d) ->
-        $.parseJSON d
+        object = d
+
+        # generate a lookup table for object's collections id
+        lookup = {}
+        i = 0
+        len = object.length
+        while i < len
+          lookup[object[i].id] = object[i]
+          i++
+
+        # mark checked objects
+        i = 0
+        len = all.length
+        html = ''
+        while i < len
+          name = 'collection_' + all[i].id.split(':').slice(-1)[0]
+          html += '<input type="checkbox" class="collection-element" data-cid="' + all[i].id + '" data-loid="' + loid + '" id="' + name + '" value="' + all[i].id + '"'
+          if lookup[all[i].id] != undefined
+            html += " checked"
+          html += '>'
+          html += '<label for="' + name + '">' + all[i].name + '</label><br/>'
+          ++i
+
+        $('.popover-content').html(html)
       return
+    return
   return
+
 $ ->
-  $('.add_to_collection').on 'click', (e) ->
+  $(document).on 'click', '.add_to_collection', (e) ->
     $('.add_to_collection').removeClass 'active'
     $('.add_to_collection').not(this).popover 'hide'
     return
 $ ->
   $(document).on 'ajax:success', 'a.vote', (status, data, xhr) ->
     $('.votes-count[data-id=\'' + data.id + '\']').text data.count
-    return
\ No newline at end of file
+    return
diff --git a/app/assets/javascripts/application/navigation-content.js b/app/assets/javascripts/application/navigation-content.js
index 2d9f2e66e1021bf819e7b600e928c58450ee9883..fbc951f84d309954ba4af95f2dad00b06516ab64 100644
--- a/app/assets/javascripts/application/navigation-content.js
+++ b/app/assets/javascripts/application/navigation-content.js
@@ -44,4 +44,15 @@ var nav_content = function () {
 
 $(document).ready(function () {
   nav_content();
+
+  // fix bootstrap popover click to dismiss - http://stackoverflow.com/a/14857326
+  $('body').on('click', function (e) {
+    $('[data-toggle="popover"]').each(function () {
+        //the 'is' for buttons that trigger popups
+        //the 'has' for icons within a button that triggers a popup
+        if (!$(this).is(e.target) && $(this).has(e.target).length === 0 && $('.popover').has(e.target).length === 0) {
+            $(this).popover('hide');
+        }
+    });
+  });
 });
diff --git a/app/assets/javascripts/application/search.js b/app/assets/javascripts/application/search.js
index 42786f18c620b1a70002bba6b03d6255ec4852d1..a32dca97fa40c86284d7e2ac64909562df009c0d 100644
--- a/app/assets/javascripts/application/search.js
+++ b/app/assets/javascripts/application/search.js
@@ -45,8 +45,6 @@ var search = function() {
 
         // add tooltip
         $('[data-toggle="tooltip"]').tooltip();
-
-        searchWatchers().attachMoreResults();
       });
   }
 
@@ -56,6 +54,11 @@ var search = function() {
     var intervalId = 0;
     var has_init = false;
 
+    if (!has_init) {
+      init();
+      has_init = true;
+    }
+
     function init() {
       // watch params to change inputs
       watchParams();
@@ -65,6 +68,7 @@ var search = function() {
 
       // watch inputs to change params
       watchSearchInput();
+      watchMoreButton();
       watchFilterPanel();
       watchOrder();
       watchFilters();
@@ -166,7 +170,7 @@ var search = function() {
 
     function watchSearchInput() {
       $('.search-input input').val(params.get('query'));
-      $('.search-input form').on('submit', function (event) {
+      $(document).on('submit', '.search-input form', function (event) {
         event.preventDefault();
         params.reset();
         params.add('query', $('input[name="query"]', this).val());
@@ -174,8 +178,16 @@ var search = function() {
       });
     }
 
+    function watchMoreButton() {
+      $(document).on('click', '.search-more', function (event) {
+        event.preventDefault();
+        params.add('page', params.get('page') + 1);
+        searchFetch(true);
+      });
+    }
+
     function watchFilterPanel() {
-      $('.filter-panel').on('beforeItemRemove', function(event) {
+      $(document).on('beforeItemRemove', '.filter-panel', function(event) {
         if (event.options === undefined) {
           event.options = {'ignore': false};
         }
@@ -188,12 +200,12 @@ var search = function() {
 
     function watchOrder() {
       var select = 'select[name="order"]';
-      $(select).on('change', function (event) {
+      $(document).on('change', select, function (event) {
         params.add('order', this.value);
         searchFetch();
       });
       // reset
-      $(watch).on('reset', function (e) {
+      $(document).on('reset', watch, function (e) {
         $(select).val("");
       });
     }
@@ -224,7 +236,7 @@ var search = function() {
         filtersFetchInterval();
       });
       // reset
-      $(watch).on('reset', function (e) {
+      $(document).on('reset', watch, function (e) {
         $('#filter-year input[name=singleYear]').val("");
         $('#filter-year input[name=startYear]').val("");
         $('#filter-year input[name=endYear]').val("");
@@ -273,7 +285,7 @@ var search = function() {
       }
       else {
         // watch for changes
-        $(input).on('click', function () {
+        $(document).on('click', input, function () {
           if (this.checked) {
             params.add(type, this.value);
           }
@@ -284,7 +296,7 @@ var search = function() {
           filtersFetchInterval();
         });
         // reset
-        $(watch).on('reset', function (e) {
+        $(document).on('reset', watch, function (e) {
           $(input).each(function () {
             $(this).attr('checked', false);
           });
@@ -302,22 +314,6 @@ var search = function() {
         clearInterval(intervalId);
       }, 800);
     }
-
-    return {
-      init: function() {
-        if (!has_init) {
-          init();
-          has_init = true;
-        }
-      },
-      attachMoreResults: function() {
-        $('.search-more').on('click', function (event) {
-          event.preventDefault();
-          params.add('page', params.get('page') + 1);
-          searchFetch(true);
-        });
-      }
-    }
   }
 
   //// INIT
@@ -326,7 +322,7 @@ var search = function() {
   var fetch_init = false;
 
   // run watchers
-  searchWatchers().init();
+  searchWatchers();
 
   // TODO: find a way to manage all requisitions without page reload
 };
diff --git a/app/assets/stylesheets/application.scss b/app/assets/stylesheets/application.scss
index 2cb01d66686fa205f356b5bad5dc6b74fb5e8b9b..6aa177d95f1a6602fca590ae9bfc2ba2fb1cb717 100644
--- a/app/assets/stylesheets/application.scss
+++ b/app/assets/stylesheets/application.scss
@@ -137,7 +137,7 @@ header {
     // search
     .search-input {
       margin-top: 40px;
-      margin-bottom: 5px;
+      margin-bottom: 22px;
       text-align: right;
 
       // text input
@@ -267,23 +267,42 @@ header {
   z-index: 999;
   max-width: 600px;
   width: auto;
+
+  .popover-content {
+    max-height: 300px;
+    overflow: auto;
+  }
 }
 
-//// FOOTER
 footer {
-  width: 100%;
-  height: 100px;
-  position: relative;
-  bottom: 0;
-  left: 0;
   padding-top: 50px;
-  border-width: 0px;
   color: #FFF;
 
   .main {
     background-color: #E6E6E6;
     padding: 16px 0px 0px 0px;
     min-height: 256px;
+
+    .logo-footer{
+    	float: left;
+    	width: 18%;
+
+      .logos-footer{
+        height: 70px;
+        width: auto;
+      }
+      .normal{
+        margin-left: 18%;
+      }
+      .fnde-size{
+        height: 100px;
+        margin-top: -8%;
+        margin-left: 20px;
+      }
+      .ministerio-size{
+        margin-left:80px;
+      }
+    }
   }
 
 	.footerbar{
@@ -293,13 +312,11 @@ footer {
   .footer-bar {
     color: #FFF;
     background-color: #2178F5;
-    padding-top: 8px;
 
     .logo {
+      margin-left: -12px;
       margin-top: 10px;
-      padding: 0;
       text-align: center;
-      float: left;
       width: 165px;
       h3 {
         margin-top: 10px;
@@ -312,44 +329,6 @@ footer {
   }
 }
 
-.starRating:not(old) {
-  display: inline-block;
-  width: 7.5em;
-  height: 1.5em;
-  overflow: hidden;
-  vertical-align: bottom;
-}
-
-.starRating:not(old) > input {
-  margin-right: -100%;
-  opacity: 0;
-}
-
-.starRating:not(old) > label {
-  display: block;
-  float: right;
-  position: relative;
-  background: url('star-off.svg');
-  background-size: contain;
-}
-
-.starRating:not(old) > label:before {
-  content: '';
-  display: block;
-  width: 1.5em;
-  height: 1.5em;
-  background: url('star-on.svg');
-  background-size: contain;
-  opacity: 0;
-  transition: opacity 0.2s linear;
-}
-
-.starRating:not(old) > label:hover:before,
-.starRating:not(old) > label:hover ~ label:before,
-.starRating:not(:hover) > :checked ~ label:before {
-  opacity: 1;
-}
-
 td.stars {
   width: 22%;
 }
@@ -374,6 +353,11 @@ table.tipo1 p {
 .contraste {
   background-color: black !important;
   color: white;
+  .white-input{
+    a{
+      color:yellow;
+    }
+  }
   a {
     color: yellow;
   }
@@ -405,7 +389,6 @@ table.tipo1 p {
       color: black !important;
     }
   }
-
   .panel-wrapper {
     background-color: black !important;
     border: 2px solid white;
@@ -415,14 +398,15 @@ table.tipo1 p {
       border-style: outset;
     }
   }
-  .btn{
+  .btn {
     border:2px solid white;
   }
+
   .user-header  {
     border: 7px solid white;
     h3{
-    color:white;
-  }
+      color:white;
+    }
     .btn{
       border: 2px solid white;
     }
@@ -435,9 +419,14 @@ table.tipo1 p {
     .button-save-setup{
       color:yellow;
     }
+    .btn-singin{
+      color: white;
+    }
+    .btn-danger{
+      color: yellow;
+    }
   }
   footer {
-
   	.footerbar{
   		background-color: black;
   	}
@@ -479,7 +468,6 @@ table.tipo1 p {
   .dropdown-menu {
     background-color: black;
   }
-
 }
 
 .words {
@@ -499,25 +487,43 @@ table.tipo1 p {
 	margin: 5px;
 	padding: 0px 35px;
 	}
-  .left-edge {
+  .left-edge1 {
     position:absolute;
     left: -35px;
   }
 .right-button { padding: 0px 60px;  }
 
-.logo-footer{
-	float: left;
-	margin-right: 1%;
-	margin-left: 1%;
-	width: 18%;
-
-}
 .grey-panel{
   background-color: #EEEEEE;
   width: 100;
   padding: 40px;
   text-align:center;
   margin: 25px;
+  .btn-singin{
+     width: 230px; color:white; background-color: #1676bc;
+   }
+
+}
+
+.add-file{
+  .logo-add-file{
+    width:250px; height:150px;
+  }
+  .btn-remove{
+    margin-top: 15px; width: 130px; background-color: #FF2134;
+  }
+   .input-add-file{
+    font-size:14pt; margin-bottom: 10px;
+  }
+  .add_file-save{
+    margin-top: -10px; width: 230px; color:white; background-color: #1676bc;
+  }
+  .select-add-file{
+    width: 345px;
+  }
+  .title{
+    position:absolute; margin-left:60px;
+  }
 }
 
 .but {
@@ -550,40 +556,63 @@ table.tipo1 p {
   margin-left: 50px;
   border: solid 1px #ccc;
 }
+
 input.chk {
   margin-top:5px;
   margin-left:5px;
 }
 
-.white-input input{
-  border:none;
+.white-input {
+  .top-padding-setup{
+    margin-top: 25px;
+  }
+  .input-width-setup1{
+    width:370px;
+  }
+  .input-setup-name{
+    width:515px;
+    height:60px;
+    font-size:18pt;
+    font-weight:bold;
+    margin-bottom: 5px;
+  }
+  .link-setup{
+    color: #1676bc;
+  }
+  .link-setup-2{
+    color: #FF3300;
+  }
+  .btn-file {
+      position: relative;
+      overflow: hidden;
+  }
+  .btn-file input[type=file] {
+      position: absolute;
+      top: 0;
+      right: 0;
+      min-width: 100%;
+      min-height: 100%;
+      font-size: 100px;
+      text-align: right;
+      filter: alpha(opacity=0);
+      opacity: 0;
+      outline: none;
+      background: white;
+      cursor: inherit;
+      display: block;
+  }
+  input{
+    border:none;
+  }
 }
 
-.top-padding-setup{
-  margin-top: 25px;
-}
-.input-width-setup1{
-  width:370px;
-}
-.input-setup-name{
-  width:515px;
-  height:60px;
-  font-size:18pt;
-  font-weight:bold;
-  margin-bottom: 5px;
-}
-.link-setup{
-  color: #1676bc;
-}
-.link-setup-2{
-  color: #FF3300;
-}
 .button-cancel-setup{
   height: 35px; width: 110px; color:white; background-color: #FF3300;
 }
 .button-save-setup{
   height: 35px; width: 110px; color:white; background-color: #1676bc;
 }
+
 .logos-footer{
   height: 70px;
   width: auto;
diff --git a/app/assets/stylesheets/application/collections.scss b/app/assets/stylesheets/application/collections.scss
new file mode 100644
index 0000000000000000000000000000000000000000..53e901f10cd8f165fb53ea563ed5caf6011aa5ae
--- /dev/null
+++ b/app/assets/stylesheets/application/collections.scss
@@ -0,0 +1,6 @@
+ul.collection-header {
+  li {
+    width: 100%;
+    margin-bottom: 10px;
+  }
+}
\ No newline at end of file
diff --git a/app/assets/stylesheets/application/learning_objects.scss b/app/assets/stylesheets/application/learning_objects.scss
index 38bbd922f6323895b4395884afe7f5905f939afa..3d79699dbb96f38830a595b39e87dde7a1c13e34 100644
--- a/app/assets/stylesheets/application/learning_objects.scss
+++ b/app/assets/stylesheets/application/learning_objects.scss
@@ -70,6 +70,11 @@ $checked_icon: 'icons/checked.png';
     margin-top: 3px;
     overflow: hidden;
     text-overflow: ellipsis;
+
+    .media-heading {
+      overflow: hidden;
+      text-overflow: ellipsis;
+    }
   }
 
   .learning-object-thumbnail {
diff --git a/app/assets/stylesheets/application/welcome.scss b/app/assets/stylesheets/application/welcome.scss
index fdd6587e533635e4a8edff1f70fd230f4048b9c2..0ab1389a7661511af76343f1e399aef77dbc1106 100644
--- a/app/assets/stylesheets/application/welcome.scss
+++ b/app/assets/stylesheets/application/welcome.scss
@@ -115,4 +115,14 @@ $carousel_size: 400px;
   .left-edge {
     position:absolute;
   }
+
+  .icon{
+    width:30px;height: 30px;
+  }
+  .icon1{
+    width:140px;height: 140px;
+  }
+  .bt_cadastrar{
+    margin-top: 10px; width: 230px; background-color: #FF2134;
+  }
 }
diff --git a/app/builders/collection_builder.rb b/app/builders/collection_builder.rb
new file mode 100644
index 0000000000000000000000000000000000000000..f64521c9103d97d5eeb9a31a6fadd109aa0f390c
--- /dev/null
+++ b/app/builders/collection_builder.rb
@@ -0,0 +1,48 @@
+class CollectionBuilder
+  extend RepositoriesProxy
+
+  ##
+  # receive a list of ids and return a list of collections
+  def self.build(objects = [])
+    lo = []
+    objects.each do |object|
+      unless object['rid'].blank?
+        o = Rails.cache.fetch(cache_key(object['rid'], object['last_modified']))
+        o = collection_repository.find object['rid'] if o.nil?
+        lo << o
+      end
+    end
+    lo
+  end
+
+  def self.build_from_orientdb(args = {})
+    lo = nil
+    unless args.nil?
+      # cache object when build
+      lo = Rails.cache.fetch(cache_key(args['@rid'], args['last_modified']), expires_in: 12.hours) do
+        obj = Collection.new(
+            learning_objects: LearningObjectBuilder.build(map_rid_to_object(args['learning_objects']) || []),
+            privacy: args['privacy'],
+            name: args['name'],
+            id: args['@rid']
+        )
+        obj.created_at = DateTime.strptime(args['created_at'], "%Y-%m-%d %H:%M:%S") unless args['created_at'].nil?
+        obj.last_modified = DateTime.strptime(args['last_modified'], "%Y-%m-%d %H:%M:%S") unless args['last_modified'].nil?
+        obj
+      end
+    end
+    lo
+  end
+
+  def self.cache_key(rid, last_modified)
+    rid + '/' + last_modified
+  end
+
+  def self.map_rid_to_object(ids)
+    return {'rid' => ids} if ids.class == String
+
+    ids.map do |id|
+      {'rid' => id}
+    end
+  end
+end
diff --git a/app/builders/learning_object_builder.rb b/app/builders/learning_object_builder.rb
index b42a03ffb18319850c0c0839de2c0b71152d0d7f..e494291a7d981a88c53460dcae78e2e62df2edd0 100644
--- a/app/builders/learning_object_builder.rb
+++ b/app/builders/learning_object_builder.rb
@@ -7,19 +7,26 @@ class LearningObjectBuilder
   #
   def self.build(objects = [])
     lo = []
+    objects = [objects] if objects.class == String
     objects.each do |object|
-      o = Rails.cache.fetch(cache_key(object[:@rid], object[:last_modified]))
+      unless object['rid'].blank?
+        o = Rails.cache.fetch(cache_key(object['rid'], object['last_modified'])) unless object['last_modified'].blank?
 
-      # TODO: fix learning_object_repository call
-      o = learning_object_repository.find object[:@rid] if o.nil?
+        if o.nil?
+          o = learning_object_repository.find object['rid']
+        else
+          o.update_dynamic_fields
+        end
 
-      lo << o
+        lo << o
+      end
     end
     lo
   end
 
   def self.build_from_orientdb(args = {})
     lo = nil
+
     unless args.nil?
       # cache object when build
       lo = Rails.cache.fetch(cache_key(args['@rid'], args['last_modified']), expires_in: 12.hours) do
@@ -37,11 +44,12 @@ class LearningObjectBuilder
         obj.created_at = DateTime.strptime(args['created_at'], "%Y-%m-%d %H:%M:%S") unless args['created_at'].nil?
         obj.last_modified = DateTime.strptime(args['last_modified'], "%Y-%m-%d %H:%M:%S") unless args['last_modified'].nil?
         obj.published_at = DateTime.strptime(args['published_at'], "%Y-%m-%d %H:%M:%S") unless args['published_at'].nil?
-        obj.likes = args.key?('in_Likes') ? args['in_Likes'].size : 0
-        obj.views = args.key?('in_Views') ? args['in_Views'].size : 0
         obj
       end
+
+      lo.update_dynamic_fields
     end
+
     lo
   end
 
diff --git a/app/controllers/application_controller.rb b/app/controllers/application_controller.rb
index 647cc1b6cc5beaf7f28230cf0c04293a40f79014..106b97dbe9c01f0768f25cdb9a2df90a03e47bb6 100644
--- a/app/controllers/application_controller.rb
+++ b/app/controllers/application_controller.rb
@@ -4,13 +4,18 @@ class ApplicationController < ActionController::Base
   # Prevent CSRF attacks by raising an exception.
   # For APIs, you may want to use :null_session instead.
   protect_from_forgery with: :null_session
+  before_action :count_learning_objects
   before_action :configure_permitted_parameters, if: :devise_controller?
   before_action :set_current_user_collections, if: :user_signed_in?
 
   protected
 
+  def count_learning_objects
+    @learning_object_count = learning_object_repository.count_all
+  end
+
   def set_current_user_collections
-    @user_collections = collection_repository.all current_user
+    @user_collections = collection_repository.all Collections::UserContext.new(current_user)
   end
 
   def configure_permitted_parameters
diff --git a/app/controllers/collections_controller.rb b/app/controllers/collections_controller.rb
index 912a6a68c906116a0aa59bb7e075e1a576c9451b..4b7b81f1b5cfb2fc0d05871b6f7b68858890d7fe 100644
--- a/app/controllers/collections_controller.rb
+++ b/app/controllers/collections_controller.rb
@@ -1,11 +1,15 @@
 class CollectionsController < ApplicationController
-  before_action :set_collection, only: [:show, :update, :destroy, :like, :add_learning_object]
-  before_action :authenticate_user!, except: [:index, :show]
+  before_action :set_collection, only: [:show, :update, :destroy, :like, :add_learning_object, :remove_learning_object]
+  before_action :authenticate_user!, only: [:update, :destroy, :like, :add_learning_object, :remove_learning_object]
 
   # GET /collections
   # GET /collections.json
   def index
-    @collections = collection_repository.all current_user
+    if user_signed_in?
+      @collections = collection_repository.all Collections::UserContext.new(current_user)
+    else
+      @collections = collection_repository.all
+    end
   end
 
   # GET /collections/1
@@ -60,10 +64,20 @@ class CollectionsController < ApplicationController
   def add_learning_object
     learning_object = learning_object_repository.find params[:learning_object_id]
     @collection.add learning_object
-    collection_repository.save @collection
+
+    if request.xhr? && collection_repository.save_learning_objects(@collection)
+      render json: {status: true}
+    end
+  end
+
+  # DELETE /collections/1/learning_object/43
+  def remove_learning_object
+    learning_object = learning_object_repository.find params[:learning_object_id]
+    @collection.remove learning_object
+    collection_repository.save_learning_objects @collection
 
     if request.xhr?
-      render json: {collections: @collection.learning_objects.as_json}
+      render json: {status: true}
     end
   end
 
diff --git a/app/controllers/learning_objects_controller.rb b/app/controllers/learning_objects_controller.rb
index ac12721c749a8c9e0ad7fb1a2a79631f7d3a4601..7d813085d557f243edc4b552fede99d4e433f2e7 100644
--- a/app/controllers/learning_objects_controller.rb
+++ b/app/controllers/learning_objects_controller.rb
@@ -81,7 +81,7 @@ class LearningObjectsController < ApplicationController
   def bookmarks
     bookmarks = current_user.bookmarks
     bookmarks.add @learning_object
-    collection_repository.save bookmarks
+    collection_repository.save_learning_objects bookmarks
 
     if request.xhr?
       render json: {id: params[:id]}
diff --git a/app/controllers/management/users_controller.rb b/app/controllers/management/users_controller.rb
index f8b9770f5562c484bec2a25b554bdd1947cf1ef0..48cd23d8bdb6d3567279befb67c382aa209a7f0d 100644
--- a/app/controllers/management/users_controller.rb
+++ b/app/controllers/management/users_controller.rb
@@ -3,6 +3,7 @@ class Management::UsersController < ManagementController
   before_action :set_roles, only: [:new, :edit]
 
   def index
+    #trocar por chamada ao repositorio
     @users = User.all
 
 
@@ -27,6 +28,7 @@ class Management::UsersController < ManagementController
   def create
 
     @user = User.new(user_params)
+    #trocar por chamada ao repositorio
     @user.roles.ids = Role.all.ids
 
     respond_to do |format|
@@ -63,6 +65,7 @@ class Management::UsersController < ManagementController
 
   def change_roles
     @user.roles = []
+    #trocar por chamada ao repositório
     @user.roles << Role.find_by_id(params[:role_id])
     respond_to do |format|
       format.html {redirect_to :back, notice: "Usuário #{@user.name} definido como #{@user.roles[0].name}"}
diff --git a/app/controllers/search_controller.rb b/app/controllers/search_controller.rb
index b16e7f87be2c1315615a97d119329bb05a083ddb..def79d77fea07a842051ac311d4723dc0d806ce4 100644
--- a/app/controllers/search_controller.rb
+++ b/app/controllers/search_controller.rb
@@ -4,10 +4,9 @@ class SearchController < ApplicationController
   def index
     @types = learning_object_repository.types
 
-    @subjects = ['Arte', 'Biologia', 'Ciências', 'Educação Física', 'Filosofia', 'Física', 'Geografia', 'História', 'Matemática', 'Português', 'Química', 'Sociologia']
+    @subjects = Subject.default_list
 
-    # 'Ensino Infantil' and 'Ensino Superior' will only exist after creation of new learning objects or update of the old ones
-    @school_levels = ['Ensino Infantil', 'Ensino Fundamental Inicial', 'Ensino Fundamental', 'Ensino Fundamental Final', 'Ensino Médio', 'Ensino Superior', 'Ensino Profissionalizante']
+    @school_levels = ['Educação Infantil', 'Ensino Fundamental', 'Ensino Médio']
   end
 
   def fetch
diff --git a/app/models/collection.rb b/app/models/collection.rb
index 7b259a766fbf0489efb3dd33cdd471ee6b625eee..5c7616b2bcb77c4b68cda125cf25c7bce023a8af 100644
--- a/app/models/collection.rb
+++ b/app/models/collection.rb
@@ -30,7 +30,7 @@ class Collection
   # After remove some learning object to collection, you must use CollectionRepository to persist
   # the changes.
   def remove(learning_object)
-    learning_objects.delete learning_object
+    learning_objects.delete_if{|x| x.id == learning_object.id}
   end
 
   def valid?
diff --git a/app/models/collections/context.rb b/app/models/collections/context.rb
new file mode 100644
index 0000000000000000000000000000000000000000..b2a971487086393f6f43b4b4924625dd5698b9bd
--- /dev/null
+++ b/app/models/collections/context.rb
@@ -0,0 +1,13 @@
+module Collections
+  class Context
+
+    def from
+      raise NotImplementedError, 'This method must be implemented'
+    end
+
+    def privacy
+      nil
+    end
+
+  end
+end
diff --git a/app/models/collections/public_context.rb b/app/models/collections/public_context.rb
new file mode 100644
index 0000000000000000000000000000000000000000..ba6b51acab6499e387e277d8b0a245e282baaadd
--- /dev/null
+++ b/app/models/collections/public_context.rb
@@ -0,0 +1,16 @@
+##
+# This class represents an specification for listing collections
+# The PublicContext class specify all collections with field privacy=public
+module Collections
+  class PublicContext < Context
+
+    def from
+      'Collection'
+    end
+
+    def privacy
+      'public'
+    end
+
+  end
+end
\ No newline at end of file
diff --git a/app/models/collections/user_context.rb b/app/models/collections/user_context.rb
new file mode 100644
index 0000000000000000000000000000000000000000..c9c3ea33745e0efaa7fe2f8428ddab63b1198773
--- /dev/null
+++ b/app/models/collections/user_context.rb
@@ -0,0 +1,13 @@
+module Collections
+  class UserContext < Context
+
+    def initialize(user)
+      @user = user
+    end
+
+    def from
+      sprintf "(select expand(in('BelongsTo')) from %s)", @user.rid
+    end
+
+  end
+end
diff --git a/app/models/collections/user_private_context.rb b/app/models/collections/user_private_context.rb
new file mode 100644
index 0000000000000000000000000000000000000000..96e7772c1f964a0140a79d9024f08f0d33d79fb1
--- /dev/null
+++ b/app/models/collections/user_private_context.rb
@@ -0,0 +1,12 @@
+##
+# This class represents an specification for listing collections
+# The PublicContext class specify all collections with field privacy=public
+module Collections
+  class UserPrivateContext < UserContext
+
+    def privacy
+      'private'
+    end
+
+  end
+end
\ No newline at end of file
diff --git a/app/models/collections/user_public_context.rb b/app/models/collections/user_public_context.rb
new file mode 100644
index 0000000000000000000000000000000000000000..1c5b02014753887eaa6c68f042102028765a0475
--- /dev/null
+++ b/app/models/collections/user_public_context.rb
@@ -0,0 +1,12 @@
+##
+# This class represents an specification for listing collections
+# The PublicContext class specify all collections with field privacy=public
+module Collections
+  class UserPublicContext < UserContext
+
+    def privacy
+      'public'
+    end
+
+  end
+end
\ No newline at end of file
diff --git a/app/models/learning_object.rb b/app/models/learning_object.rb
index da48bf42e04e35545cf6256bfdbaa3931cfae668..c121c02930f8f98bfc044b70100169cccc710644 100644
--- a/app/models/learning_object.rb
+++ b/app/models/learning_object.rb
@@ -24,18 +24,6 @@ class LearningObject
     @publisher ||= learning_object_repository.get_publisher(self)
   end
 
-  def like(user)
-    learning_object_repository.like user, self
-  end
-
-  def liked?(user)
-    learning_object_repository.liked? user, self
-  end
-
-  def dislike(user)
-    learning_object_repository.dislike user, self
-  end
-
   def subjects
     @subjects ||= learning_object_repository.get_subjects(self)
   end
@@ -48,6 +36,20 @@ class LearningObject
     get_metadata_value_of 'dc.subject.category'
   end
 
+  ## social actions
+  def like(user)
+    learning_object_repository.like user, self
+  end
+
+  def liked?(user)
+    learning_object_repository.liked? user, self
+  end
+
+  def dislike(user)
+    learning_object_repository.dislike user, self
+  end
+  ## end social actions
+
   def get_metadata_value_of key
     get_metadata_values_of(key).first
   end
@@ -61,6 +63,7 @@ class LearningObject
     values
   end
 
+  #TODO: move for Bitstream model
   def get_bitstream_retrievelink_of name
     values = @bitstreams.select { |v| v["bundleName"] == name }
     unless values.empty?
@@ -68,6 +71,7 @@ class LearningObject
     end
   end
 
+  #TODO: move for Bitstream model
   def get_bitstream_filename_of name
     values = @bitstreams.select { |v| v["bundleName"] == name }
     unless values.empty?
@@ -75,14 +79,21 @@ class LearningObject
     end
   end
 
+  #TODO: move for Bitstream model
   def get_retrievelink
     get_bitstream_retrievelink_of "ORIGINAL"
   end
 
+  #TODO: move for Bitstream model
   def get_filename
     get_bitstream_filename_of "ORIGINAL"
   end
 
+  def update_dynamic_fields
+    self.likes = learning_object_repository.count_likes(self)
+    self.views = learning_object_repository.count_views(self)
+    self
+  end
 
   private
 
diff --git a/app/models/subject.rb b/app/models/subject.rb
index 78f8f4cebec2cf62d315f5bbe7889c2c7ed904cb..ca0c0852fdc3d5d1ed5767fdf560eabf93c66640 100644
--- a/app/models/subject.rb
+++ b/app/models/subject.rb
@@ -13,4 +13,8 @@ class Subject
   def subject_repository
     Portalmec::Application.repository.for :subject
   end
+
+  def self.default_list
+    ['Arte', 'Biologia', 'Ciências', 'Educação Física', 'Filosofia', 'Física', 'Geografia', 'História', 'Matemática', 'Português', 'Química', 'Sociologia']
+  end
 end
diff --git a/app/models/user.rb b/app/models/user.rb
index 8d183743fcd9df34be35424c6db0668ca4a57a5f..7086b8c11a49d842f41ef12f77427cc806c50ed5 100644
--- a/app/models/user.rb
+++ b/app/models/user.rb
@@ -35,7 +35,7 @@ class User < ActiveRecord::Base
   validates_attachment_content_type :avatar, content_type: /\Aimage\/.*\Z/
 
   def collections
-    collection_repository.all self
+    collection_repository.all Collections::UserPrivateContext.new(self)
   end
 
   def bookmarks
diff --git a/app/repositories/orient_db/collection_repository.rb b/app/repositories/orient_db/collection_repository.rb
index c649a4e5e7edddf1c1367038fd586970b0af05b0..c1d6f2636feb0d61517fd756da61cb0bdb2d611f 100644
--- a/app/repositories/orient_db/collection_repository.rb
+++ b/app/repositories/orient_db/collection_repository.rb
@@ -4,18 +4,16 @@ module OrientDb
     include OrientDb::Methods::FinderMethods
 
     def build_object(args={})
-      Collection.new(map_object_hash(args))
+      CollectionBuilder.build_from_orientdb args
     end
 
-    def save(collection = Collection.new)
+    def save_learning_objects(collection = Collection.new)
       if collection.id.to_s.empty?
         raise NotPersistedRecordError, 'Before save learning objects to collection, you must persist using CollectionRepository::create method'
       end
 
-      collection.learning_objects.each do |learning_object|
-        query = sprintf("update %s add learning_objects = %s", collection.id, learning_object.id)
-        connection.command query
-      end
+      connection.command sprintf('update %s REMOVE learning_objects', collection.id)
+      connection.command sprintf("update %s ADD learning_objects = [%s] SET last_modified='#{Time.now()}'", collection.id, collection.learning_objects.map(&:id).join(','))
     end
 
     def get_number_of_collections
@@ -45,8 +43,11 @@ module OrientDb
       destroy_edge "BelongsTo", object.id, object.owner.rid
     end
 
-    def all(user)
-      query = sprintf("select * from (select expand(in('BelongsTo')) from %s) where name<>'Bookmarks'", user.rid)
+    ##
+    # Select all collections in context
+    def all(context = Collections::PublicContext.new)
+      query = sprintf("select * from %s where name<>'Bookmarks'", context.from)
+      query += sprintf("and privacy = '%s'", context.privacy) unless context.privacy.blank?
       build_objects connection.query(query)
     end
 
@@ -82,17 +83,6 @@ module OrientDb
 
     private
 
-    def map_object_hash(hash={})
-      {
-          created_at: hash['created_at'],
-          last_modified: hash['last_modified'],
-          learning_objects: hash['created_at'],
-          privacy: hash['privacy'],
-          name: hash['name'],
-          id: hash['@rid']
-      }
-    end
-
     def odb_class
       'Collection'
     end
diff --git a/app/repositories/orient_db/learning_object_repository.rb b/app/repositories/orient_db/learning_object_repository.rb
index 6fe5b5212d4c9a69ea267f4e268ad6512ad23e6e..96eb55b717ea2c4eb741e6ad30f304d42a7bc9ec 100644
--- a/app/repositories/orient_db/learning_object_repository.rb
+++ b/app/repositories/orient_db/learning_object_repository.rb
@@ -3,6 +3,7 @@ module OrientDb
     include OrientDb::Methods::EdgeMethods
     include RepositoriesProxy
 
+
     ##
     # Call this methods for increment the views number of a +learning_object+
     # You are creating the 'views' relation between an +user+ and +learning_object+
@@ -10,12 +11,30 @@ module OrientDb
     #
     # Nothing is returned
     def increment_views(user, learning_object)
+      values = {date: sanitize_orientdb_values(Time.now)}
+
+      # If doesn't exist edges from user and learning object, create it and increment attribute
       if !edge_exists? "Views", user.rid, learning_object.id
-        create_edge "Views", user.rid, learning_object.id
+        create_and_set_edge "Views", user.rid, learning_object.id, values
         learning_object.views = learning_object.views + 1
+      # If exists, update the date property of view
+      else
+        edge = get_edges "Views", "in", learning_object.id
+        edge = edge.first
+
+        puts edge
+        set_values_edge edge["@rid"], values
       end
     end
 
+    def download(user, learning_object)
+      download_edge_class = 'Downloads'
+      values = {date: sanitize_orientdb_values(Time.now)}
+
+      create_and_set_edge download_edge_class, user.rid, learning_object.id, values
+      learning_object.downloads = learning_object.downloads + 1
+    end
+
     ##
     # Call this method checks if the +user+ has a like relation with +learning_object+
     # This methods returns a boolean
@@ -34,8 +53,12 @@ module OrientDb
     def like(user, learning_object)
       like_edge_class = 'Likes'
 
+      # If not liked, like and set date
       if !liked? user, learning_object
-        create_edge like_edge_class, user.rid, learning_object.id
+        # The properties of edge. In this case, only date for edge 'Likes'
+        values = {date: sanitize_orientdb_values(Time.now)}
+
+        create_and_set_edge like_edge_class, user.rid, learning_object.id, values
         learning_object.likes = learning_object.likes + 1
       end
     end
@@ -211,19 +234,17 @@ module OrientDb
                     'score DESC'
                 end
 
-        query = "SELECT FROM LearningObject WHERE [name, description] LUCENE '#{qry}'"
-        query = query + " AND out('IsAbout') CONTAINS (name in ['" + params[:subject].join("','") + "'])" unless params[:subject].blank?
-        query = query + " AND out('IsAbout') CONTAINS (name in ['" + params[:school_level].join("','") + "'])" unless params[:school_level].blank?
+        query = "SELECT FROM LearningObject WHERE [name, description, author] LUCENE '#{qry}'"
+        query += " AND out('IsAbout') CONTAINS (name in ['" + params[:subject].join("','") + "'])" unless params[:subject].blank?
+        unless params[:school_level].blank?
+          params[:school_level] << 'Ensino Fundamental Inicial' << 'Ensino Fundamental Final' if params[:school_level].include? 'Ensino Fundamental'
+          query += " AND out('IsAbout') CONTAINS (name in ['" + params[:school_level].join("','") + "'])"
+        end
         query = "SELECT * FROM (" + query + ") WHERE " + fetch_types(params[:type]) unless params[:type].blank?
         query = "SELECT * FROM (" + query + ") WHERE " + fetch_year(params[:year]) unless params[:year].blank?
         query = "SELECT * FROM (" + query + ") ORDER BY #{order}"
         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']}
-        end
+        connection.query query, limit: 10000
       end
     end
 
@@ -263,6 +284,13 @@ module OrientDb
       qry
     end
 
+    def count_all
+      Rails.cache.fetch('learning_object/count_all', expires_in: 6.hours) do
+        result = connection.query 'SELECT COUNT(*) as count FROM LearningObject', limit: 1
+        result[0]["count"]
+      end
+    end
+
     def count_likes(learning_object)
       get_in_edges_count "Likes", learning_object.id
     end
@@ -271,20 +299,33 @@ module OrientDb
       get_in_edges_count "Views", learning_object.id
     end
 
+    def count_downloads(learning_object)
+      get_in_edges_count "Downloads", learning_object.id
+    end
+
     def max_likes
       Rails.cache.fetch('max_likes', expires_in: 6.hours) do
-        max = connection.command 'SELECT max(in("Likes").size()) FROM LearningObject'
-        max["result"][0]["max"]
+        get_max_from_edge("Likes","in")
       end
     end
 
     def max_views
       Rails.cache.fetch('max_views', expires_in: 6.hours) do
-        max = connection.command 'SELECT max(in("Views").size()) FROM LearningObject'
-        max["result"][0]["max"]
+        get_max_from_edge("Views","in")
       end
     end
 
+    def max_downloads
+      Rails.cache.fetch('max_downloads', expires_in: 6.hours) do
+        get_max_from_edge("Downloads","in")
+      end
+    end
+
+    def get_max_from_edge(edge_class, type)
+      max = connection.command "SELECT max(#{type}('#{edge_class}').size()) FROM LearningObject"
+      max["result"][0]["max"]
+    end
+
     private
 
     def accepted_properties
diff --git a/app/views/collections/_collection.html.erb b/app/views/collections/_collection.html.erb
index 6f630a4d6b09cd86cb89fd0f77df41c6361ae320..6beee53b085c514af50dc485271f0dc2a7ab490e 100644
--- a/app/views/collections/_collection.html.erb
+++ b/app/views/collections/_collection.html.erb
@@ -1,4 +1,14 @@
 <%= link_to collection do %>
-    <%= image_tag 'icons/collection', width: 24 %>
-    <%= collection.name %>
-<% end %>
\ No newline at end of file
+          <div class="col-sm-4">
+        <div>
+          <%= image_tag 'icons/collection', width: 250,height:150 %>
+        </div>
+        <div class="panel-body">
+          <h4 class="media-heading"><%= collection.name %></h4>
+          <span class="glyphicon glyphicon-eye-open">200&nbsp;</span>
+          <span class="glyphicon glyphicon-star">4,5&nbsp;</span>
+          <span>Por <a>Usuário&nbsp;</a></span>
+        </div>
+      </div>
+
+<% end %>
diff --git a/app/views/collections/_create.html.erb b/app/views/collections/_create.html.erb
index cd82e0f513265132c9e8ac418077c60e4d21d6eb..9f15495f7c01453a128fcf6d80ac7a4d7693ba3d 100644
--- a/app/views/collections/_create.html.erb
+++ b/app/views/collections/_create.html.erb
@@ -5,5 +5,7 @@
 </div>
 
 <div id="create_collection_popover_title" style="display: none">
+<div id="label_add_collection">
   Criar coleção
 </div>
+</div>
diff --git a/app/views/collections/_form.html.erb b/app/views/collections/_form.html.erb
index 87e3d99acbde775bfe2c39e472ad8dd3d23cbaa1..15c9d26572e1d2eb3ac950b419325d36634d5fe3 100644
--- a/app/views/collections/_form.html.erb
+++ b/app/views/collections/_form.html.erb
@@ -1,5 +1,7 @@
+<div id="create_collection_form">
 <%= form_for collection do |f| %>
     <%= f.label :name %>
     <%= f.text_field :name, required: true, style: 'width: 250px;' %>
     <%= f.submit %>
 <% end %>
+</div>
diff --git a/app/views/collections/_group.html.erb b/app/views/collections/_group.html.erb
index 0b3af44a684bc00e080136588e1fa5102174c9d9..4e3c131b68ebd4fa034be7b0ad9838dee256efca 100644
--- a/app/views/collections/_group.html.erb
+++ b/app/views/collections/_group.html.erb
@@ -8,4 +8,4 @@
       <% end %>
     </div>
   </div>
-</div>
\ No newline at end of file
+</div>
diff --git a/app/views/collections/show.html.erb b/app/views/collections/show.html.erb
index 8e1d227d64e893b5d5fe48618740671b40d866c6..2049dfb7d0d97ccc6b4e75c39acc162236256118 100644
--- a/app/views/collections/show.html.erb
+++ b/app/views/collections/show.html.erb
@@ -1,33 +1,102 @@
-
 <nav class="navigation navbar-default "><br/>
 
   <div class="container-fluid">
+    <div class="navbar-right">
+      <%= link_to '#' do %>
+          <span style="margin-right: 30px;"><button class="but but-shadow but-rc">EDITAR COLEÇÃO</button></span>
+      <% end %>
+    </div>
     <div class="navbar-header">
       <%= image_tag image_path("icons/collection.png"), class: "logo-image", size: "90x66" %>
-      <ul class="nav navbar-nav navbar-right"><h1>&nbsp;<b>Coleção 1</b></h1> <br/>
-        &nbsp;  <%= image_tag image_path("icons/square.png"), class: "logo-image", size: "20x20" %> 200 itens
+      <ul class="nav navbar-nav navbar-right collection-header" style="margin-left: 30px;">
+        <li><h2><%= @collection.name %></h2></li>
+        <li>
+          <%= image_tag image_path("icons/square.png"), class: "logo-image", size: "20x20" %>
+          <%= collection_length @collection %>
+        </li>
       </ul>
     </div>
   </div>
   <br/></nav>
 <nav class="navigation navbar-inverse ">
   <div class="container-fluid">
-    <a class="navbar-brand" href="#">x arquivo(s) selecionado(s)</a>
+    <a class="navbar-brand" href="#"><font color="FFFFFF">x arquivo(s) selecionado(s)</font></a>
     <ul class="nav navbar-nav navbar-right">
-      <li><a href="#"><%= image_tag image_path("icons/collection1.png"), class: "logo-image", size: "35x28" %> Salvar no
-        computador</a></li>
-      <li><a href="#"><%= image_tag image_path("icons/collection1.png"), class: "logo-image", size: "35x28" %> Copiar
-        para</a></li>
-      <li><a href="#"><%= image_tag image_path("icons/collection1.png"), class: "logo-image", size: "35x28" %> Mover
-        para</a></li>
-      <li>
-        <a href="#"><%= image_tag image_path("icons/collection1.png"), class: "logo-image", size: "35x28" %> Remover da
-          coleção</a></li>
+      <li class="set-align">
+        <a href="#"><span class="left-edge1"><%= image_tag image_path("icons/Download_01.png"), class: "logo-image", size: "35x35" %></span><font color="FFFFFF">
+          Salvar no <br>computador</font></br></a></li>
+      <li class="set-align">
+        <a href="#"><span class="left-edge1"><%= image_tag image_path("icons/Copiar_Seleção.png"), class: "logo-image", size: "35x35" %></span><font color="FFFFFF">
+          Copiar <br>para</font></br></a></li>
+      <li class="set-align">
+        <a href="#"><span class="left-edge1"><%= image_tag image_path("icons/Mover_Seleção.png"), class: "logo-image", size: "35x35" %></span><font color="FFFFFF">
+          Mover <br>para</font></br></a></li>
+      <li class="set-align">
+        <a href="#"><span class="left-edge1"><%= image_tag image_path("icons/Remover_da_Coleção_Seleção.png"), class: "logo-image", size: "35x35" %></span><font color="FFFFFF">
+          Remover da <br>coleção</font></br></a></li>
     </ul>
   </div>
 </nav>
 
 <div class="row mainpage-subjects">
   <br/>
-  <%= render_collection_objects @collection.learning_objects %>
-</div>
+
+  <% @collection.learning_objects.each do |learning_object| %>
+      <%= render learning_object, orientation: 'vertical' %>
+  <% end %>
+
+  <!--<div class="col-md-4">
+    <div class="thumb">
+      <input type="checkbox" class="chk " checked="checked" name="" value="0"/>
+      <%= image_tag image_path('learning-object-preview.png'), class: "logo" %>Obj1
+    </div>
+    <br/>
+
+    <div class="thumb">
+      <input type="checkbox" class="chk " checked="checked" name="" value="0"/>
+      <%= image_tag image_path('learning-object-preview.png'), class: "logo" %>Obj4
+    </div>
+    <br/>
+
+    <div class="thumb">
+      <input type="checkbox" class="chk " checked="checked" name="" value="0"/>
+      <%= image_tag image_path('learning-object-preview.png'), class: "logo" %>Obj7
+    </div>
+  </div>
+  <div class="col-md-4">
+    <div class="thumb">
+      <input type="checkbox" class="chk " checked="checked" name="" value="0"/>
+      <%= image_tag image_path('learning-object-preview.png'), class: "logo" %>Obj2
+    </div>
+    <br/>
+
+    <div class="thumb">
+      <input type="checkbox" class="chk " checked="checked" name="" value="0"/>
+      <%= image_tag image_path('learning-object-preview.png'), class: "logo" %>Obj5
+    </div>
+    <br/>
+
+    <div class="thumb">
+      <input type="checkbox" class="chk " checked="checked" name="" value="0"/>
+      <%= image_tag image_path('learning-object-preview.png'), class: "logo" %>Obj8
+    </div>
+  </div>
+  <div class="col-md-4">
+    <div class="thumb">
+      <input type="checkbox" class="chk " checked="checked" name="" value="0"/>
+      <%= image_tag image_path('learning-object-preview.png'), class: "logo" %>Obj3
+    </div>
+    <br/>
+
+    <div class="thumb">
+      <input type="checkbox" class="chk " checked="checked" name="" value="0"/>
+      <%= image_tag image_path('learning-object-preview.png'), class: "logo" %>Obj6
+    </div>
+    <br/>
+
+    <div class="thumb">
+      <input type="checkbox" class="chk " checked="checked" name="" value="0"/>
+      <%= image_tag image_path('learning-object-preview.png'), class: "logo" %>Obj9
+    </div>
+  </div> -->
+</div>
\ No newline at end of file
diff --git a/app/views/devise/registrations/edit.html.erb b/app/views/devise/registrations/edit.html.erb
index 40a46556efd05565a2cc952aa7743ec81ae32047..fcca50845cc927ff701f74c2e896881c7bd7fd29 100644
--- a/app/views/devise/registrations/edit.html.erb
+++ b/app/views/devise/registrations/edit.html.erb
@@ -9,10 +9,10 @@
             <div class="row">
             <div class="white-input">
               <div class="col-md-2"><br/>
-                <%= image_tag image_path('user-anon.png'), class: "logo top-padding-setup" %>
+                  <img id="pic" class="user-image" src="<%= current_user.avatar.url(:thumb) %>" alt="Foto do usuário"/>
               <!--  <%= link_to 'editar foto','#',{:onclick=>'HandleBrowseClick()',class:'link-setup'} %><br/>
                 <input type="file" id="browse" name="avatar" style="display: none" />-->
-              </br><span class=" btn-file"><%= link_to 'editar foto','#',class:'link-setup'%><%= f.file_field :avatar%></span>
+              </br><span class=" btn-file"><%= link_to 'editar foto','#', class:'link-setup'%><%= f.file_field :avatar, :onclick=>'HandleChangeImg()',:id => "avatar"%></span>
               </div>
               <div class="col-md-10">
                 <div style="text-align:left">
diff --git a/app/views/devise/registrations/new.html.erb b/app/views/devise/registrations/new.html.erb
index d1b073acf4338c592bc62c9e773bc322d7bbd62d..94219191ce1d9e61fdecd7626bd3e8e0fc754051 100644
--- a/app/views/devise/registrations/new.html.erb
+++ b/app/views/devise/registrations/new.html.erb
@@ -17,19 +17,19 @@
              <%= f.file_field :avatar%>
           </div>
         </font><br/></br>
-         <div class="col-md-10">
-             <p style="line-height: 170%">
-               <div class="col-md-10">
-                 <span class="pull-right">Nome:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+        <div class="col-md-10">
+            <p style="line-height: 170%">
+              <div class="col-md-10">
+                <span class="pull-right">Nome:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
                  <%= f.text_field :name, autofocus: true, required: true , style:"width:335px;"%></span><br/>
-             </p>
-             <p style="line-height: 15%"><br/></p>
-             <p style="line-height: 170%">
+            </p>
+            <p style="line-height: 15%"><br/></p>
+            <p style="line-height: 170%">
                  <span class="pull-right">Email:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
                  <%= f.email_field :email, :value => params[:email], required: true, style:"width:335px;" %></span><br/>
             </p>
-             <p style="line-height: 15%"><br/></p>
-             <p style="line-height: 170%">
+            <p style="line-height: 15%"><br/></p>
+            <p style="line-height: 170%">
                  <span class="pull-right">Senha:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
                    <%= f.password_field :password, autocomplete: "off", style:"width:335px;" %><br/>
                    <% if @minimum_password_length %>
@@ -42,24 +42,25 @@
               <div class="col-md-10">
                 <span class="pull-right">Confirmar senha:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
                  <%= f.password_field :password_confirmation, autocomplete: "off", style:"width:335px;"  %>
-               </span>
-             </div><br/><br/></p>
-        </div>
-         <div class="container-fluid">
-          <div class="col-md-offset-3 col-md-5">
-            <div class="center_data">
-              <div class="col-md-6">
-                <br/><span class="pull-right">Já possui conta?</span><br/>
-                  <span class="pull-right"><%= render "devise/shared/links"%></span>
-              </div>
-              <div class=" col-md-5">
-                <br/><span class="pull-right"><%= f.submit "Cadastrar", :class=> "but but-shadow but-rc"  %></span><br/>
+                </span>
+              </div><br/><br/></p>
+            </div>
+            <div class="container-fluid">
+              <div class="col-md-offset-3 col-md-5">
+                <div class="center_data">
+                  <div class="col-md-6">
+                    <br/><span class="pull-right">Já possui conta?</span><br/>
+                    <span class="pull-right"><%= render "devise/shared/links"%></span>
+                  </div>
+                  <div class=" col-md-5">
+                    <br/><span class="pull-right"><%= f.submit "Cadastrar", :class=> "but but-shadow but-rc"  %></span><br/>
+                  </div>
+                </div>
               </div>
             </div>
           </div>
         </div>
-     </div>
-   </div>
- </div>
+      </div>
+    </div>
 </div>
 <% end %>
diff --git a/app/views/devise/sessions/new.html.erb b/app/views/devise/sessions/new.html.erb
index 5ebf33bcdac285f2677b14cc45f10d5967d91049..6ec13f7f999921b0986c6655c90c79066e4d6135 100644
--- a/app/views/devise/sessions/new.html.erb
+++ b/app/views/devise/sessions/new.html.erb
@@ -48,7 +48,7 @@
        </div>
          <div class=" col-md-3">
            <span class="pull-left">
-             <%= f.submit "Entrar", class: "btn", style: ' width: 230px; color:white; background-color: #1676bc;' %>
+             <%= f.submit "Entrar", class: "btn-singin btn " %>
              </span>
            <br/>
          </div>
diff --git a/app/views/learning_objects/_add_to_collection_popover.html.erb b/app/views/learning_objects/_add_to_collection_popover.html.erb
index 144f518786c77caaacf9fc529b6abf1738e4438a..d26c583cf49cf913a2e5a9f900896f36887d61d1 100644
--- a/app/views/learning_objects/_add_to_collection_popover.html.erb
+++ b/app/views/learning_objects/_add_to_collection_popover.html.erb
@@ -2,6 +2,7 @@
   <% if collections.empty? %>
       <%= link_to 'Criar coleção', me_users_path %>
   <% else %>
+
       <ul>
         <% collections.each do |collection| %>
             <li>
@@ -9,5 +10,7 @@
             </li>
         <% end %>
       </ul>
+
+
   <% end %>
-</div>
\ No newline at end of file
+</div>
diff --git a/app/views/learning_objects/_collections_button.html.erb b/app/views/learning_objects/_collections_button.html.erb
index be15549ca0ff1950529da7cb8cd6407c4bf880c5..c35f0f4e2fc7f78ff0138fa05133a8a05a4ccb65 100644
--- a/app/views/learning_objects/_collections_button.html.erb
+++ b/app/views/learning_objects/_collections_button.html.erb
@@ -1,3 +1,3 @@
-<a tabindex="0" class="btn btn-default btn-xs add_to_collection" role="button" data-toggle="popover" data-placement="left" data-trigger="focus" title="Adicionar as coleções" data-poload="/learning_objects/<%= learning_object.id %>/collections.json">
+<a tabindex="0" class="btn btn-default btn-xs add_to_collection" role="button" data-toggle="popover" data-placement="left" title="Adicionar as coleções" data-loid="<%= learning_object.id %>" data-poload="/learning_objects/<%= ERB::Util.url_encode(learning_object.id) %>/collections.json">
   <span class="glyphicon glyphicon-list" aria-hidden="true"></span>
 </a>
diff --git a/app/views/learning_objects/show.html.erb b/app/views/learning_objects/show.html.erb
index 6d0809473f9fe3c6d36aa7af460cd00551087e77..8671edd849e48744044e059d03b6f62e80541d58 100644
--- a/app/views/learning_objects/show.html.erb
+++ b/app/views/learning_objects/show.html.erb
@@ -265,11 +265,12 @@
 <!-- /container -->
 
 <script type="text/javascript">
-  $('.view video').hover(function() {
-    if (this.hasAttribute("controls")) {
-      this.removeAttribute("controls")
-    } else {
+  $(".view video").hover(function(event) {
+    if (event.type === "mouseenter") {
       this.setAttribute("controls","controls")
     }
+    else if(event.type === "mouseleave") {
+      this.removeAttribute("controls")
+    }
   });
 </script>
diff --git a/app/views/search/index.html.erb b/app/views/search/index.html.erb
index f05dc2e30b57cb825a405c45516f0516ae425a20..05daf66b3ff69cc5ab6b41f9da91839d3e016743 100644
--- a/app/views/search/index.html.erb
+++ b/app/views/search/index.html.erb
@@ -1,7 +1,6 @@
 <%= content_for(:body_attributes) do %> data-no-turbolink <% end %>
 <div class="row">
   <div class="col-sm-3 search-sidebar" id="menu-left">
-    <!-- <h2>Busca Avançada</h2> -->
     <div class="media filters">
       <div class="media-left">
         <%= image_tag 'icons/filter.png', width:'40px', height:'40px' %>
@@ -22,239 +21,12 @@
         <% end %>
       </div>
 
-      <!-- <div class="dropdown-element">
-        <h4 class="dropdown">Arte<span class="caret caret-align-right"/></h4>
-        <div>
-          <select class="select-tag-container filter-subject" multiple="multiple">
-              <option value="Pinturas">Conjuntos</option>
-              <option value="Historia">História Da Arte</option>
-          </select>
-        </div>
-        <h4 class="dropdown">Biologia<span class="caret caret-align-right"/></h4>
-
-        <div>
-          <select class="select-tag-container filter-subject" multiple="multiple">
-            <option value="">Todos</option>
-            <option value="Plantas">Plantas</option>
-            <option value="">...</option>
-            <option value="">...</option>
-          </select>
-        </div>
-        <h4 class="dropdown">Ciências<span class="caret caret-align-right"/></h4>
-
-        <div>
-          <select class="select-tag-container filter-subject" multiple="multiple">
-            <option value="">Todos</option>
-            <optgroup label="Básico">
-              <option value="">...</option>
-              <option value="">...</option>
-            </optgroup>
-            <optgroup label="Avançada">
-              <option value="">...</option>
-            </optgroup>
-          </select>
-        </div>
-        <h4 class="dropdown">Educação Física<span class="caret caret-align-right"/></h4>
-
-        <div>
-          <select class="select-tag-container filter-subject" multiple="multiple">
-            <option value="">Todos</option>
-            <optgroup label="Básico">
-              <option value="">...</option>
-              <option value="">...</option>
-            </optgroup>
-            <optgroup label="Avançada">
-              <option value="">...</option>
-            </optgroup>
-          </select>
-        </div>
-        <h4 class="dropdown">Ensino Religioso<span class="caret caret-align-right"/></h4>
-
-        <div>
-          <select class="select-tag-container filter-subject" multiple="multiple">
-            <option value="">Todos</option>
-            <optgroup label="Básico">
-              <option value="">...</option>
-              <option value="">...</option>
-            </optgroup>
-            <optgroup label="Avançada">
-              <option value="">...</option>
-            </optgroup>
-          </select>
-        </div>
-        <h4 class="dropdown">Física<span class="caret caret-align-right"/></h4>
-
-        <div>
-          <select class="select-tag-container filter-subject" multiple="multiple">
-            <option value="">Todos</option>
-            <optgroup label="Básico">
-              <option value="">...</option>
-              <option value="">...</option>
-            </optgroup>
-            <optgroup label="Avançada">
-              <option value="">...</option>
-            </optgroup>
-          </select>
-        </div>
-        <h4 class="dropdown">Filosofia<span class="caret caret-align-right"/></h4>
-
-        <div>
-          <select class="select-tag-container filter-subject" multiple="multiple">
-            <option value="">Todos</option>
-            <optgroup label="Básico">
-              <option value="">...</option>
-              <option value="">...</option>
-            </optgroup>
-            <optgroup label="Avançada">
-              <option value="">...</option>
-            </optgroup>
-          </select>
-        </div>
-        <h4 class="dropdown">Geografia<span class="caret caret-align-right"/></h4>
-        <div>
-          <select class="select-tag-container filter-subject" multiple="multiple">
-            <option value="">Todos</option>
-            <optgroup label="Básico">
-              <option value="">...</option>
-              <option value="">...</option>
-            </optgroup>
-            <optgroup label="Avançada">
-              <option value="">...</option>
-            </optgroup>
-          </select>
-        </div>
-        <h4 class="dropdown">História<span class="caret caret-align-right"/></h4>
-
-        <div>
-          <select class="select-tag-container filter-subject" multiple="multiple">
-            <option value="">Todos</option>
-            <optgroup label="Básico">
-              <option value="">História do Brasil</option>
-              <option value="">...</option>
-            </optgroup>
-            <optgroup label="Avançada">
-              <option value="">...</option>
-            </optgroup>
-          </select>
-        </div>
-        <h4 class="dropdown"> Língua estrangeira moderna <span class="caret caret-align-right"/></h4>
-
-        <div>
-          <select class="select-tag-container filter-subject" multiple="multiple">
-            <option value="">Todos</option>
-            <optgroup label="Básico">
-              <option value="">...</option>
-              <option value="">...</option>
-            </optgroup>
-            <optgroup label="Avançada">
-              <option value="">...</option>
-            </optgroup>
-          </select>
-        </div>
-        <h4 class="dropdown">Língua Portuguesa<span class="caret caret-align-right"/></h4>
-        <div>
-          <select class="select-tag-container filter-subject" multiple="multiple">
-            <option value="">Todos</option>
-            <optgroup label="Básico">
-              <option value="">...</option>
-              <option value="">...</option>
-            </optgroup>
-            <optgroup label="Avançada">
-              <option value="">...</option>
-            </optgroup>
-          </select>
-        </div>
-        <h4 class="dropdown">Matemática<span class="caret caret-align-right"/></h4>
-
-        <div>
-          <select class="select-tag-container filter-subject" multiple="multiple">
-              <option value="Conjunto">Conjuntos</option>
-              <option value="Soma">Soma</option>
-              <option value="Algebra">Álgebra</option>
-          </select>
-        </div>
-        <h4 class="dropdown">Química<span class="caret caret-align-right"/></h4>
-
-        <div>
-          <select class="select-tag-container filter-subject" multiple="multiple">
-              <option value="">..</option>
-              <option value="">..</option>
-              <option value="">..</option>
-          </select>
-        </div>
-        <h4 class="dropdown">Sociologia<span class="caret caret-align-right"/></h4>
-
-        <div>
-          <select class="select-tag-container filter-subject" multiple="multiple">
-              <option value="">..</option>
-              <option value="">..</option>
-              <option value="">..</option>
-          </select>
-        </div>
-      </div> -->
-      <!--fim materias -->
       <% unless @types.blank? %>
       <h3 class="dropdown open">Conteúdo<span class="caret caret-align-right"/></h3><!--Tipo 1-->
       <div class="dropdown-element">
         <% @types.each do |type| %>
           <label class="label-checkbox"><input value="<%= type %>" name="filter-type" type="checkbox"> <%= type %></label><br/>
         <% end %>
-        <!-- <table class="tipo1" style="width:100%">
-          <tr>
-            <td><p>Mídia</p></td>
-            <td></td>
-          </tr>
-          <tr>
-            <td><input value="Fotos" name="filter-type" type="checkbox"> Fotos</td>
-            <td><input value="Imagens" name="filter-type" type="checkbox"> Imagens</td>
-          </tr>
-          <tr>
-            <td><input value="Áudio" name="filter-type" type="checkbox"> Áudio</td>
-            <td><input value="Vídeos" name="filter-type" type="checkbox"> Vídeos</td>
-          </tr>
-          <tr>
-            <td><input value="Apresentações Multimídia" name="filter-type" type="checkbox"> Apresentações Multimídia</td>
-            <td><input value="Apps" name="filter-type" type="checkbox"> Apps</td>
-          </tr>
-          <tr>
-            <td></td>
-            <td></td>
-          </tr>
-          <tr>
-            <td><p>Textos</p></td>
-            <td></td>
-          </tr>
-          <tr>
-            <td><input value="Anais" name="filter-type" type="checkbox"> Anais</td>
-            <td><input value="Artigos Web" name="filter-type" type="checkbox"> Artigos Web</td>
-          </tr>
-          <tr>
-            <td><input value="Capítulos de Livros" name="filter-type" type="checkbox"> Capítulos de Livros</td>
-            <td><input value="Dissertações" name="filter-type" type="checkbox"> Dissertações</td>
-          </tr>
-          <tr>
-            <td><input value="Livros" name="filter-type" type="checkbox"> Livros</td>
-            <td><input value="Monografias" name="filter-type" type="checkbox"> Monografias</td>
-          </tr>
-          <tr>
-            <td><input value="Periódicos" name="filter-type" type="checkbox"> Periódicos</td>
-            <td><input value="Revistas" name="filter-type" type="checkbox"> Revistas</td>
-          </tr>
-          <tr>
-            <td><input value="Teses" name="filter-type" type="checkbox"> Teses</td>
-          </tr>
-          <tr>
-            <td></td>
-            <td></td>
-          </tr>
-          <tr>
-            <td><p>Outros</p></td>
-            <td></td>
-          </tr>
-          <tr>
-            <td><input value="Planos de Aula" name="filter-type" type="checkbox"> Planos de Aula</td>
-          </tr>
-        </table> -->
       </div>
       <% end %>
 
@@ -266,54 +38,7 @@
         <% end %>
       </div>
     </div>
-    <!-- fim div class="nestedAccordion"-->
-
-  <!--  <div class="nestedAccordion">
-      <h3 class="dropdown">Ano de Publicação<span class="caret caret-align-right"/></h3>
-      <div class="dropdown-element">
-        <form id="filter-year">
-          <input type="radio" name="year" value="single" checked>Ano:<br/>
-          <input type="text" name="singleYear" size="8">
-          <br/>
-          <input type="radio" name="year" value="range">Intervalo:<br/>
-          <input type="text" name="startYear" size="8"> - <input type="text" name="endYear" size="8">
-          <br/><br/>
-          <button type="submit" class="btn btn-default">Pesquisar</button>
-        </form>
-      </div>
-
-      <h3 class="dropdown">Pesquisa Avançada<span class="caret caret-align-right"/></h3>
-      <form method="get" class="regex">
-        <div class="dropdown-element">
-          <table style="width:100%">
-            <tr>
-              <td>Todas estas palavras:</td>
-              <td><input type="text" name="all" ></td>
-            </tr>
-            <tr>
-              <td>A frase exata:</td>
-              <td><input type="text" name="exact" ></td>
-            </tr>
-            <tr>
-              <td>Qualquer uma destas palavras:</td>
-              <td><input type="text" name="any"></td>
-            </tr>
-            <tr>
-              <td>Nenhuma destas palavras:</td>
-              <td><input type="text" name="none"></td>
-            </tr>
-            <tr>
-              <td></td>
-              <td align="right"><br>
-                <button type="submit" class="btn btn-default regex-submit">Pesquisar</button>
-              </td>
-            </tr>
-          </table>
-        </div>
-      </form>
-    </div>-->
   </div>
-  <!--/span col sm-4-->
 
   <!-- search results -->
   <div class="col-sm-9">
@@ -326,7 +51,7 @@
         <div class="col-sm-6" style="text-align: right">
           <form method="get">
             <input type="hidden" name="qry" value="<%= params["qry"] %>">
-
+            <label class="result-info">ordenar por </label>
             <select class="order sort-dropdown" name="order">
               <option value="">relevância</option>
               <option value="author">autores</option>
diff --git a/app/views/shared/application/_faq.html.erb b/app/views/shared/application/_faq.html.erb
index f888fb86d476a0c3739e70ec4056438292ea64c9..c2379e78026558e597295dbfd09e16203700356a 100644
--- a/app/views/shared/application/_faq.html.erb
+++ b/app/views/shared/application/_faq.html.erb
@@ -1,33 +1,25 @@
 <div class="row">
   <div class="col-md-12">
     <div class="faq-row">
-      <h4 class="question">In hac habitasse platea dictumst?</h4>
-      <p class="answer">Phasellus condimentum consectetur purus, at pellentesque purus hendrerit a. Prae-
-      sent at arcu mauris. In at dolor eu erat mollis sollicitudin. Phasellus condimentum consectetur purus, at pellentesque purus hendrerit a. Prae-
-      sent at arcu mauris. In at dolor eu erat mollis sollicitudin. Phasellus condimentum consectetur purus, at pellentesque purus hendrerit a. Prae-
-      sent at arcu mauris. In at dolor eu erat mollis sollicitudin. Phasellus condimentum consectetur purus, at pellentesque purus hendrerit a. Prae-
-      sent at arcu mauris. In at dolor eu erat mollis sollicitudin. Phasellus condimentum consectetur purus, at pellentesque purus hendrerit a. Prae-
-      sent at arcu mauris. In at dolor eu erat mollis sollicitudin.</p>
+      <h4 class="question">Preciso me registrar para participar?</h4>
+      <p class="answer">Você pode consultar e usufruir conteúdos do Portal MEC sem ter cadastro.
+      Mas para colocar novos materiais é necessário se registrar.</p>
     </div>
     <div class="faq-row">
-      <h4 class="question">In hac habitasse platea dictumst?</h4>
-      <p class="answer">Phasellus condimentum consectetur purus, at pellentesque purus hendrerit a. Prae-
-      sent at arcu mauris. In at dolor eu erat mollis sollicitudin.</p>
+      <h4 class="question">Posso alterar meus dados cadastrais?</h4>
+      <p class="answer">Sim, para isso é preciso clicar na sua foto ou no
+      seu nome e depois em “Editar Perfil”.</p>
     </div>
     <div class="faq-row">
-      <h4 class="question">In hac habitasse platea dictumst?</h4>
-      <p class="answer">Phasellus condimentum consectetur purus, at pellentesque purus hendrerit a. Prae-
-      sent at arcu mauris. In at dolor eu erat mollis sollicitudin.</p>
+      <h4 class="question">Esqueci minha senha. E agora?</h4>
+      <p class="answer">Você pode clicar na página inicial, em “entre” e no formulário de entrada
+      existe um link “Esqueceu sua senha”, ou ainda você pode clicar na sua foto ou no seu nome e
+      depois em “Editar Perfil”, existe um outro link no início da página “Esqueci a senha”.</p>
     </div>
     <div class="faq-row">
-      <h4 class="question">In hac habitasse platea dictumst?</h4>
-      <p class="answer">Phasellus condimentum consectetur purus, at pellentesque purus hendrerit a. Prae-
-      sent at arcu mauris. In at dolor eu erat mollis sollicitudin.</p>
-    </div>
-    <div class="faq-row">
-      <h4 class="question">In hac habitasse platea dictumst?</h4>
-      <p class="answer">Phasellus condimentum consectetur purus, at pellentesque purus hendrerit a. Prae-
-      sent at arcu mauris. In at dolor eu erat mollis sollicitudin.</p>
+      <h4 class="question">Posso salvar um objeto educacional do portal em meu computador?</h4>
+      <p class="answer">Sim, existe a opção “salvar no computador” na página que mostra os detalhes
+      do objeto educacional.</p>
     </div>
   </div>
 </div>
diff --git a/app/views/shared/application/_footer.html.erb b/app/views/shared/application/_footer.html.erb
index 014c5cf79625e26d81357cb43b275a7678411891..3ce3c8bd655022f683f94ec814455a1159a15964 100644
--- a/app/views/shared/application/_footer.html.erb
+++ b/app/views/shared/application/_footer.html.erb
@@ -1,6 +1,6 @@
 <footer>
     <div class="footer-bar">
-        <div class="row">
+        <div class="container">
           <div class="col-md-offset-5 col-md-4">
             <div class="logo" >
               <%= link_to root_path do %>
@@ -10,7 +10,6 @@
               <% end %>
             </div>
           </div>
-        </div>
       </div>
 
   <div class="main">
@@ -18,29 +17,29 @@
       <div class="col-md-12" style="padding-top: 50px">
         <div class="logo-footer">
         <%= link_to 'http://www.brasil.gov.br/' do %>
-          <%= image_tag 'logo_brasil.png',class:'logos-footer' %>
+          <%= image_tag 'logo_brasil.png',class:'logos-footer normal' %>
         <% end %>
-      </div>
-      <div class="logo-footer">
+        </div>
+        <div class="logo-footer">
         <%= link_to 'http://www.fnde.gov.br/' do %>
-          <%= image_tag 'logo_ministerio.png',class:'logos-footer', style: ' margin-left: 18%;' %>
+          <%= image_tag 'logo_ministerio.png',class:'logos-footer ministerio-size' %>
         <% end %>
-      </div>
+        </div>
         <div class="logo-footer">
         <%= link_to 'http://www.fnde.gov.br/' do %>
-          <%= image_tag 'fnde.png', style: 'width: auto;	height: 100px; margin-top: -8%;' %>
+          <%= image_tag 'fnde.png', class:'fnde-size' %>
         <% end %>
         </div>
         <div class="logo-footer">
         <%= link_to 'http://www.ufpr.br/portalufpr/' do %>
-          <%= image_tag 'logo_ufpr.jpg',class:'logos-footer'%>
+          <%= image_tag 'logo_ufpr.jpg',class:'logos-footer normal'%>
         <% end %>
         </div>
         <div class="logo-footer">
         <%= link_to 'http://www.c3sl.ufpr.br/' do %>
-          <%= image_tag 'logo_c3.png', class:'logos-footer'%>
+          <%= image_tag 'logo_c3.png', class:'logos-footer normal'%>
         <% end %>
-      </div>
+        </div>
       </div>
     </div>
 
diff --git a/app/views/shared/application/_header.html.erb b/app/views/shared/application/_header.html.erb
index 189269e96931d1d56b22d4140085f330665d9c3a..92d16b03c01b9e78cff9ddf72c33c638020847d1 100644
--- a/app/views/shared/application/_header.html.erb
+++ b/app/views/shared/application/_header.html.erb
@@ -2,10 +2,9 @@
   <div class="barra-brasil">
     <div class="container">
       <div id="barra-brasil">
-        <ul id="menu-barra-temp" style="list-style:none;">
-          <li style="display:inline; float:left;padding-right:10px; margin-right:10px; border-right:1px solid #EDEDED">
-            <a href="http://brasil.gov.br" style="font-family:sans,sans-serif; text-decoration:none; color:white;">Portal
-              do Governo Brasileiro</a></li>
+        <ul>
+          <li>
+            <a href="http://brasil.gov.br" >Portal do Governo Brasileiro</a></li>
           <li>
             <a style="font-family:sans,sans-serif; text-decoration:none; color:white;" href="http://epwg.governoeletronico.gov.br/barra/atualize.html">Atualize
               sua Barra de Governo</a></li>
@@ -21,7 +20,6 @@
           <div class="logo" data-no-turbolink>
             <%= link_to root_path do %>
                 <%= image_tag image_path("logo.png"), class: "logo-image" %><br/>
-
                 <h3>CONTEÚDO EDUCACIONAL</h3>
             <% end %>
           </div>
@@ -37,17 +35,15 @@
           <div class="search-input">
             <form action="/search" method="get">
               <div class="input-group" id="search">
-                <input type="text" placeholder="buscar" class="form-control" name="query" id="main_search">
-
-
 
+                <input type="text" placeholder="buscar em <%= number_with_delimiter(@learning_object_count, delimiter: ".") %> objetos educacionais" class="form-control" name="query" id="main_search">
 
                 <div class="input-group-btn">
                   <button class="btn btn-default" type="submit"><i class="glyphicon glyphicon-search"></i></button>
                 </div>
               </div>
             </form>
-            <%= link_to 'busca avançada', search_path, class: 'search-label' %>
+
           </div>
         </div>
 
@@ -119,4 +115,4 @@
       </div>
     </div>
   </div>
-</header>
\ No newline at end of file
+</header>
diff --git a/app/views/shared/application/_links.html.erb b/app/views/shared/application/_links.html.erb
index afb8fcb9ca9dea64d3fb95f2f3e95b570f56b4c6..a9a27188266e7edda63cd5569edf85d884f0dd24 100644
--- a/app/views/shared/application/_links.html.erb
+++ b/app/views/shared/application/_links.html.erb
@@ -3,17 +3,17 @@
     <h4><b>Portais nacionais e internacionais</b></h4>
     <div class="row inner-column">
       <ul class="list-bullet col-md-12">
-        <li><a href="">Portais Educacionais</a></li>
-        <li><a href="">Museus</a></li>
-        <li><a href="">Bibliotecas</a></li>
-        <li><a href="">Revistas</a></li>
-        <li><a href="">Projetos Inovadores</a></li>
-        <li><a href="">Jornais</a></li>
-        <li><a href="">Projeto de escolas</a></li>
-        <li><a href="">Um computador por aluno</a></li>
-        <li><a href="">Geoprocessamento</a></li>
-        <li><a href="">Prêmio Professores do Brasil</a></li>
-        <li><a href="">Capacitação ProInfo Integrado</a></li>
+        <li><a href="http://webeduc.mec.gov.br/educacionais.php">Portais Educacionais</a></li>
+        <li><a href="https://www.museus.gov.br/">Museus</a></li>
+        <li><a href="http://www.dominiopublico.gov.br/pesquisa/PesquisaObraForm.jsp">Bibliotecas</a></li>
+        <li><a href="http://portaldoprofessor.mec.gov.br/link.html?categoria=14">Revistas</a></li>
+        <li><a href="http://portaldoprofessor.mec.gov.br/link.html?categoria=419">Projetos Inovadores</a></li>
+        <li><a href="http://jornaisescolares.dge.mec.pt/">Jornais</a></li>
+        <li><a href="http://portaldoprofessor.mec.gov.br/link.html?categoria=15">Projeto de escolas</a></li>
+        <li><a href="http://www.uca.gov.br">Um computador por aluno</a></li>
+        <li><a href="http://www.infoescola.com/cartografia/geoprocessamento/">Geoprocessamento</a></li>
+        <li><a href="http://premioprofessoresdobrasil.mec.gov.br/">Prêmio Professores do Brasil</a></li>
+        <li><a href="http://portaldoprofessor.mec.gov.br/link.html?categoria=17">Capacitação ProInfo Integrado</a></li>
       </ul>
     </div>
   </div>
@@ -21,11 +21,11 @@
     <h4><b>Visite também</b></h4>
     <div class="row inner-column">
       <ul class="list-bullet col-md-12">
-        <li><a href="">Domínio Público</a></li>
-        <li><a href="">E-ProInfo</a></li>
-        <li><a href="">Objetos Educacionais</a></li>
-        <li><a href="">Plataforma Freire</a></li>
-        <li><a href="">TV Escola</a></li>
+        <li><a href="http://www.dominiopublico.gov.br/pesquisa/PesquisaObraForm.jsp">Domínio Público</a></li>
+        <li><a href="http://e-proinfo.mec.gov.br">E-ProInfo</a></li>
+        <li><a href="http://objetoseducacionais2.mec.gov.br/">Objetos Educacionais</a></li>
+        <li><a href="http://freire.capes.gov.br/">Plataforma Freire</a></li>
+        <li><a href="http://tvescola.mec.gov.br/tve/home">TV Escola</a></li>
       </ul>
     </div>
   </div>
diff --git a/app/views/welcome/add_file.html.erb b/app/views/welcome/add_file.html.erb
index d7b64b59b66aa378834aa9d0555f34cd7b97b13e..2db342c9f5e2aacf218ce1e4645984cb452f0875 100644
--- a/app/views/welcome/add_file.html.erb
+++ b/app/views/welcome/add_file.html.erb
@@ -1,12 +1,13 @@
 
 
 
-<div class="container">
+<div class="container add-file">
   <div class="row">
     <div class="col-md-12">
         <div class="container-fluid" style="margin-left:10px;">
           <%= image_tag image_path('icons/upload.png'), class: "logo",style:"width:50px;" %>
-          <span class="pull-left"><h3 style="position:absolute; margin-left:60px;">Adicionando x arquivos</h3>
+          <span class="pull-left">
+            <h3 class="title">Adicionando x arquivos</h3>
       </div>
     </div><br/>
       <div class="grey-panel">
@@ -15,7 +16,7 @@
             <div class="white-input">
 
               <div class="col-md-3">
-                <%= image_tag image_path('icons/square.png'), style:"width:250px; height:150px;" %><br/>
+                <%= image_tag image_path('icons/square.png'),class:"logo-add-file" %><br/>
                 <%= link_to 'editar foto', search_path,style:'color: #1676bc;' %>
               </div>
               <div class="col-md-9">
@@ -23,28 +24,29 @@
                 <table style="margin-left:0px;">
                   <tr>
                   <td colspan="2">&nbsp;&nbsp;&nbsp;&nbsp;
-                    <input type="text" size="70px" style="height:30px;font-size:14pt; margin-bottom: 10px;" placeholder="Título do arquivo">
+                    <input class= "input-add-file" type="text" size="70px" style="height:30px;" placeholder="Título do arquivo">
                   </td>
                   </tr>
                   <tr>
                   <td colspan="2">&nbsp;&nbsp;&nbsp;&nbsp;
-                    <input type="text" size="70px" style="height:65px;font-size:14pt; margin-bottom: 10px;" placeholder="Descrição">
+                    <input class= "input-add-file" type="text" size="70px" style="height:65px;" placeholder="Descrição">
                     <br/>
                   </td>
                   </tr>
                   <tr>
-                  <td colspan="2">&nbsp;&nbsp;&nbsp;&nbsp;  <input type="text" size="70px" style="height:30px;font-size:14pt; margin-bottom: 10px;" placeholder="Assunto"></td>
+                  <td colspan="2">&nbsp;&nbsp;&nbsp;&nbsp;
+                    <input class= "input-add-file" type="text" size="70px" style="height:30px;" placeholder="Assunto"></td>
                   </tr>
                   <tr>
                   <td>
-                    <select style="width: 345px; margin-left:8px">
+                    <select class="select-add-file" style="margin-left:8px">
                        <option value="">Nível</option>
                      <option value="">..</option>
                     </select>
 
                   </td>
                   <td>
-                    <select style="width: 345px;">
+                    <select class="select-add-file">
                        <option value="">Adicionar à coleção</option>
                      <option value="">..</option>
                     </select>
@@ -52,7 +54,7 @@
                   </tr>
                   <tr>
                   <td colspan="2">
-                    <div class=" pull-right">  <%= button_to "Remover", new_user_registration_path,class: "btn btn-danger", style: 'margin-top: 15px; width: 130px; background-color: #FF2134;'%></div>
+                    <div class=" pull-right">  <%= button_to "Remover", new_user_registration_path,class: "btn btn-danger btn-remove "%></div>
                   </td>
                   </tr>
                 </table>
@@ -67,7 +69,7 @@
             <div class="pull-right">
               <input type="checkbox" >&nbsp;Li e concordo com os <%= link_to 'termos e condições', search_path, style:'color: #1676bc;' %> de upload e copyright<br/><br/>
                 <div class="pull-left"><div style= 'margin-left:130px;'><%= link_to 'Cancelar', search_path %></div></div>
-                <div class="pull-right"><%= button_to "Salvar", search_path,class: "btn pull-right", style: 'margin-top: -10px; width: 230px; color:white; background-color: #1676bc;'%></div>
+                <div class="pull-right"><%= button_to "Salvar", search_path,class: "btn pull-right add_file-save"%></div>
 
             </div>
           </div>
diff --git a/app/views/welcome/file_outside_user.html.erb b/app/views/welcome/file_outside_user.html.erb
new file mode 100644
index 0000000000000000000000000000000000000000..b5adff771d64abf4c00918ff9c7ff682694e9b3c
--- /dev/null
+++ b/app/views/welcome/file_outside_user.html.erb
@@ -0,0 +1,65 @@
+<!-- User visualizing profile from other user !-->
+
+<div class="grey-panel">
+  <div class="container-fluid">
+    <div class="navbar-right">
+        <span style="margin-right: 100px;"><button class="but but-shadow but-rc but-width">Seguir</button></span>
+        <br/><br/>
+          <div style="float: left;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<b>21</b><br/>seguindo</div>
+          <div style="float: right; WIDTH: 60%">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<b>30</b><br/>seguidores</div>
+          <divstyle="clear: both">
+    </div>
+    <div class="navbar-header">
+       <%= image_tag image_path("user-anon.png"), class: "logo-image",size: "80x60" %>
+       <ul class="nav navbar-nav navbar-right">
+           <h1>&nbsp;Usuário<br/></h1>
+                <p>&nbsp; &nbsp;Instituição nome</p>
+                <p>&nbsp; &nbsp;200 itens</p></ul>
+    </div>
+  </div>
+</div>
+<div class="row mainpage-subjects">
+  <h2><b>Arquivos de usuário</b></h2>
+  <p>200 itens</p>
+  <div class="col-md-4">
+    <div class="thumb">
+      <input type="checkbox" class="chk " checked="checked"  name="" value="0" />
+      <%= image_tag image_path('learning-object-preview.png'), class: "logo" %>Obj1
+    </div><br/>
+  </div>
+  <div class="col-md-4">
+    <div class="thumb">
+      <input type="checkbox" class="chk " checked="checked"  name="" value="0" />
+      <%= image_tag image_path('learning-object-preview.png'), class: "logo" %>Obj2
+    </div><br/>
+  </div>
+  <div class="col-md-4">
+    <div class="thumb">
+      <input type="checkbox" class="chk " checked="checked"  name="" value="0" />
+      <%= image_tag image_path('learning-object-preview.png'), class: "logo" %>Obj3
+    </div><br/>
+  </div>
+    <div style="float: right; WIDTH: 11%"><b>ver tudo</b><br/></div>
+</div>
+<div class="row mainpage-subjects">
+  <h2><b>Coleção de usuário</b><br/><br/></h2>
+  <p>Coleções Automáticas</p>
+  <div class="navbar-header">
+     <%= image_tag image_path("icons/collection.png"), class: "logo-image",size: "45x45" %>
+     <ul class="nav navbar-nav navbar-right">&nbsp;Arquivos de usuário<br/>
+        &nbsp;  <%= image_tag image_path("icons/square.png"), class: "logo-image",size: "10x10" %> 200</ul>
+   </div><br/><br/><br>
+  <p>Minhas Coleções</p>
+    <div class="navbar-header">
+      <%= image_tag image_path("icons/collection.png"), class: "logo-image",size: "45x45" %>
+      <ul class="nav navbar-nav navbar-right">&nbsp;Coleção 1<br/>
+        &nbsp;  <%= image_tag image_path("icons/square.png"), class: "logo-image",size: "10x10" %> 200</ul>
+    </div><br/><br/><br/>
+  <p>Coleções Sugeridas</p>
+  <div class="navbar-header">
+    <%= image_tag image_path("icons/collection.png"), class: "logo-image",size: "45x45" %>
+    <ul class="nav navbar-nav navbar-right">&nbsp;Coleção 1<br/>
+      &nbsp;  <%= image_tag image_path("icons/square.png"), class: "logo-image",size: "10x10" %> 200
+      &nbsp;  <%= image_tag image_path("user-anon.png"), class: "logo-image",size: "20x20" %> por Usuário &nbsp;</ul>
+  </div>
+</div>
diff --git a/app/views/welcome/index.html.erb b/app/views/welcome/index.html.erb
index 4999ce58200a4f14ee0906ca826154a57f8252a2..5eceb4e726c8fff7258f0965369359eb9f799188 100644
--- a/app/views/welcome/index.html.erb
+++ b/app/views/welcome/index.html.erb
@@ -49,16 +49,16 @@
   <div class="registration-banner col-md-3 col-md-offset-1 hidden-xs hidden-sm">
     <div class="panel-wrapper">
       <div style="padding: 30px; min-height: 400px;">
-        <div style="text-align:center"><%= image_tag image_path('icons/signup.png'), class: "logo",size: "140x140" %></div>
+        <div style="text-align:center"><%= image_tag image_path('icons/signup.png'), class: "logo icon1" %></div>
           <div style="text-align:center"><h2>Cadastre-se para aproveitar:</h2></div><br/>
-          <h4><div class="left-edge"><%= image_tag image_path('icons/star-gold.png'), class: "logo",size: "30x30" %></div><div class="right-edge">Avalie, comente e favorite arquivos.</div></h4>
-          <h4><div class="left-edge"><%= image_tag image_path('icons/foldergreen.png'), class: "logo",size: "30x30" %></div><div class="right-edge">Siga coleções e usuários.</div></h4>
-          <h4><div class="left-edge"><%= image_tag image_path('icons/downloadred.png'), class: "logo",size: "30x30" %></div><div class="right-edge">Crie coleções para rápido acesso e download.</div></h4>
+          <h4><div class="left-edge"><%= image_tag image_path('icons/star-gold.png'), class: "logo icon" %></div><div class="right-edge">Avalie, comente e favorite arquivos.</div></h4>
+          <h4><div class="left-edge"><%= image_tag image_path('icons/foldergreen.png'), class: "logo icon"%></div><div class="right-edge">Siga coleções e usuários.</div></h4>
+          <h4><div class="left-edge"><%= image_tag image_path('icons/downloadred.png'), class: "logo icon" %></div><div class="right-edge">Crie coleções para rápido acesso e download.</div></h4>
       </div>
       <div style="width: 100%; padding: 30px;">
         <%= form_tag(new_user_registration_path, method: 'get') do %>
         <%= text_field_tag :email, '', placeholder: "Seu email", class: 'form-control'%>
-        <div class="right-button"><%= button_to "Cadastrar", new_user_registration_path,class: "btn btn-danger", style: 'margin-top: 10px; width: 230px; background-color: #FF2134;'%></div>
+        <div class="right-button"><%= button_to "Cadastrar", new_user_registration_path,class: "btn btn-danger bt_cadastrar"%></div>
         <% end %>
       </div>
     </div>
diff --git a/app/workers/score_calculator_worker.rb b/app/workers/score_calculator_worker.rb
index 308f6c824517a931a201d0ce257af4cb8f4a6866..794b410b2567e51419b37d090016afd5f284c0e5 100644
--- a/app/workers/score_calculator_worker.rb
+++ b/app/workers/score_calculator_worker.rb
@@ -7,25 +7,55 @@ class ScoreCalculatorWorker
     object = learning_object_repository.find(rid)
 
     unless object.blank?
-      weights = {"thumbnail": 40, "likes": 20, "views": 10, "description": 30}
-
-      score = 0
-
-      # 40 points if it has thumbnail
-      score += weights[:thumbnail] unless object.thumbnail.blank?
-
-      # 1 point per like
-      likes = learning_object_repository.count_likes(object)
-      score += (likes / learning_object_repository.max_likes)*weights[:likes]  unless likes < 1
-
-      # 1 point per view
-      views = learning_object_repository.count_views(object)
-      score += (views / learning_object_repository.max_views)*weights[:views] unless views < 1
+        # Weights to score. Sum must be 1000
+        weights = {
+            "thumbnail": 250,
+            "description": 150,
+            "likes": 250,
+            "views": 150,
+            "downloads":200
+          }
+
+    score = 0
+
+    # 250 points if it has thumbnail
+    score += weights[:thumbnail] unless object.thumbnail.blank?
+
+    # 150 points if it has description
+    score += weights[:description] unless object.description.blank?
+
+    # range to 250 points, for normalized likes ( maxLikes/actualLike => [0..1] )
+    score += divide_by_max(
+                            learning_object_repository.count_likes(object),
+                            learning_object_repository.max_likes,
+                            weights[:likes]
+                          )
+
+    # range to 200 points, for normalized views ( maxLikes/actualLike => [0..1] )
+    score += divide_by_max(
+                            learning_object_repository.count_views(object),
+                            learning_object_repository.max_views,
+                            weights[:views]
+                          )
+
+    # downloads
+    score += divide_by_max(
+                            learning_object_repository.count_downloads(object),
+                            learning_object_repository.max_downloads,
+                            weights[:downloads]
+                          )
+
+    learning_object_repository.update_property(object, 'score', score)
+    end
+  end
 
-      # 30 points if it has description
-      score += weights[:description] unless object.description.blank?
+  private
 
-      learning_object_repository.update_property(object, 'score', score)
+  def divide_by_max(i, max, weight)
+    if (i > 0 && max > 0) && (i <= max)
+      (i / max) * weight
+    else
+      0
     end
   end
 end
diff --git a/config/routes.rb b/config/routes.rb
index 054234983348e916f3592dcb8e16a7f982f4ee88..23badfd30c83f49fae91b52eeea0f0c2e8b69387 100644
--- a/config/routes.rb
+++ b/config/routes.rb
@@ -53,6 +53,9 @@ Rails.application.routes.draw do
     member do
       # add a learning object for some collection
       post '/learning_object/:learning_object_id', as: :add_learning_object, action: :add_learning_object
+
+      # remove a learning object for some collection
+      delete '/learning_object/:learning_object_id', as: :destroy_learning_object, action: :remove_learning_object
     end
   end
 
@@ -70,8 +73,8 @@ Rails.application.routes.draw do
   get '/autocomplete' => 'search#autocomplete'
 
   get '/subject/:id' => 'welcome#subject', as: 'subject_index'
-  get '/collection' => 'welcome#collection'
   get '/add_file' => 'welcome#add_file'
   get '/signup' => 'welcome#signup'
   get '/follow_collection' => 'welcome#follow_collection'
+  get '/file_outside_user' => 'welcome#file_outside_user'
 end
diff --git a/lib/orient_db/methods/edge_methods.rb b/lib/orient_db/methods/edge_methods.rb
index 021dc9169707f5f0d0b335013aa3ef567327b72e..2f03e58b75fef03b81cba18b136a37175757e15d 100644
--- a/lib/orient_db/methods/edge_methods.rb
+++ b/lib/orient_db/methods/edge_methods.rb
@@ -23,6 +23,14 @@ module OrientDb
         connection.command "CREATE EDGE #{edge_class} FROM #{from_id} TO #{to_id}"
       end
 
+      def create_and_set_edge(edge_class, from_id, to_id, values={})
+        query = "CREATE EDGE #{edge_class} FROM #{from_id} TO #{to_id} CONTENT #{values.to_json}"
+
+        puts query
+        
+        connection.command query
+      end
+
       def destroy_edge(edge_class, from_id, to_id)
         connection.command "DELETE EDGE #{edge_class} FROM #{from_id} TO #{to_id}"
       end
@@ -31,6 +39,14 @@ module OrientDb
         connection.query sprintf("SELECT expand(%s('%s')) FROM %s", type, edge_class, vertex_id)
       end
 
+      def get_edges(edge_class, type, vertex_id)        
+        connection.query sprintf("SELECT * FROM #{edge_class} WHERE #{type} = #{vertex_id}")
+      end
+
+      def set_values_edge(edge_id, values={})
+        connection.command "UPDATE #{edge_id} CONTENT #{values.to_json}"     
+      end
+
       def edge_exists?(edge_class, from_id, to_id)
         edge = connection.query sprintf("SELECT outE('%s') FROM %s WHERE out('%s') CONTAINS %s", edge_class, from_id, edge_class, to_id)
         !edge.empty?
diff --git a/lib/tasks/thumbnail.rake b/lib/tasks/thumbnail.rake
index 33335851ed1d729f9b6148765d76187e618136a0..2381eb6ee51c94821bfeb001fdbceb429a66a560 100644
--- a/lib/tasks/thumbnail.rake
+++ b/lib/tasks/thumbnail.rake
@@ -2,7 +2,18 @@ namespace :thumbnail do
 
   desc "Generate Thumbnails"
   task :generate => :environment do
+    generate
+  end
+
+  namespace :generate do
+    task :force => :environment do
+      generate(true)
+    end
+  end
+
+  private
 
+  def generate(force = false)
     include RepositoriesProxy
 
     # Quantity of items fetched on each iteration
@@ -26,7 +37,7 @@ namespace :thumbnail do
         break if items.empty?
 
         items.each do |item|
-          ThumbnailGeneratorWorker.perform_async(item.id) if item.thumbnail.blank?
+          ThumbnailGeneratorWorker.perform_async(item.id) if (item.thumbnail.blank? || force)
         end
 
         # Increment offset, to get new items on next iteration
diff --git a/public/system/users/avatars/000/000/001/medium/singup.png b/public/system/users/avatars/000/000/001/medium/singup.png
new file mode 100644
index 0000000000000000000000000000000000000000..6c6e2aeed303d3100fab18a8450897c0c4752eac
Binary files /dev/null and b/public/system/users/avatars/000/000/001/medium/singup.png differ
diff --git a/public/system/users/avatars/000/000/001/original/singup.png b/public/system/users/avatars/000/000/001/original/singup.png
new file mode 100644
index 0000000000000000000000000000000000000000..083ccb7ad3cb5f5a4cda6f4efa515d0199754d5a
Binary files /dev/null and b/public/system/users/avatars/000/000/001/original/singup.png differ
diff --git a/public/system/users/avatars/000/000/001/thumb/singup.png b/public/system/users/avatars/000/000/001/thumb/singup.png
new file mode 100644
index 0000000000000000000000000000000000000000..c5315e556d067a1459c8f41c96b9dbcc9a6b9069
Binary files /dev/null and b/public/system/users/avatars/000/000/001/thumb/singup.png differ
diff --git a/test/repositories/orient_db/collection_repository_test.rb b/test/repositories/orient_db/collection_repository_test.rb
index 60862d4c15d2d139cc30e6ca29ee00c12bb0f13f..5e3745c5d92e31da1bd5ebcb68c630fa09e89eb6 100644
--- a/test/repositories/orient_db/collection_repository_test.rb
+++ b/test/repositories/orient_db/collection_repository_test.rb
@@ -7,23 +7,22 @@ class OrientDb::CollectionRepositoryTest < ActiveSupport::TestCase
     collection_repository = OrientDb::CollectionRepository.new odb_client
 
     assert_raise NotPersistedRecordError do
-      collection_repository.save Collection.new
+      collection_repository.save_learning_objects Collection.new
     end
   end
 
   test 'save learning objects to persisted collection' do
+    lo = LearningObject.new(id: '#14:14')
+    collection = Collection.new(id: '#12:12', learning_objects: [lo])
+
+    # setup orient4r mock
+    expected_mock_arg = sprintf("update %s add learning_objects = %s", collection.id, lo.id)
     odb_client = mock
-    odb_client.expect :command, nil
+    odb_client.expect :command, nil, [expected_mock_arg]
+
     collection_repository = OrientDb::CollectionRepository.new odb_client
-    collection_repository.save Collection.new(id: '#12:12')
-    assert !mock.verify
+    collection_repository.save_learning_objects collection
+    assert mock.verify
   end
 
-  #def save(collection = Collection.new)
-  #collection.learning_objects.each do |learning_object|
-  #  query = sprintf("update %s add learning_objects = %s", collection.id, learning_object.id)
-  # connection.command query
-  #end
-  #end
-
 end
\ No newline at end of file