better not to loop, check first