two calculators observer pattern