added signal generator