diff --git a/io_import_scene_mhx.py b/io_import_scene_mhx.py
index cf39d64ad23882884d6c94e8908c3f9130232e9e..e56f7f63a1863ab5fc0b43dcd38334c97926b316 100644
--- a/io_import_scene_mhx.py
+++ b/io_import_scene_mhx.py
@@ -3314,6 +3314,7 @@ def makeVisemes(ob, scn):
 class VIEW3D_OT_MhxMakeVisemesButton(bpy.types.Operator):
     bl_idname = "mhx.make_visemes"
     bl_label = "Generate viseme shapekeys"
+    bl_options = {'UNDO'}
 
     def execute(self, context):
         makeVisemes(context.object, context.scene)
@@ -3415,6 +3416,7 @@ def setViseme(context, vis, setKey, frame):
 class VIEW3D_OT_MhxVisemeButton(bpy.types.Operator):
     bl_idname = 'mhx.pose_viseme'
     bl_label = 'Viseme'
+    bl_options = {'UNDO'}
     viseme = StringProperty()
 
     def invoke(self, context, event):
@@ -3477,6 +3479,7 @@ def readMagpie(context, filepath, offs):
 class VIEW3D_OT_MhxLoadMohoButton(bpy.types.Operator):
     bl_idname = "mhx.pose_load_moho"
     bl_label = "Moho (.dat)"
+    bl_options = {'UNDO'}
     filepath = StringProperty(subtype='FILE_PATH')
     startFrame = IntProperty(name="Start frame", description="First frame to import", default=1)
 
@@ -3580,6 +3583,7 @@ class VIEW3D_OT_MhxUpdateButton(bpy.types.Operator):
 class VIEW3D_OT_MhxResetExpressionsButton(bpy.types.Operator):
     bl_idname = "mhx.pose_reset_expressions"
     bl_label = "Reset expressions"
+    bl_options = {'UNDO'}
 
     def execute(self, context):
         rig,mesh = getMhxRigMesh(context.object)
@@ -3596,6 +3600,7 @@ class VIEW3D_OT_MhxResetExpressionsButton(bpy.types.Operator):
 class VIEW3D_OT_MhxKeyExpressionsButton(bpy.types.Operator):
     bl_idname = "mhx.pose_key_expressions"
     bl_label = "Key expressions"
+    bl_options = {'UNDO'}
 
     def execute(self, context):
         rig,mesh = getMhxRigMesh(context.object)
@@ -3612,6 +3617,7 @@ class VIEW3D_OT_MhxKeyExpressionsButton(bpy.types.Operator):
 class VIEW3D_OT_MhxPinExpressionButton(bpy.types.Operator):
     bl_idname = "mhx.pose_pin_expression"
     bl_label = "Pin"
+    bl_options = {'UNDO'}
     expression = StringProperty()
 
     def execute(self, context):
@@ -3759,7 +3765,6 @@ def matchPoseReverse(pb, fkPb, auto):
     insertRotation(pb, mat, auto)
     
 
-
 def matchPoseScale(pb, fkPb, auto):
     mat = getPoseMatrix(fkPb.matrix, pb)
     pb.scale = mat.to_scale()
@@ -3776,11 +3781,11 @@ def fk2ikArm(context, suffix):
     (uparmIk, loarmIk, elbow, elbowPt, wrist) = getSnapBones(rig, "ArmIK", suffix)
     (uparmFk, loarmFk, elbowPtFk, handFk) = getSnapBones(rig, "ArmFK", suffix)
 
-    matchPoseRotation(uparmFk, uparmIk, auto)
-    matchPoseScale(uparmFk, uparmIk, auto)
+    matchPoseRotation(uparmFk, uparmFk, auto)
+    matchPoseScale(uparmFk, uparmFk, auto)
 
-    matchPoseRotation(loarmFk, loarmIk, auto)
-    matchPoseScale(loarmFk, loarmIk, auto)
+    matchPoseRotation(loarmFk, loarmFk, auto)
+    matchPoseScale(loarmFk, loarmFk, auto)
 
     if rig["&HandFollowsWrist" + suffix]:
         matchPoseRotation(handFk, wrist, auto)
@@ -3814,11 +3819,11 @@ def fk2ikLeg(context, suffix):
     (uplegIk, lolegIk, kneePt, ankleIk, legIk, legFk, footIk, toeIk) = getSnapBones(rig, "LegIK", suffix)
     (uplegFk, lolegFk, kneePtFk, footFk, toeFk) = getSnapBones(rig, "LegFK", suffix)
 
-    matchPoseRotation(uplegFk, uplegIk, auto)
-    matchPoseScale(uplegFk, uplegIk, auto)
+    matchPoseRotation(uplegFk, uplegFk, auto)
+    matchPoseScale(uplegFk, uplegFk, auto)
 
-    matchPoseRotation(lolegFk, lolegIk, auto)
-    matchPoseScale(lolegFk, lolegIk, auto)
+    matchPoseRotation(lolegFk, lolegFk, auto)
+    matchPoseScale(lolegFk, lolegFk, auto)
     return
 
 
@@ -3904,6 +3909,7 @@ class VIEW3D_OT_FixAnkleButton(bpy.types.Operator):
     bl_idname = "mhx.fix_ankle"
     bl_label = "Fix ankle"
     bl_description = "Set inverse for ankle Child-of constraints"
+    bl_options = {'UNDO'}
     suffix = StringProperty()
 
     def execute(self, context):
@@ -3915,6 +3921,7 @@ class VIEW3D_OT_ClearAnkleButton(bpy.types.Operator):
     bl_idname = "mhx.clear_ankle"
     bl_label = "Clear ankle"
     bl_description = "Clear inverse for ankle Child-of constraints"
+    bl_options = {'UNDO'}
     suffix = StringProperty()
 
     def execute(self, context):
@@ -3944,6 +3951,7 @@ def getSnapBones(rig, key, suffix):
 class VIEW3D_OT_MhxSnapFk2IkButton(bpy.types.Operator):
     bl_idname = "mhx.snap_fk_ik"
     bl_label = "Snap FK"
+    bl_options = {'UNDO'}
     data = StringProperty()    
 
     def execute(self, context):
@@ -3961,6 +3969,7 @@ class VIEW3D_OT_MhxSnapFk2IkButton(bpy.types.Operator):
 class VIEW3D_OT_MhxSnapIk2FkButton(bpy.types.Operator):
     bl_idname = "mhx.snap_ik_fk"
     bl_label = "Snap IK"
+    bl_options = {'UNDO'}
     data = StringProperty()    
 
     def execute(self, context):
@@ -4015,6 +4024,7 @@ def restoreSnapProp(rig, prop, old, context):
 class VIEW3D_OT_MhxToggleFkIkButton(bpy.types.Operator):
     bl_idname = "mhx.toggle_fk_ik"
     bl_label = "FK - IK"
+    bl_options = {'UNDO'}
     toggle = StringProperty()    
 
     def execute(self, context):
@@ -4195,6 +4205,7 @@ class MhxVisibilityPanel(bpy.types.Panel):
 class VIEW3D_OT_MhxUpdateTexturesButton(bpy.types.Operator):
     bl_idname = "mhx.update_textures"
     bl_label = "Update"
+    bl_options = {'UNDO'}
 
     def execute(self, context):
         scn = context.scene
@@ -4214,6 +4225,7 @@ class VIEW3D_OT_MhxUpdateTexturesButton(bpy.types.Operator):
 class VIEW3D_OT_MhxAddHidersButton(bpy.types.Operator):
     bl_idname = "mhx.add_hiders"
     bl_label = "Add Hide Property"
+    bl_options = {'UNDO'}
 
     def execute(self, context):
         rig = context.object
@@ -4241,6 +4253,7 @@ def addHider(ob, attr, rig, prop):
 class VIEW3D_OT_MhxRemoveHidersButton(bpy.types.Operator):
     bl_idname = "mhx.remove_hiders"
     bl_label = "Remove Hide Property"
+    bl_options = {'UNDO'}
 
     def execute(self, context):
         rig = context.object
@@ -4317,6 +4330,7 @@ class MhxLayersPanel(bpy.types.Panel):
 class VIEW3D_OT_MhxEnableAllLayersButton(bpy.types.Operator):
     bl_idname = "mhx.pose_enable_all_layers"
     bl_label = "Enable all layers"
+    bl_options = {'UNDO'}
 
     def execute(self, context):
         rig,mesh = getMhxRigMesh(context.object)
@@ -4329,6 +4343,7 @@ class VIEW3D_OT_MhxEnableAllLayersButton(bpy.types.Operator):
 class VIEW3D_OT_MhxDisableAllLayersButton(bpy.types.Operator):
     bl_idname = "mhx.pose_disable_all_layers"
     bl_label = "Disable all layers"
+    bl_options = {'UNDO'}
 
     def execute(self, context):
         rig,mesh = getMhxRigMesh(context.object)