more work on inner roots and link contract shift