cleaned up analyzer, separating analysis logic into a separate object