Mahmoud karim 2.9 4.14

Dear all
@aaeabdo @osherifo @MennatallahElKharbotly @Zaatar @eldesouky As you know that this branch contains both my code and Walid's code so the reviewing process will change a little bit depending on my talks with Yahia: 
1) each one of you will be responsible to review my code normally and will have nothing to do with Mahmoud's code.
2) After reviewing you should declare which part of the code you have been reviewed in a descriptive comment  to make everything clear 
3) Don't forget to change the labels in the issue #159 after reviewing the code 
4) Be careful ! In order to merge this branch you should be sure that both my code and Walid's are verified that's through checking the labels of the following issues #159 , #171 and #170 

For now go ahead and review my code 
Thanks