added benchmark and test