--- a/MCEMoveFragment.cpp
+++ b/MCEMoveFragment.cpp
@@ -36,8 +36,8 @@
     m_rotate[2][2] = 1;
     m_selected_rotating_group = 1;
     m_trans_step = 0.1;
-    m_rot_step = 1;
-    m_rot_bond_step = 1;
+    m_rot_step = 10;
+    m_rot_bond_step = 10;
     m_use_mouse = true;
     m_use_central_atom = false;
     m_rotate_around_bond = false;
@@ -367,14 +367,22 @@
 
 void MCEMoveFragment::OnBnClickedCheckRotateAroundBond()
 {
-    if(!m_rotate_around_bond) {
+    UpdateData(TRUE);
+    if(m_rotate_around_bond) {
+        CButton *m_ctlCheck = (CButton*) GetDlgItem(IDC_ROTATE_BY_MOUSE);
+        m_ctlCheck->SetCheck(BST_UNCHECKED);
         GetDlgItem(IDC_ROTATE_BY_MOUSE)->EnableWindow(false);
-        GetDlgItem(IDC_CHECK_MOVE_RIGHT_CLICK)->EnableWindow(false);
+        m_ctlCheck = (CButton*) GetDlgItem(IDC_CHECK_MOVE_RIGHT_CLICK);
+        m_ctlCheck->SetCheck(BST_UNCHECKED);
+        GetDlgItem(IDC_CHECK_MOVE_RIGHT_CLICK)->EnableWindow(false);        
         GetDlgItem(IDC_CHOOSE_CENTRAL_ATOM)->EnableWindow(false);
         GetDlgItem(IDC_CHECK_APPLY_SYMM)->EnableWindow(false);
         GetDlgItem(IDC_BUTTON2)->EnableWindow(false);
         GetDlgItem(IDC_COMBO_ROTATION_GROUPS)->EnableWindow(true);
-        GetDlgItem(IDC_BUTTON_UPDATE_SELECTION_BOND)->EnableWindow(true);        
+        GetDlgItem(IDC_BUTTON_UPDATE_SELECTION_BOND)->EnableWindow(true); 
+        GetDlgItem(IDC_BUTTON_ROT_BOND_LEFT)->EnableWindow(true);
+        GetDlgItem(IDC_BUTTON_ROT_BOND_RIGHT)->EnableWindow(true);
+        OnBnClickedButton3();
     } else {
         GetDlgItem(IDC_ROTATE_BY_MOUSE)->EnableWindow(true);
         GetDlgItem(IDC_CHECK_MOVE_RIGHT_CLICK)->EnableWindow(true);
@@ -383,6 +391,14 @@
         GetDlgItem(IDC_BUTTON2)->EnableWindow(true);
         GetDlgItem(IDC_COMBO_ROTATION_GROUPS)->EnableWindow(false);
         GetDlgItem(IDC_BUTTON_UPDATE_SELECTION_BOND)->EnableWindow(false);
+        GetDlgItem(IDC_BUTTON_ROT_BOND_LEFT)->EnableWindow(false);
+        GetDlgItem(IDC_BUTTON_ROT_BOND_RIGHT)->EnableWindow(false);
+
+        CComboBox* pCombo;
+        pCombo = (CComboBox*)GetDlgItem(IDC_COMBO_ROTATION_GROUPS);  
+        pCombo->ResetContent();
+        m_rotating_group1.clear();
+        m_rotating_group2.clear();
     }
       
     if (m_pMCEView != NULL) {		
@@ -436,20 +452,6 @@
     q[3] /= norm;
 }
 
-/* -1 1 1
-void MCEMoveFragment::ApplyQuaternion(float &x, float &y, float &z, float *Q)
-{
-   float p0=-Q[1]*x          - Q[2]*y - Q[3]*z;
-   float p1= Q[0]*x          + Q[2]*z - Q[3]*y;
-   float p2= Q[0]*y          - Q[1]*z + Q[3]*x;
-   float p3= Q[0]*z          + Q[1]*y - Q[2]*x;
-   
-   x =-p0*Q[1] + p1*Q[0] - p2*Q[3] + p3*Q[2];
-   y =-p0*Q[2] + p2*Q[0] + p1*Q[3] - p3*Q[1];
-   z =-p0*Q[3] + p3*Q[0] - p1*Q[2] + p2*Q[1];
-}
-*/
-
 void MCEMoveFragment::GetSelectedRotationGroup()
 {
     CComboBox* pCombo;
@@ -457,44 +459,13 @@
     
     if(pCombo->GetCurSel()==0) {
         m_selected_rotating_group = 1;
-        /*
-        for(int i=0;i<m_rotating_group1.size();i++) {
-            if(i==0) continue;
-            //translate to m_rotating_group1[0]
-            m_rotating_group1[i]->X -= m_rotating_group1[0]->X;
-            m_rotating_group1[i]->Y -= m_rotating_group1[0]->Y;
-            m_rotating_group1[i]->Z -= m_rotating_group1[0]->Z;
-            //apply quaternion
-            ApplyQuaternion(m_rotating_group1[i]->X, m_rotating_group1[i]->Y, m_rotating_group1[i]->Z, m_rot_bond_quaternion);
-            //translate back
-            m_rotating_group1[i]->X += m_rotating_group1[0]->X;
-            m_rotating_group1[i]->Y += m_rotating_group1[0]->Y;
-            m_rotating_group1[i]->Z += m_rotating_group1[0]->Z;
-        }
-        */
     } else {
         m_selected_rotating_group = 2;
-        /*
-        for(int i=0;i<m_rotating_group2.size();i++) {
-            if(i==0) continue;
-            //translate to m_rotating_group1[0]
-            m_rotating_group2[i]->X -= m_rotating_group2[0]->X;
-            m_rotating_group2[i]->Y -= m_rotating_group2[0]->Y;
-            m_rotating_group2[i]->Z -= m_rotating_group2[0]->Z;
-            //apply quaternion
-            ApplyQuaternion(m_rotating_group2[i]->X, m_rotating_group2[i]->Y, m_rotating_group2[i]->Z, m_rot_bond_quaternion);
-            //translate back
-            m_rotating_group2[i]->X += m_rotating_group2[0]->X;
-            m_rotating_group2[i]->Y += m_rotating_group2[0]->Y;
-            m_rotating_group2[i]->Z += m_rotating_group2[0]->Z;
-        }
-        */
     }
 }
 void MCEMoveFragment::OnBnClickedButtonRotBondLeft()
 {
     UpdateData(TRUE);
-    //calc_quaternion(*m_rotation_bond, m_rot_bond_step, m_rot_bond_quaternion);
     GetSelectedRotationGroup();
     calc_quaternion(m_rot_bond_axis, m_rot_bond_step, m_rot_bond_quaternion);
 
@@ -507,7 +478,6 @@
 void MCEMoveFragment::OnBnClickedButtonRotBondRight()
 {
     UpdateData(TRUE);
-    //calc_quaternion(*m_rotation_bond, -1*m_rot_bond_step, m_rot_bond_quaternion);
     GetSelectedRotationGroup();
     calc_quaternion(m_rot_bond_axis, -1*m_rot_bond_step, m_rot_bond_quaternion);