another whack at user-defined requires