diff --git a/process/skeleton_fitting.py b/process/skeleton_fitting.py
index 33721c5f2289ed7d60b5a6ec8580f8cfab2a0916..7a0177bf61f32dbb574fe2d45fda3783ef2226b4 100755
--- a/process/skeleton_fitting.py
+++ b/process/skeleton_fitting.py
@@ -142,6 +142,10 @@ class SkeletonFitting:
             self.limbs_sets[limb_name] = self.limbs[limb_name].LimbsModuleSettings(init_yaml_path)
             self.limbs_params[limb_name] = copy.deepcopy(self.limbs_sets[limb_name].params_init)
 
+            for param_name in self.body_params.keys():
+                self.limbs_params[limb_name]['right'][param_name] = self.body_params[param_name]
+                self.limbs_params[limb_name]['left'][param_name] = self.body_params[param_name]
+
         self.skeleton2d, self.skeleton3d = None, None  # type: Dict[str, any]
 
         self.frame_rate = frame_rate  # type: int
diff --git a/tests/test_skeleton_fitter.py b/tests/test_skeleton_fitter.py
index 098af14d65c89f0faaa8dd393c1002916cc500a3..70d232e7fe0adc617d6f38d7fd0510fdb801c0e9 100755
--- a/tests/test_skeleton_fitter.py
+++ b/tests/test_skeleton_fitter.py
@@ -1,4 +1,5 @@
 import copy, os
+from matplotlib import pyplot as plt
 
 from skeleton_fitter import optimiser, utils
 from skeleton_fitter.modules.plotting import plot_limbs, plot_body_and_limbs
@@ -6,7 +7,7 @@ from skeleton_fitter.modules.plotting import plot_limbs, plot_body_and_limbs
 from importlib import import_module
 
 
-def test_skeleton_fly(show_plots=False):
+def test_skeleton_fly(show_plots=True):
     animal_names = ['fly', 'fly_geo', 'fly_hybrid']
 
     for animal_name in animal_names:
@@ -37,10 +38,18 @@ def test_skeleton_fly(show_plots=False):
             limbs_sets[limb_name] = limbs[limb_name].LimbsModuleSettings(init_yaml_path)
             limbs_params[limb_name] = copy.deepcopy(limbs_sets[limb_name].params_init)
 
+            for param_name in body_params.keys():
+                limbs_params[limb_name]['right'][param_name] = body_params[param_name]
+                limbs_params[limb_name]['left'][param_name] = body_params[param_name]
+
         limbs_params['wings']['right']['stroke_a'] = -55.0
         limbs_params['wings']['right']['deviation_a'] = 10.0
         limbs_params['wings']['right']['rotation_a'] = 60.0
 
+        limbs_params['wings']['left']['stroke_a'] = 35.0
+        limbs_params['wings']['left']['deviation_a'] = -10.0
+        limbs_params['wings']['left']['rotation_a'] = 30.0
+
         wings_skeleton3d_1 = copy.deepcopy(limbs_sets['wings'].skeleton3d_init)
         for side in limbs_sets['wings'].skeleton3d_init.keys():
             hinge_label = '{0}_wing_hinge'.format(side)
@@ -56,17 +65,53 @@ def test_skeleton_fly(show_plots=False):
                                                                                       limbs_params['wings'][side], side)
 
         if show_plots:
-            plot_limbs(wings_skeleton3d_1)
-            plot_body_and_limbs(body_skeleton3d_1, wings_skeleton3d_1)
+            # plot_limbs(wings_skeleton3d_1, wait_show_plot=True)
+            plot_body_and_limbs(body_skeleton3d_1, wings_skeleton3d_1, wait_show_plot=True)
+
+        # Estimate body and wings parameters
+        body_params1_est = body.estimate_params_from_skeleton3d(body_skeleton3d_1, body_sets.params_init)
+        limbs_params1_est = {}
+        for num_limb, limb_name in enumerate(animal_sets.limb_names):
+            limbs_params1_est[limb_name] = {}
+            for side in ['right', 'left']:
+                limbs_params1_est[limb_name][side] = (
+                    limbs[limb_name].estimate_params_from_skeleton3d(wings_skeleton3d_1[side], body_params1_est,
+                                                                     limbs_sets[limb_name].params_init[side], side))
+
+        if show_plots:
+            body_skeleton3d_est = body.rotate_skeleton3d(body_sets.skeleton3d_init, body_params1_est)
+            body_skeleton3d_est = body.translate_skeleton3d(body_skeleton3d_est, body_params1_est)
+
+            wings_skeleton3d_est = copy.deepcopy(limbs_sets['wings'].skeleton3d_init)
+            for side in limbs_sets['wings'].skeleton3d_init.keys():
+                hinge_label = '{0}_wing_hinge'.format(side)
+                [limbs_params1_est['wings'][side]['x_hinge'], limbs_params1_est['wings'][side]['y_hinge'],
+                 limbs_params1_est['wings'][side]['z_hinge']] = body_skeleton3d_est[hinge_label]
 
-    # Estimate body and wings parameters
-    # body_params1_est = estimate_body_parameters(body_skeleton3d_1, body_sets.params_init)
-    # limbs_params1_est = {}
-    # for side in ['right', 'left']:
-    #     limbs_params1_est[side] = estimate_wing_parameters(wings_skeleton3d_1[side], body_params1_est, limbs_sets[limb_name].params_init[side])
+                [limbs_params1_est['wings'][side]['x_com'], limbs_params1_est['wings'][side]['y_com'],
+                 limbs_params1_est['wings'][side]['z_com']] = \
+                    [body_params1_est['x_com'], body_params1_est['y_com'], body_params1_est['z_com']]
 
+                wings_skeleton3d_est[side] = (
+                    limbs['wings'].rotate_and_translate_skeleton3d(limbs_sets['wings'].skeleton3d_init[side],
+                                                                   limbs_params1_est['wings'][side], side))
 
-def test_skeleton_fitter_fly(show_plots=False):
+            # plot_limbs(wings_skeleton3d_est, wait_show_plot=True)
+            plot_body_and_limbs(body_skeleton3d_est, wings_skeleton3d_est, wait_show_plot=True)
+
+        print('> differences between real value and estimate are:')
+        for label in ['yaw_a', 'pitch_a', 'roll_a']:
+            print(' {0} = {1} degrees'.format(label, body_params[label] - body_params1_est[label]))
+
+        for side in limbs_sets['wings'].skeleton3d_init.keys():
+            for label in ['stroke_a', 'deviation_a', 'rotation_a']:
+                print(' {0} {1} = {2} degrees'.format(label, side, limbs_params['wings'][side][label] -
+                                                      limbs_params1_est['wings'][side][label]))
+
+        if show_plots: plt.show()
+
+
+def test_skeleton_fitter_fly():
     max_rmse = 10
     max_nb_iterations = 10000
 
@@ -106,6 +151,10 @@ def test_skeleton_fitter_fly(show_plots=False):
             limbs_sets[limb_name] = limbs[limb_name].LimbsModuleSettings(init_yaml_path)
             limbs_params[limb_name] = copy.deepcopy(limbs_sets[limb_name].params_init)
 
+            for param_name in body_params.keys():
+                limbs_params[limb_name]['right'][param_name] = body_params[param_name]
+                limbs_params[limb_name]['left'][param_name] = body_params[param_name]
+
         # Parameters to generate fake 3d and 2d skeletons
         body_params['yaw_a'] = 2.0
         body_params['pitch_a'] = -1.0
@@ -173,7 +222,7 @@ def test_skeleton_fitter_fly(show_plots=False):
 def main():
     show_plots = True
     test_skeleton_fly(show_plots)
-    test_skeleton_fitter_fly(show_plots)
+    test_skeleton_fitter_fly()
 
 
 if __name__ == "__main__":