reading this code, I wonder if the name `onCreateLink` is good. Why isn't it simply `createLink`?