singleton & observer