Refactored to use signals from msignal library