refactor randomversion arguments
add benchmarks