using canonical paths and update templates