first implementation: links API