This is highly verbose, but potentially clearer, allows better haddock docs, and hopefully will improve after lensification.