final but still lacks link function