make the tool more generic