tool framework