Can use callable to generate guards