add factory observer