so many bugs to fix, ^_^