renamed IWaveController to IWaveFactory