still have some problem. will fix later