efficient implementation