Refactor link behavior into Fuji::Link object