utility functions only defined once