diff --git a/app/workers/thumbnail_generator_worker.rb b/app/workers/thumbnail_generator_worker.rb
index a4c2d287d54112932f3e22369e6e1f6d406930c1..d84aedf5016787fdf9264efd84a4fb4a7813926c 100644
--- a/app/workers/thumbnail_generator_worker.rb
+++ b/app/workers/thumbnail_generator_worker.rb
@@ -2,42 +2,23 @@ class ThumbnailGeneratorWorker
 
   include Sidekiq::Worker
   include RepositoriesProxy
+  include Thumbnail::Creation
 
   def perform(learning_object_id)
 
-    root_dir = Rails.root.join('public')
-    thumbnails_dir = "/thumbnails"
-    create_dir("#{root_dir}#{thumbnails_dir}")
-
-    default_size = "600x600"
-    default_thumbnail = "#{thumbnails_dir}/default_thumbnail.jpg"
-
     item = learning_object_repository.find(learning_object_id)
-    retrieve_link = item.get_bitstream_retrievelink_of "ORIGINAL"
     filename = item.get_bitstream_filename_of "ORIGINAL"
 
-    unless accepted_formats.include? File.extname(filename)
-      item.thumbnail = default_thumbnail
-    else
-      begin
-        file = download_bitstream(retrieve_link,filename)
-      rescue
-        puts "ERROR!!!"
-      else
-        item_hash = encode_hash_from item.to_json
-
-        item.thumbnail = "#{thumbnails_dir}/#{item_hash}_#{default_size}.jpg"
-
-        thumbnail_output_path = "#{root_dir}#{item.thumbnail}"
-
-        if accepted_video_formats.include? File.extname(filename)
-          generate_video_thumbnail(file,default_size,thumbnail_output_path)
-        else
-          generate_image_thumbnail(file,default_size,thumbnail_output_path)
-        end
+    size = "360x360"
 
-        delete_downloaded_bitstream(file)
-      end
+    begin
+      retrieve_link = item.get_bitstream_retrievelink_of "ORIGINAL"
+      file = download_bitstream(retrieve_link,filename)
+    rescue
+      puts "ERROR!!! Some error occurred during file download."
+    else
+      item.thumbnail = generate_thumbnail(file,filename,size)
+      delete_downloaded_bitstream(file)
     end
 
     learning_object_repository.update_property(item,"thumbnail",item.thumbnail)
@@ -46,33 +27,6 @@ class ThumbnailGeneratorWorker
 
   private
 
-  def encode_hash_from(object)
-    Digest::SHA1.hexdigest object
-  end
-
-  def create_dir(target)
-    unless File.directory?(target)
-      FileUtils.mkdir(target, :mode => 0700)
-    end
-  end
-
-  def generate_video_thumbnail(input,geom,output)
-    movie = FFMPEG::Movie.new(input)
-    frame = (movie.duration * 25/100).floor
-    movie.screenshot(output,
-                      { seek_time: frame, resolution: geom },
-                      preserve_aspect_ratio: :width)
-  end
-
-  def generate_image_thumbnail(input,geom,output)
-    # Read the image and resize it. The `change_geometry' method
-    # computes the new image geometry and yields to a block. The
-    # return value of the block is the return value of the method.
-    img = Magick::Image.read(input)[0]
-    img.change_geometry!(geom) { |cols, rows| img.thumbnail! cols, rows }
-    img.write(output)
-  end
-
   def delete_downloaded_bitstream(file)
     File.unlink(file) if File.exist?(file)
   end
@@ -96,20 +50,4 @@ class ThumbnailGeneratorWorker
     return output_file
   end
 
-  def accepted_video_formats
-    [".mp4", ".wmv"]
-  end
-
-  def accepted_image_formats
-    [".jpg", ".gif", ".png"]
-  end
-
-  def accepted_other_formats
-    [".pdf"]
-  end
-
-  def accepted_formats
-    return accepted_video_formats + accepted_image_formats + accepted_other_formats
-  end
-
 end