code refactored
Merge origin/master