diff --git a/wetb/signal/filters/__init__.py b/wetb/signal/filters/__init__.py
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..ebe5b72cdfc049ea8a1f5a485d5949ccd8782bcd 100644
--- a/wetb/signal/filters/__init__.py
+++ b/wetb/signal/filters/__init__.py
@@ -0,0 +1,2 @@
+from ._despike import *
+from ._differentiation import *
\ No newline at end of file
diff --git a/wetb/signal/filters/despike.py b/wetb/signal/filters/_despike.py
similarity index 85%
rename from wetb/signal/filters/despike.py
rename to wetb/signal/filters/_despike.py
index f7256c68b1bd499faf78987afa83b644ff8f4dee..7fda9e33462d907b229b3339c87a98d0197d0359 100644
--- a/wetb/signal/filters/despike.py
+++ b/wetb/signal/filters/_despike.py
@@ -4,8 +4,7 @@ Created on 13/07/2016
 @author: MMPE
 '''
 import numpy as np
-from wetb.signal.filters.first_order import low_pass
-from wetb.signal.filters import replacer
+from wetb.signal.filters import replacer, frq_filters
 
 
 replace_by_nan = replacer.replace_by_nan
@@ -42,15 +41,15 @@ def univeral_thresshold_finder(data, variation='mad', plt=None):
     thresshold = np.sqrt(2 * np.log(data.shape[0])) * variation  # Universal thresshold (expected maximum of n random variables)
     return thresshold_finder(data, thresshold, plt)
 
-def despike(data, dt, spike_finder=univeral_thresshold_finder, spike_replacer=replace_by_nan, plt=None):
+def despike(data, spike_length, spike_finder=univeral_thresshold_finder, spike_replacer=replace_by_nan, plt=None):
     """Despike data
 
     Parameters
     ---------
     data : array_like
         data
-    dt : int or float
-        time step
+    spike_length : int
+        Typical spike duration [samples]
     spike_finder : function
         Function returning indexes of the spikes
     spike_replacer : function
@@ -63,8 +62,10 @@ def despike(data, dt, spike_finder=univeral_thresshold_finder, spike_replacer=re
     if plt:
         plt.plot(data, label='Input')
     data = np.array(data).copy()
-    lp_data = low_pass(data, dt, 1)
+    lp_data = low_pass(data, spike_length, 1)
     hp_data = data - lp_data
+    hp_data = frq_filters.high_pass(data, spike_length*4, 1, order=2)
+        #spike_length, sample_frq/2, 1, order=1)
     spike_mask = spike_finder(hp_data, plt=plt)
     despike_data = spike_replacer(data, spike_mask)
     if plt:
diff --git a/wetb/signal/fit/_bin_fit.py b/wetb/signal/fit/_bin_fit.py
index f1124ff6fb0919a22f2ef8a1e45ad14a597ce9eb..fcaf5879f9e0f89c99ded6cf8b69f32f48997e9e 100644
--- a/wetb/signal/fit/_bin_fit.py
+++ b/wetb/signal/fit/_bin_fit.py
@@ -103,14 +103,9 @@ def bin_fit(x,y, bins=10, kind='linear', bin_func=np.nanmean, bin_min_count=3, l
         else:
             raise NotImplementedError("Argument for handling upper observations, %s, not implemented"%upper)
         
-    #Create mean function
-    def fit(x):
-        x = x[:].copy().astype(np.float)
-        x[x<bin_x_fit[0]] = np.nan
-        x[x>bin_x_fit[-1]] = np.nan
-        return interp1d(bin_x_fit, bin_y_fit, kind)(x[:])
+
     
-    return bin_x_fit, fit
+    return bin_x_fit, _interpolate_fit(bin_x_fit, bin_y_fit, kind)
     
 def perpendicular_bin_fit(x, y, bins = 30, fit_func=None, bin_min_count=3, plt=None):
     """Fit a curve to the values, (x,y) using bins that are perpendicular to an initial fit
@@ -190,6 +185,15 @@ def perpendicular_bin_fit(x, y, bins = 30, fit_func=None, bin_min_count=3, plt=N
         plt.plot(pbfx, pbfy, 'gray', label="perpendicular fit")
         plt.legend()
     #PlotData(None, bfx,bfy)
-    
-    return np.array(pc).T
+    bin_x_fit, bin_y_fit = np.array(pc).T 
+    return bin_x_fit, _interpolate_fit(bin_x_fit, bin_y_fit, kind="linear")
+
+#Create mean function
+def _interpolate_fit(bin_x_fit, bin_y_fit, kind='linear'):
+    def fit(x):
+        x = x[:].copy().astype(np.float)
+        x[x<bin_x_fit[0]] = np.nan
+        x[x>bin_x_fit[-1]] = np.nan
+        return interp1d(bin_x_fit, bin_y_fit, kind)(x[:])
+    return fit
 
diff --git a/wetb/signal/tests/test_files/azi.hdf5 b/wetb/signal/tests/test_files/azi.hdf5
index a40195b540e2dc316a007861f7af3331112fbaf4..8b0d381fba42b4f31bc0bff8127d278da653791d 100644
Binary files a/wetb/signal/tests/test_files/azi.hdf5 and b/wetb/signal/tests/test_files/azi.hdf5 differ
diff --git a/wetb/signal/tests/test_fit.py b/wetb/signal/tests/test_fit.py
index ecdfd2cc69796b268d7351a376552d2d401a23ef..859c0cb95c31111385db25728bab055c0add7653 100644
--- a/wetb/signal/tests/test_fit.py
+++ b/wetb/signal/tests/test_fit.py
@@ -88,11 +88,11 @@ class TestFit(unittest.TestCase):
         x,y = ds('Wsp_metmast'), ds('Power')
         if 0:
             import matplotlib.pyplot as plt
-            fx, fy = perpendicular_bin_fit(x,y,30,plt=plt)
+            fx, fit = perpendicular_bin_fit(x,y,30,plt=plt)
             plt.show()
 
         else:
-            fx, fy = perpendicular_bin_fit(x,y,30)
+            fx, fit = perpendicular_bin_fit(x,y,30)
         self.assertEqual(len(fx), 30)