reimplement gdv use function.