add a bench script
add a constructor
always merge params so we invoke the lazy objects