diff --git a/add_mesh_ant_landscape.py b/add_mesh_ant_landscape.py
index e287030dd9aa30c1b89e2008fac65ac33ca8d2ed..d7ca08d043c77b2190465ff2a9f4847cedb2edd2 100644
--- a/add_mesh_ant_landscape.py
+++ b/add_mesh_ant_landscape.py
@@ -94,8 +94,8 @@ def create_mesh_object(context, verts, edges, faces, name):
     # Update mesh geometry after adding stuff.
     mesh.update()
 
-    import add_object_utils
-    return add_object_utils.object_data_add(context, mesh, operator=None)
+    from bpy_extras import object_utils
+    return object_utils.object_data_add(context, mesh, operator=None)
 
 # A very simple "bridge" tool.
 # Connects two equally long vertex rows with faces.
diff --git a/add_mesh_extra_objects/add_mesh_3d_function_surface.py b/add_mesh_extra_objects/add_mesh_3d_function_surface.py
index e415813abda7fd3a43a57c04c03585d1060e39d9..7b0bd8c0a2a6f1b50cae1dbc8d822e0e1903c795 100644
--- a/add_mesh_extra_objects/add_mesh_3d_function_surface.py
+++ b/add_mesh_extra_objects/add_mesh_3d_function_surface.py
@@ -140,8 +140,8 @@ def create_mesh_object(context, verts, edges, faces, name):
     # Update mesh geometry after adding stuff.
     mesh.update()
 
-    import add_object_utils
-    return add_object_utils.object_data_add(context, mesh, operator=None)
+    from bpy_extras import object_utils
+    return object_utils.object_data_add(context, mesh, operator=None)
 
 
 # A very simple "bridge" tool.
diff --git a/add_mesh_extra_objects/add_mesh_extra_objects.py b/add_mesh_extra_objects/add_mesh_extra_objects.py
index f87bb044236becb310eea5bb67e9e34c6e6dd190..c5caa12039930c95c0240dbda54141839c8bb13a 100644
--- a/add_mesh_extra_objects/add_mesh_extra_objects.py
+++ b/add_mesh_extra_objects/add_mesh_extra_objects.py
@@ -38,8 +38,8 @@ def create_mesh_object(context, verts, edges, faces, name):
     # Update mesh geometry after adding stuff.
     mesh.update()
 
-    import add_object_utils
-    return add_object_utils.object_data_add(context, mesh, operator=None)
+    from bpy_extras import object_utils
+    return object_utils.object_data_add(context, mesh, operator=None)
 
 
 # A very simple "bridge" tool.
diff --git a/add_mesh_extra_objects/add_mesh_gears.py b/add_mesh_extra_objects/add_mesh_gears.py
index 47cc950e856c8c53f1c0268ef5a749f59e1ffe3e..a04e6bebe2c50bee18bb6b9adaafd8e854b7586f 100644
--- a/add_mesh_extra_objects/add_mesh_gears.py
+++ b/add_mesh_extra_objects/add_mesh_gears.py
@@ -87,8 +87,8 @@ def create_mesh_object(context, verts, edges, faces, name):
     # Update mesh geometry after adding stuff.
     mesh.update()
 
-    import add_object_utils
-    return add_object_utils.object_data_add(context, mesh, operator=None)
+    from bpy_extras import object_utils
+    return object_utils.object_data_add(context, mesh, operator=None)
 
 
 # A very simple "bridge" tool.
diff --git a/add_mesh_extra_objects/add_mesh_gemstones.py b/add_mesh_extra_objects/add_mesh_gemstones.py
index 9af8cdb660122d3ea6d1fd2fe5ec75e7b6bbd662..d4158b689127c91df8d2a3c3add8fb9f3ad84e22 100644
--- a/add_mesh_extra_objects/add_mesh_gemstones.py
+++ b/add_mesh_extra_objects/add_mesh_gemstones.py
@@ -53,8 +53,8 @@ def create_mesh_object(context, verts, edges, faces, name):
     # Update mesh geometry after adding stuff.
     mesh.update()
 
-    import add_object_utils
-    return add_object_utils.object_data_add(context, mesh, operator=None)
+    from bpy_extras import object_utils
+    return object_utils.object_data_add(context, mesh, operator=None)
 
 
 # A very simple "bridge" tool.
diff --git a/add_mesh_extra_objects/add_mesh_twisted_torus.py b/add_mesh_extra_objects/add_mesh_twisted_torus.py
index 82edee6b253235178e5fa9a0fc6d48695be99549..6eb8cc245b33b3a7f853e543e8aaafeec465d85e 100644
--- a/add_mesh_extra_objects/add_mesh_twisted_torus.py
+++ b/add_mesh_extra_objects/add_mesh_twisted_torus.py
@@ -68,8 +68,8 @@ def create_mesh_object(context, verts, edges, faces, name):
     # Update mesh geometry after adding stuff.
     mesh.update()
 
-    import add_object_utils
-    return add_object_utils.object_data_add(context, mesh, operator=None)
+    from bpy_extras import object_utils
+    return object_utils.object_data_add(context, mesh, operator=None)
 
 # A very simple "bridge" tool.
 # Connects two equally long vertex rows with faces.
diff --git a/add_mesh_pipe_joint.py b/add_mesh_pipe_joint.py
index 6156d459121a2850bb1d82dd812e411198f95a67..69b547ed5bd2938903b5775d1e0797d59cfa8702 100644
--- a/add_mesh_pipe_joint.py
+++ b/add_mesh_pipe_joint.py
@@ -148,8 +148,8 @@ def create_mesh_object(context, verts, edges, faces, name):
     # Update mesh geometry after adding stuff.
     mesh.update()
 
-    import add_object_utils
-    return add_object_utils.object_data_add(context, mesh, operator=None)
+    from bpy_extras import object_utils
+    return object_utils.object_data_add(context, mesh, operator=None)
 
 # A very simple "bridge" tool.
 # Connects two equally long vertex rows with faces.
diff --git a/add_mesh_solid.py b/add_mesh_solid.py
index f8e4f3b4e1811388b62831d2f2a75d70b65c847c..01825d29141759bf25ec83046a8b3bbe2b1acd22 100644
--- a/add_mesh_solid.py
+++ b/add_mesh_solid.py
@@ -37,7 +37,7 @@ from bpy.props import FloatProperty,EnumProperty,BoolProperty
 from math import sqrt
 from mathutils import Vector,Matrix
 from functools import reduce
-from add_object_utils import object_data_add
+from bpy_extras.object_utils import object_data_add
 
 # this function creates a chain of quads and, when necessary, a remaining tri
 # for each polygon created in this script. be aware though, that this function
diff --git a/io_anim_bvh/__init__.py b/io_anim_bvh/__init__.py
index 5cdc79f2fd11c867496ef216f7b1879e4216e39f..94d048f674182bdc5d4234dd934b552d30aa043c 100644
--- a/io_anim_bvh/__init__.py
+++ b/io_anim_bvh/__init__.py
@@ -42,7 +42,7 @@ if "bpy" in locals():
 
 import bpy
 from bpy.props import StringProperty, FloatProperty, IntProperty, BoolProperty, EnumProperty
-from io_utils import ImportHelper, ExportHelper
+from bpy_extras.io_utils import ImportHelper, ExportHelper
 
 
 class ImportBVH(bpy.types.Operator, ImportHelper):
diff --git a/io_anim_camera.py b/io_anim_camera.py
index 22b2cf0d685a995c8c2647037755e537462961ba..2026254de5a0f09ee0a27f2d9e37ed47c90f0346 100644
--- a/io_anim_camera.py
+++ b/io_anim_camera.py
@@ -115,7 +115,7 @@ def writeCameras(context, filepath, frame_start, frame_end, only_selected=False)
 
 
 from bpy.props import StringProperty, IntProperty, BoolProperty
-from io_utils import ExportHelper
+from bpy_extras.io_utils import ExportHelper
 
 
 class CameraExporter(bpy.types.Operator, ExportHelper):
diff --git a/io_convert_image_to_mesh_img/__init__.py b/io_convert_image_to_mesh_img/__init__.py
index 93e3ac2527808751f4a1749cfb4a47cf462d8929..e3309617ab319190410a4399d4dcac56adbd0ce6 100644
--- a/io_convert_image_to_mesh_img/__init__.py
+++ b/io_convert_image_to_mesh_img/__init__.py
@@ -50,7 +50,7 @@ else:
 
 import bpy
 from bpy.props import *
-from io_utils import ImportHelper
+from bpy_extras.io_utils import ImportHelper
 
 
 class ImportHiRISEIMGDTM(bpy.types.Operator, ImportHelper):
diff --git a/io_curve_svg/__init__.py b/io_curve_svg/__init__.py
index cf5ad416e582112bb258bb196c89ae1cd7cb0011..dc68490b1010bc6f004f82485ce9446f83e43140 100644
--- a/io_curve_svg/__init__.py
+++ b/io_curve_svg/__init__.py
@@ -43,7 +43,7 @@ if "bpy" in locals():
 
 import bpy
 from bpy.props import StringProperty
-from io_utils import ImportHelper, ExportHelper
+from bpy_extras.io_utils import ImportHelper, ExportHelper
 
 
 class ImportSVG(bpy.types.Operator, ImportHelper):
diff --git a/io_export_pc2.py b/io_export_pc2.py
index 53303fc447805ad863965e842f3c3c8668ce142e..f9170652353c10bbe265ecb9b35cb4d8967fcec7 100644
--- a/io_export_pc2.py
+++ b/io_export_pc2.py
@@ -44,7 +44,7 @@ from bpy.props import *
 import mathutils, math, struct
 from os import remove
 import time
-from io_utils import ExportHelper
+from bpy_extras.io_utils import ExportHelper
 
 def getSampling(start, end, sampling):
     samples = [start - sampling
diff --git a/io_import_images_as_planes.py b/io_import_images_as_planes.py
index c4191fc06caba3654923d1c5762262bbd81c2412..38c8efdc3e1568c65562c643951fafb197a5ea4e 100644
--- a/io_import_images_as_planes.py
+++ b/io_import_images_as_planes.py
@@ -35,7 +35,7 @@ bl_info = {
 import bpy, os, mathutils
 from bpy.props import *
 from add_utils import *
-from io_utils import ImportHelper, load_image
+from bpy_extras.io_utils import ImportHelper, load_image
 
 ## GLOBAL VARS ##
 EXT_LIST = {
diff --git a/io_import_scene_mhx.py b/io_import_scene_mhx.py
index 386423904c3aae2c782e8ff39c67808aad79d691..e861fcf8813e7d114e2ecc90aa6fde575941a732 100644
--- a/io_import_scene_mhx.py
+++ b/io_import_scene_mhx.py
@@ -2617,7 +2617,7 @@ def writeDefaults():
 
 DEBUG = False
 from bpy.props import StringProperty, FloatProperty, EnumProperty, BoolProperty
-from io_utils import ImportHelper
+from bpy_extras.io_utils import ImportHelper
 
 
 MhxBoolProps = [
diff --git a/io_mesh_ply/__init__.py b/io_mesh_ply/__init__.py
index eabfc54effeee660072f1d012499f2c188c8e9f9..e8384923de4d7a76c2bda50c8f6b54bd76d0b48f 100644
--- a/io_mesh_ply/__init__.py
+++ b/io_mesh_ply/__init__.py
@@ -44,7 +44,7 @@ if "bpy" in locals():
 import os
 import bpy
 from bpy.props import CollectionProperty, StringProperty, BoolProperty
-from io_utils import ImportHelper, ExportHelper
+from bpy_extras.io_utils import ImportHelper, ExportHelper
 
 
 class ImportPLY(bpy.types.Operator, ImportHelper):
diff --git a/io_mesh_ply/import_ply.py b/io_mesh_ply/import_ply.py
index fc87e66ed80b63f2d74bce4a798f5d7118cd814b..bd5250650cd43699c5e9e74494899f7c4b0cdb6c 100644
--- a/io_mesh_ply/import_ply.py
+++ b/io_mesh_ply/import_ply.py
@@ -207,7 +207,7 @@ import bpy
 
 def load_ply(filepath):
     import time
-    from io_utils import load_image, unpack_list, unpack_face_list
+    from bpy_extras.io_utils import load_image, unpack_list, unpack_face_list
 
     t = time.time()
     obj_spec, obj = read(filepath)
diff --git a/io_mesh_raw/import_raw.py b/io_mesh_raw/import_raw.py
index eb772585699a3794f457922f3f835733abde8b9c..047245449292eeefa4ac569094fd0793b8f7d397 100644
--- a/io_mesh_raw/import_raw.py
+++ b/io_mesh_raw/import_raw.py
@@ -43,7 +43,7 @@ tolerance.
 import bpy
 
 # move those to a utility modul
-from io_utils import unpack_face_list, unpack_list # TODO, make generic
+from bpy_extras.io_utils import unpack_face_list, unpack_list # TODO, make generic
 
 
 def readMesh(filename, objName):
diff --git a/io_mesh_stl/__init__.py b/io_mesh_stl/__init__.py
index 24e1650d0ba5be4fb09d7d797ce51b7b867bf60e..48c37af461486ca586c4c36f878a6932536ab3e5 100644
--- a/io_mesh_stl/__init__.py
+++ b/io_mesh_stl/__init__.py
@@ -60,7 +60,7 @@ import os
 
 import bpy
 from bpy.props import StringProperty, BoolProperty, CollectionProperty
-from io_utils import ExportHelper, ImportHelper
+from bpy_extras.io_utils import ExportHelper, ImportHelper
 
 
 class ImportSTL(bpy.types.Operator, ImportHelper):
diff --git a/io_scene_3ds/__init__.py b/io_scene_3ds/__init__.py
index 21bed64acfc867512b3b0b9caedc15aafcc15787..4915512a72a80965a989b2b7d0aa7ced82252113 100644
--- a/io_scene_3ds/__init__.py
+++ b/io_scene_3ds/__init__.py
@@ -43,7 +43,7 @@ if "bpy" in locals():
 
 import bpy
 from bpy.props import StringProperty, FloatProperty, BoolProperty
-from io_utils import ImportHelper, ExportHelper
+from bpy_extras.io_utils import ImportHelper, ExportHelper
 
 
 class Import3DS(bpy.types.Operator, ImportHelper):
diff --git a/io_scene_3ds/export_3ds.py b/io_scene_3ds/export_3ds.py
index bf7bd9909149841038a1edda11135d649b12a87b..8def27b16db3efdda5b6ab8f29c43e065ac4af16 100644
--- a/io_scene_3ds/export_3ds.py
+++ b/io_scene_3ds/export_3ds.py
@@ -893,8 +893,7 @@ def save(operator, context, filepath="",
 
     import bpy
     import time
-    import io_utils
-    from io_utils import create_derived_objects, free_derived_objects
+    from bpy_extras.io_utils import create_derived_objects, free_derived_objects
 
     '''Save the Blender scene to a 3ds file.'''
 
diff --git a/io_scene_3ds/import_3ds.py b/io_scene_3ds/import_3ds.py
index 1aea638495964b997f0f1d156bf11c8ec7bd2588..d66ace47c132d4f0fa9f1121117c3d312438c1f8 100644
--- a/io_scene_3ds/import_3ds.py
+++ b/io_scene_3ds/import_3ds.py
@@ -25,7 +25,7 @@ import os
 import time
 import struct
 
-from io_utils import load_image
+from bpy_extras.io_utils import load_image
 
 import bpy
 import mathutils
diff --git a/io_scene_fbx/__init__.py b/io_scene_fbx/__init__.py
index 33651d2a5ef935e08c26cc28ee25d9da3ea9ac1c..dafc4e15f259c7251b1df730532d7b2fd79b8531 100644
--- a/io_scene_fbx/__init__.py
+++ b/io_scene_fbx/__init__.py
@@ -41,8 +41,7 @@ if "bpy" in locals():
 
 import bpy
 from bpy.props import StringProperty, BoolProperty, FloatProperty, EnumProperty
-import io_utils
-from io_utils import ExportHelper
+from bpy_extras.io_utils import ExportHelper, path_reference_mode, axis_conversion
 
 
 class ExportFBX(bpy.types.Operator, ExportHelper):
@@ -61,15 +60,28 @@ class ExportFBX(bpy.types.Operator, ExportHelper):
 # 	EXP_OBS_SCENE = BoolProperty(name="Scene Objects", description="Export all objects in this scene", default=True)
     global_scale = FloatProperty(name="Scale", description="Scale all data, (Note! some imports dont support scaled armatures)", min=0.01, max=1000.0, soft_min=0.01, soft_max=1000.0, default=1.0)
 
-    global_rotate = EnumProperty(
-            name="Rotate",
-            options={'ENUM_FLAG'},
-            items=(('X_90', "X 90", ""),
-                   ('Y_90', "Y 90", ""),
-                   ('Z_90', "Z 90", ""),
+    global_axis_forward = EnumProperty(
+            name="Forward",
+            items=(('X', "X Forward", ""),
+                   ('Y', "Y Forward", ""),
+                   ('Z', "Z Forward", ""),
+                   ('-X', "-X Forward", ""),
+                   ('-Y', "-Y Forward", ""),
+                   ('-Z', "-Z Forward", ""),
+                   ),
+            default='Y',
+            )
+
+    global_axis_up = EnumProperty(
+            name="Up",
+            items=(('X', "X Up", ""),
+                   ('Y', "Y Up", ""),
+                   ('Z', "Z Up", ""),
+                   ('-X', "-X Up", ""),
+                   ('-Y', "-Y Up", ""),
+                   ('-Z', "-Z Up", ""),
                    ),
-            default={'X_90'},
-            description="Global rotation to apply to the exported scene",
+            default='Z',
             )
 
     object_types = EnumProperty(
@@ -84,7 +96,7 @@ class ExportFBX(bpy.types.Operator, ExportHelper):
             default={'EMPTY', 'CAMERA', 'LAMP', 'ARMATURE', 'MESH'},
             )
 
-    mesh_apply_modifiers = BoolProperty(name="Modifiers", description="Apply modifiers to mesh objects", default=True)
+    mesh_apply_modifiers = BoolProperty(name="Apply Modifiers", description="Apply modifiers to mesh objects", default=True)
 
     mesh_smooth_type = EnumProperty(
             name="Smoothing",
@@ -114,7 +126,7 @@ class ExportFBX(bpy.types.Operator, ExportHelper):
     BATCH_OWN_DIR = BoolProperty(name="Own Dir", description="Create a dir for each exported file", default=True)
     use_metadata = BoolProperty(name="Use Metadata", default=True, options={'HIDDEN'})
 
-    path_mode = io_utils.path_reference_mode
+    path_mode = path_reference_mode
 
     @property
     def check_extension(self):
@@ -126,22 +138,13 @@ class ExportFBX(bpy.types.Operator, ExportHelper):
         if not self.filepath:
             raise Exception("filepath not set")
 
-        mtx4_x90n = Matrix.Rotation(-math.pi / 2.0, 4, 'X')
-        mtx4_y90n = Matrix.Rotation(-math.pi / 2.0, 4, 'Y')
-        mtx4_z90n = Matrix.Rotation(-math.pi / 2.0, 4, 'Z')
-
         GLOBAL_MATRIX = Matrix()
         GLOBAL_MATRIX[0][0] = GLOBAL_MATRIX[1][1] = GLOBAL_MATRIX[2][2] = self.global_scale
-        if 'X_90' in self.global_rotate:
-            GLOBAL_MATRIX = mtx4_x90n * GLOBAL_MATRIX
-        if 'Y_90' in self.global_rotate:
-            GLOBAL_MATRIX = mtx4_y90n * GLOBAL_MATRIX
-        if 'Z_90' in self.global_rotate:
-            GLOBAL_MATRIX = mtx4_z90n * GLOBAL_MATRIX
-
-        keywords = self.as_keywords(ignore=("global_rotate", "global_scale", "check_existing", "filter_glob"))
-        keywords["GLOBAL_MATRIX"] = GLOBAL_MATRIX
+        GLOBAL_MATRIX = GLOBAL_MATRIX * axis_conversion(to_forward=self.global_axis_forward, to_up=self.global_axis_up).to_4x4()
 
+        keywords = self.as_keywords(ignore=("global_axis_forward", "global_axis_up", "global_scale", "check_existing", "filter_glob"))
+        keywords["GLOBAL_MATRIX"] = GLOBAL_MATRIX
+        print(GLOBAL_MATRIX)
         from . import export_fbx
         return export_fbx.save(self, context, **keywords)
 
diff --git a/io_scene_fbx/export_fbx.py b/io_scene_fbx/export_fbx.py
index 47bbb178b628b9dc627abca8034a3daaa9a3c78e..16789bf9adeafad41d2a7001aacc84328e4732f6 100644
--- a/io_scene_fbx/export_fbx.py
+++ b/io_scene_fbx/export_fbx.py
@@ -214,7 +214,7 @@ def save_single(operator, scene, filepath="",
         path_mode='AUTO',
     ):
 
-    import io_utils
+    import bpy_extras.io_utils
 
     mtx_x90 = Matrix.Rotation(math.pi / 2.0, 3, 'X')
     mtx4_z90 = Matrix.Rotation(math.pi / 2.0, 4, 'Z')
@@ -1097,7 +1097,7 @@ def save_single(operator, scene, filepath="",
             Property: "Width", "int", "",0
             Property: "Height", "int", "",0''')
         if tex:
-            fname_rel = io_utils.path_reference(tex.filepath, base_src, base_dst, path_mode, "", copy_set)
+            fname_rel = bpy_extras.io_utils.path_reference(tex.filepath, base_src, base_dst, path_mode, "", copy_set)
             fname_strip = os.path.basename(fname_rel)
         else:
             fname_strip = fname_rel = ""
@@ -1156,7 +1156,7 @@ def save_single(operator, scene, filepath="",
         file.write('\n\t\tMedia: "Video::%s"' % texname)
 
         if tex:
-            fname_rel = io_utils.path_reference(tex.filepath, base_src, base_dst, path_mode, "", copy_set)
+            fname_rel = bpy_extras.io_utils.path_reference(tex.filepath, base_src, base_dst, path_mode, "", copy_set)
             fname_strip = os.path.basename(fname_rel)
         else:
             fname_strip = fname_rel = ""
@@ -2747,7 +2747,7 @@ Takes:  {''')
     file.close()
 
     # copy all collected files.
-    io_utils.path_reference_copy(copy_set)
+    bpy_extras.io_utils.path_reference_copy(copy_set)
 
     print('export finished in %.4f sec.' % (time.clock() - start_time))
     return {'FINISHED'}
diff --git a/io_scene_m3/__init__.py b/io_scene_m3/__init__.py
index cde21f586c5d810cfe99bf6f117e93856ff970b5..78c2498d2101f607932b80ef60db99e93b9977df 100644
--- a/io_scene_m3/__init__.py
+++ b/io_scene_m3/__init__.py
@@ -47,7 +47,7 @@ import time
 import datetime
 import bpy
 from bpy.props import StringProperty, BoolProperty
-from io_utils import ImportHelper, ExportHelper
+from bpy_extras.io_utils import ImportHelper, ExportHelper
 
 
 class ImportM3(bpy.types.Operator, ImportHelper):
diff --git a/io_scene_m3/import_m3.py b/io_scene_m3/import_m3.py
index ec0a635f7ee007bafa68b1233488fb5b1a62ad82..a3e42e70f5acc8efdedddad481562e63d3c97335 100644
--- a/io_scene_m3/import_m3.py
+++ b/io_scene_m3/import_m3.py
@@ -56,7 +56,7 @@ import mathutils
 import struct
 import os.path
 from bpy.props import *
-from io_utils import load_image
+from bpy_extras.io_utils import load_image
 
 ##################
 ## Struct setup ##
diff --git a/io_scene_obj/__init__.py b/io_scene_obj/__init__.py
index a990afe61a1d05842e2a65719647c2b8af9e5675..b5f3cb9b9a06a3b8fb05306fda0dcb227a5b8827 100644
--- a/io_scene_obj/__init__.py
+++ b/io_scene_obj/__init__.py
@@ -43,8 +43,7 @@ if "bpy" in locals():
 
 import bpy
 from bpy.props import BoolProperty, FloatProperty, StringProperty, EnumProperty
-import io_utils
-from io_utils import ExportHelper, ImportHelper
+from bpy_extras.io_utils import ExportHelper, ImportHelper, path_reference_mode
 
 
 class ImportOBJ(bpy.types.Operator, ImportHelper):
@@ -158,7 +157,7 @@ class ExportOBJ(bpy.types.Operator, ExportHelper):
     group_by_material = BoolProperty(name="Material Groups", description="", default=False)
     keep_vertex_order = BoolProperty(name="Keep Vertex Order", description="", default=False)
 
-    path_mode = io_utils.path_reference_mode
+    path_mode = path_reference_mode
 
     def execute(self, context):
         from . import export_obj
diff --git a/io_scene_obj/export_obj.py b/io_scene_obj/export_obj.py
index b2537696de5d6917f52216094da342698e7e5329..5c24fbf7aeec67bdce1b1599ed5994009a443a9f 100644
--- a/io_scene_obj/export_obj.py
+++ b/io_scene_obj/export_obj.py
@@ -24,7 +24,7 @@ import shutil
 
 import bpy
 import mathutils
-import io_utils
+import bpy_extras.io_utils
 
 
 def name_compat(name):
@@ -108,7 +108,7 @@ def write_mtl(scene, filepath, path_mode, copy_set, mtl_dict):
         # Write images!
         if face_img:  # We have an image on the face!
             # write relative image path
-            rel = io_utils.path_reference(face_img.filepath, source_dir, dest_dir, path_mode, "", copy_set)
+            rel = bpy_extras.io_utils.path_reference(face_img.filepath, source_dir, dest_dir, path_mode, "", copy_set)
             file.write('map_Kd %s\n' % rel)  # Diffuse mapping image
 
         if mat:  # No face image. if we havea material search for MTex image.
@@ -135,7 +135,7 @@ def write_mtl(scene, filepath, path_mode, copy_set, mtl_dict):
                             image_map["map_Ns"] = image
 
             for key, image in image_map.items():
-                filepath = io_utils.path_reference(image.filepath, source_dir, dest_dir, path_mode, "", copy_set)
+                filepath = bpy_extras.io_utils.path_reference(image.filepath, source_dir, dest_dir, path_mode, "", copy_set)
                 file.write('%s %s\n' % (key, repr(filepath)[1:-1]))
 
         file.write('\n\n')
@@ -650,7 +650,7 @@ def write_file(filepath, objects, scene,
         write_mtl(scene, mtlfilepath, EXPORT_PATH_MODE, copy_set, mtl_dict)
 
     # copy all collected files.
-    io_utils.path_reference_copy(copy_set)
+    bpy_extras.io_utils.path_reference_copy(copy_set)
 
     print("OBJ Export time: %.2f" % (time.clock() - time1))
 
diff --git a/io_scene_obj/import_obj.py b/io_scene_obj/import_obj.py
index d37608ca82c28cece7f8924888af1fbc653e006c..a970812150911ab150c456d2ed7a7de790bc260a 100644
--- a/io_scene_obj/import_obj.py
+++ b/io_scene_obj/import_obj.py
@@ -36,7 +36,7 @@ import time
 import bpy
 import mathutils
 from mathutils.geometry import tesselate_polygon
-from io_utils import load_image, unpack_list, unpack_face_list
+from bpy_extras.io_utils import load_image, unpack_list, unpack_face_list
 
 
 def BPyMesh_ngon(from_data, indices, PREF_FIX_LOOPS=True):
diff --git a/io_scene_x3d/__init__.py b/io_scene_x3d/__init__.py
index f3b6dad65c1556b748efcad426de9bb27c6fd3e9..9da0173542be56c53395a65bfe3127fce2284742 100644
--- a/io_scene_x3d/__init__.py
+++ b/io_scene_x3d/__init__.py
@@ -41,7 +41,7 @@ if "bpy" in locals():
 
 import bpy
 from bpy.props import StringProperty, BoolProperty
-from io_utils import ImportHelper, ExportHelper
+from bpy_extras.io_utils import ImportHelper, ExportHelper
 
 
 class ImportX3D(bpy.types.Operator, ImportHelper):
diff --git a/io_scene_x3d/export_x3d.py b/io_scene_x3d/export_x3d.py
index 94bb3bd585714012e01c05e58d5e8e91699f03b0..391f8ec32e0a80bd03e9d9ac940cf69aab58cf71 100644
--- a/io_scene_x3d/export_x3d.py
+++ b/io_scene_x3d/export_x3d.py
@@ -39,7 +39,7 @@ import os
 import bpy
 import mathutils
 
-from io_utils import create_derived_objects, free_derived_objects
+from bpy_extras.io_utils import create_derived_objects, free_derived_objects
 
 
 def round_color(col, cp):
diff --git a/io_scene_x3d/import_x3d.py b/io_scene_x3d/import_x3d.py
index fe8a15895f26202275934a1017696d9af1de46e6..9a20db2655d8d3aaca9c9d5097a6ab945d014b4e 100644
--- a/io_scene_x3d/import_x3d.py
+++ b/io_scene_x3d/import_x3d.py
@@ -1432,7 +1432,7 @@ for i, f in enumerate(files):
 # NO BLENDER CODE ABOVE THIS LINE.
 # -----------------------------------------------------------------------------------
 import bpy
-import image_utils
+from bpy_extras import image_utils
 # import BPyImage
 # import BPySys
 # reload(BPySys)
diff --git a/io_shape_mdd/__init__.py b/io_shape_mdd/__init__.py
index be9334ada88d98bd31b128d468698dbb34aff599..bc195735be4a854fbb2c402042a501b5b66fd1ce 100644
--- a/io_shape_mdd/__init__.py
+++ b/io_shape_mdd/__init__.py
@@ -43,7 +43,7 @@ if "bpy" in locals():
 
 import bpy
 from bpy.props import StringProperty, IntProperty
-from io_utils import ExportHelper, ImportHelper
+from bpy_extras.io_utils import ExportHelper, ImportHelper
 
 
 class ImportMDD(bpy.types.Operator, ImportHelper):
diff --git a/object_cloud_gen.py b/object_cloud_gen.py
index 0b74e863809d764eef4bdad391f9afc66b411ddc..954e5cf152e52093cfe108a3e65af4062e02cc0c 100644
--- a/object_cloud_gen.py
+++ b/object_cloud_gen.py
@@ -655,7 +655,7 @@ class GenerateCloud(bpy.types.Operator):
                 cldPntsModifiers[0].name = "CloudPnts"
                 cldPntsModifiers[0].texture = cloudtex
                 cldPntsModifiers[0].texture_coords = 'OBJECT'
-                cldPntsModifiers[0].texture_coordinate_object = cloud
+                cldPntsModifiers[0].texture_coords_object = cloud
                 cldPntsModifiers[0].strength = -1.4
 
                 # Apply modifier
diff --git a/system_demo_mode/__init__.py b/system_demo_mode/__init__.py
index cc568c11ae3d28cac70829b02f8a66c713c33d4d..902ed37b0067c5a4c2875905c8e3e2bba50eee10 100644
--- a/system_demo_mode/__init__.py
+++ b/system_demo_mode/__init__.py
@@ -41,7 +41,7 @@ if "bpy" in locals():
 
 import bpy
 from bpy.props import StringProperty, BoolProperty, IntProperty, FloatProperty, EnumProperty
-from io_utils import ImportHelper
+from bpy_extras.io_utils import ImportHelper
 
 
 class DemoModeSetup(bpy.types.Operator):
diff --git a/texture_paint_layer_manager.py b/texture_paint_layer_manager.py
index b3f2d088e39a19177bb355009b4c709dcbb45460..bff56c3daaea0fcaaff123f9d5e20ab9c19421eb 100644
--- a/texture_paint_layer_manager.py
+++ b/texture_paint_layer_manager.py
@@ -15,7 +15,7 @@ bl_info = {
 import bpy
 from bpy.props import*
 import os
-from io_utils import ImportHelper
+from bpy_extras.io_utils import ImportHelper
 
 
 #-------------------------------------------