refactored whole project setting