in need of more refact