add functionality to create different wave types