tools - partial implementation