fix some mistake and test in progress