add link function but not finished