Refactory part 3