A more flexible way to define requires