ignore this hard lessson, solve it in the future