requires 'TimTools';