Lightweight implementation of observer pattern + advanced features