first version:
this version don't Compile,not test!!!!