more efficient, thanks to haarg