foolproof
not defined yet