after restructure (1), there is logical bug somewhere, should be, someone to fix it