refactoring for better maintenance (bring in the underscore lib to support it).