added abstract Link class