this version is fast and with arbitrary rounds