Used repository pattern
Refactored to modules structure