improved 2.4 of fork A(unfinished)