refactory still ongoing
more refactory