abstract the tools