yet more defensive coding