add links API
better namespace for virtual and private functions