utility functions have been finished