new tools and helper functions