add benchmark
some opt
more opt?
add results including plot