final version 4.0,without modification