diff --git a/blenderkit/__init__.py b/blenderkit/__init__.py
index 37e91a0ab4ab10b764af78761e73df857e2eacb6..574349b113fc85494ae2bb11751b6ccb1abe97c4 100644
--- a/blenderkit/__init__.py
+++ b/blenderkit/__init__.py
@@ -1841,7 +1841,7 @@ def register():
         type=BlenderKitUIProps)
 
     # MODELS
-    bpy.types.Scene.blenderkit_models = PointerProperty(
+    bpy.types.WindowManager.blenderkit_models = PointerProperty(
         type=BlenderKitModelSearchProps)
     bpy.types.Object.blenderkit = PointerProperty(  # for uploads, not now...
         type=BlenderKitModelUploadProps)
@@ -1849,7 +1849,7 @@ def register():
         type=BlenderKitRatingProps)
 
     # SCENES
-    bpy.types.Scene.blenderkit_scene = PointerProperty(
+    bpy.types.WindowManager.blenderkit_scene = PointerProperty(
         type=BlenderKitSceneSearchProps)
     bpy.types.Scene.blenderkit = PointerProperty(  # for uploads, not now...
         type=BlenderKitSceneUploadProps)
@@ -1857,7 +1857,7 @@ def register():
         type=BlenderKitRatingProps)
 
     # HDRs
-    bpy.types.Scene.blenderkit_HDR = PointerProperty(
+    bpy.types.WindowManager.blenderkit_HDR = PointerProperty(
         type=BlenderKitHDRSearchProps)
     bpy.types.Image.blenderkit = PointerProperty(  # for uploads, not now...
         type=BlenderKitHDRUploadProps)
@@ -1865,7 +1865,7 @@ def register():
         type=BlenderKitRatingProps)
 
     # MATERIALS
-    bpy.types.Scene.blenderkit_mat = PointerProperty(
+    bpy.types.WindowManager.blenderkit_mat = PointerProperty(
         type=BlenderKitMaterialSearchProps)
     bpy.types.Material.blenderkit = PointerProperty(  # for uploads, not now...
         type=BlenderKitMaterialUploadProps)
@@ -1873,7 +1873,7 @@ def register():
         type=BlenderKitRatingProps)
 
     # BRUSHES
-    bpy.types.Scene.blenderkit_brush = PointerProperty(
+    bpy.types.WindowManager.blenderkit_brush = PointerProperty(
         type=BlenderKitBrushSearchProps)
     bpy.types.Brush.blenderkit = PointerProperty(  # for uploads, not now...
         type=BlenderKitBrushUploadProps)
@@ -1930,11 +1930,11 @@ def unregister():
     tasks_queue.unregister()
     asset_bar_op.unregister()
 
-    del bpy.types.Scene.blenderkit_models
-    del bpy.types.Scene.blenderkit_scene
-    del bpy.types.Scene.blenderkit_HDR
-    del bpy.types.Scene.blenderkit_brush
-    del bpy.types.Scene.blenderkit_mat
+    del bpy.types.WindowManager.blenderkit_models
+    del bpy.types.WindowManager.blenderkit_scene
+    del bpy.types.WindowManager.blenderkit_HDR
+    del bpy.types.WindowManager.blenderkit_brush
+    del bpy.types.WindowManager.blenderkit_mat
 
     del bpy.types.Scene.blenderkit
     del bpy.types.Object.blenderkit
diff --git a/blenderkit/download.py b/blenderkit/download.py
index 4d7cfa5246442e42deb79ab28e55e83c22cd30f8..d0b6cc98c492efc70e66c607203aab47cf37cf1f 100644
--- a/blenderkit/download.py
+++ b/blenderkit/download.py
@@ -305,14 +305,14 @@ def append_asset(asset_data, **kwargs):  # downloaders=[], location=None,
     # how to do particle  drop:
     # link the group we are interested in( there are more groups in File!!!! , have to get the correct one!)
     s = bpy.context.scene
-
+    wm = bpy.context.window_manager
     user_preferences = bpy.context.preferences.addons['blenderkit'].preferences
 
     if user_preferences.api_key == '':
         user_preferences.asset_counter += 1
 
     if asset_data['assetType'] == 'scene':
-        sprops = s.blenderkit_scene
+        sprops = wm.blenderkit_scene
 
         scene = append_link.append_scene(file_names[0], link=sprops.append_link == 'LINK', fake_user=False)
         # print('scene appended')
@@ -330,7 +330,7 @@ def append_asset(asset_data, **kwargs):  # downloaders=[], location=None,
 
     if asset_data['assetType'] == 'model':
         downloaders = kwargs.get('downloaders')
-        sprops = s.blenderkit_models
+        sprops = wm.blenderkit_models
         # TODO this is here because combinations of linking objects or appending groups are rather not-usefull
         if sprops.append_method == 'LINK_COLLECTION':
             sprops.append_link = 'LINK'
@@ -468,7 +468,7 @@ def append_asset(asset_data, **kwargs):  # downloaders=[], location=None,
 
     elif asset_data['assetType'] == 'material':
         inscene = False
-        sprops = s.blenderkit_mat
+        sprops = wm.blenderkit_mat
 
         for m in bpy.data.materials:
             if m.blenderkit.id == asset_data['id']:
diff --git a/blenderkit/search.py b/blenderkit/search.py
index 940375fa935083fc9dd2d38f04208d2966d73254..ed295e796915bdf59f830e2e9c94e4dead7a5fef 100644
--- a/blenderkit/search.py
+++ b/blenderkit/search.py
@@ -447,7 +447,6 @@ def search_timer():
                 wm[search_name + ' orig'] = rdata
                 wm['search results orig'] = rdata
 
-                # load_previews()
                 if len(result_field) < ui_props.scrolloffset or not (thread[0].params.get('get_next')):
                     # jump back
                     ui_props.scrolloffset = 0
@@ -1090,7 +1089,7 @@ def build_query_common(query, props):
 def build_query_model():
     '''use all search input to request results from server'''
 
-    props = bpy.context.scene.blenderkit_models
+    props = bpy.context.window_manager.blenderkit_models
     query = {
         "asset_type": 'model',
         # "engine": props.search_engine,
@@ -1127,7 +1126,7 @@ def build_query_model():
 def build_query_scene():
     '''use all search input to request results from server'''
 
-    props = bpy.context.scene.blenderkit_scene
+    props = bpy.context.window_manager.blenderkit_scene
     query = {
         "asset_type": 'scene',
         # "engine": props.search_engine,
@@ -1140,7 +1139,7 @@ def build_query_scene():
 def build_query_HDR():
     '''use all search input to request results from server'''
 
-    props = bpy.context.scene.blenderkit_HDR
+    props = bpy.context.window_manager.blenderkit_HDR
     query = {
         "asset_type": 'hdr',
         # "engine": props.search_engine,
@@ -1151,7 +1150,7 @@ def build_query_HDR():
 
 
 def build_query_material():
-    props = bpy.context.scene.blenderkit_mat
+    props = bpy.context.window_manager.blenderkit_mat
     query = {
         "asset_type": 'material',
 
@@ -1206,7 +1205,7 @@ def build_query_texture():
 
 
 def build_query_brush():
-    props = bpy.context.scene.blenderkit_brush
+    props = bpy.context.window_manager.blenderkit_brush
 
     brush_type = ''
     if bpy.context.sculpt_object is not None:
@@ -1317,38 +1316,39 @@ def search(category='', get_next=False, author_id=''):
     search_start_time = time.time()
     # mt('start')
     scene = bpy.context.scene
+    wm = bpy.context.window_manager
     ui_props = scene.blenderkitUI
 
     props = utils.get_search_props()
     if ui_props.asset_type == 'MODEL':
-        if not hasattr(scene, 'blenderkit'):
+        if not hasattr(wm, 'blenderkit_models'):
             return;
         query = build_query_model()
 
     if ui_props.asset_type == 'SCENE':
-        if not hasattr(scene, 'blenderkit_scene'):
+        if not hasattr(wm, 'blenderkit_scene'):
             return;
         query = build_query_scene()
 
     if ui_props.asset_type == 'HDR':
-        if not hasattr(scene, 'blenderkit_HDR'):
+        if not hasattr(wm, 'blenderkit_HDR'):
             return;
         query = build_query_HDR()
 
     if ui_props.asset_type == 'MATERIAL':
-        if not hasattr(scene, 'blenderkit_mat'):
+        if not hasattr(wm, 'blenderkit_mat'):
             return;
 
         query = build_query_material()
 
     if ui_props.asset_type == 'TEXTURE':
-        if not hasattr(scene, 'blenderkit_tex'):
+        if not hasattr(wm, 'blenderkit_tex'):
             return;
         # props = scene.blenderkit_tex
         # query = build_query_texture()
 
     if ui_props.asset_type == 'BRUSH':
-        if not hasattr(scene, 'blenderkit_brush'):
+        if not hasattr(wm, 'blenderkit_brush'):
             return;
         query = build_query_brush()
 
@@ -1464,7 +1464,7 @@ def search_update(self, context):
         # return here since writing into search keywords triggers this update function once more.
         return
 
-    print('search update search')
+    # print('search update search')
     search()
 
 
diff --git a/blenderkit/ui.py b/blenderkit/ui.py
index f402de51c9fdb4eb1cfc336e9d0592baa748fd99..a21cff91fcd4803f399145d822d71b0c159cba22 100644
--- a/blenderkit/ui.py
+++ b/blenderkit/ui.py
@@ -818,7 +818,7 @@ def mouse_raycast(context, mx, my):
     # rote = mathutils.Euler((0, 0, math.pi))
     randoffset = math.pi
     if has_hit:
-        props = bpy.context.scene.blenderkit_models
+        props = bpy.context.window_manager.blenderkit_models
         up = Vector((0, 0, 1))
 
         if props.perpendicular_snap:
@@ -874,7 +874,7 @@ def floor_raycast(context, mx, my):
         object = None
         matrix = None
         snapped_rotation = snapped_normal.to_track_quat('Z', 'Y').to_euler()
-        props = bpy.context.scene.blenderkit_models
+        props = bpy.context.window_manager.blenderkit_models
         if props.randomize_rotation:
             randoffset = props.offset_rotation_amount + math.pi + (
                     random.random() - 0.5) * props.randomize_rotation_amount
@@ -1680,7 +1680,8 @@ class AssetDragOperator(bpy.types.Operator):
                 target_object = object.name
                 target_slot = object.active_material_index
                 self.snapped_location = object.location
-            elif self.object_name is not None:
+            elif self.object_name is not None and self.has_hit:
+
                 # first, test if object can have material applied.
                 object = bpy.data.objects[self.object_name]
                 # this enables to run Bring to scene automatically when dropping on a linked objects.
@@ -1696,9 +1697,7 @@ class AssetDragOperator(bpy.types.Operator):
                     # create final mesh to extract correct material slot
                     depsgraph = bpy.context.evaluated_depsgraph_get()
                     object_eval = object.evaluated_get(depsgraph)
-                    temp_mesh = object_eval.to_mesh()
-                    target_slot = temp_mesh.polygons[self.face_index].material_index
-                    object_eval.to_mesh_clear()
+
                     if object.type == 'MESH':
                         temp_mesh = object_eval.to_mesh()
                         target_slot = temp_mesh.polygons[self.face_index].material_index
@@ -1780,10 +1779,10 @@ class AssetDragOperator(bpy.types.Operator):
         self.mouse_y = event.mouse_region_y
 
         #are we dragging already?
-        self.drag = False
         drag_threshold = 10
-        if abs(self.start_mouse_x - self.mouse_x) > drag_threshold and \
-                abs(self.start_mouse_y - self.mouse_y) > drag_threshold:
+        if not self.drag and \
+                (abs(self.start_mouse_x - self.mouse_x) > drag_threshold or \
+                abs(self.start_mouse_y - self.mouse_y) > drag_threshold):
             self.drag = True
             #turn off asset bar here, shout start again after finishing drag drop.
             ui_props.turn_off = True
@@ -1801,7 +1800,7 @@ class AssetDragOperator(bpy.types.Operator):
             ui_props.dragging = False
             return {'CANCELLED'}
 
-        sprops = bpy.context.scene.blenderkit_models
+        sprops = bpy.context.window_manager.blenderkit_models
         if event.type == 'WHEELUPMOUSE':
             sprops.offset_rotation_amount += sprops.offset_rotation_step
             return {'RUNNING_MODAL'}
@@ -1841,7 +1840,7 @@ class AssetDragOperator(bpy.types.Operator):
             return {'FINISHED'}
         self.steps +=1
 
-        return {'PASS_THROUGH'}
+        return {'RUNNING_MODAL'}
 
     def invoke(self, context, event):
         if context.area.type == 'VIEW_3D':
@@ -1884,6 +1883,7 @@ class AssetDragOperator(bpy.types.Operator):
             bpy.context.window.cursor_set("NONE")
             ui_props = bpy.context.scene.blenderkitUI
             ui_props.dragging = True
+            self.drag = False
             context.window_manager.modal_handler_add(self)
             return {'RUNNING_MODAL'}
         else:
diff --git a/blenderkit/ui_panels.py b/blenderkit/ui_panels.py
index c763ba9ec3bee136a907e60fe027e867315468ac..de4a5f9bb64ea28d6637628875ba83f2667b7d0b 100644
--- a/blenderkit/ui_panels.py
+++ b/blenderkit/ui_panels.py
@@ -198,7 +198,8 @@ def draw_panel_hdr_upload(self, context):
 
 def draw_panel_hdr_search(self, context):
     s = context.scene
-    props = s.blenderkit_HDR
+    wm = context.window_manager
+    props = wm.blenderkit_HDR
 
     layout = self.layout
     row = layout.row()
@@ -211,7 +212,7 @@ def draw_panel_hdr_search(self, context):
 
 def draw_thumbnail_upload_panel(layout, props):
     update = False
-    tex = autothumb.get_texture_ui(props.thumbnail, '.upload_preview')
+    tex = autothumb.get_texture_ui(props.thumbnail, 'upload_preview')
     if not tex or not tex.image:
         return
     box = layout.box()
@@ -346,9 +347,9 @@ def draw_assetbar_show_hide(layout, props):
 
 
 def draw_panel_model_search(self, context):
-    s = context.scene
+    wm = bpy.context.window_manager
+    props = wm.blenderkit_models
 
-    props = s.blenderkit_models
     layout = self.layout
 
     row = layout.row()
@@ -377,8 +378,8 @@ def draw_panel_model_search(self, context):
 
 
 def draw_panel_scene_search(self, context):
-    s = context.scene
-    props = s.blenderkit_scene
+    wm = bpy.context.window_manager
+    props = wm.blenderkit_scene
     layout = self.layout
     # layout.label(text = "common search properties:")
     row = layout.row()
@@ -677,7 +678,7 @@ def draw_panel_material_upload(self, context):
 
 
 def draw_panel_material_search(self, context):
-    wm = context.scene
+    wm = context.window_manager
     props = wm.blenderkit_mat
 
     layout = self.layout
@@ -713,8 +714,8 @@ def draw_panel_brush_upload(self, context):
 
 
 def draw_panel_brush_search(self, context):
-    s = context.scene
-    props = s.blenderkit_brush
+    wm = context.window_manager
+    props = wm.blenderkit_brush
 
     layout = self.layout
     row = layout.row()
@@ -773,9 +774,9 @@ class VIEW3D_PT_blenderkit_advanced_model_search(Panel):
         return ui_props.down_up == 'SEARCH' and ui_props.asset_type == 'MODEL'
 
     def draw(self, context):
-        s = context.scene
+        wm = bpy.context.window_manager
 
-        props = s.blenderkit_models
+        props = wm.blenderkit_models
         layout = self.layout
         layout.separator()
 
@@ -842,9 +843,8 @@ class VIEW3D_PT_blenderkit_advanced_material_search(Panel):
         return ui_props.down_up == 'SEARCH' and ui_props.asset_type == 'MATERIAL'
 
     def draw(self, context):
-        s = context.scene
-
-        props = s.blenderkit_mat
+        wm = context.window_manager
+        props = wm.blenderkit_mat
         layout = self.layout
         layout.separator()
 
@@ -892,8 +892,8 @@ class VIEW3D_PT_blenderkit_categories(Panel):
         draw_panel_categories(self, context)
 
 def draw_scene_import_settings(self, context):
-    s = context.scene
-    props = s.blenderkit_scene
+    wm = bpy.context.window_manager
+    props = wm.blenderkit_scene
     layout = self.layout
     layout.prop(props, 'switch_after_append')
     # layout.label(text='Import method:')
@@ -920,11 +920,12 @@ class VIEW3D_PT_blenderkit_import_settings(Panel):
         layout = self.layout
 
         s = context.scene
+        wm = bpy.context.window_manager
         ui_props = s.blenderkitUI
 
         if ui_props.asset_type == 'MODEL':
             # noinspection PyCallByClass
-            props = s.blenderkit_models
+            props = wm.blenderkit_models
             layout.prop(props, 'randomize_rotation')
             if props.randomize_rotation:
                 layout.prop(props, 'randomize_rotation_amount')
@@ -937,7 +938,7 @@ class VIEW3D_PT_blenderkit_import_settings(Panel):
             row.prop(props, 'append_method', expand=True, icon_only=False)
 
         if ui_props.asset_type == 'MATERIAL':
-            props = s.blenderkit_mat
+            props = wm.blenderkit_mat
             layout.prop(props, 'automap')
             layout.label(text='Import method:')
             row = layout.row()
@@ -947,7 +948,7 @@ class VIEW3D_PT_blenderkit_import_settings(Panel):
             draw_scene_import_settings(self,context)
 
         if ui_props.asset_type == 'HDR':
-            props = s.blenderkit_HDR
+            props = wm.blenderkit_HDR
 
         if ui_props.asset_type in ['MATERIAL', 'MODEL', 'HDR']:
             layout.prop(props, 'resolution')
@@ -1162,8 +1163,8 @@ class BlenderKitWelcomeOperator(bpy.types.Operator):
             random_search = random.choice(random_searches)
             ui_props.asset_type = random_search[0]
 
-            bpy.context.scene.blenderkit_mat.search_keywords = ''#random_search[1]
-            bpy.context.scene.blenderkit_mat.search_keywords = '+is_free:true+score_gte:1000+order:-created'#random_search[1]
+            bpy.context.window_manager.blenderkit_mat.search_keywords = ''#random_search[1]
+            bpy.context.window_manager.blenderkit_mat.search_keywords = '+is_free:true+score_gte:1000+order:-created'#random_search[1]
             # search.search()
         return {'FINISHED'}
 
@@ -1395,7 +1396,10 @@ class OBJECT_MT_blenderkit_asset_menu(bpy.types.Menu):
 
 def numeric_to_str(s):
     if s:
-        s = str(round(s))
+        if s<1:
+            s = str(round(s,1))
+        else:
+            s = str(round(s))
     else:
         s = '-'
     return s
@@ -2197,17 +2201,18 @@ def header_search_draw(self, context):
     if preferences.search_in_header:
         layout = self.layout
         s = bpy.context.scene
+        wm = bpy.context.window_manager
         ui_props = s.blenderkitUI
         if ui_props.asset_type == 'MODEL':
-            props = s.blenderkit_models
+            props = wm.blenderkit_models
         if ui_props.asset_type == 'MATERIAL':
-            props = s.blenderkit_mat
+            props = wm.blenderkit_mat
         if ui_props.asset_type == 'BRUSH':
-            props = s.blenderkit_brush
+            props = wm.blenderkit_brush
         if ui_props.asset_type == 'HDR':
-            props = s.blenderkit_HDR
+            props = wm.blenderkit_HDR
         if ui_props.asset_type == 'SCENE':
-            props = s.blenderkit_scene
+            props = wm.blenderkit_scene
 
         # the center snap menu is in edit and object mode if tool settings are off.
         if context.space_data.show_region_tool_header == True or context.mode[:4] not in ('EDIT', 'OBJE'):
diff --git a/blenderkit/utils.py b/blenderkit/utils.py
index c16bc017a35231581f771e6b426613c125e69280..d5affc7e8842e1851c9e2ae772d54dfa2e27e929 100644
--- a/blenderkit/utils.py
+++ b/blenderkit/utils.py
@@ -154,36 +154,37 @@ def get_selected_replace_adepts():
 
 def get_search_props():
     scene = bpy.context.scene
+    wm = bpy.context.window_manager
     if scene is None:
         return;
     uiprops = scene.blenderkitUI
     props = None
     if uiprops.asset_type == 'MODEL':
-        if not hasattr(scene, 'blenderkit_models'):
+        if not hasattr(wm, 'blenderkit_models'):
             return;
-        props = scene.blenderkit_models
+        props = wm.blenderkit_models
     if uiprops.asset_type == 'SCENE':
-        if not hasattr(scene, 'blenderkit_scene'):
+        if not hasattr(wm, 'blenderkit_scene'):
             return;
-        props = scene.blenderkit_scene
+        props = wm.blenderkit_scene
     if uiprops.asset_type == 'HDR':
-        if not hasattr(scene, 'blenderkit_HDR'):
+        if not hasattr(wm, 'blenderkit_HDR'):
             return;
-        props = scene.blenderkit_HDR
+        props = wm.blenderkit_HDR
     if uiprops.asset_type == 'MATERIAL':
-        if not hasattr(scene, 'blenderkit_mat'):
+        if not hasattr(wm, 'blenderkit_mat'):
             return;
-        props = scene.blenderkit_mat
+        props = wm.blenderkit_mat
 
     if uiprops.asset_type == 'TEXTURE':
-        if not hasattr(scene, 'blenderkit_tex'):
+        if not hasattr(wm, 'blenderkit_tex'):
             return;
         # props = scene.blenderkit_tex
 
     if uiprops.asset_type == 'BRUSH':
-        if not hasattr(scene, 'blenderkit_brush'):
+        if not hasattr(wm, 'blenderkit_brush'):
             return;
-        props = scene.blenderkit_brush
+        props = wm.blenderkit_brush
     return props
 
 
@@ -630,8 +631,8 @@ def scale_uvs(ob, scale=1.0, pivot=Vector((.5, .5))):
 
 # map uv cubic and switch of auto tex space and set it to 1,1,1
 def automap(target_object=None, target_slot=None, tex_size=1, bg_exception=False, just_scale=False):
-    s = bpy.context.scene
-    mat_props = s.blenderkit_mat
+    wm = bpy.context.window_manager
+    mat_props = wm.blenderkit_mat
     if mat_props.automap:
         tob = bpy.data.objects[target_object]
         # only automap mesh models
@@ -813,7 +814,7 @@ def user_is_owner(asset_data=None):
 def asset_from_newer_blender_version(asset_data):
     bver = bpy.app.version
     aver = asset_data['sourceAppVersion'].split('.')
-    print(aver,bver)
+    # print(aver,bver)
     bver_f = bver[0] + bver[1] * .01 + bver[2] * .0001
     aver_f = int(aver[0]) + int(aver[1]) * .01 + int(aver[2]) * .0001
     return aver_f>bver_f