refactored and added a new LFO class