improvement and add tests/bench (sandi still faster for now)