new observer pattern
add singleton ex