fix any bug. work not tested