diff --git a/fitting.py b/fitting.py
index 9f567c58b2b4688ee602d05a75eb498322329b1c..6406cabbf82b504168b887769767a520926efb03 100644
--- a/fitting.py
+++ b/fitting.py
@@ -5,11 +5,31 @@ import numpy as np
 
 # Fitting
 def fit_linear(S, V, **kwargs):
+    """Fit a linear function to the data
+    
+    :param S: data x values
+    :param V: data y values
+    :param xerr: data x uncertainties
+    :param yerr: data y uncertainties
+    :param p0: initial values of parameters
+    :param odr: Fit method to use: True means ortogonal distance regression (ODR), False means ordinary least square fit, None (default) uses ODR only if either xerr or yerr is not None
+    :param extend: fraction by which the returned fit trace extends beyond the first/last data point
+    """
     result = fit_function(lambda s, v0, m: v0+m*s, S, V, p0=(np.mean(V), np.mean(np.diff(V)/np.diff(S))), **kwargs)
     param, param_error, function, [X, _] = result
     return param, param_error, function, [X, function(X, *param)]
 
 def fit_gaussian(S, V, **kwargs):
+    """Fit a gaussian function to the data
+    
+    :param S: data x values
+    :param V: data y values
+    :param xerr: data x uncertainties
+    :param yerr: data y uncertainties
+    :param p0: initial values of parameters
+    :param odr: Fit method to use: True means ortogonal distance regression (ODR), False means ordinary least square fit, None (default) uses ODR only if either xerr or yerr is not None
+    :param extend: fraction by which the returned fit trace extends beyond the first/last data point
+    """
     gauss = lambda s, v0, vp, s0, sigma: v0+vp*np.exp(-0.5*((s-s0)/sigma)**2)
     v0 = np.min(V)
     vp = np.max(V)-v0
@@ -20,7 +40,17 @@ def fit_gaussian(S, V, **kwargs):
     param[3] = np.abs(param[3]) # return the positive sigma (could use bounds instead, but that's more likely to fail)
     return param, param_error, function, [X, function(X, *param)]
 
-def fit_lorenzian(S, V, log=False, **kwargs):
+def fit_lorenzian(S, V, **kwargs):
+    """Fit a lorenzian function to the data
+    
+    :param S: data x values
+    :param V: data y values
+    :param xerr: data x uncertainties
+    :param yerr: data y uncertainties
+    :param p0: initial values of parameters
+    :param odr: Fit method to use: True means ortogonal distance regression (ODR), False means ordinary least square fit, None (default) uses ODR only if either xerr or yerr is not None
+    :param extend: fraction by which the returned fit trace extends beyond the first/last data point
+    """
     lorenzian = lambda s, v0, vp, s0, gamma: v0 + vp/(1+((s-s0)/gamma)**2)
     v0 = np.min(V)
     vp = np.max(V)-v0
@@ -32,9 +62,17 @@ def fit_lorenzian(S, V, log=False, **kwargs):
     return param, param_error, function, [X, function(X, *param)]
     
 
-def fit_function(function, x, y, *, xerr=None, yerr=None, p0=None, odr=None, extend=0, **kwargs):
-    """
-    :param log: if the y-data is log-scaled
+def fit_function(function, x, y, *, xerr=None, yerr=None, p0=None, odr=None, extend=0):
+    """Fit a function to the data
+    
+    :param function: fit function(x, *param)
+    :param x: data x values
+    :param y: data y values
+    :param xerr: data x uncertainties
+    :param yerr: data y uncertainties
+    :param p0: initial values of parameters
+    :param odr: Fit method to use: True means ortogonal distance regression (ODR), False means ordinary least square fit, None (default) uses ODR only if either xerr or yerr is not None
+    :param extend: fraction by which the returned fit trace extends beyond the first/last data point
     """
     if odr is None:
         odr = xerr is not None or yerr is not None
@@ -49,7 +87,7 @@ def fit_function(function, x, y, *, xerr=None, yerr=None, p0=None, odr=None, ext
         param, param_error = output.beta, output.sd_beta
     else:
         # non-linear least squares
-        param, cov = scipy.optimize.curve_fit(function, x, y, p0, **kwargs)
+        param, cov = scipy.optimize.curve_fit(function, x, y, p0)
         param_error = np.sqrt(np.abs(cov.diagonal()))
     
     mi, ma = min(x), max(x)
@@ -57,6 +95,16 @@ def fit_function(function, x, y, *, xerr=None, yerr=None, p0=None, odr=None, ext
     return param, param_error, function, [X, function(X, *param)]
 
 def fit_exponential(S, V, **kwargs):
+    """Fit an exponential function to the data
+    
+    :param S: data x values
+    :param V: data y values
+    :param xerr: data x uncertainties
+    :param yerr: data y uncertainties
+    :param p0: initial values of parameters
+    :param odr: Fit method to use: True means ortogonal distance regression (ODR), False means ordinary least square fit, None (default) uses ODR only if either xerr or yerr is not None
+    :param extend: fraction by which the returned fit trace extends beyond the first/last data point
+    """
     exponential = lambda s, v0, vp, s0: v0 + vp*np.exp(s/s0)
     v0 = np.min(V)
     vp = np.max(V)-v0