Use named parameters in every method.
Add (optional) `user` parameter to every method.
Expose the exception used.