diff --git a/src/wela/fft_filtering.py b/src/wela/fft_filtering.py
index 7469f01ce13a62df9fcdf842486cf79d5e09b73a..f0c08425db3ad21e4b6bf3431fa13bb76df75c02 100644
--- a/src/wela/fft_filtering.py
+++ b/src/wela/fft_filtering.py
@@ -105,24 +105,18 @@ def snr(fft_freqs, fft_power, cutoff_freq):
     return snr
 
 
-def butterworth_filter(data, params=None):
-    """Apply Butterworth filter to time series arranged in rows."""
-    # second-order-sections output
-    # by default, using a digital filter
-    if params is None:
-        params = {
-            "order": 2,
-            "critical_freqs": (1 / 350),
-            "filter_type": "highpass",
-            "sampling_freq": 1 / 3,
-        }
-    sos = signal.butter(
-        N=params["order"],
-        Wn=params["critical_freqs"],
-        btype=params["filter_type"],
-        fs=params["sampling_freq"],
-        output="sos",
-    )
+def lowpass_filter(data, cutoff, fs, N):
+    """Apply low-pass filter to a single time-series."""
+    data = data - np.mean(data)
+    sos = signal.butter(N, cutoff, btype="lowpass", fs=fs, output="sos")
+    filtered_data = signal.sosfiltfilt(sos, data)
+    return filtered_data + np.mean(data)
+
+
+def flavin_filter(data, cutoff=1 / 350, fs=1 / 5, N=2):
+    """Apply high-pass Butterworth filter to time series arranged in rows."""
+    # use a digital filter assuming regularly spaced sampling
+    sos = signal.butter(N=N, Wn=cutoff, btype="highpass", fs=fs, output="sos")
     # fill NaNs between data points
     data = pd.DataFrame(data).interpolate(axis=1).to_numpy()
     # subtract time series by mean