half done, but full of bug and useless codes ...