refactoring to add new tools