Refractored (low coupling, dont talk to strangers)