rewrote Tool class to be a pure interface, made updates to accomodate the change