improved link method parameter names and clarified different argument styles, changed validation to happen once on registration instead of each time a value changes