let's refactor it