https://go4codes.com/product/observer-system-redux/