bug fixed. so ugly, any other better way?!