diff --git a/render_povray/render.py b/render_povray/render.py
index e225942c683c91152325dcb053d6d328e3626086..ed567784c446c83c327ae808610f81580788834a 100644
--- a/render_povray/render.py
+++ b/render_povray/render.py
@@ -39,6 +39,7 @@ def splitExt(path):
     else:
         return (path[dotidx:]).upper().replace('.','')
 
+
 def imageFormat(imgF):
     ext = ""
     ext_orig = splitExt(imgF)
@@ -120,18 +121,26 @@ def path_image(image):
 
 ##############end find image texture 
 
+def splitHyphen(name):
+    hyphidx = name.find('-')
+    if hyphidx == -1:
+        return name
+    else:
+        return (name[hyphidx:]).replace('-','')
 
 ##############safety string name material
 def safety(name, Level):
     # Level=1 is for texture with No specular nor Mirror reflection
     # Level=2 is for texture with translation of spec and mir levels for when no map influences them
     # Level=3 is for texture with Maximum Spec and Mirror 
+
     try:
         if int(name) > 0:
             prefix='shader'
     except:
         prefix = ''
     prefix='shader_'
+    name = splitHyphen(name)
     if Level == 2:
         return prefix+name
     elif Level == 1:
@@ -139,6 +148,7 @@ def safety(name, Level):
     elif Level == 3:
         return prefix+name+'1'#used for 1 of specular map
 
+
 ##############end safety string name material
 ##############################EndSF###########################
 
@@ -162,7 +172,7 @@ def write_pov(filename, scene=None, info_callback=None):
         while name in nameSeq:
             name = '%s_%.3d' % (name_orig, i)
             i += 1
-
+        name = splitHyphen(name)
         return name
 
     def writeMatrix(matrix):
@@ -190,7 +200,7 @@ def write_pov(filename, scene=None, info_callback=None):
             if material.pov_refraction_type=="0":
                 pov_fake_caustics = False
                 pov_photons_refraction = False
-                pov_photons_reflection = True
+                pov_photons_reflection = True #should respond only to proper checkerbox
             elif material.pov_refraction_type=="1":
                 pov_fake_caustics = True
                 pov_photons_refraction = False
@@ -203,7 +213,7 @@ def write_pov(filename, scene=None, info_callback=None):
             if material.pov_caustics_enable:
                 if pov_fake_caustics:
                     file.write('\tcaustics %.3g\n' % material.pov_fake_caustics_power)
-                if material.pov_photons_refraction:
+                if pov_photons_refraction:
                     file.write('\tdispersion %.3g\n' % material.pov_photons_dispersion) #Default of 1 means no dispersion
             #TODO        
             # Other interior args
@@ -389,7 +399,7 @@ def write_pov(filename, scene=None, info_callback=None):
         camera = scene.camera
         
         # DH disabled for now, this isn't the correct context
-        active_object = None #bpy.context.active_object # MR
+        active_object = None #bpy.context.active_object # does not always work  MR
         matrix = camera.matrix_world
         focal_point = camera.data.dof_distance
 
@@ -586,13 +596,22 @@ def write_pov(filename, scene=None, info_callback=None):
 
             file.write('}\n')
 
+    objectNames = {}
+    DEF_OBJ_NAME = 'Default'
     def exportMeshs(scene, sel):
 
         ob_num = 0
 
         for ob in sel:
             ob_num += 1
-
+#############################################
+            #Generating a name for object just like materials to be able to use it (baking for now or anything else).
+            if sel:
+                name_orig = ob.name
+            else:
+                name_orig = DEF_OBJ_NAME
+            name = objectNames[name_orig] = uniqueName(bpy.path.clean_name(name_orig), objectNames)
+#############################################
             if ob.type in ('LAMP', 'CAMERA', 'EMPTY', 'META', 'ARMATURE', 'LATTICE'):
                 continue
 
@@ -630,7 +649,7 @@ def write_pov(filename, scene=None, info_callback=None):
             quadCount = sum(1 for f in faces_verts if len(f) == 4)
 
             # Use named declaration to allow reference e.g. for baking. MR
-            file.write('#declare %s=\n' % ob.name) 
+            file.write('#declare %s=\n' % name) 
             file.write('mesh2 {\n')
             file.write('\tvertex_vectors {\n')
             file.write('\t\t%s' % (len(me.vertices))) # vert count
@@ -1050,7 +1069,7 @@ def write_pov(filename, scene=None, info_callback=None):
 
             writeMatrix(matrix)
             file.write('}\n')
-            file.write('%s\n' % ob.name) # Use named declaration to allow reference e.g. for baking. MR
+            file.write('%s\n' % name) # Use named declaration to allow reference e.g. for baking. MR
 
             bpy.data.meshes.remove(me)
 
@@ -1211,7 +1230,6 @@ def write_pov_ini(filename_ini, filename_pov, filename_image):
     y = int(render.resolution_y * render.resolution_percentage * 0.01)
 
     file = open(filename_ini, 'w')
-
     file.write('Input_File_Name="%s"\n' % filename_pov)
     file.write('Output_File_Name="%s"\n' % filename_image)
 
@@ -1245,7 +1263,7 @@ def write_pov_ini(filename_ini, filename_pov, filename_image):
  
     else:
         file.write('Antialias=0\n')
-
+    file.write('Version=3.7')
     file.close()