ensure referential integrity .... sigh