resolves #62, #59; incapsulate waveform in a separate element