reworks the way data is passed around