tools needs functionality