Many thing are refactored