Why use ``params`` here instead of the usual ``kwargs``? It makes the code a little harder to process especially since the docstring is long.