use dynamic dependency