Added new tool framework

and converted the "version" tool to match.