move GenericLink out to separate app