added benchmark
complete rewrite - 2x faster now