In this regard I will prefer to go for adaptive FIR filters for better results. Please try adaptive filters and do the simulation,compare the results with your present algorithms. You can find many equivalent simulation help from MATLAB file central.