refacting again