extra utility functions