3* refactored according with mentor's advices'