final version, benchmark done