Rewrite.

After overcoming SI-8177 with an assist from retronym, finally
seem to have found a typeclass structure which I can work within.