further decoupled AnalysisService