Refactored
New version