avoid unnecesary loop