Add Waveform and four implementations