finish the coding and compile pass, but not test