use pub for dependecny injection