Refactor cane_spec