I will try to refactor it