restructure EstimateSelector using dependency injection pattern.