added wave generator