implement setter inject.
refacotr