refactoring to support multi-signal simulation