good problem, need to be rewrite