diff --git a/app/assets/javascripts/application/autocomplete.js b/app/assets/javascripts/application/autocomplete.js
index 3f8ef4723bcf61fac02b1415f67b87af70f4aa81..916308ff14e66d624ff82f32d0e6a014686baa1b 100644
--- a/app/assets/javascripts/application/autocomplete.js
+++ b/app/assets/javascripts/application/autocomplete.js
@@ -1,16 +1,24 @@
 $(document).ready(function() {
-	$('#search input[name=query]').autocomplete({
-		minLength: 3,
-		source: function (request, response) {
-			$.ajax({
-				url: "/autocomplete",
-				data: { query: request.term, search_class: $('select[name="search_class"]').val()},
-				dataType: "json",
-				success: response,
-				error: function () {
-					response([]);
-				}
-			});
-		}
-	});
+    $('#search input[name=query]').autocomplete({
+        minLength: 3,
+        source: function (request, response) {
+            $.ajax({
+                url: "/autocomplete",
+                data: { query: request.term, search_class: $('select[name="search_class"]').val()},
+                dataType: "json",
+                success: response,
+                error: function () {
+                    response([]);
+                }
+            });
+        },
+        select: function(event, ui) {
+            window.location.href = ui.item.url;
+        }
+    }).data("uiAutocomplete")._renderItem = function(ul, item) {
+        return $("<li></li>")
+            .append("<img class='autocomplete' src='" + item.thumbnail + "'>")
+            .append("<a>"+ item.name +"</a>" )
+            .appendTo(ul);
+    };
 });
diff --git a/app/assets/stylesheets/application/search.scss b/app/assets/stylesheets/application/search.scss
index 454ef0a722430e915d11f6eb59ff17c3548e9364..25c956f57d11948fc789e2751467998b794e2666 100644
--- a/app/assets/stylesheets/application/search.scss
+++ b/app/assets/stylesheets/application/search.scss
@@ -2,6 +2,13 @@
   background-color:green;
 }
 
+.autocomplete {
+  width: 56px;
+  height: 32px;
+  border: 0;
+  margin-right: 8px;
+}
+
 .search-sidebar {
   margin-top: 40px;
   display: none;
diff --git a/app/controllers/management/complaints_controller.rb b/app/controllers/management/complaints_controller.rb
index cbfeefcd732eb8db0361ccb6debf23e79857e9c5..da3a5ba121945bd27310bbdac0c32ee39e646e4a 100644
--- a/app/controllers/management/complaints_controller.rb
+++ b/app/controllers/management/complaints_controller.rb
@@ -1,7 +1,7 @@
 class Management::ComplaintsController < ManagementController
   before_action :set_complaint, only: :destroy
   def index
-    @complaints = Complaint.all
+    @complaints = Complaint.includes(:complaint_reason, :complaintable, :user)
 
     @date = params[:period]
     @date_limit  = case @date.to_i
diff --git a/app/controllers/search_controller.rb b/app/controllers/search_controller.rb
index bc28a13207a36dea813cc6971aa23c551b5608a1..c4d440da9d34846f709ee52d9c8e3f84655b7e88 100644
--- a/app/controllers/search_controller.rb
+++ b/app/controllers/search_controller.rb
@@ -1,5 +1,7 @@
 class SearchController < ApplicationController
   
+  include LearningObjectsHelper
+
   def index
 
     @types = LearningObject.object_types
@@ -18,9 +20,9 @@ class SearchController < ApplicationController
     when "LearningObject"
       @result = LearningObject.search params[:query], where: where_hash(params), order: lo_order_hash(params), page: params[:page] || 1, per_page: 10
     when "Collection"
-      @result = Collection.search params[:query], where: {privacy: "public"}, order: col_order_hash(params), page: params[:page]
+      @result = Collection.search params[:query], where: {privacy: "public"}, order: col_order_hash(params), page: params[:page] || 1, per_page: 10
     when "User"
-      @result = User.search params[:query], order: user_order_hash(params), page: params[:page]
+      @result = User.search params[:query], order: user_order_hash(params), page: params[:page] || 1, per_page: 10
     else 
       raise "Wrong search class parameter"
     end
@@ -29,32 +31,52 @@ class SearchController < ApplicationController
   end
 
   def autocomplete
+    response = []
     case params[:search_class]
     when "LearningObject"
-      render json: LearningObject.search(params[:query], {
+      los = LearningObject.search(params[:query], {
         fields: ['name^5', 'description', 'author'],
         limit: 10,
-        load: false,
         misspellings: { below: 5 }
-      }).map(&:name)
+      })
+      los.each do |lo|
+        hash = {}
+        hash["name"] = lo.name
+        hash["thumbnail"] = "/assets/"+learning_object_thumbnail(lo)
+        hash["url"] = url_for([lo, :only_path => false])
+        response <<  hash
+      end
     when "Collection"
-      render json: Collection.search(params[:query], {
+      cols = Collection.search(params[:query], {
         where: {privacy: "public"},
         fields: ['name^5', 'description', 'owner'],
         limit: 10,
-        load: false,
         misspellings: { below: 5 }
-      }).map(&:name)
+      })
+      cols.each do |col|
+        hash = {}
+        hash["name"] = col.name
+        hash["thumbnail"] = "/assets/icons/collection"
+        hash["url"] = url_for([col, :only_path => false])
+        response <<  hash
+      end
     when "User"
-      render json: User.search(params[:query], {
+      users = User.search(params[:query], {
         fields: ['name'],
         limit: 10,
-        load: false,
         misspellings: { below: 5 }
-      }).map(&:name)
+      })
+      users.each do |user|
+        hash = {}
+        hash["name"] = user.name
+        hash["thumbnail"] = user.avatar.url(:thumb)
+        hash["url"] = url_for([user, :only_path => false])
+        response <<  hash
+      end
     else 
       raise "Wrong search class parameter"
     end
+    render json: response
   end
 
   private
diff --git a/app/helpers/learning_objects_helper.rb b/app/helpers/learning_objects_helper.rb
index 391b3e7512b7c99e723391e98391d32e1c3c5cc0..4dfa144645e250f21132b62d805478ab5a3faa95 100644
--- a/app/helpers/learning_objects_helper.rb
+++ b/app/helpers/learning_objects_helper.rb
@@ -9,7 +9,7 @@ module LearningObjectsHelper
       when 'PDF' then
         "<iframe src=\"/pdfjs/web/viewer.html?file=#{learning_object.retrieve_link }\" style=\"border: 0 \" width=\"125%\" height=\"280\" frameborder=\"0\" scrolling=\"no\"></iframe>".html_safe
       else
-        learning_object_thumbnail learning_object, "large"
+        image_tag learning_object_thumbnail(learning_object, "large"), alt: learning_object_title(learning_object), class: "thumbnail"
     end
   end
 
@@ -44,7 +44,7 @@ module LearningObjectsHelper
     else
       thumbnail = learning_object.thumbnail
     end
-    image_tag thumbnail, alt: learning_object_title(learning_object), class: "thumbnail"
+    thumbnail
   end
 
   def learning_object_title(learning_object)
diff --git a/app/models/learning_object.rb b/app/models/learning_object.rb
index 43517dfcd1f84b0981546fc419f9929f381b3ca2..d46c184a6df0d945d822a919ccc1b53a4cb8521e 100644
--- a/app/models/learning_object.rb
+++ b/app/models/learning_object.rb
@@ -9,7 +9,7 @@ class LearningObject < ActiveRecord::Base
   has_many :collection_items, as: :collectionable
   has_many :collections, through: :collection_items
   has_many :complaints
-  has_many :attachments, class_name: 'LearningObject::Attachment', dependent: :destroy
+  has_many :attachments, class_name: 'LearningObject::Attachment', dependent: :destroy, autosave: true # autosave to allow import
 
   belongs_to :publisher, polymorphic: true
   belongs_to :language
diff --git a/app/services/dspace/learning_object_importer.rb b/app/services/dspace/learning_object_importer.rb
index b1bcb5942fd75c41a82c73e24771ab3a66254348..a5d20a8cadc9e6449c53fec3ab8562b0342e1d33 100644
--- a/app/services/dspace/learning_object_importer.rb
+++ b/app/services/dspace/learning_object_importer.rb
@@ -5,14 +5,24 @@ class Dspace::LearningObjectImporter
   end
 
   def import
+    items = []
+
     @items.each do |item|
       next if item_exists? item
 
-      learning_object = LearningObjectBuilder.build_from_dspace item
-      create_attachments learning_object, item.bit_streams if learning_object.save
+      learning_object = LearningObjectBuilder.build_from_dspace(item)
+
+      next if learning_object.blank?
+
+      create_attachments(learning_object, item.bit_streams)
+
+      items << learning_object
 
       yield(learning_object) if block_given?
     end
+
+    LearningObject.import items, recursive: true
+
   end
 
   private
@@ -20,7 +30,7 @@ class Dspace::LearningObjectImporter
   def create_attachments(learning_object, bitstreams)
     bitstreams = JSON.parse bitstreams if bitstreams.class == String
     bitstreams.each do |bitstream|
-      learning_object.attachments.create ::Dspace::AttachmentMapper.call(bitstream)
+      learning_object.attachments.new ::Dspace::AttachmentMapper.call(bitstream)
     end
   end
 
diff --git a/app/views/learning_objects/_learning_object_horizontal.erb b/app/views/learning_objects/_learning_object_horizontal.erb
index b4b8f123dbd917baf50a748c4d743292a728fe69..6538596f77807cc636867b04e0d45c400a518539 100644
--- a/app/views/learning_objects/_learning_object_horizontal.erb
+++ b/app/views/learning_objects/_learning_object_horizontal.erb
@@ -4,7 +4,7 @@
     <!-- <div class="col-md-5"> -->
       <div class="learning-object-thumbnail">
         <%= link_to link do
-          learning_object_thumbnail learning_object
+          image_tag learning_object_thumbnail(learning_object), alt: learning_object_title(learning_object), class: "thumbnail"
         end %>
 
         <% if user_signed_in? %>
diff --git a/app/views/learning_objects/_learning_object_vertical.erb b/app/views/learning_objects/_learning_object_vertical.erb
index 58aada1502d2ae275eced9af1e1f714b09abab78..0e22d59fb5bad7cd65ea3d632fdd7f209ffac1f6 100644
--- a/app/views/learning_objects/_learning_object_vertical.erb
+++ b/app/views/learning_objects/_learning_object_vertical.erb
@@ -2,7 +2,7 @@
   <div class="panel">
     <div class="learning-object-thumbnail">
       <%= link_to learning_object_path(id: learning_object.id) do
-        learning_object_thumbnail learning_object
+        image_tag learning_object_thumbnail(learning_object), alt: learning_object_title(learning_object), class: "thumbnail"
       end %>
       <% if user_signed_in? %>
           <%= render 'learning_objects/actions_buttons', learning_object: learning_object %>
diff --git a/lib/tasks/dspace.rake b/lib/tasks/dspace.rake
index f43eb6d64a8ddc364e00ea83b7bd2de832174e86..fbbd55194009fc82f8cef93d5ac89d680b83ac38 100644
--- a/lib/tasks/dspace.rake
+++ b/lib/tasks/dspace.rake
@@ -11,7 +11,7 @@ namespace :dspace do
     logger.level = Log::DatabaseLogger::CREATE
 
     # Quantity of items fetched on each iteration
-    limit = 1000
+    limit = 500
 
     # Start point from where items will be fetched
     offset = 0
@@ -48,7 +48,7 @@ namespace :dspace do
         # Initializes new LearningObjects
         # and saves them on LearningObjects's repository
         importer = Dspace::LearningObjectImporter.new(dspace_items)
-        importer.import { |learning_object| logger.create "Imported: #{learning_object.id_dspace} -> #{learning_object.id}" }
+        importer.import
       end
     end
     logger.close