change detectors use Template design pattern