singleton, factory, observer